Write developer blog posts from video transcripts, meeting notes, or rough ideas. Extracts narrative from source material, structures content with hooks and technical sections, formats code examples with placeholders, and checks drafts against 37 AI anti-patterns with structural variant detection, three-pass scanning (surface, skeleton, soul check), craft sweep, and rewrite auditing. Enforces sentence/paragraph craft rules, facts-over-assessments principles, and honest limitations. Includes interactive onboarding to learn the author's voice from writing samples. Persona files live at ~/.claude/blog-writer-persona/ by default, with symlink support for custom locations (e.g. Google Drive for backup). Optional global voice saves your voice profile to Claude Code user memory so it applies across all projects. Use this skill whenever the user wants to write a blog post, draft a blog, turn a transcript into a blog, work on blog content, or mentions "blog" in the context of content creation. Also trigger when the user provides a video transcript and wants written content derived from it, or when continuing work on a blog series.
96
94%
Does it follow best practices?
Impact
97%
1.56xAverage score across 9 eval scenarios
Advisory
Suggest reviewing before use
This document defines the writing framework for blog posts. It covers narrative quality rules, anti-pattern references, tone calibration, and structural conventions. Read it before every draft.
The author's personal voice, rhetorical devices, and bio format are in persona/voice.md
and persona/bio.md. Read those too.
This is the single biggest quality differentiator between a great post and a decent one. Every section of the post — not just the opening hook — must contain specific moments, not general descriptions. The reader should feel like they're watching over your shoulder, not reading a report about what happened.
Bad (general):
Good (specific):
The opening hook always has personality because writers focus there. The quality crime happens in the middle sections — "the technical meat" and "the broader point" — where the voice drifts toward industry analyst. Watch for these symptoms:
Every paragraph should pass this test: "Could I rewrite this paragraph as three bullet points in a status update and lose nothing?" If yes, it's a summary. Rewrite it as a moment the reader experiences.
The author's voice doesn't turn off when the content gets technical. The rhetorical devices
from persona/voice.md — parenthetical asides, cultural references, self-deprecation,
whatever is characteristic — should continue into the code examples and the architecture
discussion. A technical section should still sound like a person telling you about it at a
conference afterparty, not a whitepaper.
Read references/ai-anti-patterns.md for the full list. It contains 37 named patterns
with symptoms, examples, and alternatives. Scan the draft against every one of them during
Phase 3 and Phase 4. Zero tolerance.
Quick index for scanning:
These principles apply across the entire post — hook, body, CTA, TLDR. They're not about
catching specific anti-patterns (those are in ai-anti-patterns.md). They're about the
mindset behind strong writing.
No word choice — no matter how precise, how plain, how clever — substitutes for having something to say. A sentence full of plain words is still empty if it contains no fact, no story, no specific detail. The anti-pattern list catches bad words; these principles catch missing substance. Cutting fluff is half the job. The other half is replacing it with something the reader can use.
Don't tell readers something is impressive — give them the evidence and let them be impressed. The strongest evaluation is the one the reader makes themselves.
In tech writing: benchmarks beat adjectives, code samples beat descriptions, before/after beats "much improved." Don't write "remarkably fast" — show the benchmark. Don't write "elegant design" — show the three-line config. The reader's own "wow" is ten times more powerful than yours.
If a paragraph feels complete but is mostly adjectives, you did word-work, not research-work. Strip the evaluative adjectives from the paragraph and read the skeleton. If the skeleton is empty — if all that's left is "A tool for teams" or "An approach to deployment" — the paragraph doesn't need better adjectives. It needs facts. The author needs to go find a number, a story, a before/after, a specific detail that earns the reader's conclusion.
Writing adjectives is easy. Finding facts is hard. That's why weak writing is full of adjectives and strong writing is full of facts.
Using "use" instead of "leverage" doesn't dumb anything down. Using "method" instead of "methodology" doesn't lose nuance. Complexity belongs in the ideas, not the vocabulary.
A reader who understands the concept won't be more impressed by a Latin synonym. A reader who doesn't will be lost by one. In both cases, the plain word serves the reader better. The only exception: when the precise technical term carries meaning the plain word doesn't (e.g., "idempotent" means something specific that "repeatable" doesn't fully capture). In that case, use the precise term — but explain it if needed.
When describing a product or tool, translate every feature into what it means for the reader. Raw specs are for data sheets. Blog readers want to know what changes for them.
Feature (useless): "25,000 mAh battery." Benefit (useful): "2.5 hours of continuous cleaning — enough to vacuum a 60m² apartment on a single charge."
Feature: "Automatic route mapping with contamination detectors." Benefit: "It doesn't wander randomly — it heads straight for the dirty spots first. Cleans a two-bedroom apartment in one pass on one charge."
The test: after writing a feature description, ask "so what does the reader get from this?" If the answer isn't in the text, rewrite. Every spec should answer "why should I care?" from the reader's chair.
Cutting filler, assessments, and clichés is only half the editorial job. Every cut leaves a hole where substance should go. If you delete "robust and scalable" and leave the sentence as "A solution for modern teams," you've made the sentence cleaner but not stronger — it's still empty. The fix is to replace the cut with a fact: "Handles 50K RPS on a single node. Add nodes to grow linearly."
The rule: never submit a sentence that got shorter without getting more informative. If you cut three adjectives and the sentence collapsed, the sentence was made of adjectives — it needs research, not editing. Go find a number, a story, a before/after, a specific behavior. Then write the sentence around that.
This applies at every stage:
A post that's been aggressively cut but never filled reads like a telegram: clean, short, and devoid of value. Cut and fill. Always both.
These rules govern how ideas flow at the sentence, paragraph, and structural level. They complement the anti-pattern list (which catches AI tells) and narrative density (which catches flat writing). These catch overloaded, tangled, or structureless writing.
A "new idea" is either (a) introducing the reader to something unfamiliar, or (b) showing a familiar thing interacting with another familiar thing. One sentence should carry one new idea. Two tightly related ideas are acceptable. Three or more is overloaded — split the sentence.
Test: count the distinct ideas in a sentence. If a sentence answers three different questions (what? how? for whom?), it's three ideas crammed together. Give each its own sentence.
Overloaded: "We sell camping gear wholesale and retail to hikers, athletes, and anyone who loves the outdoors, from our stores in four cities or our next-day delivery online shop."
Split: "We sell camping gear: tents, backpacks, stoves, sleeping pads. Our customers are hikers, athletes, anyone who spends weekends outside. We have stores in four cities and an online shop with next-day delivery."
When introducing multiple unfamiliar items, tell the reader what category they belong to before listing them. The category label ("three tools," "two reasons," "four steps") gives the reader a shelf to put things on.
Cold list: "Fraudsters use skimmers, keyboard overlays, hidden cameras, and direct observation to steal your money."
Generalized: "Fraudsters use three tools to steal your money: skimmers, keyboard overlays, and hidden cameras."
The generalization also forces you to decide what really belongs. In the example above, "direct observation" isn't really a tool — cutting it made the sentence stronger.
When explaining something complex, introduce one new concept at a time, building each explanation on what the reader already knows. Don't introduce a new concept and immediately use it in a complex interaction in the same sentence.
Overloaded: "The buffer overflow control system monitors the printer's job stack and ensures uninterrupted operation even when too many jobs are submitted simultaneously."
Chain: Start with what a buffer is. Then explain overflow. Then explain the control system. Each sentence uses only concepts the reader already has.
Calibrate to your audience. Technical readers don't need the basics explained — but they do need their unfamiliar concepts introduced one at a time.
Sentences with real actors doing real things are easier to read and more vivid than sentences with abstract nouns in passive constructions.
Strong subject: a person, team, company, program, robot — something that can act. Weak subject: an abstract noun, a nominalization, "the presence of," "the implementation of" — things that can't do anything.
Weak: "Reforestation led to a reduction in CO₂ concentration in the region." Strong: "Greenpeace volunteers restored this stretch of forest, and CO₂ levels in the region dropped."
Strong verb: an action you can picture — build, break, ship, reject, measure, cut. Weak verb: a state verb hiding a real action — "is," "exists," "ensures," "indicates," "involves," "facilitates."
Weak: "The CRM implementation will ensure sales growth." Strong: "When we roll out the CRM, sales reps will close a third more deals."
Don't force this mechanically. Some sentences naturally describe states, not actions. "It's raining" is better than "Clouds above us accumulate moisture to release it." If a state verb sounds natural, keep it. If an action is hiding behind a state verb, free it.
See also anti-pattern #13 (copula avoidance / nominal style) for the AI-specific variant.
Read the draft out loud — not in your head, not in a whisper, but aloud with expression. Every place you stumble, lose breath, or lose the thread is a place the reader will too.
Best syntax reads like natural speech. Tension and formality produce tangled sentences. Write relaxed, then edit tight.
Nested subordinate clauses ("which... that... because... when...") force the reader to hold the beginning of the sentence in memory while processing the middle. More than one level of nesting is a flag. Flatten by splitting into separate sentences.
Nested: "Due to the law, which was passed despite industry protests that included press statements and public declarations, all companies that transmit data must store correspondence history for six months or a year."
Flat: "The new law requires all data-transmitting companies to store correspondence for six months to a year. The industry protested publicly, but the law passed anyway."
Also watch for:
One paragraph = one topic. The topic is set by the first sentence (or the second, if the first is a hook). Everything in the paragraph must relate to that topic. If a sentence belongs to a different topic, move it to its own paragraph or cut it.
First sentence does one of two jobs:
Test: read only the first sentences of all paragraphs in sequence. They should tell a coherent story on their own. If they don't, the paragraph structure needs work.
Last sentence earns its place. The end of a paragraph is what the reader remembers. Use it for a conclusion ("so the takeaway is..."), a practical recommendation, or a rule. Don't repeat the first sentence in different words. If the first sentence already said it all, just end the paragraph — no decorative conclusion needed.
Kill stream-of-consciousness. Informational text isn't a diary. If sentences follow each other by free association rather than logical structure, the reader has to decode every connection. Structure the paragraph so the connections are obvious.
Every text moves the reader from point A (what they believe now) to point B (what they should believe/know/do after reading). This is the goal.
The straight-line test: every paragraph should advance the reader toward B. If a paragraph is interesting but doesn't serve the goal, it's a digression. Cut it or save it for a different post.
This principle is already enforced in Phase 2 (editorial planning) via the main idea sentence. These rules make it concrete at the paragraph level during writing:
Conference talks can be more aggressive because body language and delivery soften the edge. Blog posts need the same confrontational energy but with more self-deprecation and more "we" language. On stage you can say "this is broken." In a blog, say "we broke it, here's how, here's the screenshot."
The blog reader doesn't have your facial expressions. They have your sentences. Every provocation needs a wink built into the prose.
The reader is not above you or below you. They are a peer who happens to need what you know. Two failure modes:
Writing down (condescension): Dumbing things down, using cutesy language, assuming the reader can't handle complexity. "Hey mommies, you know that problem when..." or "Don't worry, this is easier than it sounds!" If you wouldn't say it to a colleague, don't write it.
Writing up (pandering): Excessive formality, corporate honorifics, flattery. "Esteemed professionals, we present for your consideration..." If it sounds like a press release or a formal invitation, rewrite it as you'd say it over coffee.
Both modes create distance. The reader notices and loses trust — either they feel patronized or they feel marketed at. The fix is the same: write as if you're explaining something to a smart friend who hasn't seen this particular thing yet. Honest, direct, on equal footing.
Before submitting a draft, check:
Always bullets. Written last, placed first.
Don't explain the mechanism. If the post teaches the reader how something works, the TLDR should make them want to know how, not spoil it. "We rebuilt X and the result was Y" beats "X uses lazy-loading, native scripts, and sits deeper in the prompt hierarchy."
Compress, don't miniaturize. A good TLDR bullet takes a whole section's argument and restates it as a provocation. A bad one takes a whole section and shrinks it into a feature list. If a bullet reads like release notes, it's wrong.
The recurring character bullet rule. If the post has a recurring character or foil, one bullet should belong to them. It humanizes the TLDR and breaks the pattern of technical claims. The character bullet is always last.
Three bullets is usually right. Two feels thin. Four starts explaining too much. Three gives you: one provocation that sets up the problem, one that hints at the payoff, one that's human or funny.
Test: would you click? Read each bullet in isolation. If it doesn't make someone think "wait, I need to read this," rewrite it. A bullet that merely summarizes what happened is not a provocation. Good bullets create curiosity gaps — they hint at something surprising without explaining it. "We told the agent 'no external APIs' four times before it listened" is a provocation. "We iterated on the agent's output to improve the architecture" is a summary.
Good TLDR bullets:
Bad TLDR bullets:
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
example-persona