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
Write developer blog posts from video transcripts, meeting notes, or rough ideas.
Turns raw source material (video transcripts, meeting notes, rough outlines) into polished blog posts in the author's own voice. The skill follows a phased workflow: intake, clarification, editorial planning, first draft, and revision — with quality gates at each step.
Drafts use five placeholder types with independent numbering per type: Screenshot, Code, Link, Fact, and Diagram. Code and Diagram placeholders include best-guess content (reconstructed code blocks and inline D2 diagram source) plus a VERIFY comment for the author to confirm. Diagrams earn their place when structure — architecture, request flow, state transitions — is the point; a screenshot of the real system wins when it can show the same thing with less abstraction.
Drafts are checked against 32 named AI writing anti-patterns, each with symptoms, examples, and alternatives (plus structural variants where applicable). The check runs in three passes:
Every rewrite is re-audited against all 32 patterns before it's considered fixed.
The anti-pattern list auto-updates from Wikipedia: Signs of AI writing at the start of each session to stay current as LLM writing patterns evolve.
The skill learns the author's voice through an interactive onboarding flow that analyzes
2-5 writing samples. Voice profile, bio template, product context, and example posts are
stored in ~/.claude/blog-writer-persona/ and read fresh each session. On first run, the
skill creates this directory (or lets you point it at a custom location like Google Drive
via symlink). After setup (or when new posts are added), you can optionally save the voice
profile to your global Claude Code user memory so it applies across all projects.
Blog series state (episode numbers, callbacks, open threads) is tracked across posts in
_blog-skill/series-tracker.md.
Install via Tessl:
tessl install jbaruch/blog-writerOn first use, the skill creates ~/.claude/blog-writer-persona/ and runs the setup flow
(or lets you symlink it to a custom location for backup). Clarification questions are asked
one at a time with numbered options — no question dumps. After that, just tell it what you
want to write about.
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
example-persona