Help us improve
Share bugs, ideas, or general feedback.
From alexop-skills
Turn a topic into a structured blog-post draft for a developer audience, using The Good Docs Project templates as the structural backbone. Classifies the post intent (explainer, walkthrough, recipe, quickstart, debug story, release post, cheat sheet) via an internal index, fetches the matching Good Docs template (bundled locally from gitlab.com/tgdp/templates), then adapts it to blog voice (hook, narrative, takeaways, CTA). TRIGGER on: "good-docs-writer", "write a blog post about X", "draft a blog post on X", "blog post for X", or the explicit form "$good-docs-writer <intent> <topic>".
npx claudepluginhub alexanderop/skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/alexop-skills:good-docs-writerThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn a topic into a first-draft blog post that already has a solid structural spine (a Good Docs template) and a blog voice (hook, narrative, takeaways, CTA).
references/blog-voice.mdreferences/style-guide.mdreferences/template-index.mdreferences/templates.mdreferences/templates/LICENSEreferences/templates/README.mdreferences/templates/api-getting-started/guide.mdreferences/templates/api-getting-started/template.mdreferences/templates/concept/guide.mdreferences/templates/concept/template.mdreferences/templates/glossary/guide.mdreferences/templates/glossary/template.mdreferences/templates/how-to/guide.mdreferences/templates/how-to/template.mdreferences/templates/installation-guide/guide.mdreferences/templates/installation-guide/template.mdreferences/templates/quickstart/guide.mdreferences/templates/quickstart/template.mdreferences/templates/reference/guide.mdreferences/templates/reference/template.mdCreates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
Turn a topic into a first-draft blog post that already has a solid structural spine (a Good Docs template) and a blog voice (hook, narrative, takeaways, CTA).
Built on top of The Good Docs Project — templates fetched at runtime from
gitlab.com/tgdp/templates(MIT-0). All credit for the structural craft of the templates goes to that community; this skill is just the adapter.
The hardest part of a blog post is not the writing — it's deciding what shape the post should have. Good Docs templates already encode the right shape for each documentation intent. This skill maps blog-post intents to those templates, fetches the live template, and layers blog voice on top.
This is the blog-flavored counterpart to doc-generator (which produces neutral docs) and doc-improver (which improves existing rough markdown).
If the user used the explicit form ($good-docs-writer walkthrough adding auth to Astro), trust the intent and skip classification.
Otherwise, read references/template-index.md and walk the decision matrix top-to-bottom. Stop at the first row that matches.
If two rows fit equally — most commonly concept (explainer) vs. tutorial (walkthrough), or tutorial vs. how-to — call AskUserQuestion. Don't guess.
State the chosen intent and template back to the user in one sentence before generating, e.g. "Treating this as an explainer — using the Good Docs concept template as the spine."
If the topic is an opinion essay or personal narrative with no good template fit, tell the user and offer either a loose concept backbone or freeform.
The skill ships with a frozen snapshot of every supported Good Docs template under references/templates/. Use Read on the local files — do not WebFetch, the snapshot is the source of truth.
Read references/templates.md for the catalog and exact paths. For the chosen key, read:
references/templates/<key>/template.md — the scaffold to fill inreferences/templates/<key>/guide.md — explains what each section/placeholder meansAlso read references/writing-tips.md once per session if you need general voice/concision guidance. Only read the larger references/style-guide.md when verifying a specific style call (it's ~49 KB).
Do not reproduce template structure from memory. The bundled file is canonical — if you can't read it, stop and tell the user something is wrong with the install.
Two paths:
Glob / Grep / Read to collect concrete file paths, function names, code excerpts. For larger explorations, you can launch subagents — but most blog posts only need a focused scan, not parallel agents.Either way, ask the user once for: target audience (e.g. "Vue devs new to Pinia"), rough length, and any voice cues they want preserved (their existing posts, a tone they want to match). Skip if they already specified.
Walk the fetched template section by section:
{placeholder} with concrete content drawn from material gathered in step 3.Then layer blog voice using references/blog-voice.md:
Code snippets must be real — if the post is repo-tied, every snippet should be greppable in the repo. If general, mark sample code as illustrative.
adding-auth-to-astro.md).src/content/blog/ (Astro/most modern setups)content/blog/ (Nuxt/Hugo)posts/ (Jekyll/older blogs)_posts/ (Jekyll convention)blog/ (create if missing)After writing, print a short summary (≤ 10 lines):
The user will read the draft themselves — don't summarize the post content.
Read from references/templates/<key>/. If the file is missing, stop and tell the user the install is incomplete.AskUserQuestion for intent ties (concept vs. tutorial, tutorial vs. how-to) rather than guessing.$good-docs-writer explainer how Vue's reactivity proxy works
$good-docs-writer walkthrough adding Clerk auth to an Astro site
$good-docs-writer debug-story the trailing-slash 404 in production
write a blog post about Postgres advisory locks
draft a blog post on our migration from Webpack to Turbopack