From ant-personal
End-to-end blog creation workflow: topic exploration, guided questioning, Obsidian vault research, voice-matched drafting, automated review, user feedback for voice skill improvement, and final polish. Use this skill whenever the user wants to write a blog post, draft a blog, create blog content, write a technical blog, write a company blog, brainstorm a blog topic, or mentions 'blog' in the context of content creation. Also triggers on: 'write a post about', 'draft an article about', 'I want to blog about', 'help me write about [topic] for the website', 'create content for the blog', or any request that involves researching a topic and producing a publishable written piece. Use this even for partial blog tasks like 'help me outline a blog post' or 'review my blog draft'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ant-personal:blog-creatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A multi-phase workflow for creating high-quality, voice-matched blog posts informed by the user's own knowledge base. This skill researches the user's Obsidian vault for relevant source material, drafts in the user's authentic voice, performs rigorous self-review, and uses feedback to improve both the blog and the user's Voice Skill over time.
A multi-phase workflow for creating high-quality, voice-matched blog posts informed by the user's own knowledge base. This skill researches the user's Obsidian vault for relevant source material, drafts in the user's authentic voice, performs rigorous self-review, and uses feedback to improve both the blog and the user's Voice Skill over time.
The workflow has nine phases. Move through them in order, but be responsive to the user jumping ahead or going back. The phases are:
The user provides a topic. Your job is not to collect requirements like a form. You are an opinionated editor. Present specific angles and push the user toward the most interesting one.
Use AskUserQuestion with 3-4 questions. The critical difference from a generic questionnaire: you suggest specific angles and let the user react, rather than asking open-ended questions. Most writers know what they don't want better than what they do want. Give them something to push back against.
Present 2-3 angles with opinions. Don't just list options neutrally. Lead with the one you think is strongest and say why. Example:
I'd suggest taking the "here's what I learned building this" angle rather than a feature walkthrough. Your narrative blogs (like the MM-Ready origin story) consistently perform because they're honest about mistakes and surprises. The feature walkthrough is safer but less distinctive. Thoughts?
Ask about the reader's takeaway, not the reader's demographic. "What should someone remember 24 hours later?" is more useful than "who is the audience?" The audience question matters, but it's secondary to the takeaway.
Probe for the emotional core. Every good blog has a moment of genuine feeling: surprise, frustration, pride, uncertainty. Ask what that moment is for this topic. If the user doesn't have one yet, that's a signal the angle might need work.
Confirm the direction with a 3-4 sentence synthesis before moving on. The synthesis should capture: the angle, the takeaway, the tone, and the emotional core.
Research the user's Obsidian vault, local project files, and git history for material that can inform the blog.
Search the vault using mcp__obsidian-mcp-tools__search_vault_smart. Do not use folder filters. The vault's folder structure may not match what you'd expect. Let the semantic search work across the entire vault.
Run 3-5 searches with different query formulations:
For each search, set filter.limit to 10. No folder filters.
When results come back, read the most promising files using mcp__obsidian-mcp-tools__get_vault_file to extract:
If the blog topic involves a specific project or codebase:
git log --oneline -20 and git log --all --oneline --grep="keyword" in relevant repos to understand recent changes, deliberate removals, and terminology shifts. If the user has been actively revising a project, the git history reveals what they're intentionally moving toward or away from. This is critical for avoiding terminology the user is deliberately phasing out.Present a brief research summary to the user:
Confirm the user is happy with the research base before proceeding.
Based on the creative direction and research, propose a blog structure.
Determine the appropriate length from the topic complexity and research depth:
State your recommendation and reasoning. Example: "This is a technical walkthrough with code examples, so I'd target ~1800 words. The code blocks add visual length without adding reading time, so it'll feel shorter than it is."
Present the outline as a sequence of sections with one-sentence descriptions of what each section does narratively. Not just topic labels. Example:
- Open with the problem — Most developers discover they need distributed Postgres after they've already built on single-node. Start there.
- Introduce Spock as the answer — Not as a feature list, but as the thing that lets you keep your existing schema and just... replicate it.
- Walk through the setup — Concrete steps, real CLI commands, actual output.
- Show conflict resolution — This is where distributed gets interesting. Use the e-commerce cart example from the docs.
- Close with what's next — Where to go from here, link to docs, mention Cloud option.
For any technology, tool, or concept mentioned in the outline that isn't universally known by the target audience, flag it and plan a brief "what is it" explanation. Not a paragraph, just a sentence. Example: if the blog mentions Codespaces and the audience includes developers who might not use GitHub, plan for a one-liner like "GitHub Codespaces gives you a full dev environment in your browser, with a generous free tier of compute hours."
Confirm the outline and length with the user before drafting.
Before writing, read the user's Voice Skill. Check for an ant-voice-writer skill (or similar voice skill) in the available skills list. If found, read the full SKILL.md and any referenced pattern files. The voice skill is the authority on how the user writes. Follow it closely.
Key voice principles to internalize (these are drawn from the ant-voice-writer skill, but always defer to whatever the current voice skill actually says):
Write the full blog in a single pass, following the confirmed outline. As you write:
Save the draft as a markdown file in the output directory.
After drafting, perform a thorough self-review. Read the entire blog as a critical editor. Check every item on the review checklist.
For the full review checklist, see references/review-checklist.md.
AI Slop Detection:
Performative Writing Filter:
Cross-Blog Phrase Repetition:
Em-dash Check:
One-Sentence Paragraph Check:
Sentence Rhythm Check (this is where AI writing most commonly fails):
Technical Accuracy:
Readability:
Authorial Intent (for existing draft reviews):
Voice Consistency:
Apply all fixes from the review directly to the draft. Do not present a list of issues. Fix them. Then note what you changed in a brief summary for the user.
Blog posts benefit from visual breaks. The user's narrative-style blogs in particular use images (especially meme GIFs from nerd culture) to punctuate moments of humor, irony, or dramatic reversal.
Read through the finalized-so-far draft and identify 3-6 natural image placement points. For each one, provide:
The user's published blogs (e.g., "MM-Ready: An Origin Story") follow a specific image strategy. Two types of images serve two different functions:
Meme GIFs — Punctuate Emotional Beats These go at narrative turning points, never as decoration. The pattern:
The memes should come from nerd culture the author actually watches: Red Dwarf, Blackadder, sci-fi/fantasy, classic internet culture. Not generic stock-photo humor.
Code/Terminal Screenshots — Punctuate Technical Proof These go where the blog makes a technical claim and needs to show, not tell:
General Rhythm: In a 2000-word narrative blog, aim for 4-6 images total. Roughly one every 300-400 words. Alternate between meme and technical as the blog alternates between narrative and proof. Never stack two images back-to-back without substantial prose between them.
Present image suggestions as markers in the draft:
<!-- IMAGE SUGGESTION: [meme/GIF] After "There was just one tiny problem."
Tone: comedic understatement for an impending disaster
Search: "excellent plan sir" Red Dwarf Kryten, OR Baldrick "cunning plan" Blackadder, OR similar "overconfident plan goes wrong" reaction GIF
-->
The user will source and place the actual images. Your job is to identify the moments and suggest the right tone.
This phase serves two purposes: improving the current blog and improving the user's Voice Skill for future use.
Select 3-5 passages from the blog that you are least confident about voice-wise. These should be sentences or short paragraphs where:
For each passage, present it to the user and ask: "How would you say this, in your own words?"
Use AskUserQuestion for this, but frame each one as an open-ended rewrite request. For example:
Here's a sentence from the draft: "Spock handles conflict resolution automatically, which means you don't need to write custom logic for most common scenarios."
How would you say this? Feel free to rewrite it entirely, tweak a few words, or tell me it's fine as-is.
When the user rewrites a passage:
If the user says a passage is fine, that's useful data too. It means the skill got that voice pattern right.
For detailed guidance on extracting voice patterns from feedback, see references/voice-feedback-guide.md.
After incorporating feedback, do another full pass using the same review checklist from Phase 5. This time, pay special attention to:
Apply all fixes. The blog should now be in final-draft quality.
Save the final blog as a markdown file. The filename should be descriptive: blog-[topic-slug].md (e.g., blog-pgedge-mcp-server-setup.md).
Present it to the user with a brief note on:
Based on the voice feedback collected in Phase 7, prepare updates to the user's Voice Skill:
Copy the existing voice skill to a temporary working location. The installed skill may be read-only. Copy the full skill directory (SKILL.md + all reference files) to /tmp/ant-voice-writer/.
Apply voice learnings. Review each piece of feedback from Phase 7 and determine what, if anything, should be added to the voice skill. Types of updates:
Be conservative. Only add patterns that showed up in multiple feedback instances or that represent a clear, strong preference. A single word swap is not a pattern. Three similar rewrites that all add concrete examples where the draft was abstract is a pattern.
Package the updated skill. Use the skill-creator packaging script:
python -m scripts.package_skill /tmp/ant-voice-writer/
from the skill-creator directory.
Present the package to the user with a summary of what changed and why. Let them decide whether to install it.
If the user already has a draft they want improved, skip Phases 1-3. Start with a deep read of the draft to understand the author's intent, narrative arc, and emotional core. Then do a research pass (Phase 2) focused on: (a) verifying technical claims, (b) checking git history for deliberate terminology changes, and (c) finding previous blog posts to avoid phrase repetition. Then proceed to Phase 5 (First Review) onward.
The most important thing when working with an existing draft: respect the author's intent. Read for what they're trying to say, not just what they said. Do not reframe their experiences or motivations. If they describe something as "a forcing function for something I intended to do," that's a deliberate narrative choice. Don't change it to "I didn't know my own product."
Stop after Phase 3. Deliver the outline and research summary. Offer to continue to drafting when they're ready.
Respect it. Move from Phase 6 directly to Phase 8, and skip the Voice Skill update in Phase 9. The blog will still be good; you just won't improve the voice skill this round.
If there's no voice skill available, write in a professional, direct tone. During the feedback phase, note that you're collecting voice data that could be used to create a voice skill in the future. Offer to create one from the feedback collected.
If the Obsidian MCP tools are unavailable, skip the vault search portion of Phase 2. Use web search and the user's local files as research sources instead. Flag this limitation to the user.
Creates, edits, and verifies skills using a test-driven development approach with pressure scenarios and subagents.
npx claudepluginhub antthelimey/ant-personal --plugin ant-personal