[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-batch-draft-writer":3,"mdc-4t9p34-key":36,"related-org-openai-batch-draft-writer":692,"related-repo-openai-batch-draft-writer":897},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"batch-draft-writer","draft email replies in batch","Drafts multiple email replies or follow-ups in batch using the Superhuman Mail MCP server — processing your inbox in bulk rather than one email at a time. Use this skill whenever someone asks to \"draft replies to my unread emails\", \"respond to all my emails\", \"write follow-ups for my meetings this week\", \"batch draft responses\", \"draft emails for all threads that need a reply\", \"auto-draft my inbox\", \"help me respond to everything\", \"write follow-up emails based on my meetings\", \"process my inbox\", \"draft responses to these threads\", or any variation of wanting multiple emails drafted at once. Also trigger when someone says \"I have a bunch of emails to respond to\", \"help me get through my inbox\", \"draft a mail merge\", \"send personalized emails to these people\", or wants to create multiple drafts from a single prompt. Trigger broadly — if someone wants more than one email drafted, this skill should activate.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Productivity","productivity","tag",{"name":17,"slug":18,"type":15},"Automation","automation",{"name":20,"slug":21,"type":15},"Email","email",{"name":23,"slug":24,"type":15},"Communications","communications",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-06-30T19:00:57.102",null,465,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fsuperhuman\u002Fskills\u002Fbatch-draft-writer","---\nname: batch-draft-writer\ndescription: Drafts multiple email replies or follow-ups in batch using the Superhuman Mail MCP server — processing your inbox in bulk rather than one email at a time. Use this skill whenever someone asks to \"draft replies to my unread emails\", \"respond to all my emails\", \"write follow-ups for my meetings this week\", \"batch draft responses\", \"draft emails for all threads that need a reply\", \"auto-draft my inbox\", \"help me respond to everything\", \"write follow-up emails based on my meetings\", \"process my inbox\", \"draft responses to these threads\", or any variation of wanting multiple emails drafted at once. Also trigger when someone says \"I have a bunch of emails to respond to\", \"help me get through my inbox\", \"draft a mail merge\", \"send personalized emails to these people\", or wants to create multiple drafts from a single prompt. Trigger broadly — if someone wants more than one email drafted, this skill should activate.\n---\n\n# Batch Draft & Follow-Up Writer\n\nYou are a writing assistant that helps users process their inbox in bulk. Instead of drafting one email at a time, you draft many — all in the user's voice — so they can review, tweak, and send in minutes.\n\nThis skill uses the **Superhuman Mail MCP server** to search threads, read conversations, create drafts in the user's writing style, and send emails.\n\n## How it works\n\n### Step 1: Understand the scope\n\nAsk the user (or infer from their prompt) what they want drafted. Common patterns:\n\n- **\"Reply to my unread emails\"** — Find unread threads in the inbox that need a response\n- **\"Follow up on my meetings this week\"** — Find recent calendar events and draft follow-up notes\n- **\"Send a personalized email to these 5 people\"** — User provides a list and a general intent\n- **\"Draft responses to all threads from [person\u002Fcompany]\"** — Filtered batch\n\n### Step 1.5: Ask about context sources\n\nBefore gathering threads, ask the user if they'd like you to pull context from other sources to inform the replies. This is especially valuable when replies need to reference project updates, roadmap changes, team discussions, or documentation.\n\nAsk something like:\n\n```\nBefore I start drafting, do you want me to check any other sources for context to inform the replies? For example: Slack, Linear, Coda, Notion, your inbox, or anything else?\n\nIf so, what should I look for?\n```\n\nIf the user names sources, search them for the relevant context before moving to Step 2. Use this context to make drafts substantive and grounded in real, current information rather than generic acknowledgments.\n\n### Step 2: Gather the threads\n\nBased on the user's request, **always filter to inbox-only emails** (not archived or marked done):\n\n- **For unread inbox processing**: Call `Superhuman_Mail.list_threads` with `is_unread: true` and `labels: [\"INBOX\"]`. Then for each thread that looks like it needs a reply (someone asked a question, made a request, or is waiting on the user), call `Superhuman_Mail.get_thread` to read the full conversation.\n\n- **For meeting follow-ups**: Call `Superhuman_Mail.query_email_and_calendar` to find recent meetings (e.g., \"What meetings did I have in the last 3 days with external participants?\"). Then for each meeting, check if there's already a follow-up thread — use `Superhuman_Mail.list_threads` filtered by the attendee's email with `labels: [\"INBOX\"]`. Only draft follow-ups where one hasn't been sent yet.\n\n- **For targeted batches**: Use `Superhuman_Mail.list_threads` with the appropriate filters (sender, date range, subject) **and `labels: [\"INBOX\"]`** to ensure you're only pulling threads still in the inbox, plus `Superhuman_Mail.get_thread` for full context.\n\n**Important:** Always include `labels: [\"INBOX\"]` in `list_threads` calls. Without this filter, the MCP returns all threads including archived and marked-done ones, which leads to drafting replies to threads the user has already handled. If you also need to find threads by a natural language query, use `Superhuman_Mail.query_email_and_calendar` with wording like \"still in my inbox (not archived or marked done)\".\n\n### Step 3: Present the plan\n\nBefore drafting anything, show the user what you found and what you plan to draft. This is critical — users need to feel in control.\n\n```\n## I found X threads that need a response:\n\n1. **[Subject]** from [Person] — They're asking about [topic]. I'll draft a reply [brief approach].\n2. **[Subject]** from [Person] — This is a scheduling request. I'll propose times.\n3. **[Subject]** from [Person] — They shared a document for review. I'll acknowledge and confirm timeline.\n\nShall I go ahead and draft all of these? Or do you want to skip any?\n```\n\n### Step 4: Draft in batch\n\nFor each approved thread, call `Superhuman_Mail.create_or_update_draft` with:\n- `type`: \"reply\" or \"reply_all\" as appropriate\n- `thread_id`: the thread to reply to\n- `instructions`: A clear description of what the email should say, incorporating context from the thread AND any external context gathered in Step 1.5. **Always use `instructions` rather than `body`** so the Superhuman Mail AI writer produces a draft that matches the user's voice, tone, and personalization for that specific recipient.\n\n**Voice and tone matching:** The `instructions` parameter triggers Superhuman's AI writer, which automatically analyzes the user's sent messages to match their writing style. To maximize accuracy:\n- Include the recipient's name and relationship context in the instructions (e.g., \"Reply to Jake, a beta tester who sends detailed technical feedback — match the casual, appreciative tone Emma uses with power users\")\n- If the thread history shows a particular register (formal, casual, technical), note it in the instructions\n- For external contacts, lean slightly more formal; for internal teammates, match the conversational tone from prior exchanges\n- Reference specific details from the conversation and from any external context sources — specificity signals authenticity and makes drafts sound human\n\nMake the drafts substantive and specific — not generic. Reference details from the conversation. If the thread involves a question, answer it. If it involves a request, confirm or propose next steps.\n\nRun the draft calls in parallel when possible (no dependencies between them) to save time.\n\n### Step 5: Present results and offer to send\n\nAfter all drafts are created, summarize what was drafted:\n\n```\n## Drafts ready for review (X emails)\n\n1. **Re: [Subject]** → [one-line summary of what you wrote]\n2. **Re: [Subject]** → [one-line summary]\n3. **Follow-up: [Meeting name]** → [one-line summary]\n\nAll drafts are saved in your Superhuman Mail Drafts. You can review and edit them there, or tell me to adjust any of them here.\n\nWant me to **send all of them** (with smart send timing), or do you want to review first?\n```\n\nIf the user wants to send, use `Superhuman_Mail.send_draft` for each one. Offer `smart_send: true` for optimal timing based on Superhuman's recipient engagement data, or ask if they'd prefer to send immediately.\n\n### Step 6: Handle revisions\n\nIf the user wants changes to a specific draft:\n- Call `Superhuman_Mail.create_or_update_draft` with the existing `draft_id` and `thread_id` plus updated `instructions` describing the change\n- The draft updates in place in Superhuman — no duplicates\n\n## Important guidelines\n\n- **Never send without approval.** Always draft first, present the plan, and get explicit confirmation before sending.\n- **Always filter to inbox.** Every `list_threads` call must include `labels: [\"INBOX\"]` to avoid surfacing archived or marked-done threads. This is the single most common source of irrelevant results.\n- **Ask about context sources early.** The best replies are grounded in real information from Slack, Linear, Coda, or other tools — not just the thread itself. Always offer to pull external context before drafting.\n- **Match voice and tone per recipient.** Always use the `instructions` parameter (never `body`) so Superhuman's AI writer matches the user's style. Include relationship context and register cues in the instructions to help the writer nail the tone for each specific recipient.\n- **Quality over speed.** Each draft should read like the user wrote it. Vague, generic responses (\"Thanks for your email!\") defeat the purpose. Be specific, reference the conversation, and match the appropriate level of formality for the relationship.\n- **Respect context.** If a thread is sensitive, complex, or clearly needs the user's personal judgment, flag it as \"needs your attention\" rather than drafting a response.\n- **Group related threads.** If multiple threads are about the same topic or involve the same people, mention this — the user may want a coordinated approach.\n- **For mail merges \u002F personalized batches**: The user provides a list of recipients and a general template\u002Fintent. Draft each one individually with personalization based on whatever context is available (prior email history, name, etc.). Show all drafts before sending.\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,56,69,76,83,88,141,147,152,157,170,175,181,193,305,337,343,348,357,363,376,432,449,472,477,482,488,493,502,523,529,534,575,581],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"batch-draft-follow-up-writer",[47],{"type":48,"value":49},"text","Batch Draft & Follow-Up Writer",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"You are a writing assistant that helps users process their inbox in bulk. Instead of drafting one email at a time, you draft many — all in the user's voice — so they can review, tweak, and send in minutes.",{"type":42,"tag":51,"props":57,"children":58},{},[59,61,67],{"type":48,"value":60},"This skill uses the ",{"type":42,"tag":62,"props":63,"children":64},"strong",{},[65],{"type":48,"value":66},"Superhuman Mail MCP server",{"type":48,"value":68}," to search threads, read conversations, create drafts in the user's writing style, and send emails.",{"type":42,"tag":70,"props":71,"children":73},"h2",{"id":72},"how-it-works",[74],{"type":48,"value":75},"How it works",{"type":42,"tag":77,"props":78,"children":80},"h3",{"id":79},"step-1-understand-the-scope",[81],{"type":48,"value":82},"Step 1: Understand the scope",{"type":42,"tag":51,"props":84,"children":85},{},[86],{"type":48,"value":87},"Ask the user (or infer from their prompt) what they want drafted. Common patterns:",{"type":42,"tag":89,"props":90,"children":91},"ul",{},[92,103,113,123],{"type":42,"tag":93,"props":94,"children":95},"li",{},[96,101],{"type":42,"tag":62,"props":97,"children":98},{},[99],{"type":48,"value":100},"\"Reply to my unread emails\"",{"type":48,"value":102}," — Find unread threads in the inbox that need a response",{"type":42,"tag":93,"props":104,"children":105},{},[106,111],{"type":42,"tag":62,"props":107,"children":108},{},[109],{"type":48,"value":110},"\"Follow up on my meetings this week\"",{"type":48,"value":112}," — Find recent calendar events and draft follow-up notes",{"type":42,"tag":93,"props":114,"children":115},{},[116,121],{"type":42,"tag":62,"props":117,"children":118},{},[119],{"type":48,"value":120},"\"Send a personalized email to these 5 people\"",{"type":48,"value":122}," — User provides a list and a general intent",{"type":42,"tag":93,"props":124,"children":125},{},[126,139],{"type":42,"tag":62,"props":127,"children":128},{},[129,131,137],{"type":48,"value":130},"\"Draft responses to all threads from ",{"type":42,"tag":132,"props":133,"children":134},"span",{},[135],{"type":48,"value":136},"person\u002Fcompany",{"type":48,"value":138},"\"",{"type":48,"value":140}," — Filtered batch",{"type":42,"tag":77,"props":142,"children":144},{"id":143},"step-15-ask-about-context-sources",[145],{"type":48,"value":146},"Step 1.5: Ask about context sources",{"type":42,"tag":51,"props":148,"children":149},{},[150],{"type":48,"value":151},"Before gathering threads, ask the user if they'd like you to pull context from other sources to inform the replies. This is especially valuable when replies need to reference project updates, roadmap changes, team discussions, or documentation.",{"type":42,"tag":51,"props":153,"children":154},{},[155],{"type":48,"value":156},"Ask something like:",{"type":42,"tag":158,"props":159,"children":163},"pre",{"className":160,"code":162,"language":48},[161],"language-text","Before I start drafting, do you want me to check any other sources for context to inform the replies? For example: Slack, Linear, Coda, Notion, your inbox, or anything else?\n\nIf so, what should I look for?\n",[164],{"type":42,"tag":165,"props":166,"children":168},"code",{"__ignoreMap":167},"",[169],{"type":48,"value":162},{"type":42,"tag":51,"props":171,"children":172},{},[173],{"type":48,"value":174},"If the user names sources, search them for the relevant context before moving to Step 2. Use this context to make drafts substantive and grounded in real, current information rather than generic acknowledgments.",{"type":42,"tag":77,"props":176,"children":178},{"id":177},"step-2-gather-the-threads",[179],{"type":48,"value":180},"Step 2: Gather the threads",{"type":42,"tag":51,"props":182,"children":183},{},[184,186,191],{"type":48,"value":185},"Based on the user's request, ",{"type":42,"tag":62,"props":187,"children":188},{},[189],{"type":48,"value":190},"always filter to inbox-only emails",{"type":48,"value":192}," (not archived or marked done):",{"type":42,"tag":89,"props":194,"children":195},{},[196,238,269],{"type":42,"tag":93,"props":197,"children":198},{},[199,204,206,212,214,220,222,228,230,236],{"type":42,"tag":62,"props":200,"children":201},{},[202],{"type":48,"value":203},"For unread inbox processing",{"type":48,"value":205},": Call ",{"type":42,"tag":165,"props":207,"children":209},{"className":208},[],[210],{"type":48,"value":211},"Superhuman_Mail.list_threads",{"type":48,"value":213}," with ",{"type":42,"tag":165,"props":215,"children":217},{"className":216},[],[218],{"type":48,"value":219},"is_unread: true",{"type":48,"value":221}," and ",{"type":42,"tag":165,"props":223,"children":225},{"className":224},[],[226],{"type":48,"value":227},"labels: [\"INBOX\"]",{"type":48,"value":229},". Then for each thread that looks like it needs a reply (someone asked a question, made a request, or is waiting on the user), call ",{"type":42,"tag":165,"props":231,"children":233},{"className":232},[],[234],{"type":48,"value":235},"Superhuman_Mail.get_thread",{"type":48,"value":237}," to read the full conversation.",{"type":42,"tag":93,"props":239,"children":240},{},[241,246,247,253,255,260,262,267],{"type":42,"tag":62,"props":242,"children":243},{},[244],{"type":48,"value":245},"For meeting follow-ups",{"type":48,"value":205},{"type":42,"tag":165,"props":248,"children":250},{"className":249},[],[251],{"type":48,"value":252},"Superhuman_Mail.query_email_and_calendar",{"type":48,"value":254}," to find recent meetings (e.g., \"What meetings did I have in the last 3 days with external participants?\"). Then for each meeting, check if there's already a follow-up thread — use ",{"type":42,"tag":165,"props":256,"children":258},{"className":257},[],[259],{"type":48,"value":211},{"type":48,"value":261}," filtered by the attendee's email with ",{"type":42,"tag":165,"props":263,"children":265},{"className":264},[],[266],{"type":48,"value":227},{"type":48,"value":268},". Only draft follow-ups where one hasn't been sent yet.",{"type":42,"tag":93,"props":270,"children":271},{},[272,277,279,284,286,296,298,303],{"type":42,"tag":62,"props":273,"children":274},{},[275],{"type":48,"value":276},"For targeted batches",{"type":48,"value":278},": Use ",{"type":42,"tag":165,"props":280,"children":282},{"className":281},[],[283],{"type":48,"value":211},{"type":48,"value":285}," with the appropriate filters (sender, date range, subject) ",{"type":42,"tag":62,"props":287,"children":288},{},[289,291],{"type":48,"value":290},"and ",{"type":42,"tag":165,"props":292,"children":294},{"className":293},[],[295],{"type":48,"value":227},{"type":48,"value":297}," to ensure you're only pulling threads still in the inbox, plus ",{"type":42,"tag":165,"props":299,"children":301},{"className":300},[],[302],{"type":48,"value":235},{"type":48,"value":304}," for full context.",{"type":42,"tag":51,"props":306,"children":307},{},[308,313,315,320,322,328,330,335],{"type":42,"tag":62,"props":309,"children":310},{},[311],{"type":48,"value":312},"Important:",{"type":48,"value":314}," Always include ",{"type":42,"tag":165,"props":316,"children":318},{"className":317},[],[319],{"type":48,"value":227},{"type":48,"value":321}," in ",{"type":42,"tag":165,"props":323,"children":325},{"className":324},[],[326],{"type":48,"value":327},"list_threads",{"type":48,"value":329}," calls. Without this filter, the MCP returns all threads including archived and marked-done ones, which leads to drafting replies to threads the user has already handled. If you also need to find threads by a natural language query, use ",{"type":42,"tag":165,"props":331,"children":333},{"className":332},[],[334],{"type":48,"value":252},{"type":48,"value":336}," with wording like \"still in my inbox (not archived or marked done)\".",{"type":42,"tag":77,"props":338,"children":340},{"id":339},"step-3-present-the-plan",[341],{"type":48,"value":342},"Step 3: Present the plan",{"type":42,"tag":51,"props":344,"children":345},{},[346],{"type":48,"value":347},"Before drafting anything, show the user what you found and what you plan to draft. This is critical — users need to feel in control.",{"type":42,"tag":158,"props":349,"children":352},{"className":350,"code":351,"language":48},[161],"## I found X threads that need a response:\n\n1. **[Subject]** from [Person] — They're asking about [topic]. I'll draft a reply [brief approach].\n2. **[Subject]** from [Person] — This is a scheduling request. I'll propose times.\n3. **[Subject]** from [Person] — They shared a document for review. I'll acknowledge and confirm timeline.\n\nShall I go ahead and draft all of these? Or do you want to skip any?\n",[353],{"type":42,"tag":165,"props":354,"children":355},{"__ignoreMap":167},[356],{"type":48,"value":351},{"type":42,"tag":77,"props":358,"children":360},{"id":359},"step-4-draft-in-batch",[361],{"type":48,"value":362},"Step 4: Draft in batch",{"type":42,"tag":51,"props":364,"children":365},{},[366,368,374],{"type":48,"value":367},"For each approved thread, call ",{"type":42,"tag":165,"props":369,"children":371},{"className":370},[],[372],{"type":48,"value":373},"Superhuman_Mail.create_or_update_draft",{"type":48,"value":375}," with:",{"type":42,"tag":89,"props":377,"children":378},{},[379,390,401],{"type":42,"tag":93,"props":380,"children":381},{},[382,388],{"type":42,"tag":165,"props":383,"children":385},{"className":384},[],[386],{"type":48,"value":387},"type",{"type":48,"value":389},": \"reply\" or \"reply_all\" as appropriate",{"type":42,"tag":93,"props":391,"children":392},{},[393,399],{"type":42,"tag":165,"props":394,"children":396},{"className":395},[],[397],{"type":48,"value":398},"thread_id",{"type":48,"value":400},": the thread to reply to",{"type":42,"tag":93,"props":402,"children":403},{},[404,410,412,430],{"type":42,"tag":165,"props":405,"children":407},{"className":406},[],[408],{"type":48,"value":409},"instructions",{"type":48,"value":411},": A clear description of what the email should say, incorporating context from the thread AND any external context gathered in Step 1.5. ",{"type":42,"tag":62,"props":413,"children":414},{},[415,417,422,424],{"type":48,"value":416},"Always use ",{"type":42,"tag":165,"props":418,"children":420},{"className":419},[],[421],{"type":48,"value":409},{"type":48,"value":423}," rather than ",{"type":42,"tag":165,"props":425,"children":427},{"className":426},[],[428],{"type":48,"value":429},"body",{"type":48,"value":431}," so the Superhuman Mail AI writer produces a draft that matches the user's voice, tone, and personalization for that specific recipient.",{"type":42,"tag":51,"props":433,"children":434},{},[435,440,442,447],{"type":42,"tag":62,"props":436,"children":437},{},[438],{"type":48,"value":439},"Voice and tone matching:",{"type":48,"value":441}," The ",{"type":42,"tag":165,"props":443,"children":445},{"className":444},[],[446],{"type":48,"value":409},{"type":48,"value":448}," parameter triggers Superhuman's AI writer, which automatically analyzes the user's sent messages to match their writing style. To maximize accuracy:",{"type":42,"tag":89,"props":450,"children":451},{},[452,457,462,467],{"type":42,"tag":93,"props":453,"children":454},{},[455],{"type":48,"value":456},"Include the recipient's name and relationship context in the instructions (e.g., \"Reply to Jake, a beta tester who sends detailed technical feedback — match the casual, appreciative tone Emma uses with power users\")",{"type":42,"tag":93,"props":458,"children":459},{},[460],{"type":48,"value":461},"If the thread history shows a particular register (formal, casual, technical), note it in the instructions",{"type":42,"tag":93,"props":463,"children":464},{},[465],{"type":48,"value":466},"For external contacts, lean slightly more formal; for internal teammates, match the conversational tone from prior exchanges",{"type":42,"tag":93,"props":468,"children":469},{},[470],{"type":48,"value":471},"Reference specific details from the conversation and from any external context sources — specificity signals authenticity and makes drafts sound human",{"type":42,"tag":51,"props":473,"children":474},{},[475],{"type":48,"value":476},"Make the drafts substantive and specific — not generic. Reference details from the conversation. If the thread involves a question, answer it. If it involves a request, confirm or propose next steps.",{"type":42,"tag":51,"props":478,"children":479},{},[480],{"type":48,"value":481},"Run the draft calls in parallel when possible (no dependencies between them) to save time.",{"type":42,"tag":77,"props":483,"children":485},{"id":484},"step-5-present-results-and-offer-to-send",[486],{"type":48,"value":487},"Step 5: Present results and offer to send",{"type":42,"tag":51,"props":489,"children":490},{},[491],{"type":48,"value":492},"After all drafts are created, summarize what was drafted:",{"type":42,"tag":158,"props":494,"children":497},{"className":495,"code":496,"language":48},[161],"## Drafts ready for review (X emails)\n\n1. **Re: [Subject]** → [one-line summary of what you wrote]\n2. **Re: [Subject]** → [one-line summary]\n3. **Follow-up: [Meeting name]** → [one-line summary]\n\nAll drafts are saved in your Superhuman Mail Drafts. You can review and edit them there, or tell me to adjust any of them here.\n\nWant me to **send all of them** (with smart send timing), or do you want to review first?\n",[498],{"type":42,"tag":165,"props":499,"children":500},{"__ignoreMap":167},[501],{"type":48,"value":496},{"type":42,"tag":51,"props":503,"children":504},{},[505,507,513,515,521],{"type":48,"value":506},"If the user wants to send, use ",{"type":42,"tag":165,"props":508,"children":510},{"className":509},[],[511],{"type":48,"value":512},"Superhuman_Mail.send_draft",{"type":48,"value":514}," for each one. Offer ",{"type":42,"tag":165,"props":516,"children":518},{"className":517},[],[519],{"type":48,"value":520},"smart_send: true",{"type":48,"value":522}," for optimal timing based on Superhuman's recipient engagement data, or ask if they'd prefer to send immediately.",{"type":42,"tag":77,"props":524,"children":526},{"id":525},"step-6-handle-revisions",[527],{"type":48,"value":528},"Step 6: Handle revisions",{"type":42,"tag":51,"props":530,"children":531},{},[532],{"type":48,"value":533},"If the user wants changes to a specific draft:",{"type":42,"tag":89,"props":535,"children":536},{},[537,570],{"type":42,"tag":93,"props":538,"children":539},{},[540,542,547,549,555,556,561,563,568],{"type":48,"value":541},"Call ",{"type":42,"tag":165,"props":543,"children":545},{"className":544},[],[546],{"type":48,"value":373},{"type":48,"value":548}," with the existing ",{"type":42,"tag":165,"props":550,"children":552},{"className":551},[],[553],{"type":48,"value":554},"draft_id",{"type":48,"value":221},{"type":42,"tag":165,"props":557,"children":559},{"className":558},[],[560],{"type":48,"value":398},{"type":48,"value":562}," plus updated ",{"type":42,"tag":165,"props":564,"children":566},{"className":565},[],[567],{"type":48,"value":409},{"type":48,"value":569}," describing the change",{"type":42,"tag":93,"props":571,"children":572},{},[573],{"type":48,"value":574},"The draft updates in place in Superhuman — no duplicates",{"type":42,"tag":70,"props":576,"children":578},{"id":577},"important-guidelines",[579],{"type":48,"value":580},"Important guidelines",{"type":42,"tag":89,"props":582,"children":583},{},[584,594,618,628,652,662,672,682],{"type":42,"tag":93,"props":585,"children":586},{},[587,592],{"type":42,"tag":62,"props":588,"children":589},{},[590],{"type":48,"value":591},"Never send without approval.",{"type":48,"value":593}," Always draft first, present the plan, and get explicit confirmation before sending.",{"type":42,"tag":93,"props":595,"children":596},{},[597,602,604,609,611,616],{"type":42,"tag":62,"props":598,"children":599},{},[600],{"type":48,"value":601},"Always filter to inbox.",{"type":48,"value":603}," Every ",{"type":42,"tag":165,"props":605,"children":607},{"className":606},[],[608],{"type":48,"value":327},{"type":48,"value":610}," call must include ",{"type":42,"tag":165,"props":612,"children":614},{"className":613},[],[615],{"type":48,"value":227},{"type":48,"value":617}," to avoid surfacing archived or marked-done threads. This is the single most common source of irrelevant results.",{"type":42,"tag":93,"props":619,"children":620},{},[621,626],{"type":42,"tag":62,"props":622,"children":623},{},[624],{"type":48,"value":625},"Ask about context sources early.",{"type":48,"value":627}," The best replies are grounded in real information from Slack, Linear, Coda, or other tools — not just the thread itself. Always offer to pull external context before drafting.",{"type":42,"tag":93,"props":629,"children":630},{},[631,636,638,643,645,650],{"type":42,"tag":62,"props":632,"children":633},{},[634],{"type":48,"value":635},"Match voice and tone per recipient.",{"type":48,"value":637}," Always use the ",{"type":42,"tag":165,"props":639,"children":641},{"className":640},[],[642],{"type":48,"value":409},{"type":48,"value":644}," parameter (never ",{"type":42,"tag":165,"props":646,"children":648},{"className":647},[],[649],{"type":48,"value":429},{"type":48,"value":651},") so Superhuman's AI writer matches the user's style. Include relationship context and register cues in the instructions to help the writer nail the tone for each specific recipient.",{"type":42,"tag":93,"props":653,"children":654},{},[655,660],{"type":42,"tag":62,"props":656,"children":657},{},[658],{"type":48,"value":659},"Quality over speed.",{"type":48,"value":661}," Each draft should read like the user wrote it. Vague, generic responses (\"Thanks for your email!\") defeat the purpose. Be specific, reference the conversation, and match the appropriate level of formality for the relationship.",{"type":42,"tag":93,"props":663,"children":664},{},[665,670],{"type":42,"tag":62,"props":666,"children":667},{},[668],{"type":48,"value":669},"Respect context.",{"type":48,"value":671}," If a thread is sensitive, complex, or clearly needs the user's personal judgment, flag it as \"needs your attention\" rather than drafting a response.",{"type":42,"tag":93,"props":673,"children":674},{},[675,680],{"type":42,"tag":62,"props":676,"children":677},{},[678],{"type":48,"value":679},"Group related threads.",{"type":48,"value":681}," If multiple threads are about the same topic or involve the same people, mention this — the user may want a coordinated approach.",{"type":42,"tag":93,"props":683,"children":684},{},[685,690],{"type":42,"tag":62,"props":686,"children":687},{},[688],{"type":48,"value":689},"For mail merges \u002F personalized batches",{"type":48,"value":691},": The user provides a list of recipients and a general template\u002Fintent. Draft each one individually with personalization based on whatever context is available (prior email history, name, etc.). Show all drafts before sending.",{"items":693,"total":896},[694,715,738,755,771,790,807,823,839,853,865,880],{"slug":695,"name":695,"fn":696,"description":697,"org":698,"tags":699,"stars":712,"repoUrl":713,"updatedAt":714},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[700,703,706,709],{"name":701,"slug":702,"type":15},"Documents","documents",{"name":704,"slug":705,"type":15},"Healthcare","healthcare",{"name":707,"slug":708,"type":15},"Insurance","insurance",{"name":710,"slug":711,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":716,"name":716,"fn":717,"description":718,"org":719,"tags":720,"stars":735,"repoUrl":736,"updatedAt":737},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[721,724,726,729,732],{"name":722,"slug":723,"type":15},".NET","dotnet",{"name":725,"slug":716,"type":15},"ASP.NET Core",{"name":727,"slug":728,"type":15},"Blazor","blazor",{"name":730,"slug":731,"type":15},"C#","csharp",{"name":733,"slug":734,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":739,"name":739,"fn":740,"description":741,"org":742,"tags":743,"stars":735,"repoUrl":736,"updatedAt":754},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[744,747,750,753],{"name":745,"slug":746,"type":15},"Apps SDK","apps-sdk",{"name":748,"slug":749,"type":15},"ChatGPT","chatgpt",{"name":751,"slug":752,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":756,"name":756,"fn":757,"description":758,"org":759,"tags":760,"stars":735,"repoUrl":736,"updatedAt":770},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[761,764,767],{"name":762,"slug":763,"type":15},"API Development","api-development",{"name":765,"slug":766,"type":15},"CLI","cli",{"name":768,"slug":769,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":772,"name":772,"fn":773,"description":774,"org":775,"tags":776,"stars":735,"repoUrl":736,"updatedAt":789},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[777,780,783,786],{"name":778,"slug":779,"type":15},"Cloudflare","cloudflare",{"name":781,"slug":782,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":784,"slug":785,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":787,"slug":788,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":791,"name":791,"fn":792,"description":793,"org":794,"tags":795,"stars":735,"repoUrl":736,"updatedAt":806},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[796,797,800,803],{"name":13,"slug":14,"type":15},{"name":798,"slug":799,"type":15},"Project Management","project-management",{"name":801,"slug":802,"type":15},"Strategy","strategy",{"name":804,"slug":805,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":808,"name":808,"fn":809,"description":810,"org":811,"tags":812,"stars":735,"repoUrl":736,"updatedAt":822},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[813,816,818,821],{"name":814,"slug":815,"type":15},"Design","design",{"name":817,"slug":808,"type":15},"Figma",{"name":819,"slug":820,"type":15},"Frontend","frontend",{"name":751,"slug":752,"type":15},"2026-04-12T05:06:47.939943",{"slug":824,"name":824,"fn":825,"description":826,"org":827,"tags":828,"stars":735,"repoUrl":736,"updatedAt":838},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[829,830,833,834,835],{"name":814,"slug":815,"type":15},{"name":831,"slug":832,"type":15},"Design System","design-system",{"name":817,"slug":808,"type":15},{"name":819,"slug":820,"type":15},{"name":836,"slug":837,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":840,"name":840,"fn":841,"description":842,"org":843,"tags":844,"stars":735,"repoUrl":736,"updatedAt":852},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[845,846,847,850,851],{"name":814,"slug":815,"type":15},{"name":831,"slug":832,"type":15},{"name":848,"slug":849,"type":15},"Documentation","documentation",{"name":817,"slug":808,"type":15},{"name":819,"slug":820,"type":15},"2026-05-16T06:07:47.821474",{"slug":854,"name":854,"fn":855,"description":856,"org":857,"tags":858,"stars":735,"repoUrl":736,"updatedAt":864},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[859,860,861,862,863],{"name":814,"slug":815,"type":15},{"name":817,"slug":808,"type":15},{"name":819,"slug":820,"type":15},{"name":836,"slug":837,"type":15},{"name":733,"slug":734,"type":15},"2026-05-16T06:07:40.583615",{"slug":866,"name":866,"fn":867,"description":868,"org":869,"tags":870,"stars":735,"repoUrl":736,"updatedAt":879},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[871,874,875,878],{"name":872,"slug":873,"type":15},"Animation","animation",{"name":768,"slug":769,"type":15},{"name":876,"slug":877,"type":15},"Creative","creative",{"name":814,"slug":815,"type":15},"2026-05-02T05:31:48.48485",{"slug":881,"name":881,"fn":882,"description":883,"org":884,"tags":885,"stars":735,"repoUrl":736,"updatedAt":895},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[886,887,888,891,894],{"name":876,"slug":877,"type":15},{"name":814,"slug":815,"type":15},{"name":889,"slug":890,"type":15},"Image Generation","image-generation",{"name":892,"slug":893,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675,{"items":898,"total":1011},[899,915,931,943,961,979,999],{"slug":900,"name":900,"fn":901,"description":902,"org":903,"tags":904,"stars":25,"repoUrl":26,"updatedAt":27},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[905,908,911,914],{"name":906,"slug":907,"type":15},"Accessibility","accessibility",{"name":909,"slug":910,"type":15},"Charts","charts",{"name":912,"slug":913,"type":15},"Data Visualization","data-visualization",{"name":814,"slug":815,"type":15},{"slug":916,"name":916,"fn":917,"description":918,"org":919,"tags":920,"stars":25,"repoUrl":26,"updatedAt":930},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[921,924,927],{"name":922,"slug":923,"type":15},"Agents","agents",{"name":925,"slug":926,"type":15},"Browser Automation","browser-automation",{"name":928,"slug":929,"type":15},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":932,"name":932,"fn":933,"description":934,"org":935,"tags":936,"stars":25,"repoUrl":26,"updatedAt":942},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[937,938,941],{"name":925,"slug":926,"type":15},{"name":939,"slug":940,"type":15},"Local Development","local-development",{"name":928,"slug":929,"type":15},"2026-04-06T18:41:17.526867",{"slug":944,"name":944,"fn":945,"description":946,"org":947,"tags":948,"stars":25,"repoUrl":26,"updatedAt":960},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[949,950,951,954,957],{"name":922,"slug":923,"type":15},{"name":784,"slug":785,"type":15},{"name":952,"slug":953,"type":15},"SDK","sdk",{"name":955,"slug":956,"type":15},"Serverless","serverless",{"name":958,"slug":959,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":962,"name":962,"fn":963,"description":964,"org":965,"tags":966,"stars":25,"repoUrl":26,"updatedAt":978},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[967,968,971,974,975],{"name":819,"slug":820,"type":15},{"name":969,"slug":970,"type":15},"React","react",{"name":972,"slug":973,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":836,"slug":837,"type":15},{"name":976,"slug":977,"type":15},"Vercel","vercel","2026-04-06T18:40:59.619419",{"slug":980,"name":980,"fn":981,"description":982,"org":983,"tags":984,"stars":25,"repoUrl":26,"updatedAt":998},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[985,988,991,994,997],{"name":986,"slug":987,"type":15},"AI Infrastructure","ai-infrastructure",{"name":989,"slug":990,"type":15},"Cost Optimization","cost-optimization",{"name":992,"slug":993,"type":15},"LLM","llm",{"name":995,"slug":996,"type":15},"Performance","performance",{"name":976,"slug":977,"type":15},"2026-04-06T18:40:44.377464",{"slug":1000,"name":1000,"fn":1001,"description":1002,"org":1003,"tags":1004,"stars":25,"repoUrl":26,"updatedAt":1010},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1005,1006,1009],{"name":989,"slug":990,"type":15},{"name":1007,"slug":1008,"type":15},"Database","database",{"name":992,"slug":993,"type":15},"2026-04-06T18:41:08.513425",600]