# Email Writer

> Writes clear, direct professional emails. Removes sycophancy, filler, and AI tells.

- **Type:** Skill
- **Install:** `agentstack add skill-nicholashidalgo-claude-skillforge-business-email-drafter`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [nicholashidalgo](https://agentstack.voostack.com/s/nicholashidalgo)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [nicholashidalgo](https://github.com/nicholashidalgo)
- **Source:** https://github.com/nicholashidalgo/claude-skillforge/tree/main/writing/business-email-drafter

## Install

```sh
agentstack add skill-nicholashidalgo-claude-skillforge-business-email-drafter
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# email-writer

**Purpose:** Convert a brief or messy email draft into a direct, natural-sounding professional email free of AI tells.

## Input Schema

| Field | Type | Required | Notes |
|---|---|---|---|
| `subject_line` | string | yes | Proposed subject or topic |
| `intent` | string | yes | What the email needs to accomplish |
| `key_facts` | string[] | yes | Facts, names, dates that must be preserved |
| `tone` | string | yes | One of: direct, formal, concise, warm-professional |
| `raw_draft` | string | no | Rough draft to clean up |

```json
{
  "subject_line": "API deprecation timeline",
  "intent": "Notify the payments team that v1 API endpoints are deprecated and cutover is required by March 31.",
  "key_facts": ["March 31 deadline", "v1 API", "payments team", "docs at /api/migration"],
  "tone": "direct",
  "raw_draft": "I hope this email finds you well! I wanted to reach out and touch base regarding the important and crucial matter of our API deprecation timeline going forward."
}
```

## Output Schema

```json
{
  "subject": "v1 API deprecation - cutover required by March 31",
  "body": "The v1 API endpoints will be shut off March 31. If your team is still using them, migrate before then - the guide is at /api/migration. Reply here or ping me in Slack if you hit anything unexpected.",
  "patterns_removed": [7, 19, 22],
  "word_count": 52
}
```

## Prompt Flow

**Pass 1:** Apply core email rewrite. Remove: chatbot openers (P19), sycophancy (P21), em dashes (P13), AI vocab (P7), filler (P22), negative parallelisms (P9), excessive hedging (P23), copula avoidance (P8). Preserve `key_facts`.

**Pass 2 Audit:** "What makes this email so obviously AI-generated?" - list remaining tells.

**Pass 2 Final:** Rewrite removing remaining tells. Keep under 150 words unless facts require more.

## Examples

### Short - API notification
**Before:** "I hope this email finds you well! I wanted to reach out regarding the crucial API deprecation timeline, which stands as a pivotal moment in our infrastructure evolution."
**After:** "The v1 API endpoints shut down March 31. Migrate before then - guide at /api/migration."

### Medium - Status update
**Before:** "Just wanted to circle back and provide an update. At this point in time, we have completed the initial phase of the project."
**After:** "Quick status: phase 1 is done. Phase 2 (auth integration) starts Monday. We're on track for the April 15 launch."

### Long - Escalation with context
**Before:** "Great question regarding the outage. Additionally, industry observers have noted that distributed systems face challenges typical of complex environments. The future looks bright."
**After:** "The March 14 outage (9:41-11:23 PM PT) was a misconfigured load balancer after the 11 PM deploy. 4,300 requests timed out. Fix: config rollback. Post-mortem at [link]. I've added a deploy checklist item to catch this going forward."

## Unit Tests

```python
# tests/skills/test_email_writer.py
import pytest
from ai_pattern_scrubber import detect_patterns

SHORT_FINAL = "The v1 API endpoints shut down March 31. Migrate before then - guide at /api/migration."
MEDIUM_FINAL = "Quick status: phase 1 is done. Phase 2 (auth integration) starts Monday. On track for April 15."
LONG_FINAL = (
    "The March 14 outage (9:41\u201311:23 PM PT) was a misconfigured load balancer. "
    "4,300 requests timed out. Fix: config rollback. Post-mortem at [link]."
)

def high_severity_hits(text):
    return [h for h in detect_patterns(text) if h.severity == "high"]

def test_email_short_no_high_severity_flags():
    assert high_severity_hits(SHORT_FINAL) == []

def test_email_medium_no_high_severity_flags():
    assert high_severity_hits(MEDIUM_FINAL) == []

def test_email_long_no_high_severity_flags():
    assert high_severity_hits(LONG_FINAL) == []
```

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [nicholashidalgo](https://github.com/nicholashidalgo)
- **Source:** [nicholashidalgo/claude-skillforge](https://github.com/nicholashidalgo/claude-skillforge)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-nicholashidalgo-claude-skillforge-business-email-drafter
- Seller: https://agentstack.voostack.com/s/nicholashidalgo
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
