{"owner":"0xeb","repo":"TheBigPromptLibrary","hasSkills":true,"totalSkillsCount":9,"totalTokensCount":10474,"categories":["anthropic-skill","claude-rule","plugin-manifest"],"hasMcp":false,"mcpConfig":null,"found":["SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-prep.md",".claude/CLAUDE.md","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/optimize-schedule.md","Tools/README.md","Tools/openai_gpts/README.md","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-follow-up.md","Articles/claude-code-tools/README.md","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/scheduling.md","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/project-planning.md"],"skills":{"SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-prep.md":"\n# Overview\n\nYour purpose is to prep the user for meetings. You should surface what matters most before a meeting - urgent items, recent context, and memory-jogging details to answer: _What does the user need to know RIGHT NOW to be effective?_\n\nConsider this when a user asks you to prepare for their meetings, provide meeting context, create pre-reads, or help them get ready for upcoming calendar events.\n\n# Definitions\n\n- Internal: All participants share the user's email domain\n- External: At least one participant has a different email domain\n\n# Research approach\n\nSeek to research the following questions:\n\n1. Have the user and these participants met before? What happened last time?\n2. Are there outstanding action items or decisions from the user?\n3. What's changed or progressed since their last interaction?\n4. What decisions or discussions should be on the agenda?\n\n## Search across all available sources\n\n- Notion: Meeting notes, project pages, relevant docs, action items, decision logs, recent updates\n- Calendar: Last meeting with these participants, linked notes, attached documents, agendas, recurring patterns\n- Slack: Recent conversations with participants, topic mentions, channel discussions, direct messages\n- Email: Thread history, correspondence, attachments, shared materials\n- Web search: (External only, or if the user has never met with the individuals in the meeting before) Participant background, company news, industry context, public information\n\n# What to surface\n\n## Urgent flags\n\n- Decisions the user needs to make today\n- Action items the user owes (with dates if overdue)\n- Urgent items needing resolution\n- Prep materials to review\n\n## Memory joggers\n\n- Date of last meeting\n- Key discussion points and decisions made\n- What the user committed to\n- Where they left off, including any outstanding topics or decisions\n\n## Today's focus\n\n- Meeting purpose and agenda\n- Key topics or decisions on deck as well as supporting context\n- Materials or links from the invite\n\n## Participants\n\n- Internal: Role, relevant projects, recent updates on topic\n- External: Name, title, company, why they matter, relationship status\n\n# Output guidelines\n\n- Structure: Specific times, names, concrete details. Skip sections with no relevant info. Use bullet points. Cite all sources with footnotes.\n- Tone: Direct, specific, personalized. Write like a well-prepared colleague. Focus on what the user needs to do or decide.\n- Format: For each meeting, use:\n\n｀｀｀\n[Meeting Time] - [Meeting Title]\n\n👥 Participants\n[participant details]\n\n🚨 Important flags (only if relevant)\n[urgent items]\n\n💭 Last time we met (only if applicable)\n[last meeting context]\n\n🎯 Today's discussion\n[agenda and purpose]\n\n｀｀｀\n\nIf prepping several meetings, separate multiple meetings with a horizontal line (---).\n\n# Quality priorities\n\n- Actionable: Focus on what the user needs to do or decide\n- Memory-jogging: Remind them of past conversations and commitments\n- Specific: Use concrete details, dates, and quotes\n- Concise: Surface only what matters\n- Well-cited: Always link sources\n\n# What NOT to do\n\n- Don't make assumptions about importance without evidence\n- Don't include generic meeting advice or regurgitate the calendar event details\n- Don't create empty sections\n- Don't research external participants if clearly internal\n- Don't spend time on social events or casual meetups\n- Don't write prep to pages without user permission or specified location\n",".claude/CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Repository Purpose\n\nThis is a collection repository for LLM system prompts, custom GPT instructions, jailbreak prompts, and instruction protection techniques. The content is primarily markdown documentation for educational purposes around prompt engineering and LLM security research.\n\n## Repository Structure\n\n- **SystemPrompts/** - System prompts from various LLM providers (OpenAI, Anthropic, Google, Meta, xAI, etc.), organized by vendor with date-stamped filenames\n- **CustomInstructions/** - Custom GPT instructions and configurations, including a large index in `CustomInstructions/README.md` (the table of contents for ChatGPT GPTs)\n- **Jailbreak/** - Jailbreak prompts organized by LLM provider\n- **Security/** - GPT instruction protection techniques\n- **Articles/** - Technical articles about LLM internals and prompt engineering\n- **Tools/openai_gpts/** - Python utilities for managing GPT documentation\n\n## Tools\n\nPython scripts in `Tools/openai_gpts/`:\n\n```bash\n# Rebuild the CustomInstructions/README.md table of contents\npython Tools/openai_gpts/idxtool.py --toc\n\n# Find a GPT by ID or URL\npython Tools/openai_gpts/idxtool.py --find-gpt <GPT_ID_OR_URL>\n\n# Generate a markdown template for a new GPT entry\npython Tools/openai_gpts/idxtool.py --template <CHATGPT_URL>\n\n# Generate template with metadata dump (standalone tool)\npython Tools/openai_gpts/gen_gpt_templ.py <URL_OR_ID> --dump\n```\n\n## File Naming Conventions\n\n- **SystemPrompts**: `YYYYMMDD-ProviderName.md` or `provider_feature_YYYYMMDD.md`\n- **CustomInstructions GPTs**: `{gpt_id}.md` with GPT metadata in frontmatter-style headers\n\n## Contributing New Prompts\n\nWhen adding system prompts or GPT instructions:\n1. Use the appropriate date-stamped naming convention\n2. For GPTs, use `idxtool.py --template` to generate the initial file structure\n3. Run `idxtool.py --toc` after adding new GPT files to update the table of contents\n","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/optimize-schedule.md":"\n# Overview\n\nYou should analyze calendar schedules and provide recommendations to optimize time management. You should identify problems, suggest solutions and explain your reasoning. Never take action without explicit approval unless the user have given you permission to do so. When a user specifies a preference in their prompt or instructions, prioritize that preference over these instructions.\n\n_Ask the user for their preferences if they haven't provided them._\n\n## What to analyze\n\n### Meeting conflicts\n\n- Identify overlapping or double-booked meetings\n- Determine priority based on:\n  - Meeting context from available sources (email, calendar, Slack, Notion workspace, etc.)\n  - User's apparent role or involvement level\n  - Attendee lists and meeting importance\n  - User's stated priorities or preferences\n- Provide clear recommendations with brief reasoning\n\n### Calendar overload\n\n- Calculate total meeting hours for the time period\n- Flag when meeting load exceeds reasonable thresholds (respect any user-specified threshold)\n- Identify which meetings could potentially be declined, delegated, rescheduled or shortened\n- Consider meeting importance, required attendance, scheduling flexibility and attendee lists\n\n### Focus time gaps\n\n- Don't assume every user treats focus time blocks the same way\n- Identify available blocks of unscheduled time\n- Look for opportunities to protect focus time\n- Recommend specific time blocks for deep work\n\n### Task scheduling opportunities\n\n- If the user has provided access to a tasks database or to-do list, review incomplete or upcoming items\n- Match tasks to available calendar slots based on priority, deadlines, estimated time needed, available focus blocks and context switching\n- Suggest specific time slots for each task\n- Only update task due dates or calendar after explicit approval\n\n## How to gather information\n\n- Use calendar tools to view the relevant time period\n- Search the user's workspace for context on meeting topics, attendees or projects\n- Check for task databases, project pages or priority lists\n- Look for email or Slack threads that provide meeting context\n- Consider the user's stated preferences and work patterns\n\n## Handling edge cases\n\n- Insufficient context: Explain what information is missing and ask for guidance\n- All meetings seem important: Present the tradeoffs and let the user decide\n- No tasks database found: Ask where tasks are tracked or focus only on calendar optimization\n- Unclear preferences: Make recommendations based on general best practices and invite the user to provide preferences\n\n## Formatting\n\nFollow user's formatting preferences. Also,\n\n- Be specific (include meeting names, times, task titles)\n- Provide brief, clear reasoning\n\n## Reschedule guidelines\n\nWhen proposing to reschedule meetings due to conflicts or overload:\n\n- With access to participant calendars: Find time slots where all attendees are free\n- Without access to participant calendars: Suggest times when the user is free\n- Format: Present options as specific days and times\n- After presenting options: Ask the user to confirm which time they prefer\n- Reschedule the meeting: Proceed to reschedule the meeting to the confirmed time\n  End with: \"Would you like me to proceed with any of these changes?\"\n","Tools/README.md":"# TheBigPromptLibrary Tools\n\nThis directory contains various tools and utilities for working with ChatGPT's custom GPTs.\n\n## Available Tools\n\n- A [collection of scripts](./openai_gpts/README.md) for managing and working with ChatGPT Custom GPTs\n\n## License\n\nThese tools are open-sourced under the GNU General Public License (GPL). Under this license, you are free to use, modify, and redistribute this software, provided that all copies and derivative works are also licensed under the GPL.\n\nFor more details, see the [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html).","Tools/openai_gpts/README.md":"# Custom GPTs scripts and tools\n\nThis directory contains utilities for working with ChatGPT Custom GPTs in TheBigPromptLibrary:\n\n- **idxtool.py** - GPT indexing and searching tool\n- **gen_gpt_templ.py** - Generate markdown templates for ChatGPT GPTs by downloading and parsing their metadata\n- **oneoff.py** - One-off operations on GPT files (e.g., batch reformatting)\n\n## idxtool\n\nThe `idxtool` script is a Custom GPT indexing and searching tool used in TheBigPromptLibrary.\n\n### Command line\n\n```\nusage: idxtool.py [-h] [--toc [TOC]] [--find-gpt FIND_GPT] \n                  [--template TEMPLATE] [--parse-gptfile PARSE_GPTFILE] \n\t\t  [--rename]\n\nidxtool: A GPT indexing and searching tool for the CSP repo\n\noptions:\n  -h, --help            show this help message and exit\n  --toc [TOC]           Rebuild the table of contents of GPT custom instructions\n  --find-gpt FIND_GPT   Find a GPT file by its ID or full ChatGPT URL\n  --template TEMPLATE   Creates an empty GPT template file from a ChatGPT URL\n  --parse-gptfile PARSE_GPTFILE\n                        Parses a GPT file name\n  --rename              Rename the GPT file names to include their GPT ID\n```\n\n### Features\n\n- Rebuild TOC: Use `--toc` to rebuild the table of contents for GPT custom instructions.\n- Find GPT File: Use `--find-gpt [GPTID or Full ChatGPT URL or a response file with IDs/URLs]` to find a GPT by its ID or URL.\n- Rename GPT: Use `--rename` to rename all the GPTs to include their GPTID as prefix.\n- Create a starter template GPT file: Use `--template [Full ChatGPT URL]` to create a starter template GPT file.\n- Help: Use `--help` to display the help message and usage instructions.\n\n### Example\n\nTo rebuild the custom GPTs files, run:\n\n```bash\npython idxtool.py --toc\n```\n\nTo find a GPT by its ID, run:\n\n```bash\npython idxtool.py --find-gpt 3rtbLUIUO\n```\n\nor by URL:\n  \n```bash\npython idxtool.py --find-gpt https://chat.openai.com/g/g-svehnI9xP-retro-adventures\n```\n\nAdditionally, you can have a file with a list of IDs or URLs and pass it to the `--find-gpt` option:\n\n```bash\npython idxtool.py --find-gpt @gptids.txt\n```\n\n(note the '@' symbol).\n\nThe `gptids.txt` file contains a list of IDs or URLs, one per line:\n\n```text\n3rtbLUIUO\nhttps://chat.openai.com/g/g-svehnI9xP-retro-adventures\n#vYzt7bvAm\nw2yOasK1r\nwaDWNw2J3\n```\n\n## gen_gpt_templ\n\nThe `gen_gpt_templ` script generates markdown templates for ChatGPT GPTs by downloading and parsing their metadata from the ChatGPT website.\n\n### Command line\n\n```bash\nusage: gen_gpt_templ.py [-h] [--debug] [--dump] [input]\n\nGenerate markdown template for ChatGPT GPTs\n\npositional arguments:\n  input       GPT URL, GPT ID, g-prefixed GPT ID, or @response_file\n\noptions:\n  -h, --help  show this help message and exit\n  --debug     Save debug files (HTML and dump)\n  --dump      Save parsed names and values to .txt file\n```\n\n### Features\n\n- Downloads GPT metadata from ChatGPT URLs\n- Parses GPT information including title, description, author, and profile picture\n- Generates markdown templates with GPT metadata\n- Supports multiple input formats:\n  - Full ChatGPT URL: `https://chatgpt.com/g/g-VgbIr9TQQ-ida-pro-c-sdk-and-decompiler`\n  - Conversation URL: `https://chatgpt.com/g/g-m5lMeGifF-sql-expert-querygpt/c/682cd38c-ca8c-800d-b6e2-33b8ba763824`\n  - GPT ID: `VgbIr9TQQ`\n  - Prefixed GPT ID: `g-VgbIr9TQQ`\n  - Response file: `@gptids.txt` (processes multiple GPTs from a file)\n\n### Examples\n\nGenerate template for a single GPT:\n\n```bash\npython gen_gpt_templ.py https://chatgpt.com/g/g-VgbIr9TQQ-ida-pro-c-sdk-and-decompiler\n```\n\nProcess multiple GPTs from a file:\n\n```bash\npython gen_gpt_templ.py @gptids.txt\n```\n\nGenerate template with debug output:\n\n```bash\npython gen_gpt_templ.py g-VgbIr9TQQ --debug --dump\n```\n\n## Differences between idxtool and gen_gpt_templ\n\n### idxtool --template\n- Uses gen_gpt_templ internally to download actual GPT metadata from ChatGPT\n- Creates templates with real GPT information (title, description, author, logo)\n- Generates properly named files (`{gpt_id}.md`) without RENAMEME suffix\n- Simpler interface for basic template generation within the idxtool workflow\n\n### gen_gpt_templ\n- Full-featured standalone tool with additional capabilities:\n  - `--dump` flag to save all parsed metadata to .txt file\n  - `--debug` flag to save HTML and debug information\n  - Batch processing with @response_file for multiple GPTs\n  - More detailed console output showing download and parsing progress\n  - Can be used as a module by other tools (like idxtool)\n\nUse `idxtool --template` when you need a quick template as part of your GPT file management workflow. Use `gen_gpt_templ` directly when you need the advanced features like metadata dumping or batch processing.\n\n## oneoff\n\nThe `oneoff` script performs one-off operations on GPT files, primarily batch processing tasks.\n\n### Features\n\n- **Reformat GPT files**: Reformats all GPT markdown files in a source directory and saves them to a destination directory\n- Validates GPT file structure during processing\n- Preserves GPT metadata (ID, name) during reformatting\n\n### Usage\n\nThe script is designed for batch operations. Currently supports:\n\n1. **Batch reformatting**: Process all `.md` files in a source directory, reformat them according to the standard GPT markdown structure, and save to a destination directory.\n\nExample usage in code:\n\n```python\nfrom oneoff import reformat_gpt_files\n\nsuccess, message = reformat_gpt_files(\"source_gpts/\", \"formatted_gpts/\")\nprint(message)\n```\n\n## License\n\nThis tool is open-sourced under the GNU General Public License (GPL). Under this license, you are free to use, modify, and redistribute this software, provided that all copies and derivative works are also licensed under the GPL.\n\nFor more details, see the [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html).\n","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-follow-up.md":"\n# Overview\n\nHelp the user quickly turn a meeting that already happened into clear outputs and next steps. Optimize for: fast recap, stakeholder-ready communication, and reliable task capture so nothing slips.\n\nConsider this when the user asks for meeting follow up like \"help me followup on this meeting\", \"send an update,\" \"log action items,\" \"turn notes into tasks,\" \"what are next steps,\" or \"can you follow up with the team.\"\n\n## Definitions\n\n- Internal: All participants share the user's email domain\n- External: At least one participant has a different email domain\n\n## Intake questions to answer (don't ask the user unless needed)\n\n1. Where are the meeting notes stored?\n2. What follow-ups should happen today vs later?\n3. What was decided? What is still open?\n4. What are the action items, owners, and due dates?\n5. Who needs to know, and what do they need to know (level of detail)?\n6. Are there risks, blockers, or dependencies that need escalation?\n\n## Research approach\n\nPrioritize sources in this order:\n\n- AI meeting notes: summary, action items, transcript, attendees\n- User's notes and any linked docs from the calendar invite\n- Related project pages, specs, PRDs, decision logs, open tasks\n- Slack and email only if needed to confirm context, commitments, or distribution list\n- Calendar to schedule follow up meetings (default to within one week unless otherwise noted)\n\n## What to produce (choose based on user intent, default to the smallest useful set, offer to help with additional followups with examples)\n\n### A) Meeting recap (base deliverable)\n\nCreate a crisp recap with:\n\n- Purpose and outcome in one sentence\n- Key decisions (with decision owner if clear)\n- Discussion highlights (only what matters)\n- Action items (owner, due date, status)\n- Open questions and next meeting plan (if any)\n\n### B) Stakeholder-specific summaries\n\nOffer tailored versions of the recap for different audiences, for example:\n\n- Exec skim: outcomes, risks, asks, deadlines\n- Cross-functional partners: decisions, dependencies, handoffs\n- Direct team: detailed next steps and owners\n- External attendee follow up: confirmed decisions, action items with assignees, deliverables, timelines, thanks\n\nDefault behavior: propose 2-3 stakeholder formats that make sense based on the meeting and participants and generate them unless user specifies otherwise. Keep each version appropriately short.\n\n### C) Project status update\n\nIf the meeting impacts a project, convert outcomes into a status update using a consistent structure:\n\n- Status (on track, at risk, off track)\n- What changed since last update\n- Progress made\n- Risks and blockers\n- Next milestones and dates\n- Asks and owners\n\n### D) Comms distribution (Slack or email)\n\nIf the user wants to send an update:\n\n- Draft the message in the right tone for the channel\n- Include links to notes and relevant docs\n- Include clear asks, owners, and deadlines\n- Keep Slack short, email slightly more structured\n- Never send without explicit confirmation from the user\n- If unsure of channel or recipients, ask a single clarifying question\n\n### E) Task logging and tracking\n\nTurn action items into tasks with:\n\n- Clear verb-first task title\n- Owner (if known)\n- Due date (if stated, otherwise suggest one or mark \"needs date\")\n- Source link back to the meeting notes\n- Any dependencies / context in the description\n\nIf the user has an existing task system, match it. Otherwise, create a lightweight list of action items in the follow-up output.\n\n### F) Help execute tasks\n\nWhen asked, help move tasks forward by producing the next artifact.\n\n### G) Help schedule meetings\n\nBased on meeting notes or when asked, schedule follow-up meetings or related discussions.\n\n## What to surface (content priorities)\n\n### Urgent flags\n\n- Deadlines within the next week\n- Commitments made by the user\n- Risks or blockers that need escalation\n- Missing owners or unclear next steps\n\n### Decisions\n\n- Decision statement\n- Options considered (only if important)\n- Rationale (one line)\n- Owner and date\n\n### Action items\n\n- Task, owner, due date\n- \"Needs owner\" or \"needs date\" explicitly called out\n- Group by team or theme if there are many\n\n### Open questions\n\n- What's unresolved\n- Who can answer\n- When it must be resolved\n\n## Output guidelines\n\n- Be direct, specific, and skimmable\n- Use bullet points, short sections, no filler\n- Skip empty sections\n- Prefer concrete nouns, names, dates\n- If generating multiple stakeholder versions, label each clearly\n- If you used sources (notes, transcript, docs), cite them\n\n## What NOT to do\n\n- Don't invent decisions, owners, or deadlines\n- Don't over-summarize: preserve commitments and action items verbatim when possible\n- Don't include sensitive or internal-only details in an external follow up\n- Don't send emails or Slack messages without user confirmation\n- Don't create busywork: prefer the smallest set of outputs that unblock progress\n- Don't regurgitate the meeting notes or meeting summary that already exists\n","Articles/claude-code-tools/README.md":"# When \"Just Do It\" Isn't Enough: Invoking Claude Code Tools by Name\n\n*By **Elias Bachaalany** — [@0xeb](https://github.com/0xeb) on GitHub · [Binary Wizards](https://www.youtube.com/@binary-wizards) on YouTube · [@eliasbchlny](https://x.com/eliasbchlny) on X*\n\n*The cases where naming the exact tool beats describing the outcome.*\n\nClaude Code exposes a few dozen tools, and most of the time you should never name one.\nYou say what you want (\"find every place we validate emails\", \"build it and run it\") and\nthe model routes the request to the right tool. That default is good, and you should lean\non it.\n\nBut routing is the model's guess at your intent, and sometimes the guess isn't what you\nwanted. It answers when you wanted to be asked. It presses on when you wanted a checkpoint.\nIt skips the task list you wanted kept. It improvises three shell commands when you wanted\none specific search. In those moments the fix is the same: stop describing the outcome and\nname the tool. Saying \"use the AskUserQuestion tool\" or \"use TaskCreate\" or \"use Monitor\"\nturns a guess into a guarantee.\n\nThis article is about those moments, the legitimate cases where naming the tool gives you\ndeterministic control, followed by a full, typed reference so you know exactly what to say\nand with which arguments.\n\n## Two ways to invoke, and when to switch\n\nThe model is a good dispatcher. Tell it what you want and it walks to the toolbox, picks a\ntool, and uses it. Ninety percent of the time that is exactly right, and you should let it\ndrive. But a dispatcher is guessing at your intent, and every so often you want to reach\npast it and grab a specific tool yourself. That reach is the whole skill this article\nteaches: knowing the names well enough to ask for one on purpose.\n\n- **Outcome phrasing** (the default): *\"Find where auth is handled.\"* The model picks the\n  tool. Best for almost everything.\n- **By-name invocation** (this article): *\"Use the Grep tool with `pattern`='validateAuth',\n  `output_mode`='content'.\"* You pick the tool and, optionally, its exact arguments. Best\n  when the specific behavior matters more than the outcome.\n\nSwitch to by-name when any of these is true: you want a **specific mechanism** (this tool,\nnot a substitute), you want a behavior the model **wouldn't trigger on its own**, or the\ntool is **keyword-gated** and has no other way in.\n\n## When naming the tool wins\n\n### Make it stop and ask you: `AskUserQuestion`\n\nHere is a fun one to try right now. Prompt the model with:\n\n> \"Use the AskUserQuestion tool and present me three color choices.\"\n\nIt pops a little structured menu, red / green / blue, and waits for you to pick. Nothing\nabout choosing a color *needs* a tool, which is exactly why it makes such a clean demo: you\naren't asking for an outcome, you are commandeering a specific piece of UI on demand. The\nmodel is smart enough to reach for this tool on its own, but here you are the one deciding\nit should.\n\nNow swap the toy for something real:\n\n> \"Use the AskUserQuestion tool to give me options before you choose the auth library.\"\n\nSame move, real stakes. You convert \"the model decided\" into \"the model asked.\" This is the\nsingle most useful by-name habit to build.\n\n### Force a task to exist: `TaskCreate` / `TaskUpdate`\n\nThe todo system auto-engages on big, multi-step work, but for a two- or three-step job it\nmay not bother. When you want a durable, visible checklist regardless of the model's\njudgment:\n\n> \"Use **TaskCreate** to add a task: `subject`='Migrate auth to OAuth'. Then keep it updated\n> as you go.\"\n> \"Use **TaskUpdate** `taskId`=2, `addBlockedBy`=['1'] so task 2 waits for task 1.\"\n\nNaming `TaskCreate` makes the task exist on purpose; naming `TaskUpdate` lets you drive\nstatus and dependencies by hand instead of hoping they're tracked.\n\n### Start something recurring or watching, on purpose: `CronCreate`, `Monitor`, `/loop`\n\n\"Keep an eye on the build\" is ambiguous; the mechanism you actually want isn't. Name it, and\nyou choose polling vs. streaming vs. self-pacing:\n\n> \"Use **CronCreate** `cron`='*/15 * * * *' to re-run the tests every 15 minutes.\"\n> \"Use **Monitor** `command`='tail -f dev.log | grep --line-buffered ERROR' to tell me every\n> time an error appears.\"\n> \"**/loop 5m /babysit-prs**\" to run a prompt on an interval.\n\n### Behaviors that *only* exist by name: the keyword-gated tools\n\nSome tools cannot be summoned any other way. Here the name or keyword **is** the API:\n\n- **worktree** unlocks `EnterWorktree`: \"do this in a **worktree**.\"\n- **ultracode** (or \"use a workflow\") unlocks `Workflow`: deliberate multi-agent orchestration.\n- **/loop** with no interval unlocks `ScheduleWakeup`: model-paced loops.\n- an active code review unlocks `ReportFindings`: typed findings to the UI.\n\nNo amount of outcome phrasing unlocks these; the deliberate keyword is the point. They can\nspawn many agents or relocate your edits, so they wait for explicit consent.\n\n### Pin the exact operation: `Grep`, `Glob`, `Edit`, `Agent`\n\nWhen you want one specific mechanism and no substitution:\n\n> \"Use **Grep** with `pattern`='TODO', `output_mode`='content', `-n`=true\" (not a subagent).\n> \"Use an **Explore** agent to search, don't grep inline.\"\n> \"Use **Edit** on `config.ts` with `replace_all`=true.\"\n\nNaming removes the routing guess when the *how* matters as much as the *what*.\n\n### Run a specific, known procedure: `Skill`\n\nSkills are packaged multi-step procedures. Naming one runs *that* procedure rather than\nhoping the model reconstructs the same steps:\n\n> \"Use the **deep-research** skill on X\", or type `/deep-research <question>`.\n\n### Choose the output channel: `Artifact`, `PushNotification`, `WebFetch`\n\nWhen you want a specific destination for the result:\n\n> \"Make an **Artifact** I can share.\" / \"Use **PushNotification** to ping me when the build\n> finishes.\" / \"Use **WebFetch** `url`=… `prompt`='what changed in 2.1?'.\"\n\n### How to phrase a by-name call\n\nTwo levels of precision:\n\n- **Name only:** \"Use TaskCreate to track this.\" The model fills in the arguments.\n- **Name plus arguments:** \"Use TaskCreate with `subject`='…', `description`='…',\n  `activeForm`='…'.\" You pin the exact call.\n\nThe rest of this article is the reference that makes the second form possible: every tool,\nits parameters, types, and defaults.\n\n---\n\n## The catalog: always-loaded vs deferred\n\nThe reference is the full toolset of a Claude Code 2.1.223 session (Windows, August 2026):\n**32 tools, 13 always-loaded and 19 deferred**. Always-loaded tools are callable\nimmediately; deferred tools are announced by name and their schemas load on demand (the\nmodel pulls one in with a `ToolSearch` call before first use). Parameters are marked `*`\nwhen required, with types and defaults noted.\n\n### File, search & shell\n\n- **Read**: read a file (text, image, PDF, notebook).\n    - `file_path`* string (absolute) · `offset` int · `limit` int · `pages` string (PDF range)\n- **Write**: create or overwrite a file you've Read.\n    - `file_path`* string · `content`* string\n- **Edit**: exact string replacement.\n    - `file_path`* string · `old_string`* string · `new_string`* string · `replace_all` bool=false\n- **Glob**: filename pattern match, sorted by mtime.\n    - `pattern`* string · `path` string\n- **Grep**: ripgrep content search.\n    - `pattern`* string · `path` · `glob` · `type` · `output_mode` content|files_with_matches|count · `-i`/`-n`/`-o` bool · `-A`/`-B`/`-C` int · `multiline` bool · `head_limit` int=250 · `offset` int\n- **Bash**: Git Bash / POSIX shell.\n    - `command`* string · `description` · `timeout` ms=120000 (max 600000) · `run_in_background` bool · `dangerouslyDisableSandbox` bool\n- **PowerShell**: pwsh (primary shell on Windows; absent on macOS/Linux).\n    - `command`* string · `description` · `timeout` ms (max 600000) · `run_in_background` bool · `dangerouslyDisableSandbox` bool\n- **NotebookEdit**: replace/insert/delete one Jupyter cell.\n    - `notebook_path`* string · `new_source`* string · `cell_id` string · `cell_type` code|markdown · `edit_mode` replace|insert|delete (default replace)\n\n### Delegation\n\n- **Agent**: spawn a subagent.\n    - `description`* string (3 to 5 words) · `prompt`* string · `subagent_type` string · `model` sonnet|opus|haiku|fable · `isolation` worktree|remote · `run_in_background` bool=true\n    - `subagent_type` values: `claude`, `general-purpose`, `Explore`, `Plan`, `statusline-setup`.\n- **SendMessage**: the only way agents talk to each other; resume a spawned agent with its context, or post to `main`.\n    - `to`* string (teammate name, or `\"main\"`) · `message`* string · `summary` string (<=200, required when message is a string)\n- **Workflow** *(gated: ultracode)*: deterministic JS orchestration over many subagents.\n    - `script` string · `scriptPath` string · `name` string · `args` any · `resumeFromRunId` (`wf_…`)\n\n### Task list & background jobs\n\n- **TaskCreate**: new task (starts `pending`).\n    - `subject`* string · `description`* string · `activeForm` string · `metadata` object\n- **TaskUpdate**: modify a task.\n    - `taskId`* string · `status` pending|in_progress|completed|deleted · `addBlockedBy[]` · `addBlocks[]` · `owner` · `subject` · `description` · `activeForm` · `metadata`\n- **TaskList**: list all tasks. *(no params)*\n- **TaskGet**: one task's full detail.\n    - `taskId`* string\n- **TaskStop**: kill a background task or named agent.\n    - `task_id` string (also `name@team` or a bare agent name) · `shell_id` *(deprecated)*\n- **TaskOutput** *(deprecated)*: read a background job's output.\n    - `task_id`* string · `block` bool=true · `timeout` ms=30000 (max 600000)\n\n### Scheduling & watching\n\n- **CronCreate**: schedule a prompt on 5-field local-time cron; session-only, recurring auto-expires after 7 days.\n    - `cron`* string · `prompt`* string · `recurring` bool=true · `durable` (no effect)\n- **CronList**: list this session's cron jobs. *(no params)*\n- **CronDelete**: cancel one. · `id`* string\n- **Monitor**: stream events from a command's stdout or a WebSocket; one notification per line.\n    - `description`* string · `timeout_ms`* number=300000 (max 3600000) · `persistent`* bool=false · `command` string **or** `ws` {`url`* string, `protocols[]`} (mutually exclusive)\n- **RemoteTrigger**: claude.ai cloud routines (backs `/schedule`).\n    - `action`* list|get|create|update|run · `trigger_id` string · `body` object (required for create/update)\n- **ScheduleWakeup** *(gated: /loop without interval)*: self-paced loop scheduling.\n    - `delaySeconds` number (60 to 3600) · `prompt` string · `reason` string · `stop` bool\n\n### Web & output\n\n- **WebFetch**: fetch a URL, convert to markdown, answer a prompt (15-min cache, HTTP upgraded to HTTPS, no auth).\n    - `url`* uri · `prompt`* string\n- **WebSearch**: web search (US-only).\n    - `query`* string (min 2) · `allowed_domains[]` · `blocked_domains[]`\n- **PushNotification**: desktop/phone ping.\n    - `message`* string (<200 chars) · `status`* const `\"proactive\"`\n- **AskUserQuestion**: structured multiple-choice back to you (interactive only).\n    - `questions[]`* where each has: `question` string, `header` string (<=12), `options[]` (2 to 4: `label`, `description`, `preview`), `multiSelect` bool\n\n### Planning, isolation & design\n\n- **EnterPlanMode / ExitPlanMode**: read-only planning and approval (interactive; also shift+tab). *(no params)*\n- **EnterWorktree** *(gated: worktree)*: isolated git worktree.\n    - `name` string (<=64) **or** `path` string, mutually exclusive\n- **ExitWorktree**: leave the worktree session.\n    - `action`* keep|remove · `discard_changes` bool (true to remove a dirty worktree)\n- **DesignSync**: read/write claude.ai design-system projects; ordering is read, then `finalize_plan`, then write.\n    - `method`* list_projects|get_project|list_files|get_file|finalize_plan|write_files|delete_files|register_assets|unregister_assets|create_project|report_validate · plus `projectId`, `planId`, `path`/`paths[]`, `writes[]`/`deletes[]`, `localDir`, `files[]`, `assets[]`, `name`\n\n### Specialized & internal\n\n- **Skill**: run a packaged skill / slash command.\n    - `skill`* string (exact name, no leading slash) · `args` string\n- **ReportFindings** *(gated: code-review)*: typed findings to the UI.\n    - `findings[]`* where each has: `file`*, `summary`*, `failure_scenario`*, `line`, `category`, `short_summary`, `verdict`, `outcome` · `level` low|medium|high|xhigh|max\n- **Artifact**: publish an HTML/Markdown file as a private claude.ai page (interactive).\n    - `file_path` string · `favicon` emoji (required to publish) · `title` · `description` · `url` (update) · `action` publish|list\n- **ToolSearch**: load deferred tool schemas on demand (internal; never prompt for it).\n    - `query`* string (`select:A,B`, keywords, or `+name term`) · `max_results`* number=5\n\n## Compact reference\n\nLoaded = always-on; Deferred = schema loads on demand. `*` = required.\n\n| Tool | Loaded | Purpose | Key arguments |\n|------|--------|---------|---------------|\n| Read | always | read file / image / PDF / notebook | `file_path`*, offset, limit, pages |\n| Write | always | create / overwrite a Read file | `file_path`*, `content`* |\n| Edit | always | exact string replacement | `file_path`*, `old_string`*, `new_string`*, replace_all |\n| Glob | always | filename pattern match | `pattern`*, path |\n| Grep | always | ripgrep content search | `pattern`*, path, glob, type, output_mode, -i/-n/-o, -A/-B/-C, multiline, head_limit |\n| Bash | always | POSIX shell | `command`*, timeout, run_in_background |\n| PowerShell | always (Windows) | pwsh shell | `command`*, timeout, run_in_background |\n| NotebookEdit | deferred | edit one Jupyter cell | `notebook_path`*, `new_source`*, cell_id, cell_type, edit_mode |\n| Agent | always | spawn a subagent | `description`*, `prompt`*, subagent_type, model, isolation, run_in_background |\n| SendMessage | deferred | agent-to-agent message | `to`*, `message`*, summary |\n| Workflow | always (gated: **ultracode**) | multi-agent orchestration script | script / scriptPath / name, args |\n| TaskCreate/List/Get/Update | deferred | todo tracking and dependencies | `subject`/`description`*; `taskId`*; status, addBlockedBy/addBlocks |\n| TaskStop | deferred | kill background task / agent | task_id |\n| TaskOutput | deferred (**deprecated**) | read a background job's output | `task_id`*, block, timeout |\n| CronCreate/List/Delete | deferred | in-session scheduled prompts | `cron`*, `prompt`*, recurring; `id`* |\n| Monitor | deferred | stream events from logs / cmds / WebSockets | `description`*, `timeout_ms`*, `persistent`*, command \\| ws |\n| RemoteTrigger | deferred | cloud routines (`/schedule`) | `action`*, trigger_id, body |\n| ScheduleWakeup | always (gated: `/loop`) | self-paced loops | delaySeconds, prompt, reason, stop |\n| WebFetch / WebSearch | deferred | fetch a URL / web search | `url`*+`prompt`*; `query`* |\n| PushNotification | deferred | desktop / phone ping | `message`*, `status`* |\n| AskUserQuestion | interactive | structured question to the user | `questions[]`* |\n| EnterPlanMode / ExitPlanMode | interactive | read-only planning and approval | *(none)* |\n| EnterWorktree / ExitWorktree | deferred (gated: **worktree**) | isolated git worktree | name \\| path; `action`*, discard_changes |\n| DesignSync | deferred | claude.ai design-system read/write | `method`*, projectId, planId, writes/deletes, files, assets |\n| Skill | always | run a slash command | `skill`*, args |\n| ReportFindings | always (gated: code-review) | typed findings to UI | `findings[]`*, level |\n| Artifact | interactive | publish HTML/MD as a private page | file_path, favicon, url, action |\n| ToolSearch | always | load deferred tool schemas | `query`*, `max_results`* |\n\n---\n\n## How this was measured\n\nThree methods, each more authoritative, and no network capture needed. The parameter\nschemas come straight from the running session.\n\n- **Ask, interactively:** \"list all your tools with their arguments.\"\n- **Headless, scriptable:** `claude -p \"Introspect and list every tool… output markdown.\"`\n  One thing to know: headless `-p` exposes a reduced toolset. Artifact, AskUserQuestion, and\n  the plan-mode tools don't appear (no interactive surface), so add them back by hand.\n- **Read the session logs:** `~/.claude/projects/<encoded-cwd>/<session-uuid>.jsonl` records\n  the roster (`tool_reference`, `deferred_tools_delta`, `skill_listing`,\n  `agent_listing_delta`) from the harness, independent of the model, though not the argument\n  schemas (`inputSchema` isn't in the transcript).\n\nThe typed parameters above come from `ToolSearch` loading each deferred tool's full\nJSONSchema, the same definition the CLI would send on the wire, so a packet capture would\nonly show what the session already hands over.\n","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/scheduling.md":"\n# Overview\n\nYou should behave like a scheduling assistant that proposes optimal meeting times. Consider this when a user asks to schedule time, find time, propose time, or asks when they are available.\n\n## When to use this skill\n\nThe user might say \"schedule meetings\", \"schedule time\", \"propose time\", \"find time\", \"when I am available\" or similar phrases.\n\nConsider calling the suggestMeetingTimes tool when a user asks to find time. If the user is asking for more complex instructions scheduling behavior based on the nature of users' events, you should consider querying their events via listCoworkersEvents.\n\nInputs you may use\n\n- Calendar data: the user's events and working hours\n- Context the user shares: a Notion page, meeting notes or transcript/summary, a Slack thread, an email thread, or a previous calendar event\n- Constraints from the user: specific date(s), time of day, duration, attendees, location or video link preference, time zone\n\n## How to respond\n\n1. Understand the request\n\n- Extract attendees, purpose, duration, preferred dates or windows, and any availability provided by others\n- Ask follow up questions to clarify the request, if needed\n\n2. Analyze availability\n\n- Use the user's calendar as the source of truth\n- Read each participant's working hours and availability, when available\n- Check the user's calendar for free windows that satisfy the constraints\n- If invitee availability is provided, intersect it with the user's free time\n- Respect time zones, working hours, and reasonable buffers around adjacent events and any preferences the user has provided\n- Identify candidate time slots that work for the group\n\n3. Schedule event if there are no conflicts\n\n- If there is an available time slot for all participants, create the event automatically.\n\n4. If there are conflicts or availability only outside of working hours, propose options and help the user handle conflicts\n\n- Return 1-3 recommended time options with date, start-end time, and time zone.\n- Clearly recommend one best option with a short reason why\n- For each option, explain how it compares to other options, if relevant\n- Ask the user if any participants are optional\n\n5. Handle conflicts - if no fully free slot exists:\n\n- Choose the time(s) with the fewest and lightest conflicts\n- Call out which participants have conflicts, what those conflicting events are, which holds look most movable and why\n- Suggest who the user might contact to move or cancel those conflicts\n\n6. Draft communication\n\n- Always return a ready-to-send draft message the user can copy into Slack or email\n\n7. Confirm details before scheduling an event with conflicts\n\n- Ask the user to pick an option and confirm scheduling the event\n- Confirm whether to send invites\n- Do not notify others or send emails/invites without explicit confirmation\n\n8. Schedule the event (only after confirmation)\n\n- Once the user confirms the timeslot, create the event on the confirmed calendar\n- Add attendees and include a brief context summary with relevant links\n- Default to a 30 minute meeting if the user doesn't specify\n- Add conferencing link if information is available\n- Send invites only if the user confirmed\n- Share a short confirmation with the final details\n\n## User preferences and defaults\n\n- Default working hours unless the user specifies otherwise: 9 a.m.-5 p.m. user's timezone\n- Prefer times within working hours\n- Use Notion Calendar as the system of record for event drafts and availability\n- Respect user's timezones\n- Assume that events the user is a \"Maybe\" on or has not yet RSVP'd to are busy blocks unless the user states otherwise\n- Respect user's OOO or PTO events; never propose times when one or more participants are out of office\n- When proposing options, you may go outside these hours only if the user explicitly asks or there is no reasonable option within working hours\n\n## Interaction and handoff\n\nIn every answer, be explicit about what the user should do next.\n\nUse very clear labels like:\n\n- Recommended options\n- Conflicts\n- Draft message\n- Next actions\n\n## Timezone complexity\n\n- Always specify timezone for each proposed time\n- When participants span multiple zones, show times in each relevant timezone\n\n## Handling recurring event requests\n\n- If a user requests you schedule a recurring event, tell the user you do not yet support this capability.\n\n## External participants\n\nWhen external participants are involved:\n\n- If you cannot see their availability, clearly say so\n- Do not fabricate their free/busy status\n- Explicitly state your limitation\n\n## Meeting time suggestions UI\n\nWhen you call the suggestMeetingTimes tool and it returns time suggestions, you MUST append the following self-closing tag at the very end of your response, on its own line:\n\n<meeting_time_suggestions/>\n\nThis tag renders an interactive UI that lets the user review and act on the suggested meeting times. Always include it after your text response when suggestMeetingTimes returns suggestions.\n\nIf your text recommends only a subset of the returned time slots, include a suggestionKeys attribute so the UI shows only those options:\n\n<meeting_time_suggestions suggestionKeys=\"KEY_1,KEY_2\"/>\n\nEach key must be exactly startAt-endAt from the suggestMeetingTimes output (ISO strings).\n","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/project-planning.md":"\n# Overview\n\nHelp the user organize a calendar-based project plan by breaking down goals into milestones and scheduling key meetings and deadlines.\n\n## Before you start\n\n- Confirm project scope, timeline, and end goal\n- Clarify steps or ideas the user has already generated for this project\n- Ask if there are relevant project pages or sources to use\n- Ask what success looks like and what constraints exist (team size, dependencies, hard deadlines)\n- If scope seems large, suggest ways to break down the project and offer to plan the first step(s) of the project\n\n## Required steps\n\n1. Define milestones: Ask user to outline 3-5 key milestones; confirm dates and dependencies.\n2. Identify key meetings: Determine what recurring check-ins or key sync meetings are needed (kickoff, status, reviews, retrospective); propose frequency and duration\n3. Schedule meetings: Create calendar events for each meeting; ask user to confirm attendees, times, and conferencing needs before booking\n4. Set deadlines: For each milestone, ask if there are specific deliverable dates or blockers.\n5. Track milestones and deadlines in a calendar of their choosing. Clarify which one if it's not obvious.\n6. Create summary: Provide a timeline view (visual or text) showing meetings, milestones, and dependencies; ask if adjustments needed\n\n## What NOT to do\n\n- Don't add meetings to calendar without confirmation of attendees and times\n- Don't assume team availability without checking calendars\n- Don't over-schedule; recommend buffer time between intense work blocks\n- Don't guess project requirements; ask clarifying questions early\n"},"files":{"SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-prep.md":"\n# Overview\n\nYour purpose is to prep the user for meetings. You should surface what matters most before a meeting - urgent items, recent context, and memory-jogging details to answer: _What does the user need to know RIGHT NOW to be effective?_\n\nConsider this when a user asks you to prepare for their meetings, provide meeting context, create pre-reads, or help them get ready for upcoming calendar events.\n\n# Definitions\n\n- Internal: All participants share the user's email domain\n- External: At least one participant has a different email domain\n\n# Research approach\n\nSeek to research the following questions:\n\n1. Have the user and these participants met before? What happened last time?\n2. Are there outstanding action items or decisions from the user?\n3. What's changed or progressed since their last interaction?\n4. What decisions or discussions should be on the agenda?\n\n## Search across all available sources\n\n- Notion: Meeting notes, project pages, relevant docs, action items, decision logs, recent updates\n- Calendar: Last meeting with these participants, linked notes, attached documents, agendas, recurring patterns\n- Slack: Recent conversations with participants, topic mentions, channel discussions, direct messages\n- Email: Thread history, correspondence, attachments, shared materials\n- Web search: (External only, or if the user has never met with the individuals in the meeting before) Participant background, company news, industry context, public information\n\n# What to surface\n\n## Urgent flags\n\n- Decisions the user needs to make today\n- Action items the user owes (with dates if overdue)\n- Urgent items needing resolution\n- Prep materials to review\n\n## Memory joggers\n\n- Date of last meeting\n- Key discussion points and decisions made\n- What the user committed to\n- Where they left off, including any outstanding topics or decisions\n\n## Today's focus\n\n- Meeting purpose and agenda\n- Key topics or decisions on deck as well as supporting context\n- Materials or links from the invite\n\n## Participants\n\n- Internal: Role, relevant projects, recent updates on topic\n- External: Name, title, company, why they matter, relationship status\n\n# Output guidelines\n\n- Structure: Specific times, names, concrete details. Skip sections with no relevant info. Use bullet points. Cite all sources with footnotes.\n- Tone: Direct, specific, personalized. Write like a well-prepared colleague. Focus on what the user needs to do or decide.\n- Format: For each meeting, use:\n\n｀｀｀\n[Meeting Time] - [Meeting Title]\n\n👥 Participants\n[participant details]\n\n🚨 Important flags (only if relevant)\n[urgent items]\n\n💭 Last time we met (only if applicable)\n[last meeting context]\n\n🎯 Today's discussion\n[agenda and purpose]\n\n｀｀｀\n\nIf prepping several meetings, separate multiple meetings with a horizontal line (---).\n\n# Quality priorities\n\n- Actionable: Focus on what the user needs to do or decide\n- Memory-jogging: Remind them of past conversations and commitments\n- Specific: Use concrete details, dates, and quotes\n- Concise: Surface only what matters\n- Well-cited: Always link sources\n\n# What NOT to do\n\n- Don't make assumptions about importance without evidence\n- Don't include generic meeting advice or regurgitate the calendar event details\n- Don't create empty sections\n- Don't research external participants if clearly internal\n- Don't spend time on social events or casual meetups\n- Don't write prep to pages without user permission or specified location\n",".claude/CLAUDE.md":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Repository Purpose\n\nThis is a collection repository for LLM system prompts, custom GPT instructions, jailbreak prompts, and instruction protection techniques. The content is primarily markdown documentation for educational purposes around prompt engineering and LLM security research.\n\n## Repository Structure\n\n- **SystemPrompts/** - System prompts from various LLM providers (OpenAI, Anthropic, Google, Meta, xAI, etc.), organized by vendor with date-stamped filenames\n- **CustomInstructions/** - Custom GPT instructions and configurations, including a large index in `CustomInstructions/README.md` (the table of contents for ChatGPT GPTs)\n- **Jailbreak/** - Jailbreak prompts organized by LLM provider\n- **Security/** - GPT instruction protection techniques\n- **Articles/** - Technical articles about LLM internals and prompt engineering\n- **Tools/openai_gpts/** - Python utilities for managing GPT documentation\n\n## Tools\n\nPython scripts in `Tools/openai_gpts/`:\n\n```bash\n# Rebuild the CustomInstructions/README.md table of contents\npython Tools/openai_gpts/idxtool.py --toc\n\n# Find a GPT by ID or URL\npython Tools/openai_gpts/idxtool.py --find-gpt <GPT_ID_OR_URL>\n\n# Generate a markdown template for a new GPT entry\npython Tools/openai_gpts/idxtool.py --template <CHATGPT_URL>\n\n# Generate template with metadata dump (standalone tool)\npython Tools/openai_gpts/gen_gpt_templ.py <URL_OR_ID> --dump\n```\n\n## File Naming Conventions\n\n- **SystemPrompts**: `YYYYMMDD-ProviderName.md` or `provider_feature_YYYYMMDD.md`\n- **CustomInstructions GPTs**: `{gpt_id}.md` with GPT metadata in frontmatter-style headers\n\n## Contributing New Prompts\n\nWhen adding system prompts or GPT instructions:\n1. Use the appropriate date-stamped naming convention\n2. For GPTs, use `idxtool.py --template` to generate the initial file structure\n3. Run `idxtool.py --toc` after adding new GPT files to update the table of contents\n","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/optimize-schedule.md":"\n# Overview\n\nYou should analyze calendar schedules and provide recommendations to optimize time management. You should identify problems, suggest solutions and explain your reasoning. Never take action without explicit approval unless the user have given you permission to do so. When a user specifies a preference in their prompt or instructions, prioritize that preference over these instructions.\n\n_Ask the user for their preferences if they haven't provided them._\n\n## What to analyze\n\n### Meeting conflicts\n\n- Identify overlapping or double-booked meetings\n- Determine priority based on:\n  - Meeting context from available sources (email, calendar, Slack, Notion workspace, etc.)\n  - User's apparent role or involvement level\n  - Attendee lists and meeting importance\n  - User's stated priorities or preferences\n- Provide clear recommendations with brief reasoning\n\n### Calendar overload\n\n- Calculate total meeting hours for the time period\n- Flag when meeting load exceeds reasonable thresholds (respect any user-specified threshold)\n- Identify which meetings could potentially be declined, delegated, rescheduled or shortened\n- Consider meeting importance, required attendance, scheduling flexibility and attendee lists\n\n### Focus time gaps\n\n- Don't assume every user treats focus time blocks the same way\n- Identify available blocks of unscheduled time\n- Look for opportunities to protect focus time\n- Recommend specific time blocks for deep work\n\n### Task scheduling opportunities\n\n- If the user has provided access to a tasks database or to-do list, review incomplete or upcoming items\n- Match tasks to available calendar slots based on priority, deadlines, estimated time needed, available focus blocks and context switching\n- Suggest specific time slots for each task\n- Only update task due dates or calendar after explicit approval\n\n## How to gather information\n\n- Use calendar tools to view the relevant time period\n- Search the user's workspace for context on meeting topics, attendees or projects\n- Check for task databases, project pages or priority lists\n- Look for email or Slack threads that provide meeting context\n- Consider the user's stated preferences and work patterns\n\n## Handling edge cases\n\n- Insufficient context: Explain what information is missing and ask for guidance\n- All meetings seem important: Present the tradeoffs and let the user decide\n- No tasks database found: Ask where tasks are tracked or focus only on calendar optimization\n- Unclear preferences: Make recommendations based on general best practices and invite the user to provide preferences\n\n## Formatting\n\nFollow user's formatting preferences. Also,\n\n- Be specific (include meeting names, times, task titles)\n- Provide brief, clear reasoning\n\n## Reschedule guidelines\n\nWhen proposing to reschedule meetings due to conflicts or overload:\n\n- With access to participant calendars: Find time slots where all attendees are free\n- Without access to participant calendars: Suggest times when the user is free\n- Format: Present options as specific days and times\n- After presenting options: Ask the user to confirm which time they prefer\n- Reschedule the meeting: Proceed to reschedule the meeting to the confirmed time\n  End with: \"Would you like me to proceed with any of these changes?\"\n","Tools/README.md":"# TheBigPromptLibrary Tools\n\nThis directory contains various tools and utilities for working with ChatGPT's custom GPTs.\n\n## Available Tools\n\n- A [collection of scripts](./openai_gpts/README.md) for managing and working with ChatGPT Custom GPTs\n\n## License\n\nThese tools are open-sourced under the GNU General Public License (GPL). Under this license, you are free to use, modify, and redistribute this software, provided that all copies and derivative works are also licensed under the GPL.\n\nFor more details, see the [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html).","Tools/openai_gpts/README.md":"# Custom GPTs scripts and tools\n\nThis directory contains utilities for working with ChatGPT Custom GPTs in TheBigPromptLibrary:\n\n- **idxtool.py** - GPT indexing and searching tool\n- **gen_gpt_templ.py** - Generate markdown templates for ChatGPT GPTs by downloading and parsing their metadata\n- **oneoff.py** - One-off operations on GPT files (e.g., batch reformatting)\n\n## idxtool\n\nThe `idxtool` script is a Custom GPT indexing and searching tool used in TheBigPromptLibrary.\n\n### Command line\n\n```\nusage: idxtool.py [-h] [--toc [TOC]] [--find-gpt FIND_GPT] \n                  [--template TEMPLATE] [--parse-gptfile PARSE_GPTFILE] \n\t\t  [--rename]\n\nidxtool: A GPT indexing and searching tool for the CSP repo\n\noptions:\n  -h, --help            show this help message and exit\n  --toc [TOC]           Rebuild the table of contents of GPT custom instructions\n  --find-gpt FIND_GPT   Find a GPT file by its ID or full ChatGPT URL\n  --template TEMPLATE   Creates an empty GPT template file from a ChatGPT URL\n  --parse-gptfile PARSE_GPTFILE\n                        Parses a GPT file name\n  --rename              Rename the GPT file names to include their GPT ID\n```\n\n### Features\n\n- Rebuild TOC: Use `--toc` to rebuild the table of contents for GPT custom instructions.\n- Find GPT File: Use `--find-gpt [GPTID or Full ChatGPT URL or a response file with IDs/URLs]` to find a GPT by its ID or URL.\n- Rename GPT: Use `--rename` to rename all the GPTs to include their GPTID as prefix.\n- Create a starter template GPT file: Use `--template [Full ChatGPT URL]` to create a starter template GPT file.\n- Help: Use `--help` to display the help message and usage instructions.\n\n### Example\n\nTo rebuild the custom GPTs files, run:\n\n```bash\npython idxtool.py --toc\n```\n\nTo find a GPT by its ID, run:\n\n```bash\npython idxtool.py --find-gpt 3rtbLUIUO\n```\n\nor by URL:\n  \n```bash\npython idxtool.py --find-gpt https://chat.openai.com/g/g-svehnI9xP-retro-adventures\n```\n\nAdditionally, you can have a file with a list of IDs or URLs and pass it to the `--find-gpt` option:\n\n```bash\npython idxtool.py --find-gpt @gptids.txt\n```\n\n(note the '@' symbol).\n\nThe `gptids.txt` file contains a list of IDs or URLs, one per line:\n\n```text\n3rtbLUIUO\nhttps://chat.openai.com/g/g-svehnI9xP-retro-adventures\n#vYzt7bvAm\nw2yOasK1r\nwaDWNw2J3\n```\n\n## gen_gpt_templ\n\nThe `gen_gpt_templ` script generates markdown templates for ChatGPT GPTs by downloading and parsing their metadata from the ChatGPT website.\n\n### Command line\n\n```bash\nusage: gen_gpt_templ.py [-h] [--debug] [--dump] [input]\n\nGenerate markdown template for ChatGPT GPTs\n\npositional arguments:\n  input       GPT URL, GPT ID, g-prefixed GPT ID, or @response_file\n\noptions:\n  -h, --help  show this help message and exit\n  --debug     Save debug files (HTML and dump)\n  --dump      Save parsed names and values to .txt file\n```\n\n### Features\n\n- Downloads GPT metadata from ChatGPT URLs\n- Parses GPT information including title, description, author, and profile picture\n- Generates markdown templates with GPT metadata\n- Supports multiple input formats:\n  - Full ChatGPT URL: `https://chatgpt.com/g/g-VgbIr9TQQ-ida-pro-c-sdk-and-decompiler`\n  - Conversation URL: `https://chatgpt.com/g/g-m5lMeGifF-sql-expert-querygpt/c/682cd38c-ca8c-800d-b6e2-33b8ba763824`\n  - GPT ID: `VgbIr9TQQ`\n  - Prefixed GPT ID: `g-VgbIr9TQQ`\n  - Response file: `@gptids.txt` (processes multiple GPTs from a file)\n\n### Examples\n\nGenerate template for a single GPT:\n\n```bash\npython gen_gpt_templ.py https://chatgpt.com/g/g-VgbIr9TQQ-ida-pro-c-sdk-and-decompiler\n```\n\nProcess multiple GPTs from a file:\n\n```bash\npython gen_gpt_templ.py @gptids.txt\n```\n\nGenerate template with debug output:\n\n```bash\npython gen_gpt_templ.py g-VgbIr9TQQ --debug --dump\n```\n\n## Differences between idxtool and gen_gpt_templ\n\n### idxtool --template\n- Uses gen_gpt_templ internally to download actual GPT metadata from ChatGPT\n- Creates templates with real GPT information (title, description, author, logo)\n- Generates properly named files (`{gpt_id}.md`) without RENAMEME suffix\n- Simpler interface for basic template generation within the idxtool workflow\n\n### gen_gpt_templ\n- Full-featured standalone tool with additional capabilities:\n  - `--dump` flag to save all parsed metadata to .txt file\n  - `--debug` flag to save HTML and debug information\n  - Batch processing with @response_file for multiple GPTs\n  - More detailed console output showing download and parsing progress\n  - Can be used as a module by other tools (like idxtool)\n\nUse `idxtool --template` when you need a quick template as part of your GPT file management workflow. Use `gen_gpt_templ` directly when you need the advanced features like metadata dumping or batch processing.\n\n## oneoff\n\nThe `oneoff` script performs one-off operations on GPT files, primarily batch processing tasks.\n\n### Features\n\n- **Reformat GPT files**: Reformats all GPT markdown files in a source directory and saves them to a destination directory\n- Validates GPT file structure during processing\n- Preserves GPT metadata (ID, name) during reformatting\n\n### Usage\n\nThe script is designed for batch operations. Currently supports:\n\n1. **Batch reformatting**: Process all `.md` files in a source directory, reformat them according to the standard GPT markdown structure, and save to a destination directory.\n\nExample usage in code:\n\n```python\nfrom oneoff import reformat_gpt_files\n\nsuccess, message = reformat_gpt_files(\"source_gpts/\", \"formatted_gpts/\")\nprint(message)\n```\n\n## License\n\nThis tool is open-sourced under the GNU General Public License (GPL). Under this license, you are free to use, modify, and redistribute this software, provided that all copies and derivative works are also licensed under the GPL.\n\nFor more details, see the [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html).\n","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-follow-up.md":"\n# Overview\n\nHelp the user quickly turn a meeting that already happened into clear outputs and next steps. Optimize for: fast recap, stakeholder-ready communication, and reliable task capture so nothing slips.\n\nConsider this when the user asks for meeting follow up like \"help me followup on this meeting\", \"send an update,\" \"log action items,\" \"turn notes into tasks,\" \"what are next steps,\" or \"can you follow up with the team.\"\n\n## Definitions\n\n- Internal: All participants share the user's email domain\n- External: At least one participant has a different email domain\n\n## Intake questions to answer (don't ask the user unless needed)\n\n1. Where are the meeting notes stored?\n2. What follow-ups should happen today vs later?\n3. What was decided? What is still open?\n4. What are the action items, owners, and due dates?\n5. Who needs to know, and what do they need to know (level of detail)?\n6. Are there risks, blockers, or dependencies that need escalation?\n\n## Research approach\n\nPrioritize sources in this order:\n\n- AI meeting notes: summary, action items, transcript, attendees\n- User's notes and any linked docs from the calendar invite\n- Related project pages, specs, PRDs, decision logs, open tasks\n- Slack and email only if needed to confirm context, commitments, or distribution list\n- Calendar to schedule follow up meetings (default to within one week unless otherwise noted)\n\n## What to produce (choose based on user intent, default to the smallest useful set, offer to help with additional followups with examples)\n\n### A) Meeting recap (base deliverable)\n\nCreate a crisp recap with:\n\n- Purpose and outcome in one sentence\n- Key decisions (with decision owner if clear)\n- Discussion highlights (only what matters)\n- Action items (owner, due date, status)\n- Open questions and next meeting plan (if any)\n\n### B) Stakeholder-specific summaries\n\nOffer tailored versions of the recap for different audiences, for example:\n\n- Exec skim: outcomes, risks, asks, deadlines\n- Cross-functional partners: decisions, dependencies, handoffs\n- Direct team: detailed next steps and owners\n- External attendee follow up: confirmed decisions, action items with assignees, deliverables, timelines, thanks\n\nDefault behavior: propose 2-3 stakeholder formats that make sense based on the meeting and participants and generate them unless user specifies otherwise. Keep each version appropriately short.\n\n### C) Project status update\n\nIf the meeting impacts a project, convert outcomes into a status update using a consistent structure:\n\n- Status (on track, at risk, off track)\n- What changed since last update\n- Progress made\n- Risks and blockers\n- Next milestones and dates\n- Asks and owners\n\n### D) Comms distribution (Slack or email)\n\nIf the user wants to send an update:\n\n- Draft the message in the right tone for the channel\n- Include links to notes and relevant docs\n- Include clear asks, owners, and deadlines\n- Keep Slack short, email slightly more structured\n- Never send without explicit confirmation from the user\n- If unsure of channel or recipients, ask a single clarifying question\n\n### E) Task logging and tracking\n\nTurn action items into tasks with:\n\n- Clear verb-first task title\n- Owner (if known)\n- Due date (if stated, otherwise suggest one or mark \"needs date\")\n- Source link back to the meeting notes\n- Any dependencies / context in the description\n\nIf the user has an existing task system, match it. Otherwise, create a lightweight list of action items in the follow-up output.\n\n### F) Help execute tasks\n\nWhen asked, help move tasks forward by producing the next artifact.\n\n### G) Help schedule meetings\n\nBased on meeting notes or when asked, schedule follow-up meetings or related discussions.\n\n## What to surface (content priorities)\n\n### Urgent flags\n\n- Deadlines within the next week\n- Commitments made by the user\n- Risks or blockers that need escalation\n- Missing owners or unclear next steps\n\n### Decisions\n\n- Decision statement\n- Options considered (only if important)\n- Rationale (one line)\n- Owner and date\n\n### Action items\n\n- Task, owner, due date\n- \"Needs owner\" or \"needs date\" explicitly called out\n- Group by team or theme if there are many\n\n### Open questions\n\n- What's unresolved\n- Who can answer\n- When it must be resolved\n\n## Output guidelines\n\n- Be direct, specific, and skimmable\n- Use bullet points, short sections, no filler\n- Skip empty sections\n- Prefer concrete nouns, names, dates\n- If generating multiple stakeholder versions, label each clearly\n- If you used sources (notes, transcript, docs), cite them\n\n## What NOT to do\n\n- Don't invent decisions, owners, or deadlines\n- Don't over-summarize: preserve commitments and action items verbatim when possible\n- Don't include sensitive or internal-only details in an external follow up\n- Don't send emails or Slack messages without user confirmation\n- Don't create busywork: prefer the smallest set of outputs that unblock progress\n- Don't regurgitate the meeting notes or meeting summary that already exists\n","Articles/claude-code-tools/README.md":"# When \"Just Do It\" Isn't Enough: Invoking Claude Code Tools by Name\n\n*By **Elias Bachaalany** — [@0xeb](https://github.com/0xeb) on GitHub · [Binary Wizards](https://www.youtube.com/@binary-wizards) on YouTube · [@eliasbchlny](https://x.com/eliasbchlny) on X*\n\n*The cases where naming the exact tool beats describing the outcome.*\n\nClaude Code exposes a few dozen tools, and most of the time you should never name one.\nYou say what you want (\"find every place we validate emails\", \"build it and run it\") and\nthe model routes the request to the right tool. That default is good, and you should lean\non it.\n\nBut routing is the model's guess at your intent, and sometimes the guess isn't what you\nwanted. It answers when you wanted to be asked. It presses on when you wanted a checkpoint.\nIt skips the task list you wanted kept. It improvises three shell commands when you wanted\none specific search. In those moments the fix is the same: stop describing the outcome and\nname the tool. Saying \"use the AskUserQuestion tool\" or \"use TaskCreate\" or \"use Monitor\"\nturns a guess into a guarantee.\n\nThis article is about those moments, the legitimate cases where naming the tool gives you\ndeterministic control, followed by a full, typed reference so you know exactly what to say\nand with which arguments.\n\n## Two ways to invoke, and when to switch\n\nThe model is a good dispatcher. Tell it what you want and it walks to the toolbox, picks a\ntool, and uses it. Ninety percent of the time that is exactly right, and you should let it\ndrive. But a dispatcher is guessing at your intent, and every so often you want to reach\npast it and grab a specific tool yourself. That reach is the whole skill this article\nteaches: knowing the names well enough to ask for one on purpose.\n\n- **Outcome phrasing** (the default): *\"Find where auth is handled.\"* The model picks the\n  tool. Best for almost everything.\n- **By-name invocation** (this article): *\"Use the Grep tool with `pattern`='validateAuth',\n  `output_mode`='content'.\"* You pick the tool and, optionally, its exact arguments. Best\n  when the specific behavior matters more than the outcome.\n\nSwitch to by-name when any of these is true: you want a **specific mechanism** (this tool,\nnot a substitute), you want a behavior the model **wouldn't trigger on its own**, or the\ntool is **keyword-gated** and has no other way in.\n\n## When naming the tool wins\n\n### Make it stop and ask you: `AskUserQuestion`\n\nHere is a fun one to try right now. Prompt the model with:\n\n> \"Use the AskUserQuestion tool and present me three color choices.\"\n\nIt pops a little structured menu, red / green / blue, and waits for you to pick. Nothing\nabout choosing a color *needs* a tool, which is exactly why it makes such a clean demo: you\naren't asking for an outcome, you are commandeering a specific piece of UI on demand. The\nmodel is smart enough to reach for this tool on its own, but here you are the one deciding\nit should.\n\nNow swap the toy for something real:\n\n> \"Use the AskUserQuestion tool to give me options before you choose the auth library.\"\n\nSame move, real stakes. You convert \"the model decided\" into \"the model asked.\" This is the\nsingle most useful by-name habit to build.\n\n### Force a task to exist: `TaskCreate` / `TaskUpdate`\n\nThe todo system auto-engages on big, multi-step work, but for a two- or three-step job it\nmay not bother. When you want a durable, visible checklist regardless of the model's\njudgment:\n\n> \"Use **TaskCreate** to add a task: `subject`='Migrate auth to OAuth'. Then keep it updated\n> as you go.\"\n> \"Use **TaskUpdate** `taskId`=2, `addBlockedBy`=['1'] so task 2 waits for task 1.\"\n\nNaming `TaskCreate` makes the task exist on purpose; naming `TaskUpdate` lets you drive\nstatus and dependencies by hand instead of hoping they're tracked.\n\n### Start something recurring or watching, on purpose: `CronCreate`, `Monitor`, `/loop`\n\n\"Keep an eye on the build\" is ambiguous; the mechanism you actually want isn't. Name it, and\nyou choose polling vs. streaming vs. self-pacing:\n\n> \"Use **CronCreate** `cron`='*/15 * * * *' to re-run the tests every 15 minutes.\"\n> \"Use **Monitor** `command`='tail -f dev.log | grep --line-buffered ERROR' to tell me every\n> time an error appears.\"\n> \"**/loop 5m /babysit-prs**\" to run a prompt on an interval.\n\n### Behaviors that *only* exist by name: the keyword-gated tools\n\nSome tools cannot be summoned any other way. Here the name or keyword **is** the API:\n\n- **worktree** unlocks `EnterWorktree`: \"do this in a **worktree**.\"\n- **ultracode** (or \"use a workflow\") unlocks `Workflow`: deliberate multi-agent orchestration.\n- **/loop** with no interval unlocks `ScheduleWakeup`: model-paced loops.\n- an active code review unlocks `ReportFindings`: typed findings to the UI.\n\nNo amount of outcome phrasing unlocks these; the deliberate keyword is the point. They can\nspawn many agents or relocate your edits, so they wait for explicit consent.\n\n### Pin the exact operation: `Grep`, `Glob`, `Edit`, `Agent`\n\nWhen you want one specific mechanism and no substitution:\n\n> \"Use **Grep** with `pattern`='TODO', `output_mode`='content', `-n`=true\" (not a subagent).\n> \"Use an **Explore** agent to search, don't grep inline.\"\n> \"Use **Edit** on `config.ts` with `replace_all`=true.\"\n\nNaming removes the routing guess when the *how* matters as much as the *what*.\n\n### Run a specific, known procedure: `Skill`\n\nSkills are packaged multi-step procedures. Naming one runs *that* procedure rather than\nhoping the model reconstructs the same steps:\n\n> \"Use the **deep-research** skill on X\", or type `/deep-research <question>`.\n\n### Choose the output channel: `Artifact`, `PushNotification`, `WebFetch`\n\nWhen you want a specific destination for the result:\n\n> \"Make an **Artifact** I can share.\" / \"Use **PushNotification** to ping me when the build\n> finishes.\" / \"Use **WebFetch** `url`=… `prompt`='what changed in 2.1?'.\"\n\n### How to phrase a by-name call\n\nTwo levels of precision:\n\n- **Name only:** \"Use TaskCreate to track this.\" The model fills in the arguments.\n- **Name plus arguments:** \"Use TaskCreate with `subject`='…', `description`='…',\n  `activeForm`='…'.\" You pin the exact call.\n\nThe rest of this article is the reference that makes the second form possible: every tool,\nits parameters, types, and defaults.\n\n---\n\n## The catalog: always-loaded vs deferred\n\nThe reference is the full toolset of a Claude Code 2.1.223 session (Windows, August 2026):\n**32 tools, 13 always-loaded and 19 deferred**. Always-loaded tools are callable\nimmediately; deferred tools are announced by name and their schemas load on demand (the\nmodel pulls one in with a `ToolSearch` call before first use). Parameters are marked `*`\nwhen required, with types and defaults noted.\n\n### File, search & shell\n\n- **Read**: read a file (text, image, PDF, notebook).\n    - `file_path`* string (absolute) · `offset` int · `limit` int · `pages` string (PDF range)\n- **Write**: create or overwrite a file you've Read.\n    - `file_path`* string · `content`* string\n- **Edit**: exact string replacement.\n    - `file_path`* string · `old_string`* string · `new_string`* string · `replace_all` bool=false\n- **Glob**: filename pattern match, sorted by mtime.\n    - `pattern`* string · `path` string\n- **Grep**: ripgrep content search.\n    - `pattern`* string · `path` · `glob` · `type` · `output_mode` content|files_with_matches|count · `-i`/`-n`/`-o` bool · `-A`/`-B`/`-C` int · `multiline` bool · `head_limit` int=250 · `offset` int\n- **Bash**: Git Bash / POSIX shell.\n    - `command`* string · `description` · `timeout` ms=120000 (max 600000) · `run_in_background` bool · `dangerouslyDisableSandbox` bool\n- **PowerShell**: pwsh (primary shell on Windows; absent on macOS/Linux).\n    - `command`* string · `description` · `timeout` ms (max 600000) · `run_in_background` bool · `dangerouslyDisableSandbox` bool\n- **NotebookEdit**: replace/insert/delete one Jupyter cell.\n    - `notebook_path`* string · `new_source`* string · `cell_id` string · `cell_type` code|markdown · `edit_mode` replace|insert|delete (default replace)\n\n### Delegation\n\n- **Agent**: spawn a subagent.\n    - `description`* string (3 to 5 words) · `prompt`* string · `subagent_type` string · `model` sonnet|opus|haiku|fable · `isolation` worktree|remote · `run_in_background` bool=true\n    - `subagent_type` values: `claude`, `general-purpose`, `Explore`, `Plan`, `statusline-setup`.\n- **SendMessage**: the only way agents talk to each other; resume a spawned agent with its context, or post to `main`.\n    - `to`* string (teammate name, or `\"main\"`) · `message`* string · `summary` string (<=200, required when message is a string)\n- **Workflow** *(gated: ultracode)*: deterministic JS orchestration over many subagents.\n    - `script` string · `scriptPath` string · `name` string · `args` any · `resumeFromRunId` (`wf_…`)\n\n### Task list & background jobs\n\n- **TaskCreate**: new task (starts `pending`).\n    - `subject`* string · `description`* string · `activeForm` string · `metadata` object\n- **TaskUpdate**: modify a task.\n    - `taskId`* string · `status` pending|in_progress|completed|deleted · `addBlockedBy[]` · `addBlocks[]` · `owner` · `subject` · `description` · `activeForm` · `metadata`\n- **TaskList**: list all tasks. *(no params)*\n- **TaskGet**: one task's full detail.\n    - `taskId`* string\n- **TaskStop**: kill a background task or named agent.\n    - `task_id` string (also `name@team` or a bare agent name) · `shell_id` *(deprecated)*\n- **TaskOutput** *(deprecated)*: read a background job's output.\n    - `task_id`* string · `block` bool=true · `timeout` ms=30000 (max 600000)\n\n### Scheduling & watching\n\n- **CronCreate**: schedule a prompt on 5-field local-time cron; session-only, recurring auto-expires after 7 days.\n    - `cron`* string · `prompt`* string · `recurring` bool=true · `durable` (no effect)\n- **CronList**: list this session's cron jobs. *(no params)*\n- **CronDelete**: cancel one. · `id`* string\n- **Monitor**: stream events from a command's stdout or a WebSocket; one notification per line.\n    - `description`* string · `timeout_ms`* number=300000 (max 3600000) · `persistent`* bool=false · `command` string **or** `ws` {`url`* string, `protocols[]`} (mutually exclusive)\n- **RemoteTrigger**: claude.ai cloud routines (backs `/schedule`).\n    - `action`* list|get|create|update|run · `trigger_id` string · `body` object (required for create/update)\n- **ScheduleWakeup** *(gated: /loop without interval)*: self-paced loop scheduling.\n    - `delaySeconds` number (60 to 3600) · `prompt` string · `reason` string · `stop` bool\n\n### Web & output\n\n- **WebFetch**: fetch a URL, convert to markdown, answer a prompt (15-min cache, HTTP upgraded to HTTPS, no auth).\n    - `url`* uri · `prompt`* string\n- **WebSearch**: web search (US-only).\n    - `query`* string (min 2) · `allowed_domains[]` · `blocked_domains[]`\n- **PushNotification**: desktop/phone ping.\n    - `message`* string (<200 chars) · `status`* const `\"proactive\"`\n- **AskUserQuestion**: structured multiple-choice back to you (interactive only).\n    - `questions[]`* where each has: `question` string, `header` string (<=12), `options[]` (2 to 4: `label`, `description`, `preview`), `multiSelect` bool\n\n### Planning, isolation & design\n\n- **EnterPlanMode / ExitPlanMode**: read-only planning and approval (interactive; also shift+tab). *(no params)*\n- **EnterWorktree** *(gated: worktree)*: isolated git worktree.\n    - `name` string (<=64) **or** `path` string, mutually exclusive\n- **ExitWorktree**: leave the worktree session.\n    - `action`* keep|remove · `discard_changes` bool (true to remove a dirty worktree)\n- **DesignSync**: read/write claude.ai design-system projects; ordering is read, then `finalize_plan`, then write.\n    - `method`* list_projects|get_project|list_files|get_file|finalize_plan|write_files|delete_files|register_assets|unregister_assets|create_project|report_validate · plus `projectId`, `planId`, `path`/`paths[]`, `writes[]`/`deletes[]`, `localDir`, `files[]`, `assets[]`, `name`\n\n### Specialized & internal\n\n- **Skill**: run a packaged skill / slash command.\n    - `skill`* string (exact name, no leading slash) · `args` string\n- **ReportFindings** *(gated: code-review)*: typed findings to the UI.\n    - `findings[]`* where each has: `file`*, `summary`*, `failure_scenario`*, `line`, `category`, `short_summary`, `verdict`, `outcome` · `level` low|medium|high|xhigh|max\n- **Artifact**: publish an HTML/Markdown file as a private claude.ai page (interactive).\n    - `file_path` string · `favicon` emoji (required to publish) · `title` · `description` · `url` (update) · `action` publish|list\n- **ToolSearch**: load deferred tool schemas on demand (internal; never prompt for it).\n    - `query`* string (`select:A,B`, keywords, or `+name term`) · `max_results`* number=5\n\n## Compact reference\n\nLoaded = always-on; Deferred = schema loads on demand. `*` = required.\n\n| Tool | Loaded | Purpose | Key arguments |\n|------|--------|---------|---------------|\n| Read | always | read file / image / PDF / notebook | `file_path`*, offset, limit, pages |\n| Write | always | create / overwrite a Read file | `file_path`*, `content`* |\n| Edit | always | exact string replacement | `file_path`*, `old_string`*, `new_string`*, replace_all |\n| Glob | always | filename pattern match | `pattern`*, path |\n| Grep | always | ripgrep content search | `pattern`*, path, glob, type, output_mode, -i/-n/-o, -A/-B/-C, multiline, head_limit |\n| Bash | always | POSIX shell | `command`*, timeout, run_in_background |\n| PowerShell | always (Windows) | pwsh shell | `command`*, timeout, run_in_background |\n| NotebookEdit | deferred | edit one Jupyter cell | `notebook_path`*, `new_source`*, cell_id, cell_type, edit_mode |\n| Agent | always | spawn a subagent | `description`*, `prompt`*, subagent_type, model, isolation, run_in_background |\n| SendMessage | deferred | agent-to-agent message | `to`*, `message`*, summary |\n| Workflow | always (gated: **ultracode**) | multi-agent orchestration script | script / scriptPath / name, args |\n| TaskCreate/List/Get/Update | deferred | todo tracking and dependencies | `subject`/`description`*; `taskId`*; status, addBlockedBy/addBlocks |\n| TaskStop | deferred | kill background task / agent | task_id |\n| TaskOutput | deferred (**deprecated**) | read a background job's output | `task_id`*, block, timeout |\n| CronCreate/List/Delete | deferred | in-session scheduled prompts | `cron`*, `prompt`*, recurring; `id`* |\n| Monitor | deferred | stream events from logs / cmds / WebSockets | `description`*, `timeout_ms`*, `persistent`*, command \\| ws |\n| RemoteTrigger | deferred | cloud routines (`/schedule`) | `action`*, trigger_id, body |\n| ScheduleWakeup | always (gated: `/loop`) | self-paced loops | delaySeconds, prompt, reason, stop |\n| WebFetch / WebSearch | deferred | fetch a URL / web search | `url`*+`prompt`*; `query`* |\n| PushNotification | deferred | desktop / phone ping | `message`*, `status`* |\n| AskUserQuestion | interactive | structured question to the user | `questions[]`* |\n| EnterPlanMode / ExitPlanMode | interactive | read-only planning and approval | *(none)* |\n| EnterWorktree / ExitWorktree | deferred (gated: **worktree**) | isolated git worktree | name \\| path; `action`*, discard_changes |\n| DesignSync | deferred | claude.ai design-system read/write | `method`*, projectId, planId, writes/deletes, files, assets |\n| Skill | always | run a slash command | `skill`*, args |\n| ReportFindings | always (gated: code-review) | typed findings to UI | `findings[]`*, level |\n| Artifact | interactive | publish HTML/MD as a private page | file_path, favicon, url, action |\n| ToolSearch | always | load deferred tool schemas | `query`*, `max_results`* |\n\n---\n\n## How this was measured\n\nThree methods, each more authoritative, and no network capture needed. The parameter\nschemas come straight from the running session.\n\n- **Ask, interactively:** \"list all your tools with their arguments.\"\n- **Headless, scriptable:** `claude -p \"Introspect and list every tool… output markdown.\"`\n  One thing to know: headless `-p` exposes a reduced toolset. Artifact, AskUserQuestion, and\n  the plan-mode tools don't appear (no interactive surface), so add them back by hand.\n- **Read the session logs:** `~/.claude/projects/<encoded-cwd>/<session-uuid>.jsonl` records\n  the roster (`tool_reference`, `deferred_tools_delta`, `skill_listing`,\n  `agent_listing_delta`) from the harness, independent of the model, though not the argument\n  schemas (`inputSchema` isn't in the transcript).\n\nThe typed parameters above come from `ToolSearch` loading each deferred tool's full\nJSONSchema, the same definition the CLI would send on the wire, so a packet capture would\nonly show what the session already hands over.\n","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/scheduling.md":"\n# Overview\n\nYou should behave like a scheduling assistant that proposes optimal meeting times. Consider this when a user asks to schedule time, find time, propose time, or asks when they are available.\n\n## When to use this skill\n\nThe user might say \"schedule meetings\", \"schedule time\", \"propose time\", \"find time\", \"when I am available\" or similar phrases.\n\nConsider calling the suggestMeetingTimes tool when a user asks to find time. If the user is asking for more complex instructions scheduling behavior based on the nature of users' events, you should consider querying their events via listCoworkersEvents.\n\nInputs you may use\n\n- Calendar data: the user's events and working hours\n- Context the user shares: a Notion page, meeting notes or transcript/summary, a Slack thread, an email thread, or a previous calendar event\n- Constraints from the user: specific date(s), time of day, duration, attendees, location or video link preference, time zone\n\n## How to respond\n\n1. Understand the request\n\n- Extract attendees, purpose, duration, preferred dates or windows, and any availability provided by others\n- Ask follow up questions to clarify the request, if needed\n\n2. Analyze availability\n\n- Use the user's calendar as the source of truth\n- Read each participant's working hours and availability, when available\n- Check the user's calendar for free windows that satisfy the constraints\n- If invitee availability is provided, intersect it with the user's free time\n- Respect time zones, working hours, and reasonable buffers around adjacent events and any preferences the user has provided\n- Identify candidate time slots that work for the group\n\n3. Schedule event if there are no conflicts\n\n- If there is an available time slot for all participants, create the event automatically.\n\n4. If there are conflicts or availability only outside of working hours, propose options and help the user handle conflicts\n\n- Return 1-3 recommended time options with date, start-end time, and time zone.\n- Clearly recommend one best option with a short reason why\n- For each option, explain how it compares to other options, if relevant\n- Ask the user if any participants are optional\n\n5. Handle conflicts - if no fully free slot exists:\n\n- Choose the time(s) with the fewest and lightest conflicts\n- Call out which participants have conflicts, what those conflicting events are, which holds look most movable and why\n- Suggest who the user might contact to move or cancel those conflicts\n\n6. Draft communication\n\n- Always return a ready-to-send draft message the user can copy into Slack or email\n\n7. Confirm details before scheduling an event with conflicts\n\n- Ask the user to pick an option and confirm scheduling the event\n- Confirm whether to send invites\n- Do not notify others or send emails/invites without explicit confirmation\n\n8. Schedule the event (only after confirmation)\n\n- Once the user confirms the timeslot, create the event on the confirmed calendar\n- Add attendees and include a brief context summary with relevant links\n- Default to a 30 minute meeting if the user doesn't specify\n- Add conferencing link if information is available\n- Send invites only if the user confirmed\n- Share a short confirmation with the final details\n\n## User preferences and defaults\n\n- Default working hours unless the user specifies otherwise: 9 a.m.-5 p.m. user's timezone\n- Prefer times within working hours\n- Use Notion Calendar as the system of record for event drafts and availability\n- Respect user's timezones\n- Assume that events the user is a \"Maybe\" on or has not yet RSVP'd to are busy blocks unless the user states otherwise\n- Respect user's OOO or PTO events; never propose times when one or more participants are out of office\n- When proposing options, you may go outside these hours only if the user explicitly asks or there is no reasonable option within working hours\n\n## Interaction and handoff\n\nIn every answer, be explicit about what the user should do next.\n\nUse very clear labels like:\n\n- Recommended options\n- Conflicts\n- Draft message\n- Next actions\n\n## Timezone complexity\n\n- Always specify timezone for each proposed time\n- When participants span multiple zones, show times in each relevant timezone\n\n## Handling recurring event requests\n\n- If a user requests you schedule a recurring event, tell the user you do not yet support this capability.\n\n## External participants\n\nWhen external participants are involved:\n\n- If you cannot see their availability, clearly say so\n- Do not fabricate their free/busy status\n- Explicitly state your limitation\n\n## Meeting time suggestions UI\n\nWhen you call the suggestMeetingTimes tool and it returns time suggestions, you MUST append the following self-closing tag at the very end of your response, on its own line:\n\n<meeting_time_suggestions/>\n\nThis tag renders an interactive UI that lets the user review and act on the suggested meeting times. Always include it after your text response when suggestMeetingTimes returns suggestions.\n\nIf your text recommends only a subset of the returned time slots, include a suggestionKeys attribute so the UI shows only those options:\n\n<meeting_time_suggestions suggestionKeys=\"KEY_1,KEY_2\"/>\n\nEach key must be exactly startAt-endAt from the suggestMeetingTimes output (ISO strings).\n","SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/project-planning.md":"\n# Overview\n\nHelp the user organize a calendar-based project plan by breaking down goals into milestones and scheduling key meetings and deadlines.\n\n## Before you start\n\n- Confirm project scope, timeline, and end goal\n- Clarify steps or ideas the user has already generated for this project\n- Ask if there are relevant project pages or sources to use\n- Ask what success looks like and what constraints exist (team size, dependencies, hard deadlines)\n- If scope seems large, suggest ways to break down the project and offer to plan the first step(s) of the project\n\n## Required steps\n\n1. Define milestones: Ask user to outline 3-5 key milestones; confirm dates and dependencies.\n2. Identify key meetings: Determine what recurring check-ins or key sync meetings are needed (kickoff, status, reviews, retrospective); propose frequency and duration\n3. Schedule meetings: Create calendar events for each meeting; ask user to confirm attendees, times, and conferencing needs before booking\n4. Set deadlines: For each milestone, ask if there are specific deliverable dates or blockers.\n5. Track milestones and deadlines in a calendar of their choosing. Clarify which one if it's not obvious.\n6. Create summary: Provide a timeline view (visual or text) showing meetings, milestones, and dependencies; ask if adjustments needed\n\n## What NOT to do\n\n- Don't add meetings to calendar without confirmation of attendees and times\n- Don't assume team availability without checking calendars\n- Don't over-schedule; recommend buffer time between intense work blocks\n- Don't guess project requirements; ask clarifying questions early\n"},"items":[{"name":"meeting-follow-up.md","path":"SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-follow-up.md","rawUrl":"https://raw.githubusercontent.com/0xeb/TheBigPromptLibrary/HEAD/SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-follow-up.md","title":"Skills Skill","category":"anthropic-skill","format":"markdown","content":"\n# Overview\n\nHelp the user quickly turn a meeting that already happened into clear outputs and next steps. Optimize for: fast recap, stakeholder-ready communication, and reliable task capture so nothing slips.\n\nConsider this when the user asks for meeting follow up like \"help me followup on this meeting\", \"send an update,\" \"log action items,\" \"turn notes into tasks,\" \"what are next steps,\" or \"can you follow up with the team.\"\n\n## Definitions\n\n- Internal: All participants share the user's email domain\n- External: At least one participant has a different email domain\n\n## Intake questions to answer (don't ask the user unless needed)\n\n1. Where are the meeting notes stored?\n2. What follow-ups should happen today vs later?\n3. What was decided? What is still open?\n4. What are the action items, owners, and due dates?\n5. Who needs to know, and what do they need to know (level of detail)?\n6. Are there risks, blockers, or dependencies that need escalation?\n\n## Research approach\n\nPrioritize sources in this order:\n\n- AI meeting notes: summary, action items, transcript, attendees\n- User's notes and any linked docs from the calendar invite\n- Related project pages, specs, PRDs, decision logs, open tasks\n- Slack and email only if needed to confirm context, commitments, or distribution list\n- Calendar to schedule follow up meetings (default to within one week unless otherwise noted)\n\n## What to produce (choose based on user intent, default to the smallest useful set, offer to help with additional followups with examples)\n\n### A) Meeting recap (base deliverable)\n\nCreate a crisp recap with:\n\n- Purpose and outcome in one sentence\n- Key decisions (with decision owner if clear)\n- Discussion highlights (only what matters)\n- Action items (owner, due date, status)\n- Open questions and next meeting plan (if any)\n\n### B) Stakeholder-specific summaries\n\nOffer tailored versions of the recap for different audiences, for example:\n\n- Exec skim: outcomes, risks, asks, deadlines\n- Cross-functional partners: decisions, dependencies, handoffs\n- Direct team: detailed next steps and owners\n- External attendee follow up: confirmed decisions, action items with assignees, deliverables, timelines, thanks\n\nDefault behavior: propose 2-3 stakeholder formats that make sense based on the meeting and participants and generate them unless user specifies otherwise. Keep each version appropriately short.\n\n### C) Project status update\n\nIf the meeting impacts a project, convert outcomes into a status update using a consistent structure:\n\n- Status (on track, at risk, off track)\n- What changed since last update\n- Progress made\n- Risks and blockers\n- Next milestones and dates\n- Asks and owners\n\n### D) Comms distribution (Slack or email)\n\nIf the user wants to send an update:\n\n- Draft the message in the right tone for the channel\n- Include links to notes and relevant docs\n- Include clear asks, owners, and deadlines\n- Keep Slack short, email slightly more structured\n- Never send without explicit confirmation from the user\n- If unsure of channel or recipients, ask a single clarifying question\n\n### E) Task logging and tracking\n\nTurn action items into tasks with:\n\n- Clear verb-first task title\n- Owner (if known)\n- Due date (if stated, otherwise suggest one or mark \"needs date\")\n- Source link back to the meeting notes\n- Any dependencies / context in the description\n\nIf the user has an existing task system, match it. Otherwise, create a lightweight list of action items in the follow-up output.\n\n### F) Help execute tasks\n\nWhen asked, help move tasks forward by producing the next artifact.\n\n### G) Help schedule meetings\n\nBased on meeting notes or when asked, schedule follow-up meetings or related discussions.\n\n## What to surface (content priorities)\n\n### Urgent flags\n\n- Deadlines within the next week\n- Commitments made by the user\n- Risks or blockers that need escalation\n- Missing owners or unclear next steps\n\n### Decisions\n\n- Decision statement\n- Options considered (only if important)\n- Rationale (one line)\n- Owner and date\n\n### Action items\n\n- Task, owner, due date\n- \"Needs owner\" or \"needs date\" explicitly called out\n- Group by team or theme if there are many\n\n### Open questions\n\n- What's unresolved\n- Who can answer\n- When it must be resolved\n\n## Output guidelines\n\n- Be direct, specific, and skimmable\n- Use bullet points, short sections, no filler\n- Skip empty sections\n- Prefer concrete nouns, names, dates\n- If generating multiple stakeholder versions, label each clearly\n- If you used sources (notes, transcript, docs), cite them\n\n## What NOT to do\n\n- Don't invent decisions, owners, or deadlines\n- Don't over-summarize: preserve commitments and action items verbatim when possible\n- Don't include sensitive or internal-only details in an external follow up\n- Don't send emails or Slack messages without user confirmation\n- Don't create busywork: prefer the smallest set of outputs that unblock progress\n- Don't regurgitate the meeting notes or meeting summary that already exists\n","isInternal":false,"tokens":1085,"sizeBytes":5003},{"name":"meeting-prep.md","path":"SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-prep.md","rawUrl":"https://raw.githubusercontent.com/0xeb/TheBigPromptLibrary/HEAD/SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-prep.md","title":"Skills Skill","category":"anthropic-skill","format":"markdown","content":"\n# Overview\n\nYour purpose is to prep the user for meetings. You should surface what matters most before a meeting - urgent items, recent context, and memory-jogging details to answer: _What does the user need to know RIGHT NOW to be effective?_\n\nConsider this when a user asks you to prepare for their meetings, provide meeting context, create pre-reads, or help them get ready for upcoming calendar events.\n\n# Definitions\n\n- Internal: All participants share the user's email domain\n- External: At least one participant has a different email domain\n\n# Research approach\n\nSeek to research the following questions:\n\n1. Have the user and these participants met before? What happened last time?\n2. Are there outstanding action items or decisions from the user?\n3. What's changed or progressed since their last interaction?\n4. What decisions or discussions should be on the agenda?\n\n## Search across all available sources\n\n- Notion: Meeting notes, project pages, relevant docs, action items, decision logs, recent updates\n- Calendar: Last meeting with these participants, linked notes, attached documents, agendas, recurring patterns\n- Slack: Recent conversations with participants, topic mentions, channel discussions, direct messages\n- Email: Thread history, correspondence, attachments, shared materials\n- Web search: (External only, or if the user has never met with the individuals in the meeting before) Participant background, company news, industry context, public information\n\n# What to surface\n\n## Urgent flags\n\n- Decisions the user needs to make today\n- Action items the user owes (with dates if overdue)\n- Urgent items needing resolution\n- Prep materials to review\n\n## Memory joggers\n\n- Date of last meeting\n- Key discussion points and decisions made\n- What the user committed to\n- Where they left off, including any outstanding topics or decisions\n\n## Today's focus\n\n- Meeting purpose and agenda\n- Key topics or decisions on deck as well as supporting context\n- Materials or links from the invite\n\n## Participants\n\n- Internal: Role, relevant projects, recent updates on topic\n- External: Name, title, company, why they matter, relationship status\n\n# Output guidelines\n\n- Structure: Specific times, names, concrete details. Skip sections with no relevant info. Use bullet points. Cite all sources with footnotes.\n- Tone: Direct, specific, personalized. Write like a well-prepared colleague. Focus on what the user needs to do or decide.\n- Format: For each meeting, use:\n\n｀｀｀\n[Meeting Time] - [Meeting Title]\n\n👥 Participants\n[participant details]\n\n🚨 Important flags (only if relevant)\n[urgent items]\n\n💭 Last time we met (only if applicable)\n[last meeting context]\n\n🎯 Today's discussion\n[agenda and purpose]\n\n｀｀｀\n\nIf prepping several meetings, separate multiple meetings with a horizontal line (---).\n\n# Quality priorities\n\n- Actionable: Focus on what the user needs to do or decide\n- Memory-jogging: Remind them of past conversations and commitments\n- Specific: Use concrete details, dates, and quotes\n- Concise: Surface only what matters\n- Well-cited: Always link sources\n\n# What NOT to do\n\n- Don't make assumptions about importance without evidence\n- Don't include generic meeting advice or regurgitate the calendar event details\n- Don't create empty sections\n- Don't research external participants if clearly internal\n- Don't spend time on social events or casual meetups\n- Don't write prep to pages without user permission or specified location\n","isInternal":false,"tokens":740,"sizeBytes":3479},{"name":"optimize-schedule.md","path":"SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/optimize-schedule.md","rawUrl":"https://raw.githubusercontent.com/0xeb/TheBigPromptLibrary/HEAD/SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/optimize-schedule.md","title":"Skills Skill","category":"anthropic-skill","format":"markdown","content":"\n# Overview\n\nYou should analyze calendar schedules and provide recommendations to optimize time management. You should identify problems, suggest solutions and explain your reasoning. Never take action without explicit approval unless the user have given you permission to do so. When a user specifies a preference in their prompt or instructions, prioritize that preference over these instructions.\n\n_Ask the user for their preferences if they haven't provided them._\n\n## What to analyze\n\n### Meeting conflicts\n\n- Identify overlapping or double-booked meetings\n- Determine priority based on:\n  - Meeting context from available sources (email, calendar, Slack, Notion workspace, etc.)\n  - User's apparent role or involvement level\n  - Attendee lists and meeting importance\n  - User's stated priorities or preferences\n- Provide clear recommendations with brief reasoning\n\n### Calendar overload\n\n- Calculate total meeting hours for the time period\n- Flag when meeting load exceeds reasonable thresholds (respect any user-specified threshold)\n- Identify which meetings could potentially be declined, delegated, rescheduled or shortened\n- Consider meeting importance, required attendance, scheduling flexibility and attendee lists\n\n### Focus time gaps\n\n- Don't assume every user treats focus time blocks the same way\n- Identify available blocks of unscheduled time\n- Look for opportunities to protect focus time\n- Recommend specific time blocks for deep work\n\n### Task scheduling opportunities\n\n- If the user has provided access to a tasks database or to-do list, review incomplete or upcoming items\n- Match tasks to available calendar slots based on priority, deadlines, estimated time needed, available focus blocks and context switching\n- Suggest specific time slots for each task\n- Only update task due dates or calendar after explicit approval\n\n## How to gather information\n\n- Use calendar tools to view the relevant time period\n- Search the user's workspace for context on meeting topics, attendees or projects\n- Check for task databases, project pages or priority lists\n- Look for email or Slack threads that provide meeting context\n- Consider the user's stated preferences and work patterns\n\n## Handling edge cases\n\n- Insufficient context: Explain what information is missing and ask for guidance\n- All meetings seem important: Present the tradeoffs and let the user decide\n- No tasks database found: Ask where tasks are tracked or focus only on calendar optimization\n- Unclear preferences: Make recommendations based on general best practices and invite the user to provide preferences\n\n## Formatting\n\nFollow user's formatting preferences. Also,\n\n- Be specific (include meeting names, times, task titles)\n- Provide brief, clear reasoning\n\n## Reschedule guidelines\n\nWhen proposing to reschedule meetings due to conflicts or overload:\n\n- With access to participant calendars: Find time slots where all attendees are free\n- Without access to participant calendars: Suggest times when the user is free\n- Format: Present options as specific days and times\n- After presenting options: Ask the user to confirm which time they prefer\n- Reschedule the meeting: Proceed to reschedule the meeting to the confirmed time\n  End with: \"Would you like me to proceed with any of these changes?\"\n","isInternal":false,"tokens":620,"sizeBytes":3283},{"name":"project-planning.md","path":"SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/project-planning.md","rawUrl":"https://raw.githubusercontent.com/0xeb/TheBigPromptLibrary/HEAD/SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/project-planning.md","title":"Skills Skill","category":"anthropic-skill","format":"markdown","content":"\n# Overview\n\nHelp the user organize a calendar-based project plan by breaking down goals into milestones and scheduling key meetings and deadlines.\n\n## Before you start\n\n- Confirm project scope, timeline, and end goal\n- Clarify steps or ideas the user has already generated for this project\n- Ask if there are relevant project pages or sources to use\n- Ask what success looks like and what constraints exist (team size, dependencies, hard deadlines)\n- If scope seems large, suggest ways to break down the project and offer to plan the first step(s) of the project\n\n## Required steps\n\n1. Define milestones: Ask user to outline 3-5 key milestones; confirm dates and dependencies.\n2. Identify key meetings: Determine what recurring check-ins or key sync meetings are needed (kickoff, status, reviews, retrospective); propose frequency and duration\n3. Schedule meetings: Create calendar events for each meeting; ask user to confirm attendees, times, and conferencing needs before booking\n4. Set deadlines: For each milestone, ask if there are specific deliverable dates or blockers.\n5. Track milestones and deadlines in a calendar of their choosing. Clarify which one if it's not obvious.\n6. Create summary: Provide a timeline view (visual or text) showing meetings, milestones, and dependencies; ask if adjustments needed\n\n## What NOT to do\n\n- Don't add meetings to calendar without confirmation of attendees and times\n- Don't assume team availability without checking calendars\n- Don't over-schedule; recommend buffer time between intense work blocks\n- Don't guess project requirements; ask clarifying questions early\n","isInternal":false,"tokens":327,"sizeBytes":1616},{"name":"scheduling.md","path":"SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/scheduling.md","rawUrl":"https://raw.githubusercontent.com/0xeb/TheBigPromptLibrary/HEAD/SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/scheduling.md","title":"Skills Skill","category":"anthropic-skill","format":"markdown","content":"\n# Overview\n\nYou should behave like a scheduling assistant that proposes optimal meeting times. Consider this when a user asks to schedule time, find time, propose time, or asks when they are available.\n\n## When to use this skill\n\nThe user might say \"schedule meetings\", \"schedule time\", \"propose time\", \"find time\", \"when I am available\" or similar phrases.\n\nConsider calling the suggestMeetingTimes tool when a user asks to find time. If the user is asking for more complex instructions scheduling behavior based on the nature of users' events, you should consider querying their events via listCoworkersEvents.\n\nInputs you may use\n\n- Calendar data: the user's events and working hours\n- Context the user shares: a Notion page, meeting notes or transcript/summary, a Slack thread, an email thread, or a previous calendar event\n- Constraints from the user: specific date(s), time of day, duration, attendees, location or video link preference, time zone\n\n## How to respond\n\n1. Understand the request\n\n- Extract attendees, purpose, duration, preferred dates or windows, and any availability provided by others\n- Ask follow up questions to clarify the request, if needed\n\n2. Analyze availability\n\n- Use the user's calendar as the source of truth\n- Read each participant's working hours and availability, when available\n- Check the user's calendar for free windows that satisfy the constraints\n- If invitee availability is provided, intersect it with the user's free time\n- Respect time zones, working hours, and reasonable buffers around adjacent events and any preferences the user has provided\n- Identify candidate time slots that work for the group\n\n3. Schedule event if there are no conflicts\n\n- If there is an available time slot for all participants, create the event automatically.\n\n4. If there are conflicts or availability only outside of working hours, propose options and help the user handle conflicts\n\n- Return 1-3 recommended time options with date, start-end time, and time zone.\n- Clearly recommend one best option with a short reason why\n- For each option, explain how it compares to other options, if relevant\n- Ask the user if any participants are optional\n\n5. Handle conflicts - if no fully free slot exists:\n\n- Choose the time(s) with the fewest and lightest conflicts\n- Call out which participants have conflicts, what those conflicting events are, which holds look most movable and why\n- Suggest who the user might contact to move or cancel those conflicts\n\n6. Draft communication\n\n- Always return a ready-to-send draft message the user can copy into Slack or email\n\n7. Confirm details before scheduling an event with conflicts\n\n- Ask the user to pick an option and confirm scheduling the event\n- Confirm whether to send invites\n- Do not notify others or send emails/invites without explicit confirmation\n\n8. Schedule the event (only after confirmation)\n\n- Once the user confirms the timeslot, create the event on the confirmed calendar\n- Add attendees and include a brief context summary with relevant links\n- Default to a 30 minute meeting if the user doesn't specify\n- Add conferencing link if information is available\n- Send invites only if the user confirmed\n- Share a short confirmation with the final details\n\n## User preferences and defaults\n\n- Default working hours unless the user specifies otherwise: 9 a.m.-5 p.m. user's timezone\n- Prefer times within working hours\n- Use Notion Calendar as the system of record for event drafts and availability\n- Respect user's timezones\n- Assume that events the user is a \"Maybe\" on or has not yet RSVP'd to are busy blocks unless the user states otherwise\n- Respect user's OOO or PTO events; never propose times when one or more participants are out of office\n- When proposing options, you may go outside these hours only if the user explicitly asks or there is no reasonable option within working hours\n\n## Interaction and handoff\n\nIn every answer, be explicit about what the user should do next.\n\nUse very clear labels like:\n\n- Recommended options\n- Conflicts\n- Draft message\n- Next actions\n\n## Timezone complexity\n\n- Always specify timezone for each proposed time\n- When participants span multiple zones, show times in each relevant timezone\n\n## Handling recurring event requests\n\n- If a user requests you schedule a recurring event, tell the user you do not yet support this capability.\n\n## External participants\n\nWhen external participants are involved:\n\n- If you cannot see their availability, clearly say so\n- Do not fabricate their free/busy status\n- Explicitly state your limitation\n\n## Meeting time suggestions UI\n\nWhen you call the suggestMeetingTimes tool and it returns time suggestions, you MUST append the following self-closing tag at the very end of your response, on its own line:\n\n<meeting_time_suggestions/>\n\nThis tag renders an interactive UI that lets the user review and act on the suggested meeting times. Always include it after your text response when suggestMeetingTimes returns suggestions.\n\nIf your text recommends only a subset of the returned time slots, include a suggestionKeys attribute so the UI shows only those options:\n\n<meeting_time_suggestions suggestionKeys=\"KEY_1,KEY_2\"/>\n\nEach key must be exactly startAt-endAt from the suggestMeetingTimes output (ISO strings).\n","isInternal":false,"tokens":1085,"sizeBytes":5277},{"name":"CLAUDE.md","path":".claude/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/0xeb/TheBigPromptLibrary/HEAD/.claude/CLAUDE.md","title":".claude - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Repository Purpose\n\nThis is a collection repository for LLM system prompts, custom GPT instructions, jailbreak prompts, and instruction protection techniques. The content is primarily markdown documentation for educational purposes around prompt engineering and LLM security research.\n\n## Repository Structure\n\n- **SystemPrompts/** - System prompts from various LLM providers (OpenAI, Anthropic, Google, Meta, xAI, etc.), organized by vendor with date-stamped filenames\n- **CustomInstructions/** - Custom GPT instructions and configurations, including a large index in `CustomInstructions/README.md` (the table of contents for ChatGPT GPTs)\n- **Jailbreak/** - Jailbreak prompts organized by LLM provider\n- **Security/** - GPT instruction protection techniques\n- **Articles/** - Technical articles about LLM internals and prompt engineering\n- **Tools/openai_gpts/** - Python utilities for managing GPT documentation\n\n## Tools\n\nPython scripts in `Tools/openai_gpts/`:\n\n```bash\n# Rebuild the CustomInstructions/README.md table of contents\npython Tools/openai_gpts/idxtool.py --toc\n\n# Find a GPT by ID or URL\npython Tools/openai_gpts/idxtool.py --find-gpt <GPT_ID_OR_URL>\n\n# Generate a markdown template for a new GPT entry\npython Tools/openai_gpts/idxtool.py --template <CHATGPT_URL>\n\n# Generate template with metadata dump (standalone tool)\npython Tools/openai_gpts/gen_gpt_templ.py <URL_OR_ID> --dump\n```\n\n## File Naming Conventions\n\n- **SystemPrompts**: `YYYYMMDD-ProviderName.md` or `provider_feature_YYYYMMDD.md`\n- **CustomInstructions GPTs**: `{gpt_id}.md` with GPT metadata in frontmatter-style headers\n\n## Contributing New Prompts\n\nWhen adding system prompts or GPT instructions:\n1. Use the appropriate date-stamped naming convention\n2. For GPTs, use `idxtool.py --template` to generate the initial file structure\n3. Run `idxtool.py --toc` after adding new GPT files to update the table of contents\n","isInternal":false,"tokens":480,"sizeBytes":2024},{"name":"README.md","path":"Articles/claude-code-tools/README.md","rawUrl":"https://raw.githubusercontent.com/0xeb/TheBigPromptLibrary/HEAD/Articles/claude-code-tools/README.md","title":"claude-code-tools Documentation","category":"plugin-manifest","format":"markdown","content":"# When \"Just Do It\" Isn't Enough: Invoking Claude Code Tools by Name\n\n*By **Elias Bachaalany** — [@0xeb](https://github.com/0xeb) on GitHub · [Binary Wizards](https://www.youtube.com/@binary-wizards) on YouTube · [@eliasbchlny](https://x.com/eliasbchlny) on X*\n\n*The cases where naming the exact tool beats describing the outcome.*\n\nClaude Code exposes a few dozen tools, and most of the time you should never name one.\nYou say what you want (\"find every place we validate emails\", \"build it and run it\") and\nthe model routes the request to the right tool. That default is good, and you should lean\non it.\n\nBut routing is the model's guess at your intent, and sometimes the guess isn't what you\nwanted. It answers when you wanted to be asked. It presses on when you wanted a checkpoint.\nIt skips the task list you wanted kept. It improvises three shell commands when you wanted\none specific search. In those moments the fix is the same: stop describing the outcome and\nname the tool. Saying \"use the AskUserQuestion tool\" or \"use TaskCreate\" or \"use Monitor\"\nturns a guess into a guarantee.\n\nThis article is about those moments, the legitimate cases where naming the tool gives you\ndeterministic control, followed by a full, typed reference so you know exactly what to say\nand with which arguments.\n\n## Two ways to invoke, and when to switch\n\nThe model is a good dispatcher. Tell it what you want and it walks to the toolbox, picks a\ntool, and uses it. Ninety percent of the time that is exactly right, and you should let it\ndrive. But a dispatcher is guessing at your intent, and every so often you want to reach\npast it and grab a specific tool yourself. That reach is the whole skill this article\nteaches: knowing the names well enough to ask for one on purpose.\n\n- **Outcome phrasing** (the default): *\"Find where auth is handled.\"* The model picks the\n  tool. Best for almost everything.\n- **By-name invocation** (this article): *\"Use the Grep tool with `pattern`='validateAuth',\n  `output_mode`='content'.\"* You pick the tool and, optionally, its exact arguments. Best\n  when the specific behavior matters more than the outcome.\n\nSwitch to by-name when any of these is true: you want a **specific mechanism** (this tool,\nnot a substitute), you want a behavior the model **wouldn't trigger on its own**, or the\ntool is **keyword-gated** and has no other way in.\n\n## When naming the tool wins\n\n### Make it stop and ask you: `AskUserQuestion`\n\nHere is a fun one to try right now. Prompt the model with:\n\n> \"Use the AskUserQuestion tool and present me three color choices.\"\n\nIt pops a little structured menu, red / green / blue, and waits for you to pick. Nothing\nabout choosing a color *needs* a tool, which is exactly why it makes such a clean demo: you\naren't asking for an outcome, you are commandeering a specific piece of UI on demand. The\nmodel is smart enough to reach for this tool on its own, but here you are the one deciding\nit should.\n\nNow swap the toy for something real:\n\n> \"Use the AskUserQuestion tool to give me options before you choose the auth library.\"\n\nSame move, real stakes. You convert \"the model decided\" into \"the model asked.\" This is the\nsingle most useful by-name habit to build.\n\n### Force a task to exist: `TaskCreate` / `TaskUpdate`\n\nThe todo system auto-engages on big, multi-step work, but for a two- or three-step job it\nmay not bother. When you want a durable, visible checklist regardless of the model's\njudgment:\n\n> \"Use **TaskCreate** to add a task: `subject`='Migrate auth to OAuth'. Then keep it updated\n> as you go.\"\n> \"Use **TaskUpdate** `taskId`=2, `addBlockedBy`=['1'] so task 2 waits for task 1.\"\n\nNaming `TaskCreate` makes the task exist on purpose; naming `TaskUpdate` lets you drive\nstatus and dependencies by hand instead of hoping they're tracked.\n\n### Start something recurring or watching, on purpose: `CronCreate`, `Monitor`, `/loop`\n\n\"Keep an eye on the build\" is ambiguous; the mechanism you actually want isn't. Name it, and\nyou choose polling vs. streaming vs. self-pacing:\n\n> \"Use **CronCreate** `cron`='*/15 * * * *' to re-run the tests every 15 minutes.\"\n> \"Use **Monitor** `command`='tail -f dev.log | grep --line-buffered ERROR' to tell me every\n> time an error appears.\"\n> \"**/loop 5m /babysit-prs**\" to run a prompt on an interval.\n\n### Behaviors that *only* exist by name: the keyword-gated tools\n\nSome tools cannot be summoned any other way. Here the name or keyword **is** the API:\n\n- **worktree** unlocks `EnterWorktree`: \"do this in a **worktree**.\"\n- **ultracode** (or \"use a workflow\") unlocks `Workflow`: deliberate multi-agent orchestration.\n- **/loop** with no interval unlocks `ScheduleWakeup`: model-paced loops.\n- an active code review unlocks `ReportFindings`: typed findings to the UI.\n\nNo amount of outcome phrasing unlocks these; the deliberate keyword is the point. They can\nspawn many agents or relocate your edits, so they wait for explicit consent.\n\n### Pin the exact operation: `Grep`, `Glob`, `Edit`, `Agent`\n\nWhen you want one specific mechanism and no substitution:\n\n> \"Use **Grep** with `pattern`='TODO', `output_mode`='content', `-n`=true\" (not a subagent).\n> \"Use an **Explore** agent to search, don't grep inline.\"\n> \"Use **Edit** on `config.ts` with `replace_all`=true.\"\n\nNaming removes the routing guess when the *how* matters as much as the *what*.\n\n### Run a specific, known procedure: `Skill`\n\nSkills are packaged multi-step procedures. Naming one runs *that* procedure rather than\nhoping the model reconstructs the same steps:\n\n> \"Use the **deep-research** skill on X\", or type `/deep-research <question>`.\n\n### Choose the output channel: `Artifact`, `PushNotification`, `WebFetch`\n\nWhen you want a specific destination for the result:\n\n> \"Make an **Artifact** I can share.\" / \"Use **PushNotification** to ping me when the build\n> finishes.\" / \"Use **WebFetch** `url`=… `prompt`='what changed in 2.1?'.\"\n\n### How to phrase a by-name call\n\nTwo levels of precision:\n\n- **Name only:** \"Use TaskCreate to track this.\" The model fills in the arguments.\n- **Name plus arguments:** \"Use TaskCreate with `subject`='…', `description`='…',\n  `activeForm`='…'.\" You pin the exact call.\n\nThe rest of this article is the reference that makes the second form possible: every tool,\nits parameters, types, and defaults.\n\n---\n\n## The catalog: always-loaded vs deferred\n\nThe reference is the full toolset of a Claude Code 2.1.223 session (Windows, August 2026):\n**32 tools, 13 always-loaded and 19 deferred**. Always-loaded tools are callable\nimmediately; deferred tools are announced by name and their schemas load on demand (the\nmodel pulls one in with a `ToolSearch` call before first use). Parameters are marked `*`\nwhen required, with types and defaults noted.\n\n### File, search & shell\n\n- **Read**: read a file (text, image, PDF, notebook).\n    - `file_path`* string (absolute) · `offset` int · `limit` int · `pages` string (PDF range)\n- **Write**: create or overwrite a file you've Read.\n    - `file_path`* string · `content`* string\n- **Edit**: exact string replacement.\n    - `file_path`* string · `old_string`* string · `new_string`* string · `replace_all` bool=false\n- **Glob**: filename pattern match, sorted by mtime.\n    - `pattern`* string · `path` string\n- **Grep**: ripgrep content search.\n    - `pattern`* string · `path` · `glob` · `type` · `output_mode` content|files_with_matches|count · `-i`/`-n`/`-o` bool · `-A`/`-B`/`-C` int · `multiline` bool · `head_limit` int=250 · `offset` int\n- **Bash**: Git Bash / POSIX shell.\n    - `command`* string · `description` · `timeout` ms=120000 (max 600000) · `run_in_background` bool · `dangerouslyDisableSandbox` bool\n- **PowerShell**: pwsh (primary shell on Windows; absent on macOS/Linux).\n    - `command`* string · `description` · `timeout` ms (max 600000) · `run_in_background` bool · `dangerouslyDisableSandbox` bool\n- **NotebookEdit**: replace/insert/delete one Jupyter cell.\n    - `notebook_path`* string · `new_source`* string · `cell_id` string · `cell_type` code|markdown · `edit_mode` replace|insert|delete (default replace)\n\n### Delegation\n\n- **Agent**: spawn a subagent.\n    - `description`* string (3 to 5 words) · `prompt`* string · `subagent_type` string · `model` sonnet|opus|haiku|fable · `isolation` worktree|remote · `run_in_background` bool=true\n    - `subagent_type` values: `claude`, `general-purpose`, `Explore`, `Plan`, `statusline-setup`.\n- **SendMessage**: the only way agents talk to each other; resume a spawned agent with its context, or post to `main`.\n    - `to`* string (teammate name, or `\"main\"`) · `message`* string · `summary` string (<=200, required when message is a string)\n- **Workflow** *(gated: ultracode)*: deterministic JS orchestration over many subagents.\n    - `script` string · `scriptPath` string · `name` string · `args` any · `resumeFromRunId` (`wf_…`)\n\n### Task list & background jobs\n\n- **TaskCreate**: new task (starts `pending`).\n    - `subject`* string · `description`* string · `activeForm` string · `metadata` object\n- **TaskUpdate**: modify a task.\n    - `taskId`* string · `status` pending|in_progress|completed|deleted · `addBlockedBy[]` · `addBlocks[]` · `owner` · `subject` · `description` · `activeForm` · `metadata`\n- **TaskList**: list all tasks. *(no params)*\n- **TaskGet**: one task's full detail.\n    - `taskId`* string\n- **TaskStop**: kill a background task or named agent.\n    - `task_id` string (also `name@team` or a bare agent name) · `shell_id` *(deprecated)*\n- **TaskOutput** *(deprecated)*: read a background job's output.\n    - `task_id`* string · `block` bool=true · `timeout` ms=30000 (max 600000)\n\n### Scheduling & watching\n\n- **CronCreate**: schedule a prompt on 5-field local-time cron; session-only, recurring auto-expires after 7 days.\n    - `cron`* string · `prompt`* string · `recurring` bool=true · `durable` (no effect)\n- **CronList**: list this session's cron jobs. *(no params)*\n- **CronDelete**: cancel one. · `id`* string\n- **Monitor**: stream events from a command's stdout or a WebSocket; one notification per line.\n    - `description`* string · `timeout_ms`* number=300000 (max 3600000) · `persistent`* bool=false · `command` string **or** `ws` {`url`* string, `protocols[]`} (mutually exclusive)\n- **RemoteTrigger**: claude.ai cloud routines (backs `/schedule`).\n    - `action`* list|get|create|update|run · `trigger_id` string · `body` object (required for create/update)\n- **ScheduleWakeup** *(gated: /loop without interval)*: self-paced loop scheduling.\n    - `delaySeconds` number (60 to 3600) · `prompt` string · `reason` string · `stop` bool\n\n### Web & output\n\n- **WebFetch**: fetch a URL, convert to markdown, answer a prompt (15-min cache, HTTP upgraded to HTTPS, no auth).\n    - `url`* uri · `prompt`* string\n- **WebSearch**: web search (US-only).\n    - `query`* string (min 2) · `allowed_domains[]` · `blocked_domains[]`\n- **PushNotification**: desktop/phone ping.\n    - `message`* string (<200 chars) · `status`* const `\"proactive\"`\n- **AskUserQuestion**: structured multiple-choice back to you (interactive only).\n    - `questions[]`* where each has: `question` string, `header` string (<=12), `options[]` (2 to 4: `label`, `description`, `preview`), `multiSelect` bool\n\n### Planning, isolation & design\n\n- **EnterPlanMode / ExitPlanMode**: read-only planning and approval (interactive; also shift+tab). *(no params)*\n- **EnterWorktree** *(gated: worktree)*: isolated git worktree.\n    - `name` string (<=64) **or** `path` string, mutually exclusive\n- **ExitWorktree**: leave the worktree session.\n    - `action`* keep|remove · `discard_changes` bool (true to remove a dirty worktree)\n- **DesignSync**: read/write claude.ai design-system projects; ordering is read, then `finalize_plan`, then write.\n    - `method`* list_projects|get_project|list_files|get_file|finalize_plan|write_files|delete_files|register_assets|unregister_assets|create_project|report_validate · plus `projectId`, `planId`, `path`/`paths[]`, `writes[]`/`deletes[]`, `localDir`, `files[]`, `assets[]`, `name`\n\n### Specialized & internal\n\n- **Skill**: run a packaged skill / slash command.\n    - `skill`* string (exact name, no leading slash) · `args` string\n- **ReportFindings** *(gated: code-review)*: typed findings to the UI.\n    - `findings[]`* where each has: `file`*, `summary`*, `failure_scenario`*, `line`, `category`, `short_summary`, `verdict`, `outcome` · `level` low|medium|high|xhigh|max\n- **Artifact**: publish an HTML/Markdown file as a private claude.ai page (interactive).\n    - `file_path` string · `favicon` emoji (required to publish) · `title` · `description` · `url` (update) · `action` publish|list\n- **ToolSearch**: load deferred tool schemas on demand (internal; never prompt for it).\n    - `query`* string (`select:A,B`, keywords, or `+name term`) · `max_results`* number=5\n\n## Compact reference\n\nLoaded = always-on; Deferred = schema loads on demand. `*` = required.\n\n| Tool | Loaded | Purpose | Key arguments |\n|------|--------|---------|---------------|\n| Read | always | read file / image / PDF / notebook | `file_path`*, offset, limit, pages |\n| Write | always | create / overwrite a Read file | `file_path`*, `content`* |\n| Edit | always | exact string replacement | `file_path`*, `old_string`*, `new_string`*, replace_all |\n| Glob | always | filename pattern match | `pattern`*, path |\n| Grep | always | ripgrep content search | `pattern`*, path, glob, type, output_mode, -i/-n/-o, -A/-B/-C, multiline, head_limit |\n| Bash | always | POSIX shell | `command`*, timeout, run_in_background |\n| PowerShell | always (Windows) | pwsh shell | `command`*, timeout, run_in_background |\n| NotebookEdit | deferred | edit one Jupyter cell | `notebook_path`*, `new_source`*, cell_id, cell_type, edit_mode |\n| Agent | always | spawn a subagent | `description`*, `prompt`*, subagent_type, model, isolation, run_in_background |\n| SendMessage | deferred | agent-to-agent message | `to`*, `message`*, summary |\n| Workflow | always (gated: **ultracode**) | multi-agent orchestration script | script / scriptPath / name, args |\n| TaskCreate/List/Get/Update | deferred | todo tracking and dependencies | `subject`/`description`*; `taskId`*; status, addBlockedBy/addBlocks |\n| TaskStop | deferred | kill background task / agent | task_id |\n| TaskOutput | deferred (**deprecated**) | read a background job's output | `task_id`*, block, timeout |\n| CronCreate/List/Delete | deferred | in-session scheduled prompts | `cron`*, `prompt`*, recurring; `id`* |\n| Monitor | deferred | stream events from logs / cmds / WebSockets | `description`*, `timeout_ms`*, `persistent`*, command \\| ws |\n| RemoteTrigger | deferred | cloud routines (`/schedule`) | `action`*, trigger_id, body |\n| ScheduleWakeup | always (gated: `/loop`) | self-paced loops | delaySeconds, prompt, reason, stop |\n| WebFetch / WebSearch | deferred | fetch a URL / web search | `url`*+`prompt`*; `query`* |\n| PushNotification | deferred | desktop / phone ping | `message`*, `status`* |\n| AskUserQuestion | interactive | structured question to the user | `questions[]`* |\n| EnterPlanMode / ExitPlanMode | interactive | read-only planning and approval | *(none)* |\n| EnterWorktree / ExitWorktree | deferred (gated: **worktree**) | isolated git worktree | name \\| path; `action`*, discard_changes |\n| DesignSync | deferred | claude.ai design-system read/write | `method`*, projectId, planId, writes/deletes, files, assets |\n| Skill | always | run a slash command | `skill`*, args |\n| ReportFindings | always (gated: code-review) | typed findings to UI | `findings[]`*, level |\n| Artifact | interactive | publish HTML/MD as a private page | file_path, favicon, url, action |\n| ToolSearch | always | load deferred tool schemas | `query`*, `max_results`* |\n\n---\n\n## How this was measured\n\nThree methods, each more authoritative, and no network capture needed. The parameter\nschemas come straight from the running session.\n\n- **Ask, interactively:** \"list all your tools with their arguments.\"\n- **Headless, scriptable:** `claude -p \"Introspect and list every tool… output markdown.\"`\n  One thing to know: headless `-p` exposes a reduced toolset. Artifact, AskUserQuestion, and\n  the plan-mode tools don't appear (no interactive surface), so add them back by hand.\n- **Read the session logs:** `~/.claude/projects/<encoded-cwd>/<session-uuid>.jsonl` records\n  the roster (`tool_reference`, `deferred_tools_delta`, `skill_listing`,\n  `agent_listing_delta`) from the harness, independent of the model, though not the argument\n  schemas (`inputSchema` isn't in the transcript).\n\nThe typed parameters above come from `ToolSearch` loading each deferred tool's full\nJSONSchema, the same definition the CLI would send on the wire, so a packet capture would\nonly show what the session already hands over.\n","isInternal":false,"tokens":4424,"sizeBytes":16886},{"name":"README.md","path":"Tools/openai_gpts/README.md","rawUrl":"https://raw.githubusercontent.com/0xeb/TheBigPromptLibrary/HEAD/Tools/openai_gpts/README.md","title":"openai_gpts Documentation","category":"plugin-manifest","format":"markdown","content":"# Custom GPTs scripts and tools\n\nThis directory contains utilities for working with ChatGPT Custom GPTs in TheBigPromptLibrary:\n\n- **idxtool.py** - GPT indexing and searching tool\n- **gen_gpt_templ.py** - Generate markdown templates for ChatGPT GPTs by downloading and parsing their metadata\n- **oneoff.py** - One-off operations on GPT files (e.g., batch reformatting)\n\n## idxtool\n\nThe `idxtool` script is a Custom GPT indexing and searching tool used in TheBigPromptLibrary.\n\n### Command line\n\n```\nusage: idxtool.py [-h] [--toc [TOC]] [--find-gpt FIND_GPT] \n                  [--template TEMPLATE] [--parse-gptfile PARSE_GPTFILE] \n\t\t  [--rename]\n\nidxtool: A GPT indexing and searching tool for the CSP repo\n\noptions:\n  -h, --help            show this help message and exit\n  --toc [TOC]           Rebuild the table of contents of GPT custom instructions\n  --find-gpt FIND_GPT   Find a GPT file by its ID or full ChatGPT URL\n  --template TEMPLATE   Creates an empty GPT template file from a ChatGPT URL\n  --parse-gptfile PARSE_GPTFILE\n                        Parses a GPT file name\n  --rename              Rename the GPT file names to include their GPT ID\n```\n\n### Features\n\n- Rebuild TOC: Use `--toc` to rebuild the table of contents for GPT custom instructions.\n- Find GPT File: Use `--find-gpt [GPTID or Full ChatGPT URL or a response file with IDs/URLs]` to find a GPT by its ID or URL.\n- Rename GPT: Use `--rename` to rename all the GPTs to include their GPTID as prefix.\n- Create a starter template GPT file: Use `--template [Full ChatGPT URL]` to create a starter template GPT file.\n- Help: Use `--help` to display the help message and usage instructions.\n\n### Example\n\nTo rebuild the custom GPTs files, run:\n\n```bash\npython idxtool.py --toc\n```\n\nTo find a GPT by its ID, run:\n\n```bash\npython idxtool.py --find-gpt 3rtbLUIUO\n```\n\nor by URL:\n  \n```bash\npython idxtool.py --find-gpt https://chat.openai.com/g/g-svehnI9xP-retro-adventures\n```\n\nAdditionally, you can have a file with a list of IDs or URLs and pass it to the `--find-gpt` option:\n\n```bash\npython idxtool.py --find-gpt @gptids.txt\n```\n\n(note the '@' symbol).\n\nThe `gptids.txt` file contains a list of IDs or URLs, one per line:\n\n```text\n3rtbLUIUO\nhttps://chat.openai.com/g/g-svehnI9xP-retro-adventures\n#vYzt7bvAm\nw2yOasK1r\nwaDWNw2J3\n```\n\n## gen_gpt_templ\n\nThe `gen_gpt_templ` script generates markdown templates for ChatGPT GPTs by downloading and parsing their metadata from the ChatGPT website.\n\n### Command line\n\n```bash\nusage: gen_gpt_templ.py [-h] [--debug] [--dump] [input]\n\nGenerate markdown template for ChatGPT GPTs\n\npositional arguments:\n  input       GPT URL, GPT ID, g-prefixed GPT ID, or @response_file\n\noptions:\n  -h, --help  show this help message and exit\n  --debug     Save debug files (HTML and dump)\n  --dump      Save parsed names and values to .txt file\n```\n\n### Features\n\n- Downloads GPT metadata from ChatGPT URLs\n- Parses GPT information including title, description, author, and profile picture\n- Generates markdown templates with GPT metadata\n- Supports multiple input formats:\n  - Full ChatGPT URL: `https://chatgpt.com/g/g-VgbIr9TQQ-ida-pro-c-sdk-and-decompiler`\n  - Conversation URL: `https://chatgpt.com/g/g-m5lMeGifF-sql-expert-querygpt/c/682cd38c-ca8c-800d-b6e2-33b8ba763824`\n  - GPT ID: `VgbIr9TQQ`\n  - Prefixed GPT ID: `g-VgbIr9TQQ`\n  - Response file: `@gptids.txt` (processes multiple GPTs from a file)\n\n### Examples\n\nGenerate template for a single GPT:\n\n```bash\npython gen_gpt_templ.py https://chatgpt.com/g/g-VgbIr9TQQ-ida-pro-c-sdk-and-decompiler\n```\n\nProcess multiple GPTs from a file:\n\n```bash\npython gen_gpt_templ.py @gptids.txt\n```\n\nGenerate template with debug output:\n\n```bash\npython gen_gpt_templ.py g-VgbIr9TQQ --debug --dump\n```\n\n## Differences between idxtool and gen_gpt_templ\n\n### idxtool --template\n- Uses gen_gpt_templ internally to download actual GPT metadata from ChatGPT\n- Creates templates with real GPT information (title, description, author, logo)\n- Generates properly named files (`{gpt_id}.md`) without RENAMEME suffix\n- Simpler interface for basic template generation within the idxtool workflow\n\n### gen_gpt_templ\n- Full-featured standalone tool with additional capabilities:\n  - `--dump` flag to save all parsed metadata to .txt file\n  - `--debug` flag to save HTML and debug information\n  - Batch processing with @response_file for multiple GPTs\n  - More detailed console output showing download and parsing progress\n  - Can be used as a module by other tools (like idxtool)\n\nUse `idxtool --template` when you need a quick template as part of your GPT file management workflow. Use `gen_gpt_templ` directly when you need the advanced features like metadata dumping or batch processing.\n\n## oneoff\n\nThe `oneoff` script performs one-off operations on GPT files, primarily batch processing tasks.\n\n### Features\n\n- **Reformat GPT files**: Reformats all GPT markdown files in a source directory and saves them to a destination directory\n- Validates GPT file structure during processing\n- Preserves GPT metadata (ID, name) during reformatting\n\n### Usage\n\nThe script is designed for batch operations. Currently supports:\n\n1. **Batch reformatting**: Process all `.md` files in a source directory, reformat them according to the standard GPT markdown structure, and save to a destination directory.\n\nExample usage in code:\n\n```python\nfrom oneoff import reformat_gpt_files\n\nsuccess, message = reformat_gpt_files(\"source_gpts/\", \"formatted_gpts/\")\nprint(message)\n```\n\n## License\n\nThis tool is open-sourced under the GNU General Public License (GPL). Under this license, you are free to use, modify, and redistribute this software, provided that all copies and derivative works are also licensed under the GPL.\n\nFor more details, see the [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html).\n","isInternal":false,"tokens":1580,"sizeBytes":5820},{"name":"README.md","path":"Tools/README.md","rawUrl":"https://raw.githubusercontent.com/0xeb/TheBigPromptLibrary/HEAD/Tools/README.md","title":"Tools Documentation","category":"plugin-manifest","format":"markdown","content":"# TheBigPromptLibrary Tools\n\nThis directory contains various tools and utilities for working with ChatGPT's custom GPTs.\n\n## Available Tools\n\n- A [collection of scripts](./openai_gpts/README.md) for managing and working with ChatGPT Custom GPTs\n\n## License\n\nThese tools are open-sourced under the GNU General Public License (GPL). Under this license, you are free to use, modify, and redistribute this software, provided that all copies and derivative works are also licensed under the GPL.\n\nFor more details, see the [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html).","isInternal":false,"tokens":133,"sizeBytes":577}],"systemPromptSnippet":"<yakaai_skills repo=\"0xeb/TheBigPromptLibrary\">\n<!-- File: SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-follow-up.md (Tokens: ~1085 | Category: anthropic-skill) -->\n# Overview\n\nHelp the user quickly turn a meeting that already happened into clear outputs and next steps. Optimize for: fast recap, stakeholder-ready communication, and reliable task capture so nothing slips.\n\nConsider this when the user asks for meeting follow up like \"help me followup on this meeting\", \"send an update,\" \"log action items,\" \"turn notes into tasks,\" \"what are next steps,\" or \"can you follow up with the team.\"\n\n## Definitions\n\n- Internal: All participants share the user's email domain\n- External: At least one participant has a different email domain\n\n## Intake questions to answer (don't ask the user unless needed)\n\n1. Where are the meeting notes stored?\n2. What follow-ups should happen today vs later?\n3. What was decided? What is still open?\n4. What are the action items, owners, and due dates?\n5. Who needs to know, and what do they need to know (level of detail)?\n6. Are there risks, blockers, or dependencies that need escalation?\n\n## Research approach\n\nPrioritize sources in this order:\n\n- AI meeting notes: summary, action items, transcript, attendees\n- User's notes and any linked docs from the calendar invite\n- Related project pages, specs, PRDs, decision logs, open tasks\n- Slack and email only if needed to confirm context, commitments, or distribution list\n- Calendar to schedule follow up meetings (default to within one week unless otherwise noted)\n\n## What to produce (choose based on user intent, default to the smallest useful set, offer to help with additional followups with examples)\n\n### A) Meeting recap (base deliverable)\n\nCreate a crisp recap with:\n\n- Purpose and outcome in one sentence\n- Key decisions (with decision owner if clear)\n- Discussion highlights (only what matters)\n- Action items (owner, due date, status)\n- Open questions and next meeting plan (if any)\n\n### B) Stakeholder-specific summaries\n\nOffer tailored versions of the recap for different audiences, for example:\n\n- Exec skim: outcomes, risks, asks, deadlines\n- Cross-functional partners: decisions, dependencies, handoffs\n- Direct team: detailed next steps and owners\n- External attendee follow up: confirmed decisions, action items with assignees, deliverables, timelines, thanks\n\nDefault behavior: propose 2-3 stakeholder formats that make sense based on the meeting and participants and generate them unless user specifies otherwise. Keep each version appropriately short.\n\n### C) Project status update\n\nIf the meeting impacts a project, convert outcomes into a status update using a consistent structure:\n\n- Status (on track, at risk, off track)\n- What changed since last update\n- Progress made\n- Risks and blockers\n- Next milestones and dates\n- Asks and owners\n\n### D) Comms distribution (Slack or email)\n\nIf the user wants to send an update:\n\n- Draft the message in the right tone for the channel\n- Include links to notes and relevant docs\n- Include clear asks, owners, and deadlines\n- Keep Slack short, email slightly more structured\n- Never send without explicit confirmation from the user\n- If unsure of channel or recipients, ask a single clarifying question\n\n### E) Task logging and tracking\n\nTurn action items into tasks with:\n\n- Clear verb-first task title\n- Owner (if known)\n- Due date (if stated, otherwise suggest one or mark \"needs date\")\n- Source link back to the meeting notes\n- Any dependencies / context in the description\n\nIf the user has an existing task system, match it. Otherwise, create a lightweight list of action items in the follow-up output.\n\n### F) Help execute tasks\n\nWhen asked, help move tasks forward by producing the next artifact.\n\n### G) Help schedule meetings\n\nBased on meeting notes or when asked, schedule follow-up meetings or related discussions.\n\n## What to surface (content priorities)\n\n### Urgent flags\n\n- Deadlines within the next week\n- Commitments made by the user\n- Risks or blockers that need escalation\n- Missing owners or unclear next steps\n\n### Decisions\n\n- Decision statement\n- Options considered (only if important)\n- Rationale (one line)\n- Owner and date\n\n### Action items\n\n- Task, owner, due date\n- \"Needs owner\" or \"needs date\" explicitly called out\n- Group by team or theme if there are many\n\n### Open questions\n\n- What's unresolved\n- Who can answer\n- When it must be resolved\n\n## Output guidelines\n\n- Be direct, specific, and skimmable\n- Use bullet points, short sections, no filler\n- Skip empty sections\n- Prefer concrete nouns, names, dates\n- If generating multiple stakeholder versions, label each clearly\n- If you used sources (notes, transcript, docs), cite them\n\n## What NOT to do\n\n- Don't invent decisions, owners, or deadlines\n- Don't over-summarize: preserve commitments and action items verbatim when possible\n- Don't include sensitive or internal-only details in an external follow up\n- Don't send emails or Slack messages without user confirmation\n- Don't create busywork: prefer the smallest set of outputs that unblock progress\n- Don't regurgitate the meeting notes or meeting summary that already exists\n\n<!-- File: SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/meeting-prep.md (Tokens: ~740 | Category: anthropic-skill) -->\n# Overview\n\nYour purpose is to prep the user for meetings. You should surface what matters most before a meeting - urgent items, recent context, and memory-jogging details to answer: _What does the user need to know RIGHT NOW to be effective?_\n\nConsider this when a user asks you to prepare for their meetings, provide meeting context, create pre-reads, or help them get ready for upcoming calendar events.\n\n# Definitions\n\n- Internal: All participants share the user's email domain\n- External: At least one participant has a different email domain\n\n# Research approach\n\nSeek to research the following questions:\n\n1. Have the user and these participants met before? What happened last time?\n2. Are there outstanding action items or decisions from the user?\n3. What's changed or progressed since their last interaction?\n4. What decisions or discussions should be on the agenda?\n\n## Search across all available sources\n\n- Notion: Meeting notes, project pages, relevant docs, action items, decision logs, recent updates\n- Calendar: Last meeting with these participants, linked notes, attached documents, agendas, recurring patterns\n- Slack: Recent conversations with participants, topic mentions, channel discussions, direct messages\n- Email: Thread history, correspondence, attachments, shared materials\n- Web search: (External only, or if the user has never met with the individuals in the meeting before) Participant background, company news, industry context, public information\n\n# What to surface\n\n## Urgent flags\n\n- Decisions the user needs to make today\n- Action items the user owes (with dates if overdue)\n- Urgent items needing resolution\n- Prep materials to review\n\n## Memory joggers\n\n- Date of last meeting\n- Key discussion points and decisions made\n- What the user committed to\n- Where they left off, including any outstanding topics or decisions\n\n## Today's focus\n\n- Meeting purpose and agenda\n- Key topics or decisions on deck as well as supporting context\n- Materials or links from the invite\n\n## Participants\n\n- Internal: Role, relevant projects, recent updates on topic\n- External: Name, title, company, why they matter, relationship status\n\n# Output guidelines\n\n- Structure: Specific times, names, concrete details. Skip sections with no relevant info. Use bullet points. Cite all sources with footnotes.\n- Tone: Direct, specific, personalized. Write like a well-prepared colleague. Focus on what the user needs to do or decide.\n- Format: For each meeting, use:\n\n｀｀｀\n[Meeting Time] - [Meeting Title]\n\n👥 Participants\n[participant details]\n\n🚨 Important flags (only if relevant)\n[urgent items]\n\n💭 Last time we met (only if applicable)\n[last meeting context]\n\n🎯 Today's discussion\n[agenda and purpose]\n\n｀｀｀\n\nIf prepping several meetings, separate multiple meetings with a horizontal line (---).\n\n# Quality priorities\n\n- Actionable: Focus on what the user needs to do or decide\n- Memory-jogging: Remind them of past conversations and commitments\n- Specific: Use concrete details, dates, and quotes\n- Concise: Surface only what matters\n- Well-cited: Always link sources\n\n# What NOT to do\n\n- Don't make assumptions about importance without evidence\n- Don't include generic meeting advice or regurgitate the calendar event details\n- Don't create empty sections\n- Don't research external participants if clearly internal\n- Don't spend time on social events or casual meetups\n- Don't write prep to pages without user permission or specified location\n\n<!-- File: SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/optimize-schedule.md (Tokens: ~620 | Category: anthropic-skill) -->\n# Overview\n\nYou should analyze calendar schedules and provide recommendations to optimize time management. You should identify problems, suggest solutions and explain your reasoning. Never take action without explicit approval unless the user have given you permission to do so. When a user specifies a preference in their prompt or instructions, prioritize that preference over these instructions.\n\n_Ask the user for their preferences if they haven't provided them._\n\n## What to analyze\n\n### Meeting conflicts\n\n- Identify overlapping or double-booked meetings\n- Determine priority based on:\n  - Meeting context from available sources (email, calendar, Slack, Notion workspace, etc.)\n  - User's apparent role or involvement level\n  - Attendee lists and meeting importance\n  - User's stated priorities or preferences\n- Provide clear recommendations with brief reasoning\n\n### Calendar overload\n\n- Calculate total meeting hours for the time period\n- Flag when meeting load exceeds reasonable thresholds (respect any user-specified threshold)\n- Identify which meetings could potentially be declined, delegated, rescheduled or shortened\n- Consider meeting importance, required attendance, scheduling flexibility and attendee lists\n\n### Focus time gaps\n\n- Don't assume every user treats focus time blocks the same way\n- Identify available blocks of unscheduled time\n- Look for opportunities to protect focus time\n- Recommend specific time blocks for deep work\n\n### Task scheduling opportunities\n\n- If the user has provided access to a tasks database or to-do list, review incomplete or upcoming items\n- Match tasks to available calendar slots based on priority, deadlines, estimated time needed, available focus blocks and context switching\n- Suggest specific time slots for each task\n- Only update task due dates or calendar after explicit approval\n\n## How to gather information\n\n- Use calendar tools to view the relevant time period\n- Search the user's workspace for context on meeting topics, attendees or projects\n- Check for task databases, project pages or priority lists\n- Look for email or Slack threads that provide meeting context\n- Consider the user's stated preferences and work patterns\n\n## Handling edge cases\n\n- Insufficient context: Explain what information is missing and ask for guidance\n- All meetings seem important: Present the tradeoffs and let the user decide\n- No tasks database found: Ask where tasks are tracked or focus only on calendar optimization\n- Unclear preferences: Make recommendations based on general best practices and invite the user to provide preferences\n\n## Formatting\n\nFollow user's formatting preferences. Also,\n\n- Be specific (include meeting names, times, task titles)\n- Provide brief, clear reasoning\n\n## Reschedule guidelines\n\nWhen proposing to reschedule meetings due to conflicts or overload:\n\n- With access to participant calendars: Find time slots where all attendees are free\n- Without access to participant calendars: Suggest times when the user is free\n- Format: Present options as specific days and times\n- After presenting options: Ask the user to confirm which time they prefer\n- Reschedule the meeting: Proceed to reschedule the meeting to the confirmed time\n  End with: \"Would you like me to proceed with any of these changes?\"\n\n<!-- File: SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/project-planning.md (Tokens: ~327 | Category: anthropic-skill) -->\n# Overview\n\nHelp the user organize a calendar-based project plan by breaking down goals into milestones and scheduling key meetings and deadlines.\n\n## Before you start\n\n- Confirm project scope, timeline, and end goal\n- Clarify steps or ideas the user has already generated for this project\n- Ask if there are relevant project pages or sources to use\n- Ask what success looks like and what constraints exist (team size, dependencies, hard deadlines)\n- If scope seems large, suggest ways to break down the project and offer to plan the first step(s) of the project\n\n## Required steps\n\n1. Define milestones: Ask user to outline 3-5 key milestones; confirm dates and dependencies.\n2. Identify key meetings: Determine what recurring check-ins or key sync meetings are needed (kickoff, status, reviews, retrospective); propose frequency and duration\n3. Schedule meetings: Create calendar events for each meeting; ask user to confirm attendees, times, and conferencing needs before booking\n4. Set deadlines: For each milestone, ask if there are specific deliverable dates or blockers.\n5. Track milestones and deadlines in a calendar of their choosing. Clarify which one if it's not obvious.\n6. Create summary: Provide a timeline view (visual or text) showing meetings, milestones, and dependencies; ask if adjustments needed\n\n## What NOT to do\n\n- Don't add meetings to calendar without confirmation of attendees and times\n- Don't assume team availability without checking calendars\n- Don't over-schedule; recommend buffer time between intense work blocks\n- Don't guess project requirements; ask clarifying questions early\n\n<!-- File: SystemPrompts/Notion/notion-ai_20260322/modules/calendar/skills/scheduling.md (Tokens: ~1085 | Category: anthropic-skill) -->\n# Overview\n\nYou should behave like a scheduling assistant that proposes optimal meeting times. Consider this when a user asks to schedule time, find time, propose time, or asks when they are available.\n\n## When to use this skill\n\nThe user might say \"schedule meetings\", \"schedule time\", \"propose time\", \"find time\", \"when I am available\" or similar phrases.\n\nConsider calling the suggestMeetingTimes tool when a user asks to find time. If the user is asking for more complex instructions scheduling behavior based on the nature of users' events, you should consider querying their events via listCoworkersEvents.\n\nInputs you may use\n\n- Calendar data: the user's events and working hours\n- Context the user shares: a Notion page, meeting notes or transcript/summary, a Slack thread, an email thread, or a previous calendar event\n- Constraints from the user: specific date(s), time of day, duration, attendees, location or video link preference, time zone\n\n## How to respond\n\n1. Understand the request\n\n- Extract attendees, purpose, duration, preferred dates or windows, and any availability provided by others\n- Ask follow up questions to clarify the request, if needed\n\n2. Analyze availability\n\n- Use the user's calendar as the source of truth\n- Read each participant's working hours and availability, when available\n- Check the user's calendar for free windows that satisfy the constraints\n- If invitee availability is provided, intersect it with the user's free time\n- Respect time zones, working hours, and reasonable buffers around adjacent events and any preferences the user has provided\n- Identify candidate time slots that work for the group\n\n3. Schedule event if there are no conflicts\n\n- If there is an available time slot for all participants, create the event automatically.\n\n4. If there are conflicts or availability only outside of working hours, propose options and help the user handle conflicts\n\n- Return 1-3 recommended time options with date, start-end time, and time zone.\n- Clearly recommend one best option with a short reason why\n- For each option, explain how it compares to other options, if relevant\n- Ask the user if any participants are optional\n\n5. Handle conflicts - if no fully free slot exists:\n\n- Choose the time(s) with the fewest and lightest conflicts\n- Call out which participants have conflicts, what those conflicting events are, which holds look most movable and why\n- Suggest who the user might contact to move or cancel those conflicts\n\n6. Draft communication\n\n- Always return a ready-to-send draft message the user can copy into Slack or email\n\n7. Confirm details before scheduling an event with conflicts\n\n- Ask the user to pick an option and confirm scheduling the event\n- Confirm whether to send invites\n- Do not notify others or send emails/invites without explicit confirmation\n\n8. Schedule the event (only after confirmation)\n\n- Once the user confirms the timeslot, create the event on the confirmed calendar\n- Add attendees and include a brief context summary with relevant links\n- Default to a 30 minute meeting if the user doesn't specify\n- Add conferencing link if information is available\n- Send invites only if the user confirmed\n- Share a short confirmation with the final details\n\n## User preferences and defaults\n\n- Default working hours unless the user specifies otherwise: 9 a.m.-5 p.m. user's timezone\n- Prefer times within working hours\n- Use Notion Calendar as the system of record for event drafts and availability\n- Respect user's timezones\n- Assume that events the user is a \"Maybe\" on or has not yet RSVP'd to are busy blocks unless the user states otherwise\n- Respect user's OOO or PTO events; never propose times when one or more participants are out of office\n- When proposing options, you may go outside these hours only if the user explicitly asks or there is no reasonable option within working hours\n\n## Interaction and handoff\n\nIn every answer, be explicit about what the user should do next.\n\nUse very clear labels like:\n\n- Recommended options\n- Conflicts\n- Draft message\n- Next actions\n\n## Timezone complexity\n\n- Always specify timezone for each proposed time\n- When participants span multiple zones, show times in each relevant timezone\n\n## Handling recurring event requests\n\n- If a user requests you schedule a recurring event, tell the user you do not yet support this capability.\n\n## External participants\n\nWhen external participants are involved:\n\n- If you cannot see their availability, clearly say so\n- Do not fabricate their free/busy status\n- Explicitly state your limitation\n\n## Meeting time suggestions UI\n\nWhen you call the suggestMeetingTimes tool and it returns time suggestions, you MUST append the following self-closing tag at the very end of your response, on its own line:\n\n<meeting_time_suggestions/>\n\nThis tag renders an interactive UI that lets the user review and act on the suggested meeting times. Always include it after your text response when suggestMeetingTimes returns suggestions.\n\nIf your text recommends only a subset of the returned time slots, include a suggestionKeys attribute so the UI shows only those options:\n\n<meeting_time_suggestions suggestionKeys=\"KEY_1,KEY_2\"/>\n\nEach key must be exactly startAt-endAt from the suggestMeetingTimes output (ISO strings).\n\n<!-- File: .claude/CLAUDE.md (Tokens: ~480 | Category: claude-rule) -->\n# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Repository Purpose\n\nThis is a collection repository for LLM system prompts, custom GPT instructions, jailbreak prompts, and instruction protection techniques. The content is primarily markdown documentation for educational purposes around prompt engineering and LLM security research.\n\n## Repository Structure\n\n- **SystemPrompts/** - System prompts from various LLM providers (OpenAI, Anthropic, Google, Meta, xAI, etc.), organized by vendor with date-stamped filenames\n- **CustomInstructions/** - Custom GPT instructions and configurations, including a large index in `CustomInstructions/README.md` (the table of contents for ChatGPT GPTs)\n- **Jailbreak/** - Jailbreak prompts organized by LLM provider\n- **Security/** - GPT instruction protection techniques\n- **Articles/** - Technical articles about LLM internals and prompt engineering\n- **Tools/openai_gpts/** - Python utilities for managing GPT documentation\n\n## Tools\n\nPython scripts in `Tools/openai_gpts/`:\n\n```bash\n# Rebuild the CustomInstructions/README.md table of contents\npython Tools/openai_gpts/idxtool.py --toc\n\n# Find a GPT by ID or URL\npython Tools/openai_gpts/idxtool.py --find-gpt <GPT_ID_OR_URL>\n\n# Generate a markdown template for a new GPT entry\npython Tools/openai_gpts/idxtool.py --template <CHATGPT_URL>\n\n# Generate template with metadata dump (standalone tool)\npython Tools/openai_gpts/gen_gpt_templ.py <URL_OR_ID> --dump\n```\n\n## File Naming Conventions\n\n- **SystemPrompts**: `YYYYMMDD-ProviderName.md` or `provider_feature_YYYYMMDD.md`\n- **CustomInstructions GPTs**: `{gpt_id}.md` with GPT metadata in frontmatter-style headers\n\n## Contributing New Prompts\n\nWhen adding system prompts or GPT instructions:\n1. Use the appropriate date-stamped naming convention\n2. For GPTs, use `idxtool.py --template` to generate the initial file structure\n3. Run `idxtool.py --toc` after adding new GPT files to update the table of contents\n\n<!-- File: Articles/claude-code-tools/README.md (Tokens: ~4424 | Category: plugin-manifest) -->\n# When \"Just Do It\" Isn't Enough: Invoking Claude Code Tools by Name\n\n*By **Elias Bachaalany** — [@0xeb](https://github.com/0xeb) on GitHub · [Binary Wizards](https://www.youtube.com/@binary-wizards) on YouTube · [@eliasbchlny](https://x.com/eliasbchlny) on X*\n\n*The cases where naming the exact tool beats describing the outcome.*\n\nClaude Code exposes a few dozen tools, and most of the time you should never name one.\nYou say what you want (\"find every place we validate emails\", \"build it and run it\") and\nthe model routes the request to the right tool. That default is good, and you should lean\non it.\n\nBut routing is the model's guess at your intent, and sometimes the guess isn't what you\nwanted. It answers when you wanted to be asked. It presses on when you wanted a checkpoint.\nIt skips the task list you wanted kept. It improvises three shell commands when you wanted\none specific search. In those moments the fix is the same: stop describing the outcome and\nname the tool. Saying \"use the AskUserQuestion tool\" or \"use TaskCreate\" or \"use Monitor\"\nturns a guess into a guarantee.\n\nThis article is about those moments, the legitimate cases where naming the tool gives you\ndeterministic control, followed by a full, typed reference so you know exactly what to say\nand with which arguments.\n\n## Two ways to invoke, and when to switch\n\nThe model is a good dispatcher. Tell it what you want and it walks to the toolbox, picks a\ntool, and uses it. Ninety percent of the time that is exactly right, and you should let it\ndrive. But a dispatcher is guessing at your intent, and every so often you want to reach\npast it and grab a specific tool yourself. That reach is the whole skill this article\nteaches: knowing the names well enough to ask for one on purpose.\n\n- **Outcome phrasing** (the default): *\"Find where auth is handled.\"* The model picks the\n  tool. Best for almost everything.\n- **By-name invocation** (this article): *\"Use the Grep tool with `pattern`='validateAuth',\n  `output_mode`='content'.\"* You pick the tool and, optionally, its exact arguments. Best\n  when the specific behavior matters more than the outcome.\n\nSwitch to by-name when any of these is true: you want a **specific mechanism** (this tool,\nnot a substitute), you want a behavior the model **wouldn't trigger on its own**, or the\ntool is **keyword-gated** and has no other way in.\n\n## When naming the tool wins\n\n### Make it stop and ask you: `AskUserQuestion`\n\nHere is a fun one to try right now. Prompt the model with:\n\n> \"Use the AskUserQuestion tool and present me three color choices.\"\n\nIt pops a little structured menu, red / green / blue, and waits for you to pick. Nothing\nabout choosing a color *needs* a tool, which is exactly why it makes such a clean demo: you\naren't asking for an outcome, you are commandeering a specific piece of UI on demand. The\nmodel is smart enough to reach for this tool on its own, but here you are the one deciding\nit should.\n\nNow swap the toy for something real:\n\n> \"Use the AskUserQuestion tool to give me options before you choose the auth library.\"\n\nSame move, real stakes. You convert \"the model decided\" into \"the model asked.\" This is the\nsingle most useful by-name habit to build.\n\n### Force a task to exist: `TaskCreate` / `TaskUpdate`\n\nThe todo system auto-engages on big, multi-step work, but for a two- or three-step job it\nmay not bother. When you want a durable, visible checklist regardless of the model's\njudgment:\n\n> \"Use **TaskCreate** to add a task: `subject`='Migrate auth to OAuth'. Then keep it updated\n> as you go.\"\n> \"Use **TaskUpdate** `taskId`=2, `addBlockedBy`=['1'] so task 2 waits for task 1.\"\n\nNaming `TaskCreate` makes the task exist on purpose; naming `TaskUpdate` lets you drive\nstatus and dependencies by hand instead of hoping they're tracked.\n\n### Start something recurring or watching, on purpose: `CronCreate`, `Monitor`, `/loop`\n\n\"Keep an eye on the build\" is ambiguous; the mechanism you actually want isn't. Name it, and\nyou choose polling vs. streaming vs. self-pacing:\n\n> \"Use **CronCreate** `cron`='*/15 * * * *' to re-run the tests every 15 minutes.\"\n> \"Use **Monitor** `command`='tail -f dev.log | grep --line-buffered ERROR' to tell me every\n> time an error appears.\"\n> \"**/loop 5m /babysit-prs**\" to run a prompt on an interval.\n\n### Behaviors that *only* exist by name: the keyword-gated tools\n\nSome tools cannot be summoned any other way. Here the name or keyword **is** the API:\n\n- **worktree** unlocks `EnterWorktree`: \"do this in a **worktree**.\"\n- **ultracode** (or \"use a workflow\") unlocks `Workflow`: deliberate multi-agent orchestration.\n- **/loop** with no interval unlocks `ScheduleWakeup`: model-paced loops.\n- an active code review unlocks `ReportFindings`: typed findings to the UI.\n\nNo amount of outcome phrasing unlocks these; the deliberate keyword is the point. They can\nspawn many agents or relocate your edits, so they wait for explicit consent.\n\n### Pin the exact operation: `Grep`, `Glob`, `Edit`, `Agent`\n\nWhen you want one specific mechanism and no substitution:\n\n> \"Use **Grep** with `pattern`='TODO', `output_mode`='content', `-n`=true\" (not a subagent).\n> \"Use an **Explore** agent to search, don't grep inline.\"\n> \"Use **Edit** on `config.ts` with `replace_all`=true.\"\n\nNaming removes the routing guess when the *how* matters as much as the *what*.\n\n### Run a specific, known procedure: `Skill`\n\nSkills are packaged multi-step procedures. Naming one runs *that* procedure rather than\nhoping the model reconstructs the same steps:\n\n> \"Use the **deep-research** skill on X\", or type `/deep-research <question>`.\n\n### Choose the output channel: `Artifact`, `PushNotification`, `WebFetch`\n\nWhen you want a specific destination for the result:\n\n> \"Make an **Artifact** I can share.\" / \"Use **PushNotification** to ping me when the build\n> finishes.\" / \"Use **WebFetch** `url`=… `prompt`='what changed in 2.1?'.\"\n\n### How to phrase a by-name call\n\nTwo levels of precision:\n\n- **Name only:** \"Use TaskCreate to track this.\" The model fills in the arguments.\n- **Name plus arguments:** \"Use TaskCreate with `subject`='…', `description`='…',\n  `activeForm`='…'.\" You pin the exact call.\n\nThe rest of this article is the reference that makes the second form possible: every tool,\nits parameters, types, and defaults.\n\n---\n\n## The catalog: always-loaded vs deferred\n\nThe reference is the full toolset of a Claude Code 2.1.223 session (Windows, August 2026):\n**32 tools, 13 always-loaded and 19 deferred**. Always-loaded tools are callable\nimmediately; deferred tools are announced by name and their schemas load on demand (the\nmodel pulls one in with a `ToolSearch` call before first use). Parameters are marked `*`\nwhen required, with types and defaults noted.\n\n### File, search & shell\n\n- **Read**: read a file (text, image, PDF, notebook).\n    - `file_path`* string (absolute) · `offset` int · `limit` int · `pages` string (PDF range)\n- **Write**: create or overwrite a file you've Read.\n    - `file_path`* string · `content`* string\n- **Edit**: exact string replacement.\n    - `file_path`* string · `old_string`* string · `new_string`* string · `replace_all` bool=false\n- **Glob**: filename pattern match, sorted by mtime.\n    - `pattern`* string · `path` string\n- **Grep**: ripgrep content search.\n    - `pattern`* string · `path` · `glob` · `type` · `output_mode` content|files_with_matches|count · `-i`/`-n`/`-o` bool · `-A`/`-B`/`-C` int · `multiline` bool · `head_limit` int=250 · `offset` int\n- **Bash**: Git Bash / POSIX shell.\n    - `command`* string · `description` · `timeout` ms=120000 (max 600000) · `run_in_background` bool · `dangerouslyDisableSandbox` bool\n- **PowerShell**: pwsh (primary shell on Windows; absent on macOS/Linux).\n    - `command`* string · `description` · `timeout` ms (max 600000) · `run_in_background` bool · `dangerouslyDisableSandbox` bool\n- **NotebookEdit**: replace/insert/delete one Jupyter cell.\n    - `notebook_path`* string · `new_source`* string · `cell_id` string · `cell_type` code|markdown · `edit_mode` replace|insert|delete (default replace)\n\n### Delegation\n\n- **Agent**: spawn a subagent.\n    - `description`* string (3 to 5 words) · `prompt`* string · `subagent_type` string · `model` sonnet|opus|haiku|fable · `isolation` worktree|remote · `run_in_background` bool=true\n    - `subagent_type` values: `claude`, `general-purpose`, `Explore`, `Plan`, `statusline-setup`.\n- **SendMessage**: the only way agents talk to each other; resume a spawned agent with its context, or post to `main`.\n    - `to`* string (teammate name, or `\"main\"`) · `message`* string · `summary` string (<=200, required when message is a string)\n- **Workflow** *(gated: ultracode)*: deterministic JS orchestration over many subagents.\n    - `script` string · `scriptPath` string · `name` string · `args` any · `resumeFromRunId` (`wf_…`)\n\n### Task list & background jobs\n\n- **TaskCreate**: new task (starts `pending`).\n    - `subject`* string · `description`* string · `activeForm` string · `metadata` object\n- **TaskUpdate**: modify a task.\n    - `taskId`* string · `status` pending|in_progress|completed|deleted · `addBlockedBy[]` · `addBlocks[]` · `owner` · `subject` · `description` · `activeForm` · `metadata`\n- **TaskList**: list all tasks. *(no params)*\n- **TaskGet**: one task's full detail.\n    - `taskId`* string\n- **TaskStop**: kill a background task or named agent.\n    - `task_id` string (also `name@team` or a bare agent name) · `shell_id` *(deprecated)*\n- **TaskOutput** *(deprecated)*: read a background job's output.\n    - `task_id`* string · `block` bool=true · `timeout` ms=30000 (max 600000)\n\n### Scheduling & watching\n\n- **CronCreate**: schedule a prompt on 5-field local-time cron; session-only, recurring auto-expires after 7 days.\n    - `cron`* string · `prompt`* string · `recurring` bool=true · `durable` (no effect)\n- **CronList**: list this session's cron jobs. *(no params)*\n- **CronDelete**: cancel one. · `id`* string\n- **Monitor**: stream events from a command's stdout or a WebSocket; one notification per line.\n    - `description`* string · `timeout_ms`* number=300000 (max 3600000) · `persistent`* bool=false · `command` string **or** `ws` {`url`* string, `protocols[]`} (mutually exclusive)\n- **RemoteTrigger**: claude.ai cloud routines (backs `/schedule`).\n    - `action`* list|get|create|update|run · `trigger_id` string · `body` object (required for create/update)\n- **ScheduleWakeup** *(gated: /loop without interval)*: self-paced loop scheduling.\n    - `delaySeconds` number (60 to 3600) · `prompt` string · `reason` string · `stop` bool\n\n### Web & output\n\n- **WebFetch**: fetch a URL, convert to markdown, answer a prompt (15-min cache, HTTP upgraded to HTTPS, no auth).\n    - `url`* uri · `prompt`* string\n- **WebSearch**: web search (US-only).\n    - `query`* string (min 2) · `allowed_domains[]` · `blocked_domains[]`\n- **PushNotification**: desktop/phone ping.\n    - `message`* string (<200 chars) · `status`* const `\"proactive\"`\n- **AskUserQuestion**: structured multiple-choice back to you (interactive only).\n    - `questions[]`* where each has: `question` string, `header` string (<=12), `options[]` (2 to 4: `label`, `description`, `preview`), `multiSelect` bool\n\n### Planning, isolation & design\n\n- **EnterPlanMode / ExitPlanMode**: read-only planning and approval (interactive; also shift+tab). *(no params)*\n- **EnterWorktree** *(gated: worktree)*: isolated git worktree.\n    - `name` string (<=64) **or** `path` string, mutually exclusive\n- **ExitWorktree**: leave the worktree session.\n    - `action`* keep|remove · `discard_changes` bool (true to remove a dirty worktree)\n- **DesignSync**: read/write claude.ai design-system projects; ordering is read, then `finalize_plan`, then write.\n    - `method`* list_projects|get_project|list_files|get_file|finalize_plan|write_files|delete_files|register_assets|unregister_assets|create_project|report_validate · plus `projectId`, `planId`, `path`/`paths[]`, `writes[]`/`deletes[]`, `localDir`, `files[]`, `assets[]`, `name`\n\n### Specialized & internal\n\n- **Skill**: run a packaged skill / slash command.\n    - `skill`* string (exact name, no leading slash) · `args` string\n- **ReportFindings** *(gated: code-review)*: typed findings to the UI.\n    - `findings[]`* where each has: `file`*, `summary`*, `failure_scenario`*, `line`, `category`, `short_summary`, `verdict`, `outcome` · `level` low|medium|high|xhigh|max\n- **Artifact**: publish an HTML/Markdown file as a private claude.ai page (interactive).\n    - `file_path` string · `favicon` emoji (required to publish) · `title` · `description` · `url` (update) · `action` publish|list\n- **ToolSearch**: load deferred tool schemas on demand (internal; never prompt for it).\n    - `query`* string (`select:A,B`, keywords, or `+name term`) · `max_results`* number=5\n\n## Compact reference\n\nLoaded = always-on; Deferred = schema loads on demand. `*` = required.\n\n| Tool | Loaded | Purpose | Key arguments |\n|------|--------|---------|---------------|\n| Read | always | read file / image / PDF / notebook | `file_path`*, offset, limit, pages |\n| Write | always | create / overwrite a Read file | `file_path`*, `content`* |\n| Edit | always | exact string replacement | `file_path`*, `old_string`*, `new_string`*, replace_all |\n| Glob | always | filename pattern match | `pattern`*, path |\n| Grep | always | ripgrep content search | `pattern`*, path, glob, type, output_mode, -i/-n/-o, -A/-B/-C, multiline, head_limit |\n| Bash | always | POSIX shell | `command`*, timeout, run_in_background |\n| PowerShell | always (Windows) | pwsh shell | `command`*, timeout, run_in_background |\n| NotebookEdit | deferred | edit one Jupyter cell | `notebook_path`*, `new_source`*, cell_id, cell_type, edit_mode |\n| Agent | always | spawn a subagent | `description`*, `prompt`*, subagent_type, model, isolation, run_in_background |\n| SendMessage | deferred | agent-to-agent message | `to`*, `message`*, summary |\n| Workflow | always (gated: **ultracode**) | multi-agent orchestration script | script / scriptPath / name, args |\n| TaskCreate/List/Get/Update | deferred | todo tracking and dependencies | `subject`/`description`*; `taskId`*; status, addBlockedBy/addBlocks |\n| TaskStop | deferred | kill background task / agent | task_id |\n| TaskOutput | deferred (**deprecated**) | read a background job's output | `task_id`*, block, timeout |\n| CronCreate/List/Delete | deferred | in-session scheduled prompts | `cron`*, `prompt`*, recurring; `id`* |\n| Monitor | deferred | stream events from logs / cmds / WebSockets | `description`*, `timeout_ms`*, `persistent`*, command \\| ws |\n| RemoteTrigger | deferred | cloud routines (`/schedule`) | `action`*, trigger_id, body |\n| ScheduleWakeup | always (gated: `/loop`) | self-paced loops | delaySeconds, prompt, reason, stop |\n| WebFetch / WebSearch | deferred | fetch a URL / web search | `url`*+`prompt`*; `query`* |\n| PushNotification | deferred | desktop / phone ping | `message`*, `status`* |\n| AskUserQuestion | interactive | structured question to the user | `questions[]`* |\n| EnterPlanMode / ExitPlanMode | interactive | read-only planning and approval | *(none)* |\n| EnterWorktree / ExitWorktree | deferred (gated: **worktree**) | isolated git worktree | name \\| path; `action`*, discard_changes |\n| DesignSync | deferred | claude.ai design-system read/write | `method`*, projectId, planId, writes/deletes, files, assets |\n| Skill | always | run a slash command | `skill`*, args |\n| ReportFindings | always (gated: code-review) | typed findings to UI | `findings[]`*, level |\n| Artifact | interactive | publish HTML/MD as a private page | file_path, favicon, url, action |\n| ToolSearch | always | load deferred tool schemas | `query`*, `max_results`* |\n\n---\n\n## How this was measured\n\nThree methods, each more authoritative, and no network capture needed. The parameter\nschemas come straight from the running session.\n\n- **Ask, interactively:** \"list all your tools with their arguments.\"\n- **Headless, scriptable:** `claude -p \"Introspect and list every tool… output markdown.\"`\n  One thing to know: headless `-p` exposes a reduced toolset. Artifact, AskUserQuestion, and\n  the plan-mode tools don't appear (no interactive surface), so add them back by hand.\n- **Read the session logs:** `~/.claude/projects/<encoded-cwd>/<session-uuid>.jsonl` records\n  the roster (`tool_reference`, `deferred_tools_delta`, `skill_listing`,\n  `agent_listing_delta`) from the harness, independent of the model, though not the argument\n  schemas (`inputSchema` isn't in the transcript).\n\nThe typed parameters above come from `ToolSearch` loading each deferred tool's full\nJSONSchema, the same definition the CLI would send on the wire, so a packet capture would\nonly show what the session already hands over.\n\n<!-- File: Tools/openai_gpts/README.md (Tokens: ~1580 | Category: plugin-manifest) -->\n# Custom GPTs scripts and tools\n\nThis directory contains utilities for working with ChatGPT Custom GPTs in TheBigPromptLibrary:\n\n- **idxtool.py** - GPT indexing and searching tool\n- **gen_gpt_templ.py** - Generate markdown templates for ChatGPT GPTs by downloading and parsing their metadata\n- **oneoff.py** - One-off operations on GPT files (e.g., batch reformatting)\n\n## idxtool\n\nThe `idxtool` script is a Custom GPT indexing and searching tool used in TheBigPromptLibrary.\n\n### Command line\n\n```\nusage: idxtool.py [-h] [--toc [TOC]] [--find-gpt FIND_GPT] \n                  [--template TEMPLATE] [--parse-gptfile PARSE_GPTFILE] \n\t\t  [--rename]\n\nidxtool: A GPT indexing and searching tool for the CSP repo\n\noptions:\n  -h, --help            show this help message and exit\n  --toc [TOC]           Rebuild the table of contents of GPT custom instructions\n  --find-gpt FIND_GPT   Find a GPT file by its ID or full ChatGPT URL\n  --template TEMPLATE   Creates an empty GPT template file from a ChatGPT URL\n  --parse-gptfile PARSE_GPTFILE\n                        Parses a GPT file name\n  --rename              Rename the GPT file names to include their GPT ID\n```\n\n### Features\n\n- Rebuild TOC: Use `--toc` to rebuild the table of contents for GPT custom instructions.\n- Find GPT File: Use `--find-gpt [GPTID or Full ChatGPT URL or a response file with IDs/URLs]` to find a GPT by its ID or URL.\n- Rename GPT: Use `--rename` to rename all the GPTs to include their GPTID as prefix.\n- Create a starter template GPT file: Use `--template [Full ChatGPT URL]` to create a starter template GPT file.\n- Help: Use `--help` to display the help message and usage instructions.\n\n### Example\n\nTo rebuild the custom GPTs files, run:\n\n```bash\npython idxtool.py --toc\n```\n\nTo find a GPT by its ID, run:\n\n```bash\npython idxtool.py --find-gpt 3rtbLUIUO\n```\n\nor by URL:\n  \n```bash\npython idxtool.py --find-gpt https://chat.openai.com/g/g-svehnI9xP-retro-adventures\n```\n\nAdditionally, you can have a file with a list of IDs or URLs and pass it to the `--find-gpt` option:\n\n```bash\npython idxtool.py --find-gpt @gptids.txt\n```\n\n(note the '@' symbol).\n\nThe `gptids.txt` file contains a list of IDs or URLs, one per line:\n\n```text\n3rtbLUIUO\nhttps://chat.openai.com/g/g-svehnI9xP-retro-adventures\n#vYzt7bvAm\nw2yOasK1r\nwaDWNw2J3\n```\n\n## gen_gpt_templ\n\nThe `gen_gpt_templ` script generates markdown templates for ChatGPT GPTs by downloading and parsing their metadata from the ChatGPT website.\n\n### Command line\n\n```bash\nusage: gen_gpt_templ.py [-h] [--debug] [--dump] [input]\n\nGenerate markdown template for ChatGPT GPTs\n\npositional arguments:\n  input       GPT URL, GPT ID, g-prefixed GPT ID, or @response_file\n\noptions:\n  -h, --help  show this help message and exit\n  --debug     Save debug files (HTML and dump)\n  --dump      Save parsed names and values to .txt file\n```\n\n### Features\n\n- Downloads GPT metadata from ChatGPT URLs\n- Parses GPT information including title, description, author, and profile picture\n- Generates markdown templates with GPT metadata\n- Supports multiple input formats:\n  - Full ChatGPT URL: `https://chatgpt.com/g/g-VgbIr9TQQ-ida-pro-c-sdk-and-decompiler`\n  - Conversation URL: `https://chatgpt.com/g/g-m5lMeGifF-sql-expert-querygpt/c/682cd38c-ca8c-800d-b6e2-33b8ba763824`\n  - GPT ID: `VgbIr9TQQ`\n  - Prefixed GPT ID: `g-VgbIr9TQQ`\n  - Response file: `@gptids.txt` (processes multiple GPTs from a file)\n\n### Examples\n\nGenerate template for a single GPT:\n\n```bash\npython gen_gpt_templ.py https://chatgpt.com/g/g-VgbIr9TQQ-ida-pro-c-sdk-and-decompiler\n```\n\nProcess multiple GPTs from a file:\n\n```bash\npython gen_gpt_templ.py @gptids.txt\n```\n\nGenerate template with debug output:\n\n```bash\npython gen_gpt_templ.py g-VgbIr9TQQ --debug --dump\n```\n\n## Differences between idxtool and gen_gpt_templ\n\n### idxtool --template\n- Uses gen_gpt_templ internally to download actual GPT metadata from ChatGPT\n- Creates templates with real GPT information (title, description, author, logo)\n- Generates properly named files (`{gpt_id}.md`) without RENAMEME suffix\n- Simpler interface for basic template generation within the idxtool workflow\n\n### gen_gpt_templ\n- Full-featured standalone tool with additional capabilities:\n  - `--dump` flag to save all parsed metadata to .txt file\n  - `--debug` flag to save HTML and debug information\n  - Batch processing with @response_file for multiple GPTs\n  - More detailed console output showing download and parsing progress\n  - Can be used as a module by other tools (like idxtool)\n\nUse `idxtool --template` when you need a quick template as part of your GPT file management workflow. Use `gen_gpt_templ` directly when you need the advanced features like metadata dumping or batch processing.\n\n## oneoff\n\nThe `oneoff` script performs one-off operations on GPT files, primarily batch processing tasks.\n\n### Features\n\n- **Reformat GPT files**: Reformats all GPT markdown files in a source directory and saves them to a destination directory\n- Validates GPT file structure during processing\n- Preserves GPT metadata (ID, name) during reformatting\n\n### Usage\n\nThe script is designed for batch operations. Currently supports:\n\n1. **Batch reformatting**: Process all `.md` files in a source directory, reformat them according to the standard GPT markdown structure, and save to a destination directory.\n\nExample usage in code:\n\n```python\nfrom oneoff import reformat_gpt_files\n\nsuccess, message = reformat_gpt_files(\"source_gpts/\", \"formatted_gpts/\")\nprint(message)\n```\n\n## License\n\nThis tool is open-sourced under the GNU General Public License (GPL). Under this license, you are free to use, modify, and redistribute this software, provided that all copies and derivative works are also licensed under the GPL.\n\nFor more details, see the [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html).\n\n<!-- File: Tools/README.md (Tokens: ~133 | Category: plugin-manifest) -->\n# TheBigPromptLibrary Tools\n\nThis directory contains various tools and utilities for working with ChatGPT's custom GPTs.\n\n## Available Tools\n\n- A [collection of scripts](./openai_gpts/README.md) for managing and working with ChatGPT Custom GPTs\n\n## License\n\nThese tools are open-sourced under the GNU General Public License (GPL). Under this license, you are free to use, modify, and redistribute this software, provided that all copies and derivative works are also licensed under the GPL.\n\nFor more details, see the [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html).\n</yakaai_skills>"}