agent-instructions
Use when writing project instructions for a coding agent (CLAUDE.md, AGENTS.md, or equivalent). Covers what belongs in them, what…
Use when writing developer-facing documentation. Covers the four documentation types and choosing between them, writing a README, API reference, and tutorials that work. Trigger on "write a readme for this repo", "document this api", "write a getting started guide", "nobody can
Claude Code
$ npx -y skills add nimadorostkar/Claude-Skills-collection --skill technical-documentation --agent claude-code
Codex
$ npx skills add nimadorostkar/Claude-Skills-collection --skill technical-documentation -a codex -y
Cursor
$ npx skills add nimadorostkar/Claude-Skills-collection --skill technical-documentation -a cursor -y
Gemini CLI
$ npx skills add nimadorostkar/Claude-Skills-collection --skill technical-documentation -a gemini-cli -y
GitHub Copilot
$ npx skills add nimadorostkar/Claude-Skills-collection --skill technical-documentation -a github-copilot -y
OpenCode
$ npx skills add nimadorostkar/Claude-Skills-collection --skill technical-documentation -a opencode -y
Windsurf
$ npx skills add nimadorostkar/Claude-Skills-collection --skill technical-documentation -a windsurf -y
name: technical-documentation description: Use when writing developer-facing documentation. Covers the four documentation types and choosing between them, writing a README, API reference, and tutorials that work. Trigger on "write a readme for this repo", "document this api", "write a getting started guide", "nobody can follow our docs". Do not use for release notes — see the changelog skill; for CLAUDE.md or AGENTS.md, see the agent-instructions skill. metadata: category: writing version: 1.0.0 tags: [documentation, readme, api-docs, tutorials, technical-writing]
Write documentation that answers the question the reader actually has. Most documentation fails because it mixes four incompatible purposes into one document and serves none of them.
1. **Identify the reader's question** — "How do I start?" (tutorial), "How do I do X?" (how-to), "What are the parameters?" (reference), "Why is it built this way?" (explanation). These are four different documents. Mixing them is why documentation is unusable. 2. **Write the README to a first success** — Install, minimal working example, then links. A reader should be running something within two minutes. Everything else is a link. 3. **Make the examples runnable** — Copy, paste, and it works. An example with an elided `...` or an undefined variable is a broken promise. 4. **Generate the reference** — From the code, from the types, from the OpenAPI spec. Hand-written reference documentation is wrong within a month. 5. **Test the tutorial on a stranger** — Someone who has never seen the project. Every place they get stuck is a defect in the document.
**A README that gets to a working state:**
# rateguard
Rate limiting for FastAPI, backed by Redis. Token bucket and sliding window,
with per-user and per-endpoint limits.
## Install
pip install rateguard
## Use
from fastapi import FastAPI
from rateguard import RateLimiter, limit
app = FastAPI()
limiter = RateLimiter(redis_url="redis://localhost:6379")
@app.get("/search")
@limit(limiter, "20/minute", key="ip")
async def search(q: str):
return {"results": []}
Requests beyond the limit receive a 429 with a `Retry-After` header.
## Next
- [Per-user limits](docs/how-to/per-user.md)
- [Choosing an algorithm](docs/explanation/algorithms.md) — token bucket vs sliding window
- [API reference](docs/reference.md)
- [Deploying behind a proxy](docs/how-to/proxies.md) — you must configure this,
or every request will appear to come from the same IPThe reader is running rate-limited code in under a minute. The proxy warning is placed where it will actually be seen, because it is the mistake everyone makes.
**The four types, kept apart:**
docs/
tutorial/
getting-started.md "Take me from nothing to a working rate limiter."
Learning-oriented. One path. No options. No alternatives.
how-to/
per-user-limits.md "I need to limit by user ID, not IP."
proxies.md "I'm behind Cloudflare and all IPs are the same."
Task-oriented. Assumes competence. Solves one problem.
reference/
api.md "What are the parameters of `limit()`?"
Information-oriented. Complete. Dry. Generated.
explanation/
algorithms.md "Why token bucket rather than a fixed window?"
Understanding-oriented. Discusses trade-offs. No steps.A single "Documentation" page containing all four is the default, and it is why most documentation is unusable: the tutorial reader drowns in options and the reference reader wades through narrative.
A curated library of 137 production-grade skills for Claude and other AI coding agents. Every skill follows one structure, speaks with one voice, and earns its place by changing what the agent does.
Use when writing project instructions for a coding agent (CLAUDE.md, AGENTS.md, or equivalent). Covers what belongs in them, what…
Use when an agent needs state that survives a session or a context compaction. Covers what to persist, file-based memory,…
Use when automating agent behavior with lifecycle hooks. Covers hook events, deterministic enforcement of rules the model should…
Use when packaging skills, commands, hooks, and MCP servers into a distributable plugin. Covers manifest structure, bundling,…
Use when writing a new skill for an AI agent. Covers scoping, description writing for reliable triggering, progressive…
Use when reviewing or improving an existing agent skill. Covers triggering accuracy, content quality, redundancy with the base…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.