From alemtuzlak-skills
Use when writing, editing, or organizing documentation, when planning what docs a feature needs, and whenever planning or implementing a new feature or change in a repo (docs ship with the code). Triggers on "write docs for X", "document this feature", "add a guide", "update the docs", "reorganize the docs", "plan feature X", "implement X", or /docs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/alemtuzlak-skills:docsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Write docs a real person wants to read. Short, plain, built around someone trying to do a real thing.
Write docs a real person wants to read. Short, plain, built around someone trying to do a real thing.
"Document feature X" is not the job. "Help someone do Y with X" is the job.
Work in two phases. First plan the story: who reads this, what they want, and how many pages it should be. Then write.
Docs ship with the code. Run this skill at three moments, not only when asked.
Before writing anything, find where docs live.
docs/ first, then documentation/, content/docs/, site/, website/docs/.If there is no page like the one you are about to write, read the closest one you can find and match it.
Do this before you write a word of content.
The page split comes out of this step. Do not skip it.
Do not force thousands of words into one page. Long pages hide the answer.
When a topic has several angles, give each its own short page and link them. A reader lands on the overview, then clicks into the exact thing they need.
Example. A feature for tool interrupts:
Bad: one page
interrupts.md (overview + simple case + many interrupts + custom, all crammed in)
Good: a small set of linked pages
interrupts/index.md what it is, when to use it, links out
interrupts/basic.md one interrupt, start to finish
interrupts/multiple.md several interrupts in a flow
interrupts/custom.md build your own
Each page is short and does one thing. The overview stitches them into a story.
Legibility is the goal, above everything else.
Every page opens with the problem the reader came for, in their own words, before any API. Name the situation they are stuck in. Then say in a sentence or two how the feature solves it. Only after that do you go into the technical parts and the code.
A reader who sees the problem first knows in seconds whether they are on the right page. A reader who hits an API signature first has to reverse-engineer what it is even for.
Bad:
Call useInterrupts() and pass a resolver. The resolver runs once per
pending item inside a transaction...
Good:
Some tool calls shouldn't run without a human saying yes: moving money,
deleting data. An interrupt pauses the run for that decision, then picks up
where it left off. Here is how to gate a tool behind an approval:
[code]
The order for a guide is problem, one-line fix, then the how (steps, snippets, API). Keep the problem to a couple of sentences, not a background essay. The code shows how it is solved, so do not narrate the solution in prose first.
Do not explain in four paragraphs what one sentence and a code block can show. Readers grasp a diff or a snippet faster than prose.
Bad:
Three paragraphs describing how the config object accepts a
middleware array, what each slot does, and how ordering works.
Good:
Add your middleware to the `middleware` array. Order runs top to bottom:
const app = createApp({
middleware: [auth, logging],
})
One good runnable example beats a page of description. Every code sample must run when copied, not need imagination to fill gaps.
Problem, fix, steps, done.
Reference pages (props, types, signatures) stay scannable and link back to the guide that shows them in use.
Docs describe what exists now. The reader never saw the old design, the earlier name, the draft PR, or the API you replaced along the way. Do not make them read about it.
Never justify the current API by comparing it to a version that did not ship. A line like "instead of useAssistant, this uses usePlugin, which makes more sense because..." is noise to someone who never knew useAssistant existed. Cut it and just describe usePlugin.
Bad:
We renamed useAssistant to usePlugin and moved the tools onto it,
so instead of calling assistant.addTool you now use plugin.tools.
Good:
Register tools on the plugin with plugin.tools:
const plugin = usePlugin({ tools: [search] })
Ban this framing from the output: "instead of X", "we renamed", "previously called", "this replaces the old", "unlike the earlier", and any transitional name that never reached a release.
The one exception is a real migration. If users had X in a shipped, public release and you are moving them to Y, a short "Migrating from X" note is worth writing, because those readers actually used X. A name that only lived in a branch or a draft is not that. When unsure whether an old name shipped, leave it out.
Never use these. Ever.
— and the shorter –. Rewrite the sentence with a comma, colon, period, or parentheses instead.× or ·.If you catch yourself reaching for one of these, stop and rewrite the sentence in plain words.
| You catch yourself | Do instead |
|---|---|
| Opening with an API signature or config before the problem | Name the problem the reader has first, then the one-line fix, then the code. |
| Writing three paragraphs before any code | Cut to one sentence plus a snippet. Show it. |
| Cramming every angle into one page | Split into short linked pages, one job each. |
| "In this guide we will explore..." | Delete it. Start with the reader's state and goal. |
| "Let me describe what this component does" | Describe what the reader does with it. |
| Reaching for an em dash | Rewrite with a comma, period, or parentheses. |
| Using a big word (utilize, leverage, facilitate) | Swap in the plain word. |
| One page for everyone | Name the readers. Give each a path or a page. |
| Posting a snippet "they can adapt" | Make it complete and runnable. |
| Guessing where docs go | Find the docs folder, or ask. Read neighbors first. |
| Calling a feature done with no doc change | If behavior changed, docs change too. Write them before you finish. |
| Planning a feature without a doc-impact list | Add the list of new and changed docs to the plan. |
| "Unlike the old X, this now..." / "we renamed X to Y" | The reader never saw X. Describe only what ships now. |
| Inventing a component the site lacks | Use only components the site already has. |
npx claudepluginhub alemtuzlak/skills --plugin self-improveWrites, rewrites, reviews, and organizes developer-facing documentation for web software projects. Use for READMEs, quickstarts, tutorials, how-to guides, API references, and more.
Creates documentation that developers actually read. Covers README craft, API docs, tutorials, and internal docs. Treats docs as a product requiring UX, marketing, and user empathy.
Drafts READMEs, API docs, tutorials, release notes, and reviews technical docs for clarity and structure. Activates on docs/ .md files and READMEs.