email-drafting
Draft email replies for Gonto's Gmail accounts (m@gon.to, gonto@hypergrowthpartners.com). Handles intro acceptances, scheduling intent, thanks/ack, and positive short replies. Use when user asks to draft or reply to an email, or when Gmail webhook triggers arrive for auto-draft classification. Draft-only mode — never sends automatically.
Allowed Tools
No tools specified
Provided by Plugin
executive-assistant-skills
AI-powered executive assistant skills that fully replace a human EA. Research meeting attendees, draft emails, create meeting briefs, and manage action items.
Installation
This skill is included in the executive-assistant-skills plugin:
/plugin install executive-assistant-skills@claude-code-plugins-plus
Click to copy
Instructions
Email Drafting Skill
Config — read before starting
Read ../config/user.json (resolves to ~/executive-assistant-skills/config/user.json).
Extract and use throughout:
primaryemail,workemail— Gmail accountsscheduling_cc— scheduling assistant email (CC on all scheduling emails, mention in body)schedulingsilentcc— silent CC for scheduling visibility (do NOT mention in email body)signature— sign-off for all drafts (e.g. "--gonto")name— short name for context
Do not proceed until you have these values.
Debug Logging (MANDATORY)
Read ../config/DEBUGLOGGING.md for the full convention. Use python3 {user.workspace}/scripts/skilllog.py email-drafting at every key step. Log BEFORE and AFTER every external call (gog gmail, mcporter, todoist-cli). On any error, log the full command and stderr before continuing.
Overview
Auto-draft and manually-requested email drafts for {user.primaryemail} and {user.workemail}.
When to Use
- Gmail hook detects a trigger (intro, scheduling, thanks/ack, positive reply)
- User asks to draft/reply/send an email
- Action items cron identifies email follow-ups needed
Architecture
- Detects triggers and creates Gmail drafts
- Handles all scheduling (slot-finding, conflict checking, calendar ops)
- NEVER proposes specific dates/times or creates calendar events
Execution
- "Reply" always means Reply All — include all original To + CC recipients. Only exclude if user explicitly says to reply to one person. Exception: intro handling moves the introducer to BCC per the intro sequence below.
- After sending any email/draft, check if it fulfills an open Todoist task (send deck, intro, follow-up, etc.). If yes → complete the task immediately and confirm.
- Hook/cron triggers: Always run via isolated sub-agent (prevents memory/context contamination)
- Direct user requests ("draft a reply to X"): Main agent may execute directly, but must still follow all style rules and must NOT read MEMORY.md or daily memory files
Rules (non-negotiable)
Core
- Draft-only mode — never send automatically
- Mirror inbound language — match the language of the most recent non-automated message in the thread. If the thread has mixed languages, default to the language of the message you're replying to.
- Always sign — end every draft with
{user.signature} - Low confidence — don't draft; ask user for guidance
- No dash punctuation — no em-dash/en-dash in bodies. Use commas/periods.
- Humanize — before finalizing any draft, review it against
~/executive-assistant-skills/humanizer/SKILL.md. Remove AI-writing markers: inflated symbolism, promotional tone, em-dash overuse, "delve"/"leverage"/"foster" vocabulary, rule-of-three patterns. Email-specific rules (no dashes, signature, brevity) take precedence over humanizer suggestions if they conflict.
Intro Handling (required sequence)
- Thank introducer first
- Move introducer to BCC
- Reply to introduced contact directly
- CC
{user.schedulingcc}and{user.schedulingsilent_cc}for scheduling - Include one line like: "Connecting {user.schedulingccname} to find a time."
- Do NOT mention
{user.schedulingsilentcc}in the email body — silent CC only
Scheduling Drafts
- ALWAYS CC {user.schedulingcc} AND {user.schedulingsilent_cc}
- NEVER propose specific dates or times
- Just confirm willingness to meet + mention scheduling assistant will coordinate
- Example: "Connecting Alfred to find a time that works"
- Do NOT mention {user.schedulingsilentcc} in the email body — she's CC'd silently for visibility
Allowed Auto-Draft Classes
- Thanks/ack
- Scheduling intent
- Positive short replies
- Intro acceptance
Notification Format
account + one-line intent + draft link- Example:
📧 Draft ({user.primary_email} → John): intro acceptance. https://mail.google.com/...
Draft Links
After creating a draft via gog, extract the draft ID from the response.
Gmail draft URL format: https://mail.google.com/mail/u/?authuser={accountemail}#drafts?compose={messageid}
Use authuser=m@gon.to or authuser=gonto@hypergrowthpartners.com as appropriate.
Trigger Detection
A) Intro
- Cues:
intro,introduction,meet,connecting you,looping in,cc'ing - At least 2 external participants + clear handoff language
- Apply intro sequence exactly
B) Scheduling Intent
- Cues:
find a time,schedule,availability,next week,calendar - Spanish cues:
agendar,agenda una,tenés unos minutos - CC scheduling contacts, don't propose times
C) Thanks/Ack
- Cues:
thanks,got it,appreciate it, status updates - Short acknowledgment + optional one-line next step
D) Positive Short Reply
- Cues:
works for me,sounds good,perfect,great - Short affirmative + close
Skip Conditions (do NOT auto-draft)
- Confidence low / intent ambiguous
- User already replied in the thread (SENT message exists)
- Legal, financial, security, hiring-final, sensitive conflict topics
- Multi-question strategic asks
- Automated/system/calendar notifications
- Messages requiring attachments, deep verification, or policy commitments
- Language unclear or unmirrorable
- Scheduling confirmations — NEVER auto-draft emails that simply confirm a scheduled time or acknowledge a calendar invite. The scheduling assistant (Alfred/Howie) handles all scheduling coordination. Auto-drafting "confirming our call at X" creates noise and duplicates the scheduler's work. This includes: confirming times proposed by the scheduler, acknowledging calendar invites, and "looking forward to our call" type replies to scheduling threads.
Confidence Gate
Only auto-draft when ALL are true:
- Trigger class is one of the 4 allowed
- Language confidently detected and mirrorable
- Clear recipient intent and next step
- No skip condition present
Otherwise: ask user.
Drafting Principles
- Keep it SHORT — drafts are always brief. 2-3 short paragraphs max.
- No over-explaining — state the point, don't elaborate unless necessary
- When promising intros: before drafting the intro, search sent emails for previous intros to that person/company, copy the format and tone, and use the same email address
- When recommending a person/company: use your own words from past emails about them rather than inventing new descriptions
- Deck/one-pager: say "Hypergrowth Partners deck" (not "our one-pager" or "our deck"). When attaching, frame WHY it's useful (e.g. "where we explain what Hypergrowth is and how we help companies")
- Future availability: frame as an opportunity, not a brush-off. Position it warmly: "I'd love to reconnect then to explore working together if the timing still makes sense" rather than blunt "let's connect closer to June"
- Offers of help should use meeting context: read Granola notes from the call and reference specific things discussed. The draft should feel like it came from someone who was in the meeting.
- No generic "Great meeting today" unless it's explicitly a first meeting (first VC call or first dealflow call).
- Proposal-first rule: if the commitment is to build/provide a proposal first, do not draft outbound email yet; create TODO only.
Use Grain as primary source for meeting-based drafts
When drafting follow-up emails from meetings, Grain transcript is the primary source (not Granola):
- Find the meeting in Grain:
mcporter call grain.listattendedmeetings --args '{"limit": 5}' - Fetch transcript:
mcporter call grain.fetchmeetingtranscript --args '{"meeting_id": ""}' - Search transcript for email commitments: "I'll send", "I'll email", "I'll share", "let me intro", "I'll follow up", "I'll connect you", etc.
- Draft from the transcript — use your actual words and the real conversation context, not Granola's summary.
- Fall back to Granola only if Grain has no recording for that meeting.
Style
Read {user.workspace}/style/EMAIL_STYLE.md for the full writing style guide (derived from 200+ real sent emails).
Read {user.workspace}/style/FEEDBACK_LOG.md for user corrections — latest overrides win.
Key points:
- Friendly, concise, action-oriented. Warm but not fluffy.
- 1–4 short paragraphs, ~6–7 word sentences
- Context-first openings, straight to point
- Common opens: "Hey
,", "Thanks…", "Perfect…", "Great…" - Sign off:
{user.signature} - No dash punctuation (no em-dash/en-dash)
- Do: be brief, clear, warm, decisive, include draft link in notification
- Don't: over-explain, corporate fluff, long formal prose
Templates
- Primary:
{user.workspace}/style/EMAIL_TEMPLATES.md— pattern templates (intros, follow-ups, VC, etc.) - Legacy (HGP v1):
{user.workspace}/style/email-templates.md— HGP business templates. Use only for HGP-specific business contexts. Primary templates take precedence on conflicts.
Audit Logging (MANDATORY)
After every external action, log it:
- Draft created:
python3 {user.workspace}/scripts/auditlog.py log emaildrafted "" success '{"account": " ", "subject": " ", "type": " "}' - Email sent:
python3 {user.workspace}/scripts/auditlog.py log emailsent "" success '{"account": " ", "subject": " "}' - Draft skipped (low confidence):
python3 {user.workspace}/scripts/auditlog.py log emaildraft_skipped "" skipped '{"reason": " "}'
Auto-Draft Constraints
- NEVER create calendar events — only the scheduling assistant handles that
- Only create email drafts
- Include
--toexplicitly when creating drafts
Auto-Draft WhatsApp Notification (MANDATORY)
Every time a draft is created automatically (via Gmail hook or any automated trigger), you MUST send a WhatsApp notification to {user.whatsapp} with:
✏️ *Auto-draft created*
*To:* <recipient name> (<email>)
*Subject:* <subject>
*Account:* <account>
*Trigger:* <intro/scheduling/thanks/positive reply>
*Draft text:*
> <full draft body — include the complete text so user can review without opening Gmail>
🔗 <Gmail draft link>
Reply "send" to send, or edit in Gmail.
This is non-optional. The user must be able to read and approve the draft from WhatsApp without opening Gmail.
Notification Policy
- No routine "no change" notifications
- Alert on: meaningful changes, breakages, time-sensitive items, auto-drafted emails
- Time-sensitive: approvals, meeting changes, 2FA codes, security, travel changes
- Evaluate Promotions, suppress Spam/Junk/Trash