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.
El comando permanece en una sola línea. Desplázate horizontalmente para revisarlo antes de copiarlo.
¿Prefieres una copia local? Descarga los archivos que SkillsMP tiene disponibles ahora.
Mostrando SKILL.md
SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
email-drafting
description
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.
version
1.8.0
license
MIT
author
Martin Gontovnikas <martin@hypergrowthpartners.com>
Read ../config/user.json (resolves to ~/executive-assistant-skills/config/user.json).
Extract and use throughout:
primary_email, work_email — Gmail accounts
scheduling_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 context
Do not proceed until you have these values.
Debug Logging (MANDATORY)
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.
Overview
Auto-draft and manually-requested email drafts for {user.primary_email} and {user.work_email}.
When to Use
Gmail hook detects a trigger (intro, scheduling, thanks/ack, positive reply)
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.scheduling_cc} and {user.scheduling_silent_cc} for scheduling
Include one line like: "Connecting {user.scheduling_cc_name} to find a time."
Do NOT mention {user.scheduling_silent_cc} in the email body — silent CC only
Scheduling Drafts
ALWAYS CC {user.scheduling_cc} AND {user.scheduling_silent_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.scheduling_silent_cc} in the email body — she's CC'd silently for visibility
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 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)
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.list_attended_meetings --args '{"limit": 5}'
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
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.
NEVER create calendar events — only the scheduling assistant handles that
Only create email drafts
Include --to <sender> explicitly 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
gog CLI configured with both Gmail accounts (primary and work)
mcporter with Grain MCP connection for meeting transcript access
OpenClaw workspace with skill_log.py and audit_log.py scripts
Email style guide at {user.workspace}/style/EMAIL_STYLE.md
Humanizer skill at ~/executive-assistant-skills/humanizer/SKILL.md
Instructions
See 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.
Output
Gmail draft created on the correct account (never sent automatically)
WhatsApp notification with full draft text, Gmail draft link, and trigger class
Audit log entry for each draft created, sent, or skipped
Error Handling
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.
Examples
# 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 (m@gon.to -> John): intro acceptance. [Gmail link]"