Draft email replies for Gonto's Gmail accounts ([email protected], [email protected]). 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.
Read ../config/user.json (resolves to ~/executive-assistant-skills/config/user.json).
Extract and use throughout:
primary_email, work_email — Gmail accountsscheduling_cc — scheduling assistant email (CC on all scheduling emails, mention in body)scheduling_silent_cc — silent CC for scheduling visibility (do NOT mention in email body)signature — sign-off for all drafts (e.g. "--gonto")name — short name for contextDo not proceed until you have these values.
Read ../config/DEBUG_LOGGING.md for the full convention. Use python3 {user.workspace}/scripts/skill_log.py email-drafting <level> "<message>" ['<details>'] 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.
Auto-draft and manually-requested email drafts for {user.primary_email} and {user.work_email}.
{user.signature}~/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.{user.scheduling_cc} and {user.scheduling_silent_cc} for scheduling{user.scheduling_silent_cc} in the email body — silent CC onlyaccount + one-line intent + draft link📧 Draft ({user.primary_email} → John): intro acceptance. https://mail.google.com/...After creating a draft via gog, extract the draft ID from the response.
Gmail draft URL format: https://mail.google.com/mail/u/?authuser={account_email}#drafts?compose={message_id}
Use [email protected] or [email protected] as appropriate.
intro, introduction, meet, connecting you, looping in, cc'ingfind a time, schedule, availability, next week, calendaragendar, agenda una, tenés unos minutosthanks, got it, appreciate it, status updatesworks for me, sounds good, perfect, greatOnly auto-draft when ALL are true:
Otherwise: ask user.
When drafting follow-up emails from meetings, Grain transcript is the primary source (not Granola):
mcporter call grain.list_attended_meetings --args '{"limit": 5}'mcporter call grain.fetch_meeting_transcript --args '{"meeting_id": "<id>"}'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:
{user.signature}{user.workspace}/style/EMAIL_TEMPLATES.md — pattern templates (intros, follow-ups, VC, etc.){user.workspace}/style/email-templates.md — HGP business templates. Use only for HGP-specific business contexts. Primary templates take precedence on conflicts.After every external action, log it:
python3 {user.workspace}/scripts/audit_log.py log email_drafted "<recipient>" success '{"account": "<account>", "subject": "<subject>", "type": "<trigger_class>"}'python3 {user.workspace}/scripts/audit_log.py log email_sent "<recipient>" success '{"account": "<account>", "subject": "<subject>"}'python3 {user.workspace}/scripts/audit_log.py log email_draft_skipped "<recipient>" skipped '{"reason": "<reason>"}'--to <sender> explicitly when creating draftsEvery 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.
gog CLI configured with both Gmail accounts (primary and work)mcporter with Grain MCP connection for meeting transcript accessskill_log.py and audit_log.py scripts{user.workspace}/style/EMAIL_STYLE.md~/executive-assistant-skills/humanizer/SKILL.mdSee the Execution, Trigger Detection, and Drafting Principles sections above for the full workflow. The skill detects trigger class (intro, scheduling, thanks/ack, positive reply), applies confidence gate, drafts via gog, and notifies via WhatsApp.
See the Skip Conditions and Confidence Gate sections above. Low-confidence triggers are not drafted. Errors in external calls (gog, mcporter) are logged via skill_log.py before continuing.
# Auto-draft trigger: intro email detected in inbox
# Output: Gmail draft with intro acceptance, introducer moved to BCC,
# scheduling assistant CC'd, WhatsApp notification with full draft text
# "Draft ([email protected] -> John): intro acceptance. [Gmail link]"