一键导入
draft-follow-up
Draft a follow-up email or Slack message for a given person or thread, using the correct account. Never sends.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Draft a follow-up email or Slack message for a given person or thread, using the correct account. Never sends.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Produce today's daily briefing across all Google Calendars, Gmail accounts, Slack workspaces, and Asana. Writes to + Atlas/Daily/YYYY-MM-DD.md and surfaces anything that needs the user's attention today. Safe to re-run — refreshes the `## Morning brief` section in place.
Scan sent messages across configured Google and Slack accounts to derive a personalized writing-style profile (email vs Slack, by audience size), then update GEMINI.md §6 in place. Run after initial bootstrap or anytime you want to refresh.
Triage + Inbox/ together with fresh items in Gmail and Slack across all accounts. Proposes classification per GEMINI.md §4 and surfaces anything needing a reply.
End-of-day (or any-time) reconciliation — compare today's plan against what actually got done, interactively check off Asana tasks, surface outstanding follow-ups, summarize for review, then update OpenBrain and Asana (mark complete, create tasks, adjust due dates). Safe to re-run — refreshes the `## Evening review` section in place.
Turn rough meeting notes or a transcript into an atomic interaction note, update linked people's last_contact + Threads, and propose follow-up tasks.
Create a new place note at + Atlas/Places/<name>.md from the Place template. Auto-seeds address + cross-links from recent calendar activity unless run in quick mode.
| name | draft-follow-up |
| description | Draft a follow-up email or Slack message for a given person or thread, using the correct account. Never sends. |
$1: person name OR gmail thread id OR slack permalink.$2 (optional): intent hint — e.g. "nudge on roadmap", "thank them for the intro", "follow up on action items from last meeting".+ Atlas/People/<name>.md. Default channel = email if emails is populated, else Slack.google_* MCP; channel = email.google_* account slug. If the person is in relationship: [work], default to the work google_* MCP (see GEMINI.md §12 for the configured work Google slug).slack: frontmatter.+ Atlas/Interactions/, the open commitments section from the person note, and the last email/Slack thread excerpt./learn-writing-style.)gmail_draft_email on the matching google_* MCP with mimeType: "multipart/alternative", body (plain-text mirror), and htmlBody (HTML body per GEMINI.md §6). For in-thread replies, set threadId and inReplyTo. Report the returned draft id.slack_drafts_create on the matching slack_* MCP with channel_id (+ optional thread_ts for thread replies). Only one draft per channel is allowed — if one already exists, call slack_drafts_edit instead. Report the returned draft.id (format Dr0B...).
channel_id must be an IM channel id (D...), not a user id. Look up an existing IM via slack_channels_list types=im (match against the user id from slack_users_search). Opening a new DM via slack_conversations_open currently fails with missing_scope on the OpenBrain Slack OAuth grant — if no existing IM channel is found, fall back to outputting the draft text inline only and note that it wasn't stored server-side.$1 resolved to a person note, append a bullet under its ## Threads section so /what-am-i-missing and future lookups can see the pending draft:
- <YYYY-MM-DD> · drafted follow-up (<channel>:<draft-id>) — <intent or one-line gist>
Do not update last_contact — a draft is not a touchpoint.chat:write scope is missing for a Slack workspace, fall back to outputting the draft text inline only, with a note that it wasn't stored server-side.