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 31 AI anti-patterns with structural variant detection, three-pass scanning (surface, skeleton, soul check), and rewrite auditing. Auto-updates anti-pattern list from Wikipedia before each session. 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.
97
94%
Does it follow best practices?
Impact
99%
1.43xAverage score across 7 eval scenarios
Advisory
Suggest reviewing before use
{
"context": "Tests whether the agent identifies and corrects all 31 specific AI writing anti-patterns seeded throughout the draft, plus performs a holistic soul check. Each criterion checks that a particular named anti-pattern was detected and removed or rewritten.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Contrastive negation fixed",
"description": "The 'Not a branching strategy. A survival mechanism.' and 'Not just a workflow. A philosophy.' patterns are rewritten as direct statements instead of 'Not X. Y.' pairs",
"max_score": 6
},
{
"name": "Parallel binary comparisons fixed",
"description": "The 'Where feature branches give you isolation, trunk-based gives you speed. Where long-lived branches give you safety, short-lived ones give you momentum.' mirrored clauses are rewritten without structural parallelism",
"max_score": 6
},
{
"name": "Asyndetic tricolon fixed",
"description": "The 'Fast. Reliable. Tested. And shipped on a Monday.' three-fragments-plus-kicker pattern is rewritten as actual sentences",
"max_score": 6
},
{
"name": "Choppy fragments fixed",
"description": "The 'Feature flags. Dark launches. Percentage rollouts. Pure control.' fragment chain is rewritten as sentences with verbs and meaning",
"max_score": 5
},
{
"name": "Symmetrical LLM patterns fixed",
"description": "The 'The code doesn't define the process; the process defines the code' fortune-cookie balanced clause is rewritten as a direct point",
"max_score": 6
},
{
"name": "Self-answering fragments fixed",
"description": "The 'The result? Zero rollbacks. The best part? Everyone could deploy.' noun-phrase-question-then-answer patterns are rewritten without fake rhetorical tension",
"max_score": 5
},
{
"name": "Parenthetical em-dashes fixed",
"description": "The 'The pipeline -- which we had built over three sprints -- handled it gracefully' paired-em-dash aside is rewritten using commas or parentheses (single em-dash for hard break is acceptable)",
"max_score": 5
},
{
"name": "Excessive em-dashes reduced",
"description": "The section with 4+ em-dashes ('The config -- our most critical file -- was updated. The tests -- all 200 of them -- passed. The deploy -- usually our weakest link -- went smoothly.') is rewritten to have no more than 2 em-dashes per section",
"max_score": 5
},
{
"name": "Preamble removed",
"description": "The 'In this post, we’ll explore how our team navigated the transition to trunk-based development' opening and 'What follows is a deep dive into' are removed or rewritten as direct narrative",
"max_score": 6
},
{
"name": "Hedging removed",
"description": "Phrases like 'It’s worth noting that', 'Interestingly enough', 'It bears mentioning', 'To be fair' are deleted or the point is stated directly without the throat-clearing",
"max_score": 5
},
{
"name": "Emojis removed",
"description": "The cleaned draft contains zero emoji characters (the rocket, fire, and party popper from the original are all removed)",
"max_score": 6
},
{
"name": "AI vocabulary cleaned",
"description": "Words from the AI contamination list are removed or replaced with plain alternatives: at minimum 'leveraged', 'streamlined', 'robust', 'delved', 'fostering', 'seamless', 'pivotal', 'transformative', 'landscape', 'navigate'",
"max_score": 6
},
{
"name": "Copula avoidance fixed",
"description": "Phrases like 'served as the backbone', 'stood as a testament', 'boasted zero rollbacks', 'showcased the improvement' are replaced with simpler verbs like 'is', 'was', 'has', 'had'",
"max_score": 6
},
{
"name": "Low burstiness improved",
"description": "The paragraph where every sentence is 15-18 words long ('We reviewed the pipeline. We checked the configuration. We ran the tests. We deployed to staging. We monitored the metrics.') is rewritten with varied sentence lengths (mix of short, medium, and long)",
"max_score": 5
},
{
"name": "Fabricated experience removed",
"description": "Phrases like 'What I find genuinely interesting about this transition' and 'I keep coming back to the idea that' (simulating personal reflection not grounded in the narrative) are rewritten as direct claims",
"max_score": 6
},
{
"name": "False ranges fixed",
"description": "The 'from solo developers to hundred-person engineering orgs' and 'whether you’re running a side project or a Fortune 500 deployment' false inclusivity ranges are replaced with specific audience targeting",
"max_score": 5
},
{
"name": "Synonym cycling fixed",
"description": "The cycling of 'the CI pipeline' / 'the integration system' / 'the build infrastructure' / 'the automation layer' referring to the same thing is replaced with consistent terminology (one term used throughout)",
"max_score": 5
},
{
"name": "Unicode giveaways fixed",
"description": "Curly quotes (“ ” ‘ ’), horizontal ellipsis (…), en dashes (–), and bullet characters (•) in the source text are replaced with plain ASCII equivalents (straight quotes, three dots, hyphens or em-dashes)",
"max_score": 6
},
{
"name": "Participle-phrase filler fixed",
"description": "The trailing '-ing' clause in 'Our deploy frequency tripled in the first month, significantly enhancing our team's velocity and demonstrating the value of continuous delivery practices' is removed or the point is made in its own sentence with evidence",
"max_score": 5
},
{
"name": "Significance inflation fixed",
"description": "The sentence 'This migration marked a pivotal moment in our team's engineering journey, fundamentally reshaping how we approached software delivery' is rewritten to show specific impact instead of asserting significance",
"max_score": 5
},
{
"name": "Challenge-optimism sandwich fixed",
"description": "The 'Despite the initial learning curve... Despite these challenges, future improvements could further enhance' formulaic structure is rewritten as specific analysis or removed",
"max_score": 5
},
{
"name": "Inline-header lists fixed",
"description": "The bold-colon bullet list ('**Feature flags:** Control what...', '**Short-lived branches:** Keep...', '**Automated testing:** Run...', '**Incremental rollouts:** Deploy...') is rewritten as narrative prose or plain bullets without the glossary template",
"max_score": 5
},
{
"name": "Vague attributions fixed",
"description": "The 'Industry experts widely agree that trunk-based development represents the future' and 'According to recent reports' and 'Many seasoned practitioners have noted' are either replaced with named sources or removed",
"max_score": 5
},
{
"name": "Boldface overuse fixed",
"description": "The paragraph with excessive bold ('**feature flags** to control **rollout percentages**, configured **branch policies** through our **CI pipeline**, and tracked **deploy metrics** on the **Datadog dashboard**. The **automated testing** suite ran on every **commit**, giving us **confidence** in each **deployment**') has bold formatting removed from prose",
"max_score": 5
},
{
"name": "Title case headings fixed",
"description": "The title-case headings 'The Decision To Embrace Change' and 'Results And Future Outlook' are converted to sentence case (only first word and proper nouns capitalized)",
"max_score": 5
},
{
"name": "Standalone positive conclusion fixed",
"description": "The generic positive conclusion 'The future of our deployment pipeline looks brighter than ever. Exciting times lie ahead for the entire engineering organization.' is either removed or replaced with specific forward-looking content",
"max_score": 4
},
{
"name": "Labeling the device fixed",
"description": "The 'The irony?' and 'The beauty of it is that' labels are removed, leaving the rhetorical device to land on its own without being announced",
"max_score": 4
},
{
"name": "Restating proven point fixed",
"description": "The 'The key takeaway: if you're still on GitFlow...' paragraph that restates what the preceding narrative already proved is removed or folded into the narrative without the summary label",
"max_score": 4
},
{
"name": "Telegraphing transitions fixed",
"description": "The 'But here's the thing:' and 'And here's the most interesting part:' transition announcers are removed, with their following content stated directly",
"max_score": 4
},
{
"name": "Incomplete assertions fixed",
"description": "The vague conclusive sentences 'The implications are significant. The direction is clear. This changes everything.' are either replaced with specific claims or removed",
"max_score": 4
},
{
"name": "Stacked data points trimmed",
"description": "The triple data pile 'biweekly to daily, a 1,400% improvement, saving roughly 80 engineering hours per month' is trimmed to one or two data points instead of three making the same point",
"max_score": 3
},
{
"name": "Soul check evidence",
"description": "The edit report or cleaned draft shows evidence of holistic voice assessment beyond individual pattern fixes: the cleaned draft has opinions, varied energy, personality, or first-person voice where appropriate -- not just sterile pattern-free prose",
"max_score": 4
}
]
}evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
example-persona