Documentation tooling for TypeScript projects — JSDoc comment patterns that surface in IDE tooltips, TypeDoc configuration for generating API documentation sites, Architectural Decision Record (ADR) templates for recording design decisions, and framework-specific documentation patterns (NestJS, React, Angular/Compodoc). Use when writing JSDoc for a public API, setting up TypeDoc to generate documentation from source, recording why a technical decision was made, or documenting a framework-specific pattern.
67
81%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Documentation tooling and conventions for TypeScript codebases: JSDoc, TypeDoc, ADRs, and framework-specific patterns.
Write documentation that a compiler-checked type can't already express — a JSDoc @param restating a parameter's type the signature already shows is noise; a JSDoc comment explaining why a parameter exists, what invariant it must satisfy, or what happens at its edge cases earns its place. Treat an ADR as a record for a future reader who wasn't in the room, not a justification written for the reviewer who is: state the decision, the alternatives considered, and the consequences accepted, in that order. Generated documentation (TypeDoc output) is only as good as the JSDoc it's generated from — investing in TypeDoc configuration without investing in the comments it reads from produces a well-formatted site with nothing useful in it.
Use this skill when:
typescript-practices skill for the workflow itself.typescript-type-system skill for the mechanics; this skill covers how to document the result.Do not use this skill for deciding what a type or pattern should do — it covers documenting a decision or API, not making one. Do not use it as a substitute for actually running npx typedoc and checking the generated output — a JSDoc comment that looks right can still render incorrectly (a malformed @example block, a broken {@link}).
npx typedoc --out docs src/index.tsWHY: a comment that duplicates what the signature already says adds reading overhead with no new information, and drifts out of sync with the signature over time.
BAD:
/**
* @param name - a string
* @returns a string
*/
function greet(name: string): string { return `Hello, ${name}`; }GOOD:
/**
* Formats a greeting for display. Falls back to "Guest" if `name` is empty,
* since an empty greeting would render as blank in the header component.
*/
function greet(name: string): string {
return `Hello, ${name || "Guest"}`;
}WHY: an ADR's value is to a future reader deciding whether the reasoning still holds; a one-sided justification omits the alternatives and trade-offs that reader needs to judge that.
BAD: "We chose Zod because it's good." (no alternatives, no consequences, no context)
GOOD: A record with Context (what problem existed), Decision (what was chosen), Alternatives Considered (what else, and why not), and Consequences (what this commits the codebase to).
WHY: TypeDoc renders whatever comments exist; a well-configured generator over undocumented source produces a polished site of empty pages.
BAD: Running npx typedoc --out docs src/index.ts as the first and only documentation step on undocumented code.
GOOD: Add JSDoc to the public API surface first, then configure and run TypeDoc to publish it.
| File | Covers |
|---|---|
references/jsdoc-patterns.md | JSDoc comment best practices and patterns |
references/typedoc-config.md | TypeDoc configuration and setup |
references/adr-templates.md | Architectural Decision Record templates |
references/framework-docs.md | Framework-specific documentation patterns (NestJS, React, Angular/Compodoc) |
a1083f4
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.