From petems-skills
Transform brain dumps into blog posts in Peter's casual, self-deprecating British voice. Use when the user says "write a blog post," "draft a post," "write about [topic]," or provides scattered ideas that need shaping into a cohesive narrative.
How this skill is triggered — by the user, by Claude, or both
Slash command
/petems-skills:blog-post-writer-petemsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Based on the excellent content creation skills by Nick Nisi.
references/ai-slop-checklist.mdreferences/catch-22.mdreferences/comedians-set.mdreferences/compare-contrast.mdreferences/converging-ideas.mdreferences/existential-awakening.mdreferences/freytags-pyramid.mdreferences/in-medias-res.mdreferences/kafkaesque-labyrinth.mdreferences/kishotenketsu.mdreferences/nested-loops.mdreferences/post-mortem.mdreferences/post-template.mdreferences/problem-agitation-solution.mdreferences/progressive-disclosure.mdreferences/reverse-chronology.mdreferences/scqa.mdreferences/sisyphean-arc.mdreferences/socratic-path.mdreferences/story-circle.mdBased on the excellent content creation skills by Nick Nisi. Original: https://github.com/nicknisi/claude-plugins/tree/main/plugins/content This is my own personal take on that flow, tuned to my voice and preferences.
Transform unstructured brain dumps into blog posts that sound like Peter.
Accept whatever the user provides:
Don't require organisation. The mess is the input.
Clarify constraints (if not provided, ask about):
references/post-template.md for word count ranges)Load references/voice-tone.md as the baseline voice guide.
Then calibrate against recent writing:
https://petersouter.xyz/posts to find the 2-3 most recent postsThe static reference captures established patterns. The live fetch catches evolution. When they conflict, prefer the recent posts, as voice is a living thing. If the site cannot be fetched, rely on the static voice guide alone.
Key characteristics (read the full reference for details and examples):
Match the content to the best framework. Read the corresponding reference file before writing.
Quick-match shortcuts (covers ~80% of posts):
references/story-circle.md)references/progressive-disclosure.md)references/problem-agitation-solution.md)references/compare-contrast.md)references/post-mortem.md)references/scqa.md)references/the-sparkline.md)references/kafkaesque-labyrinth.md)Category decision tree (for the other 20%):
| Framework | Reference | One-liner |
|---|---|---|
| Story Circle | references/story-circle.md | 8-step hero's journey for personal transformation arcs |
| Three-Act | references/three-act.md | Classic setup/confrontation/resolution narrative spine |
| Freytag's Pyramid | references/freytags-pyramid.md | 5-phase dramatic arc with explicit climax mapping |
| The Metamorphosis | references/the-metamorphosis.md | Identity-level change, the author becomes someone different |
| Existential Awakening | references/existential-awakening.md | Profound realisation that shifts relationship to work |
| Framework | Reference | One-liner |
|---|---|---|
| In Medias Res | references/in-medias-res.md | Start in the middle of the action, backfill context |
| Reverse Chronology | references/reverse-chronology.md | Tell it backwards: outcome first, origin last |
| Nested Loops | references/nested-loops.md | Layer stories inside each other like Russian dolls |
| The Spiral | references/the-spiral.md | Revisit the same concept with deeper understanding each pass |
| The Petal | references/the-petal.md | Multiple stories radiating from a central theme |
| Framework | Reference | One-liner |
|---|---|---|
| Kishotenketsu | references/kishotenketsu.md | 4-act twist without conflict: recontextualise, don't confront |
| The Sparkline | references/the-sparkline.md | Oscillate between "what is" and "what could be" |
| The False Start | references/the-false-start.md | Begin with the wrong story, then restart with truth |
| Converging Ideas | references/converging-ideas.md | Unrelated threads that connect to a single insight |
| Catch-22 | references/catch-22.md | Paradox where the rules create an impossible situation |
| The Rashomon | references/the-rashomon.md | Same event from multiple contradictory perspectives |
| Framework | Reference | One-liner |
|---|---|---|
| SCQA | references/scqa.md | Situation-Complication-Question-Answer for logical problem-solving |
| Progressive Disclosure | references/progressive-disclosure.md | Simple-to-complex layering for teaching concepts |
| Compare & Contrast | references/compare-contrast.md | Structured evaluation of trade-offs between options |
| PAS | references/problem-agitation-solution.md | Punchy problem, pain, fix for short optimisation stories |
| Post-mortem | references/post-mortem.md | Incident retrospective with timeline and lessons |
| Socratic Path | references/socratic-path.md | Chain of questions leading to self-discovered conclusions |
| Framework | Reference | One-liner |
|---|---|---|
| Comedian's Set | references/comedians-set.md | Setup/punchline structure for myth-busting and reframes |
| Kafkaesque Labyrinth | references/kafkaesque-labyrinth.md | Systemic absurdity where the villain is the system itself |
| Sisyphean Arc | references/sisyphean-arc.md | Find meaning in repetitive work that never ends |
| Stranger's Report | references/strangers-report.md | Fresh-eyes outsider perspective on normalised strangeness |
| The Waiting | references/the-waiting.md | Something promised that never arrives, meaning from anticipation |
Not every post maps cleanly to one framework. Hybrid approaches are fine. Each framework's reference includes Combination Notes for pairing. Use a framework as a starting structure, not a straitjacket.
voice-tone.md and post-template.md are always loaded. Load only one framework reference in addition. Do not preload all twenty-seven.
Apply the chosen framework to the brain dump material:
If the content doesn't fit the framework cleanly, adapt. The framework is scaffolding, not a cage.
Apply voice characteristics:
Opening:
Body:
Technical content:
puppet apply, terraform plan, vault writeTone modulation:
Ending:
Check the post:
AI slop check:
Load references/ai-slop-checklist.md for the curated guidance and Peter-specific nuances
Fetch the current "words to watch" from Wikipedia by calling:
https://en.wikipedia.org/w/api.php?action=parse&page=Wikipedia:Signs_of_AI_writing&prop=wikitext&format=json
Extract the {{tmbox}} "Words to watch" lists and the AI vocabulary word list from the response. These evolve as AI writing patterns change, as newer models drop old tells and develop new ones.
Scan the draft for vocabulary clusters, formulaic transitions, superficial -ing phrases, and structural tells. One hit is normal; a pattern means the LLM was writing on autopilot instead of in Peter's voice.
If the API fetch fails, fall back to the static checklist alone.
Show the post to the user for feedback and iterate.
Revision strategy:
references/voice-tone.md before revising to recalibrateFormat posts using references/post-template.md as the structural template. This defines the frontmatter schema and file format.
For detailed voice do's and don'ts, see references/voice-tone.md.
So I finally got around to writing about the Puppet 7 migration. I know, I know,
I said I'd do this months ago. In my defence, the migration itself took longer
than expected (shocking, I realise).
Right, so here's the thing about Terraform state: nobody actually understands it.
I mean, we all pretend we do. But then you run `terraform plan` at 3am during an
incident and suddenly you're staring at 47 resources that want to be destroyed
and you're thinking "wait, what?"
Then it clicked.
The problem wasn't the config. The problem was that I'd been cargo-culting a
pattern from three jobs ago without ever questioning whether it actually made
sense here.
I'll be honest, I completely forgot to set the draft flag. So that half-finished
post about Vault was live for about six hours before anyone told me. Classic.
The fix was embarrassingly simple. One line in the `puppet.conf`:
`environment_timeout = unlimited`. That was it. Three days of debugging
for one line.
**DO THE DAMN THING.** Write the post. Submit the talk. Ship the PR. It doesn't
have to be perfect. It just has to exist.
references/voice-tone.md - Complete voice and tone guide. Read this first to capture Peter's style.references/post-template.md - Output format template with frontmatter schema and structural skeleton.references/ai-slop-checklist.md - AI writing tells to scan for during review. Adapted from Wikipedia's field guide.Narrative frameworks (read the one that matches the content. Do not preload all twenty-seven):
Journey & Transformation:
references/story-circle.md - 8-step hero's journey for personal transformation arcsreferences/three-act.md - Classic setup/confrontation/resolution narrative spinereferences/freytags-pyramid.md - 5-phase dramatic arc with explicit climax mappingreferences/the-metamorphosis.md - Identity-level change, the author becomes someone differentreferences/existential-awakening.md - Profound realisation that shifts relationship to workStructural Techniques:
references/in-medias-res.md - Start in the middle of the action, backfill contextreferences/reverse-chronology.md - Tell it backwards: outcome first, origin lastreferences/nested-loops.md - Layer stories inside each other like Russian dollsreferences/the-spiral.md - Revisit the same concept with deeper understanding each passreferences/the-petal.md - Multiple stories radiating from a central themeTension & Contrast:
references/kishotenketsu.md - 4-act twist without conflict: recontextualise, don't confrontreferences/the-sparkline.md - Oscillate between "what is" and "what could be"references/the-false-start.md - Begin with the wrong story, then restart with truthreferences/converging-ideas.md - Unrelated threads that connect to a single insightreferences/catch-22.md - Paradox where the rules create an impossible situationreferences/the-rashomon.md - Same event from multiple contradictory perspectivesAnalytical & Persuasive:
references/scqa.md - Situation-Complication-Question-Answer for logical problem-solvingreferences/progressive-disclosure.md - Simple-to-complex layering for teaching conceptsreferences/compare-contrast.md - Structured evaluation of trade-offs between optionsreferences/problem-agitation-solution.md - Punchy problem, pain, fix for short optimisation storiesreferences/post-mortem.md - Incident retrospective with timeline and lessonsreferences/socratic-path.md - Chain of questions leading to self-discovered conclusionsAtmospheric & Experimental:
references/comedians-set.md - Setup/punchline structure for myth-busting and reframesreferences/kafkaesque-labyrinth.md - Systemic absurdity where the villain is the system itselfreferences/sisyphean-arc.md - Find meaning in repetitive work that never endsreferences/strangers-report.md - Fresh-eyes outsider perspective on normalised strangenessreferences/the-waiting.md - Something promised that never arrives, meaning from anticipationUser provides brain dump:
thoughts on migrating puppet 4 to puppet 7
- we put it off for ages, kept saying "next quarter"
- finally got forced into it when puppet 4 went EOL
- the hiera 5 migration was the worst part
- broke everything in staging first (on purpose, kind of)
- took 3 months instead of the 3 weeks we estimated
- learned a ton about our own tech debt along the way
- would actually recommend doing it incrementally
- conclusion: just start, stop waiting for the perfect time
Process:
Sample output (opening paragraphs):
I'm going to sheepishly admit something: we said "next quarter" about the Puppet 7
migration for the better part of two years. Every planning session, someone would
bring it up, we'd all nod solemnly, and then we'd collectively decide that this
quarter was definitely not the right time.
Then Puppet 4 went EOL and suddenly "next quarter" became "right now, actually."
Here's the thing about forced migrations (and I say this as someone who's been
through more than I'd like to count): they're never as bad as the dread that
preceded them. They're also never as quick as your estimate says they'll be. We
said three weeks. It took three months. But those three months taught us more
about our own infrastructure than the previous two years of "next quarter" ever
did.
Notice: self-deprecating opening, parenthetical aside, specific timeline details, honest about the estimate being wrong, conversational British tone throughout.
npx claudepluginhub petems/petems-skills --plugin blog-post-writer-petemsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.