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
This file defines the interactive onboarding that runs when persona/voice.md is empty
or missing. Follow these steps in order. The goal: generate persona files that let the
blog-writer skill match the author's actual voice.
Path note: persona/ means ~/.claude/blog-writer-persona/ (see SKILL.md "Persona
Directory"). All file reads and writes in this flow use that absolute path.
Tell the author:
Welcome to the blog-writer skill!
Before we write anything, I need to learn your voice. I'll ask a few questions, then analyze some of your existing writing to build a voice profile. This takes about 5 minutes and only happens once.
You can see an example of a completed persona in
example-persona/if you want to know what we're building toward.
Ask these one at a time, waiting for each answer before proceeding:
Question 1:
How should you be credited in the author bio?
- Your full name (e.g., "Jane Smith")
- A handle or pen name
- Something else (type it out)
Question 2:
What's your current role? (This is optional — skip if you're writing independently.)
- [Guess based on any context you have] ← my guess
- A different role (type it out)
- Skip — I'm writing independently
Question 3:
Any previous role or experience to mention for credibility? (Optional)
- [Guess if you have context] ← my guess
- Something else (type it out)
- Skip — not needed
Record the answers. These feed into the bio template later.
Ask for 2-5 writing samples. These are the foundation of the voice analysis. The more representative the samples, the better the voice profile.
Accepted formats:
Tell the author:
I need 2-5 samples of your writing. These should be posts or articles that sound like YOU — your natural voice, not corporate ghostwriting. Blog posts, newsletter issues, conference talk write-ups all work. The more "you" they sound, the better I can learn your voice.
Give me URLs, paste text, or point me to local files.
Fetch/read all samples before proceeding.
Analyze the collected samples to identify patterns across these dimensions:
Catalog the specific devices the author actually uses, with examples pulled from their writing. Common ones to look for:
For each device found, include 1-2 direct quotes from the samples.
persona/voice.mdUsing the analysis from Step 4, generate persona/voice.md with this structure:
# Voice Profile: [Author Name]
## The Voice in One Paragraph
[Synthesized description of the author's voice — what makes them sound like them]
## Rhetorical Devices That Work
[Each device as a subsection with description and quoted examples from their writing]
## Cultural Reference Style
[Era, domains, frequency, approach]
## Recurring Characters
[Named collaborators, foils, or recurring figures — if any]
## Voice Consistency Notes
[How the voice behaves in technical sections, whether it changes register, etc.]Present the generated file to the author for review. Ask:
Here's the voice profile I built from your writing samples. Read through it — does this sound like you? Anything missing, wrong, or overemphasized?
Apply their feedback, then write the final version to persona/voice.md.
persona/bio.mdUsing the basic info from Step 2, ask one question at a time:
Do you want a rotating kicker at the end of your bio? That's a final sentence that changes per post — usually a dry joke or callback to the post's content.
Example: "[Name] is a [Role] at [Company]. Previously [career context]. [Dry kicker that connects to this specific post.]"
- Yes — rotating kicker per post ← my guess (it adds personality)
- No — fixed bio every time
- Not sure — show me examples of both
Generate persona/bio.md with:
# Author Bio: [Author Name]
## Bio Schema
[The template with variable parts marked]
## Examples
[1-2 example bios if available from the writing samples, or generate examples
based on the template and the author's info]
## Kicker Notes
[How the kicker should work — rotating or fixed, tone guidance]Write to persona/bio.md.
Ask:
Do you write about a specific product or platform?
- Yes — I write about a specific product ← let me set up accuracy checks
- No — I write about general topics (skip this step)
If yes, ask follow-up questions one at a time:
What's the product name?
- [Guess if you have context] ← my guess
- Something else (type it out)
Where are the docs?
- [Guess URL if you have context] ← my guess
- A different URL (type it out)
- I'll provide a list of key pages
Any key concepts or terminology the blog must get right?
- Just use what's in the docs
- Let me list some specific terms (type them out)
Generate persona/product.md with the same structure as example-persona/product.md:
If no:
Leave persona/product.md empty. The process phases will skip product accuracy checks
automatically.
persona/examples.mdWrite the sample URLs/references from Step 3 to persona/examples.md:
# Example Posts: [Author Name]
The following posts define the canonical tone. Fetch them during Phase 0 to calibrate
voice when writing in a series or when the tone needs recalibration.
## [Post title or description]
URL: [url]
Key patterns: [1-line note about what this sample demonstrates about the voice]Tell the author:
Setup complete! Your persona files are ready in
~/.claude/blog-writer-persona/:
voice.md— Your voice profilebio.md— Your bio templateproduct.md— [Product context / Skipped]examples.md— Your reference postsYou can edit any of these files directly at any time. The skill reads them fresh each session. If you ever want to move them (e.g., to Google Drive for backup), move the directory and create a symlink:
ln -s /your/new/path ~/.claude/blog-writer-persona
Then ask the global voice question (see Step 10).
After the author answers, tell them:
Ready to write a blog post? Just tell me what you're working on.
Proceed to the normal blog writing flow (back to SKILL.md).
Ask this every time the persona is updated — after the initial setup (Step 9) AND
after new blog posts are added to persona/examples.md.
Want me to use this voice profile as my default voice when talking to you across all projects? I can save it to your global Claude Code user memory so every conversation picks it up automatically.
- Yes — make this my global voice
- No — only use it for blog writing
- Not sure — remind me next time
If yes: Write a voice summary to the # Voice section of ~/.claude/CLAUDE.md
(create the file or update the section if it already exists). Include the key voice
characteristics, rhetorical devices, and tone notes from persona/voice.md — enough
for any Claude Code session to adopt the voice without access to the persona files.
~/.claude/CLAUDE.md is read by every Claude Code conversation globally.
If no: Do nothing. The voice stays local to the blog-writer skill.
If not sure: Do nothing now, but ask again next time the persona is updated.
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
example-persona