Writes a long technical manual that explains one subject at one pinned version, from its purpose to each request and response. Every listing comes from an offline capture, every claim traces to a ranked source, and an audit must report TOTAL 0. Use it for "write a manual", "write a 101 manual for <subject>", "manual.json", "add a manual section", "build a capture kit", "audit the manual", or "pin a spec version and document it".
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
A manual explains one subject, such as a protocol, a file format, or a runtime, at one exact version. A lesson teaches a concept and moves on. A manual stays with one system until the reader can predict what it does in a case the manual never showed.
This skill gives the full method. It covers research, ranked sources, and a register of conflicts between sources. It also covers an offline capture kit, a fixed section shape, prose limits, and an audit that must report TOTAL 0. It works in any repository. Inside the AI Engineering from Scratch repo, the tooling already exists, and manuals/a2a-101/ is the worked example.
| Item | Target |
|---|---|
| pages | 60 to 100 |
| parts | 6 to 8, plus one reference part |
| sections | about 25 |
| figures | 30 to 40 |
outcomes in manual.json | at least 3 |
| takeaways per section | exactly 1 block, with at least 2 items |
The worked example has 7 parts, 28 sections, 7 reference sections, and 31 figures.
research/sources/, with its license file beside it.research/. See references/research-and-sources.md.D1, D2, ...) as you find it.capture/out/. See references/capture-kit.md.manual.json. Fill the pin, outcomes, palette, ranked sources, quote sources, capture commands, and parts. See references/manual-json.md.blueprint-figure skill.TOTAL 0. See references/audit.md.Build the table of contents from the names the specification uses, then decide what each part proves.
front.md, titled "How to read this manual".Each section title names one object, operation, binding, header, error, or extension from the specification. "CancelTask and terminal states" is a good title. "State machines" is not, because no specification defines an object with that name. Put a general idea in the section about the object that has it.
front.md covers these topics, in this order:
parts block.palette block.Every section file follows this order. Reference sections and the front matter need a thesis and a sources line, but no outcome sentence and no takeaways.
# Title, with the name the specification uses.> Thesis, directly under the title: one sentence of at most 30 words, the claim the section proves.## subsections, definitions that start with **Term:**, figures, listings, rules, and tables.takeaways block, with two or more actions.Sources: and names every file the section was written from.A complete template is in references/section-template.md.
| Fence | Holds | Required keys |
|---|---|---|
figure | one figure, by id | id, kind, title, claim, caption |
listing | lines cut from one capture file | title, source, lang, optional note, then --- and the lines |
rule | one quote, checked word for word | label, source, then --- and the quote |
takeaways | the actions for the section | two or more - item lines |
parts, palette, figure-index, contents | generated tables | no body |
Every other fence needs a language tag. A json, jsonl, http, or sse fence must be a listing instead.
Use only these constructs, so every edition renders the same way:
# title on the first line, and the thesis quote under it.## and ### headings, each with an optional {#anchor}.- or 1. lists.{{key ref}} citations, [text](#s-5-3) cross-references, and repository links.Raw HTML, horizontal rules, nested lists, #### headings, and other quote blocks fail the build. Section anchors are s- plus the id with dots as hyphens, such as s-1-4 or s-r-2.
capture/out/. Never type a request or a response from memory.… on its own line or inside a line.note.source, so the reader can open the full record.sources by authority. When two sources disagree, the higher one wins and the text says so."quoted text" {{spec §3.1.5}}.quoteSources. Map it to a vendored file, or to null when the source cannot be vendored.null key, such as an SDK. Never quote them.| Limit | Value |
|---|---|
| words in a sentence | at most 25 |
| words in a thesis | at most 30, one sentence |
| words in a figure claim | at most 28, one sentence ending with a period |
| words in a takeaway | at most 20, an instruction in imperative mood |
| sentences in a paragraph | at most 6 |
Write in the second person, about the mechanism. Define a term once, use it the same way everywhere, and add it to the glossary. Quotes, code, and citations are exempt from the limits.
Use no semicolons, no contractions, and no em or en dashes. Never write the word may. Use "can", or state the condition. Avoid the banned words in references/prose-rules.md.
Use the sibling blueprint-figure skill to draw the figures. Every figure in a manual must also meet these rules:
sequence, structure, flow, comparison, timeline, tree, state, decision, layers.rose is failure, grey is outside the subject, amber is lifecycle, teal is durable state.viewBox="0 0 640 H" with H at most 760, text at least 11 units, and a file of at most 40 KB.<title> and a <desc> of at least 40 characters on the root, which has role="img".id in the SVG with the figure id, because all figures share one page.var(--m-<token>, #hex), with the light value of the token as the hex.| Arrow style | Means |
|---|---|
| solid ink | a call or request |
| dashed ink | a reply |
| solid teal | a durable write |
| dashed amber | a state change |
| solid plum | a model call or compute |
| dashed olive | an effect outside the system |
| dotted indigo | a stream or an event |
| dashed rose | a failure |
Inside the AI Engineering from Scratch repo, run these from the repository root:
node --test site/test_manuals.js
node site/build-manuals.js
node manuals/_shared/figkit.js build manuals/<id>
node scripts/audit_manuals.js --manual <id>Outside the repo, build your own audit from references/audit.md. It lists each check, so you can write it as one script. Fix the text, never the limit. A manual does not merge until the audit prints TOTAL 0.
feat(manual/<id>): <section slug>.site/manual-<id>.html, site/manuals.html, and site/manuals-data.js.status at draft until the manual is complete. A ready manual needs a README.md.pin in manual.json.manual.json validates, and pin has subject, version, source, commit, date, and verified.Sources: line.json, jsonl, http, and sse block is a listing with a capture source.TOTAL 0.feat(manual/<id>): <section slug>.manual.json, with a starter file.manuals/AUTHORING.md, manuals/manual.schema.json, and manuals/a2a-101/.rohitg00/ai-engineering-from-scratch
3f9715c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.