Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Drafts clear, professional emails with the right tone, structure, and a concrete call to action by clarifying audience, purpose, and desired outcome. Use this skill when the user asks to "write an email", "draft an email", "compose a message", "reply to this email", "make this email sound more professional/polite/firmer", "follow up", "send a cold outreach", "decline/apologize/ask for something by email", or needs help with subject lines, tone, or email structure.
.claude/skills/jayrha-email-composer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 167% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 225% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 60% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 53% | 0% |
This skill produces emails that are clear, correctly toned, well structured, and end with an unambiguous call to action (CTA). It works for new outreach, replies, follow-ups, requests, declines, apologies, status updates, introductions, and escalations.
Keywords: write email, draft email, compose, reply, follow up, cold outreach, subject line, tone, professional, polite, firm, apology, request, decline, introduction, escalation.
The core principle: every email should let the reader answer three questions in under 10 seconds — What is this about? What do you need from me? By when?
Follow these steps in order. Ask only the questions you cannot reasonably infer from context; never block on a long questionnaire.
references/email-patterns.md.references/tone-guide.md.references/email-patterns.md.references/checklist.md. Optionally run scripts/email_lint.py to catch length, hedging, passive voice, and missing CTA.Keep most emails to 5 short blocks. Aim for under 150 words unless the content demands more.
Request: chase a contract signature, recipient is a busy external partner, deadline Friday.
> Subject: Signature needed: MSA by Fri Jun 12 > > Hi Priya, > > Following up on the MSA I sent Monday — legal on both sides has approved the final draft. > > Could you e-sign via the DocuSign link by Friday, June 12 so we can start onboarding next week? It takes about two minutes. > > Happy to hop on a quick call if anything needs another look. > > Best, > Jannik
See examples/sample-emails.md for nine fully worked before/after examples across all patterns.
references/email-patterns.md — type-by-type templates (request, follow-up, decline, apology, update, intro, cold outreach, escalation) and subject-line rules.references/tone-guide.md — the formality/warmth dial, phrase swaps, opener/closer banks, cross-cultural notes.references/checklist.md — pre-send self-review checklist.templates/email-template.md — fill-in skeleton.examples/sample-emails.md — nine before/after worked examples.scripts/email_lint.py — heuristic linter for length, hedging, passive voice, weak subject lines, and missing CTA.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 4,986 | 6,481 | +30% | 1 | 1 | 0% | 963 | 2,568 | +167% | 0 | 0 | — |
case-02 | fail→fail | 4,343 | 4,682 | +8% | 1 | 1 | 0% | 848 | 2,249 | +165% | 0 | 0 | — |
case-03 | pass→pass | 3,650 | 3,615 | -1% | 1 | 1 | 0% | 629 | 2,046 | +225% | 0 | 0 | — |
case-04 | pass→pass | 7,217 | 4,184 | -42% | 1 | 1 | 0% | 1,315 | 2,109 | +60% | 0 | 0 | — |
case-05 | pass→pass | 11,698 | 10,761 | -8% | 1 | 1 | 0% | 2,241 | 3,425 | +53% | 0 | 0 | — |
case-06 | fail→fail | 13,119 | 5,463 | -58% | 1 | 1 | 0% | 673 | 2,330 | +246% | 0 | 0 | — |
case-07 | fail→fail | 6,926 | 5,345 | -23% | 1 | 1 | 0% | 1,262 | 2,263 | +79% | 0 | 0 | — |
case-08 | fail→fail | 5,413 | 5,604 | +4% | 1 | 1 | 0% | 916 | 2,372 | +159% | 0 | 0 | — |
case-09 | pass→pass | 6,050 | 7,202 | +19% | 1 | 1 | 0% | 1,098 | 2,600 | +137% | 0 | 0 | — |
case-10 | pass→pass | 6,480 | 6,830 | +5% | 1 | 1 | 0% | 1,127 | 2,530 | +124% | 0 | 0 | — |
case-11 | fail→pass | 8,801 | 8,658 | -2% | 1 | 1 | 0% | 1,493 | 2,744 | +84% | 0 | 0 | — |
case-12 | pass→pass | 4,019 | 4,463 | +11% | 1 | 1 | 0% | 675 | 2,156 | +219% | 0 | 0 | — |
case-13 | pass→pass | 4,284 | 6,354 | +48% | 1 | 1 | 0% | 742 | 2,513 | +239% | 0 | 0 | — |
case-14 | pass→pass | 12,393 | 8,311 | -33% | 1 | 1 | 0% | 2,090 | 2,730 | +31% | 0 | 0 | — |
case-15 | pass→pass | 5,691 | 6,571 | +15% | 1 | 1 | 0% | 1,025 | 2,487 | +143% | 0 | 0 | — |
case-16 | pass→pass | 4,104 | 5,068 | +23% | 1 | 1 | 0% | 756 | 2,264 | +199% | 0 | 0 | — |
case-17 | pass→pass | 4,575 | 4,984 | +9% | 1 | 1 | 0% | 806 | 2,285 | +183% | 0 | 0 | — |
case-18 | pass→pass | 6,844 | 7,482 | +9% | 1 | 1 | 0% | 1,225 | 2,600 | +112% | 0 | 0 | — |
case-19 | pass→pass | 6,788 | 6,499 | -4% | 1 | 1 | 0% | 1,187 | 2,526 | +113% | 0 | 0 | — |
case-20 | pass→pass | 6,704 | 6,888 | +3% | 1 | 1 | 0% | 1,150 | 2,429 | +111% | 0 | 0 | — |
case-21 | pass→pass | 5,773 | 4,516 | -22% | 1 | 1 | 0% | 968 | 2,153 | +122% | 0 | 0 | — |
case-22 | pass→pass | 6,643 | 3,116 | -53% | 1 | 1 | 0% | 1,158 | 1,937 | +67% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of 0 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/3/2026 | +23% |
Other measured skills in the registry, with their headline benchmark lift.