skills/email-composer/SKILL.md
Draft professional emails for various contexts including business, technical, and customer communication. Use when the user needs help writing emails or composing professional messages.
npx skillsauth add curiositech/windags-skills email-composerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provide context and purpose, and I'll draft an appropriate email using structured decision-making to match tone, length, and formality to your recipient and situation.
IF recipient is C-level/executive:
└── Use bullet points, <150 words, subject = "Action Required:" + specific ask
└── Structure: Context (1 sentence) → Ask → Timeline → Next steps
IF recipient is peer/colleague:
└── Use conversational tone, 150-250 words, subject = descriptive + purpose
└── Structure: Greeting → Context → Details → Clear CTA → Thank you
IF recipient is external customer:
└── Use formal language, 200-300 words, subject = specific issue/order reference
└── Structure: Acknowledgment → Problem statement → Solution → Follow-up
IF recipient is team/group:
└── Use structured format, numbered lists, subject = "Update:" + topic
└── Structure: Summary → Details with headers → Action items → Timeline
IF purpose = urgent request:
└── Lead with deadline, use [URGENT] tag, bold key dates
└── Maximum 3 sentences before the ask
IF purpose = status update:
└── Use "What/So What/Now What" structure
└── Include metrics, next milestones, blockers
IF purpose = problem resolution:
└── Acknowledge → Explain → Apologize (if needed) → Fix → Prevent
└── Lead with resolution timeline
IF purpose = information sharing:
└── Use inverted pyramid: key info first, supporting details after
└── Include "Why this matters" section
IF need response today:
└── Subject: [ACTION REQUIRED] + specific task + deadline
└── First line: "I need X by Y time because Z"
IF need response this week:
└── Subject: Clear ask + "by [date]"
└── Include specific deadline in closing
IF FYI/no response needed:
└── Subject: "[FYI]" or "Update:" prefix
└── State "No response needed" in opening
Symptom: Recipient doesn't respond or asks "What do you need?" Root Cause: Request hidden in paragraph 3+ or implied rather than explicit Fix:
Symptom: Response feels cold/distant or inappropriately casual Root Cause: Tone doesn't match recipient relationship or company culture Fix:
Symptom: No response, or "Can you summarize?" reply Root Cause: Too much background before getting to the point Fix:
Symptom: Email gets lost in inbox, delayed responses Root Cause: Subject like "Question" or "Following up" gives no priority signal Fix:
Symptom: Recipient responds with questions about what they should do Root Cause: Multiple possible actions or unclear next steps Fix:
Scenario: Need project status for board meeting from busy VP
Decision Process:
Draft:
Subject: [ACTION REQUIRED] Project Alpha status for board deck by 3pm
Hi Sarah,
I need Project Alpha's current status for tomorrow's board presentation.
Specifically need:
• % complete vs. timeline
• Any blockers requiring board attention
• Budget variance (if >5%)
Please send by 3pm today so I can incorporate into the deck.
Thanks,
Alex
What novice would miss: Would write long context paragraph about board meeting importance, bury the ask in paragraph 2, use vague subject like "Board Meeting Question"
What expert catches: Leads with deadline, uses bullets for scannability, specifies exact information needed, gives reason for timing
Don't use email-composer for:
Delegate when:
data-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.