| name | newsletter-write |
| description | Write a newsletter issue in Anuj's voice — register between LinkedIn-sharp and Medium-measured, 300-600 words, subject line plus preheader plus scannable body, plain-text-readable, no engagement-bait. |
newsletter-write
Drafting a newsletter issue for Anuj Sadani. Newsletter sits between sharp and measured — direct, scannable, but with room for one real argument rather than a one-liner. Optimized for email clients: plain-text-readable, no required images, scannable in 60 seconds.
Step 1 — Load context (mandatory)
Read these files:
shared/voice-rules.md
shared/voice-samples.md
shared/pet-peeves.md
shared/topic-modes.md
shared/platform-styles.md
Step 2 — Classify topic mode + apply platform style profile
Apply topic-modes.md.
Then apply the newsletter row from shared/platform-styles.md: technical depth 2–3 (at most one short explained snippet), headline aggressiveness 3 (clear-benefit subject, deliverability-safe — not clickbait), density 2–3 (scannable, short sections). Honor the precedence rules in that file — voice-rules.md/pet-peeves.md are absolute, and topic mode can raise (never lower) substance.
Step 3 — Plan the structure
Default outline (300-600 words, 2-3 min read):
- Subject line — ≤8 words, specific, no hype.
- Preheader — the snippet email clients show next to the subject. 1 sentence, ≤120 chars, complements (does not repeat) the subject.
- Opening hook — one of the cadences from
voice-samples.md.
- Body — 3-5 short paragraphs OR 1 short paragraph + a tight 3-5 item bulleted list (no emoji bullets). One core observation, one implication, one "what I'd do" line.
- Closer — 1-2 lines. Crisp takeaway. No engagement-bait.
- Optional sign-off — if Anuj has a standard sign-off (he typically doesn't), include it; otherwise just end at the closer.
Step 4 — Draft
- First person. Owned opinion.
- Plain-text readable: do not depend on images, fancy CSS, or block embeds.
- If you use a list, it's because the content is genuinely enumerable, not for visual rhythm.
- One number or specific reference at minimum.
- Emoji: follow the Emoji Control section in
shared/voice-rules.md. Default level is low — newsletters should rarely contain emoji. Override only if the user explicitly says "use medium emoji" / "no emoji" etc.
Step 5 — Pre-delivery checks
- Run the regex sweep from
shared/pet-peeves.md. Any hit → rewrite.
- Confirm word count is in the 300-600 range.
- Confirm subject + preheader together preview well (no repetition, no clickbait, no emoji unless thematically appropriate).
- Confirm the post would still make sense pasted into plain text (no broken Markdown reliance).
- Confirm: style profile applied — depth, headline, and density match the newsletter row in
shared/platform-styles.md (topic-mode overrides may raise depth).
Step 6 — Save and deliver
Save to file. Derive a kebab-case topic slug. Get today's date in YYYY-MM-DD form. Save subject + preheader + body to:
./drafts/<YYYY-MM-DD>-<topic-slug>/newsletter.md
Format the file as:
# Subject: <subject line>
Preheader: <preheader>
---
<body>
If the file already exists, suffix with -v2, etc. Create directories as needed.
Also print in chat:
─── SUBJECT ───
<≤8 words>
─── PREHEADER ───
<≤120 chars, complements subject>
─── BODY ───
<300-600 word post>
─── META ───
words: <N>
reading time: <N> min
topic mode: <security | architecture-agents | leadership | cost-infra>
emoji level: <none | low | medium | high>
saved to: <path>
User copies to whichever newsletter platform they use (typically pastes into the compose window). Do not auto-send.