Executive Email
Draft a personalized, executive-level email on a given topic by gathering recent Gmail, Google Docs, and Google Slides context, matching tone to prior sent emails to the recipient, and saving a Gmail draft.
Prerequisites
gws CLI installed and authenticated:gws auth status
- Required scopes:
gmail, drive, documents, presentations. If auth fails, run gws auth login.
- Read
ME.md at the project root (if present) for sender identity and title.
- Read
TEAM.md at the project root (if present) for team mission, programs, and current priorities.
Workflow
Collect inputs
- Topic (required) — subject matter to research and summarize
- Recipient email (required) — used for tone analysis and draft
To: field
- Optional: specific goal or ask,
--days lookback (default 30)
Read context files (at project root, if present)
ME.md — sender name, title, and executive voice baseline
TEAM.md — team scope, programs, and priorities (use to frame topic relevance and asks when applicable)
Gather context — run from project root:
python3 ~/.cursor/skills/executive-email/scripts/gather_email_context.py \
--topic "<TOPIC>" \
--recipient "<EMAIL>" \
[--days 30] \
--format json
If the script fails, follow the manual fallback in reference.md.
Analyze tone from toneSamples
- Greeting style (Hi Sarah vs Dear Sarah vs Sarah,)
- Formality and sentence length
- Use of bullets vs prose
- Sign-off pattern
- Prefer the median style across samples; do not mimic one-off anomalies
- If no tone samples found, use concise executive neutral-friendly tone
Synthesize the topic from topicEmails, documents, slides, and TEAM.md (if present)
- Plain-language executive summary
- Bullets for facts, decisions, or asks — only from gathered sources
- When the topic relates to team programs or priorities, frame it using language from
TEAM.md without inventing details
- Mark gaps with
[needs input]; do not invent facts
Compose the email using the template below, inferred tone, ME.md identity, and TEAM.md context where relevant
Create a Gmail draft using the helper script (see reference.md)
- Always use
create_gmail_draft.py — never hand-build RFC 822 strings or call gws gmail users drafts create with inline base64
- Hand-assembled messages cause UTF-8 mojibake (
— displays as â€")
- The helper adds an HTML part with real
<ul>/<li> bullets for lines starting with •, -, or *
- Do not send — draft only
Confirm with the user
- Show subject and body in chat
- Link to Gmail drafts
- List sources consulted (emails, docs, slides, tone samples)
Email template
Subject: {concise executive subject}
{greeting matching tone samples}
{1–2 sentence context / purpose}
{topic summary — prose and/or bullets}
{clear ask or next step, if supported by context}
{sign-off matching tone samples}
Chris Gray
{title from ME.md — only if prior sent emails include title/signatures}
Quality rules
- Facts must trace to gathered sources or
TEAM.md (if present)
- Use
TEAM.md for team framing only; do not invent program details or priorities not in the file
- Tone must trace to
toneSamples; default to concise executive neutral-friendly if none found
- Keep under ~200 words unless topic complexity requires more
- No jargon padding or invented context
- When sources are thin, keep the email short and flag
[needs input] inline
Example prompts
These prompts should trigger this skill:
- "Draft an executive email to sarah.chen@alphaalpha.com about the AlphaAlpha POC"
- "Write a follow-up to James on the renewal strategy — create a Gmail draft"
- "Compose an email summarizing our partner ecosystem discussion for the IBM team"
Additional resources
TEAM.md at project root — team org, programs, and priorities (if present)
- reference.md — gws commands, search queries, draft creation, manual fallback
1---2name: executive-email3description: Gathers Gmail, Google Docs, and Slides context on a topic, drafts an executive email matching the user's tone with a recipient, and creates a Gmail draft. Use when the user asks to draft, write, or compose an executive email, follow-up, or outreach on a topic.4---56# Executive Email78Draft a personalized, executive-level email on a given topic by gathering recent Gmail, Google Docs, and Google Slides context, matching tone to prior sent emails to the recipient, and saving a Gmail draft.910## Prerequisites11121. `gws` CLI installed and authenticated:13 ```bash14 gws auth status15 ```162. Required scopes: `gmail`, `drive`, `documents`, `presentations`. If auth fails, run `gws auth login`.173. Read `ME.md` at the project root (if present) for sender identity and title.184. Read `TEAM.md` at the project root (if present) for team mission, programs, and current priorities.1920## Workflow21221. **Collect inputs**23 - Topic (required) — subject matter to research and summarize24 - Recipient email (required) — used for tone analysis and draft `To:` field25 - Optional: specific goal or ask, `--days` lookback (default 30)26272. **Read context files** (at project root, if present)28 - `ME.md` — sender name, title, and executive voice baseline29 - `TEAM.md` — team scope, programs, and priorities (use to frame topic relevance and asks when applicable)30313. **Gather context** — run from project root:32 ```bash33 python3 ~/.cursor/skills/executive-email/scripts/gather_email_context.py \34 --topic "<TOPIC>" \35 --recipient "<EMAIL>" \36 [--days 30] \37 --format json38 ```39 If the script fails, follow the manual fallback in [reference.md](reference.md).40414. **Analyze tone** from `toneSamples`42 - Greeting style (Hi Sarah vs Dear Sarah vs Sarah,)43 - Formality and sentence length44 - Use of bullets vs prose45 - Sign-off pattern46 - Prefer the median style across samples; do not mimic one-off anomalies47 - If no tone samples found, use concise executive neutral-friendly tone48495. **Synthesize the topic** from `topicEmails`, `documents`, `slides`, and `TEAM.md` (if present)50 - Plain-language executive summary51 - Bullets for facts, decisions, or asks — only from gathered sources52 - When the topic relates to team programs or priorities, frame it using language from `TEAM.md` without inventing details53 - Mark gaps with `[needs input]`; do not invent facts54556. **Compose the email** using the template below, inferred tone, `ME.md` identity, and `TEAM.md` context where relevant56577. **Create a Gmail draft** using the helper script (see [reference.md](reference.md))58 - **Always** use `create_gmail_draft.py` — never hand-build RFC 822 strings or call `gws gmail users drafts create` with inline base6459 - Hand-assembled messages cause UTF-8 mojibake (`—` displays as `â€"`)60 - The helper adds an HTML part with real `<ul>/<li>` bullets for lines starting with `•`, `-`, or `*`61 - Do not send — draft only62638. **Confirm with the user**64 - Show subject and body in chat65 - Link to [Gmail drafts](https://mail.google.com/mail/#drafts)66 - List sources consulted (emails, docs, slides, tone samples)6768## Email template6970```71Subject: {concise executive subject}7273{greeting matching tone samples}7475{1–2 sentence context / purpose}7677{topic summary — prose and/or bullets}7879{clear ask or next step, if supported by context}8081{sign-off matching tone samples}82Chris Gray83{title from ME.md — only if prior sent emails include title/signatures}84```8586## Quality rules8788- Facts must trace to gathered sources or `TEAM.md` (if present)89- Use `TEAM.md` for team framing only; do not invent program details or priorities not in the file90- Tone must trace to `toneSamples`; default to concise executive neutral-friendly if none found91- Keep under ~200 words unless topic complexity requires more92- No jargon padding or invented context93- When sources are thin, keep the email short and flag `[needs input]` inline9495## Example prompts9697These prompts should trigger this skill:98991. "Draft an executive email to sarah.chen@alphaalpha.com about the AlphaAlpha POC"1002. "Write a follow-up to James on the renewal strategy — create a Gmail draft"1013. "Compose an email summarizing our partner ecosystem discussion for the IBM team"102103## Additional resources104105- `TEAM.md` at project root — team org, programs, and priorities (if present)106- [reference.md](reference.md) — gws commands, search queries, draft creation, manual fallback