# Executive Email

> 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.

- Skill: `cgray-redhat/executive-email` (Agent Skill, multi-file: 14 files)
- Install (CLI): `npx skillmds@latest add cgray-redhat/executive-email`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cgray-redhat/executive-email/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: cgray-redhat (https://skillmd.com/u/cgray-redhat)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/cgray-redhat/executive-email

---


# 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

1. `gws` CLI installed and authenticated:
   ```bash
   gws auth status
   ```
2. Required scopes: `gmail`, `drive`, `documents`, `presentations`. If auth fails, run `gws auth login`.
3. Read `ME.md` at the project root (if present) for sender identity and title.
4. Read `TEAM.md` at the project root (if present) for team mission, programs, and current priorities.

## Workflow

1. **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)

2. **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)

3. **Gather context** — run from project root:
   ```bash
   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](reference.md).

4. **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

5. **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

6. **Compose the email** using the template below, inferred tone, `ME.md` identity, and `TEAM.md` context where relevant

7. **Create a Gmail draft** using the helper script (see [reference.md](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

8. **Confirm with the user**
   - Show subject and body in chat
   - Link to [Gmail drafts](https://mail.google.com/mail/#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:

1. "Draft an executive email to sarah.chen@alphaalpha.com about the AlphaAlpha POC"
2. "Write a follow-up to James on the renewal strategy — create a Gmail draft"
3. "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](reference.md) — gws commands, search queries, draft creation, manual fallback

