frontier/skills/human-readable-docs/SKILL.md
Use when writing any documentation — API references, guides, feature overviews, changelogs, or README files — intended to be read by humans in raw markdown or rendered form.
npx skillsauth add jon23d/skillz human-readable-docsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Good documentation is scannable, active, and written for the reader's task — not the author's knowledge dump. These rules address the specific ways agents produce documentation that is technically correct but hard to read.
Lead with what the reader needs first. Order sections by the reader's journey, not by how the system is built. A reader implementing webhooks needs to know what payload they'll receive before they decide what to subscribe to.
Typical order for feature documentation:
Don't add an "Overview" section after an intro paragraph. If the first paragraph already explains what something is, a second section labeled "Overview" just repeats it. Say it once, say it well, move on.
Use the minimum heading depth needed.
Don't create ### subsections inside ## sections unless there are at least two of them. A lone subheading signals a structure problem — fold it into prose or promote it.
Write in second person, active voice, present tense. The reader is "you." The system is "we." Things happen now, not in a passive fog.
Avoid: "A delivery is considered failed if the endpoint returns a non-2xx status."
Prefer: "We consider a delivery failed if your endpoint returns a non-2xx status."
Avoid: "It is retried up to 3 times."
Prefer: "We retry failed deliveries up to 3 times."
Use imperative mood for instructions. Steps and requirements should tell the reader what to do, not describe what happens.
Keep paragraphs to 3–4 sentences maximum. Long paragraphs are skipped. If a paragraph runs longer, split it or convert it to a list.
Don't restate what the heading already says. If a section is titled "Retry behavior", don't open with "When a delivery fails, the system has retry behavior." Get directly to the substance.
Use bullet lists for 3+ parallel items. If you're writing "X, Y, and Z" in a sentence and all three are the same kind of thing, make them a list.
Pad all columns to uniform width.
Every cell must be padded to match the widest cell in its column. Bare |---|---| separators are not acceptable.
| Event | Description |
|------------------|------------------------------------------|
| `user.created` | A new user account was created. |
| `payment.failed` | A payment attempt failed. |
Don't use a table for one row.
Replace with inline prose: id (string, required) — The user's ID.
Drop columns that carry no information. Remove "Required" columns where every value is "Yes". State it in the heading or prose instead.
Keep description cells short. If a cell description exceeds ~80 characters, shorten it and move the detail to prose below the table.
Use TypeScript for all code examples. This codebase is TypeScript. Do not include examples in Python, JavaScript, or any other language.
One example per concept. One well-commented TypeScript example is better than two thin ones in different languages.
Make examples copy-paste ready. Examples should include imports, handle errors, and reflect real usage — not toy pseudocode.
Annotate the non-obvious. Add inline comments to explain why, not what. Skip comments that restate the code.
// Use timingSafeEqual to prevent timing attacks — do not use ===
const valid = crypto.timingSafeEqual(expected, actual);
|---|---| separators### with no sibling)development
Use when adding or modifying environment variable handling in TypeScript projects or monorepos — especially when using process.env directly, missing startup validation, sharing env schemas across packages, or encountering "undefined is not a string" errors at runtime from missing env vars.
testing
Use when creating a new skill, editing an existing skill, writing a SKILL.md, or verifying a skill works before deployment.
development
React UI design principles and conventions. Load when building or modifying any user interface or React components. Covers application type detection, visual standards, component design and structure, Mantine (business apps) and Tailwind (consumer apps), accessibility, responsiveness, state management, data fetching, testing, and in-app help patterns.
development
Use when setting up ESLint and/or Prettier in a TypeScript project, adding linting to an existing TypeScript codebase, or configuring typescript-eslint, eslint-config-prettier, or related packages.