agentleFS
kriegcloudkriegcloud/beep-effect/.claude/skills/jsdoc-annotation-specialist/SKILL.md

jsdoc-annotation-specialist

Skill78 starsChanged 7 days agoApache-2.0View on GitHub

JSDoc/TSDoc and schema annotation compliance: Effect-style section grammar, kind-aware Examples, described @see, $I.annote/$I.annoteSchema gaps, TSDoc violations, docgen failures, and documentation post-passes on exported symbols.

The file

Show its rules and text

We split this skill into the rules it gives an agent

16 rules. About 0 are common, 5 are distinctive, and 11 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 11

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use this skill to author, upgrade, or review JSDoc and schema annotations.

    line 14
  2. Distinctive:

    Write one lead paragraph that explains purpose rather than restating the signature.

    line 35
  3. Very specific:

    Add only useful body sections in this order: When to use, Details, Gotchas, then titled Example (Title) blocks.

    line 37
  4. Very specific:

    Never introduce @example or @remarks: the repo-wide zero-legacy gate fails on any occurrence in packages//src.

    line 41
  5. Very specific:

    Add conditional tags only for facts absent from the signature, order them per references/conventions.md, and describe every @see with a …

    line 44
  6. Very specific:

    Verify @category, @since 0.0.0, TSDoc grammar, imports, and Example safety.

    line 46
  7. Distinctive:

    Run the bounded docgen check and fix Example compilation failures.

    line 49
  8. Distinctive:

    When to use -> Details -> Gotchas -> Examples last.

    line 55
  9. Distinctive:

    Every Example title is non-empty and unique within its doc block.

    line 57
  10. Very specific:

    Use @typeParam, never @template.

    line 79
  11. Very specific:

    Use a hyphen only in @param name - description, never after @returns or @throws.

    line 80
  12. Very specific:

    Use Details or Gotchas, never @remarks.

    line 83
  13. Very specific:

    Every @deprecated links its replacement and explains the migration.

    line 84
  14. Very specific:

    Every @see contains a link plus a purpose phrase.

    line 85
  15. Very specific:

    Every owning export has a useful one-paragraph lead, canonical @category, and @since 0.0.0.

    line 89
  16. Distinctive:

    Every value-level export has a titled, single-fence, observable, compilable Example.

    line 91

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

JSDoc Annotation Specialist

Use this skill to author, upgrade, or review JSDoc and schema annotations. The binding source is .patterns/jsdoc-documentation.md; this skill turns that law into a repeatable editing posture.

References

  • references/conventions.md — section grammar, kind split, tag order, worked before/after block, imports, categories, and forbidden patterns.
  • references/annotation-patterns.md — $I.annote and $I.annoteSchema by schema kind, including same-name type companions.
  • references/agent-lifting-and-greps.md — agent-context lifting and focused grep audits.

Load references/conventions.md whenever writing or upgrading a doc block. Load the annotation reference for schemas and the grep reference for multi-file audits.

Authoring workflow

  1. Inventory the owning declarations for public exports; do not document barrel re-exports as though they were new symbols.
  2. Classify each export as value-level or pure type-level.
  3. Write one lead paragraph that explains purpose rather than restating the signature.
  4. Add only useful body sections in this order: **When to use**, **Details**, **Gotchas**, then titled **Example** (Title) blocks.
  5. Require an Example for value-level exports. For pure type-level exports, require prose and add an Example only when it teaches something material.
  6. Never introduce @example or @remarks: the repo-wide zero-legacy gate fails on any occurrence in packages/**/src. Move @remarks content into Details or Gotchas and write examples as titled Example sections.
  7. Add conditional tags only for facts absent from the signature, order them per references/conventions.md, and describe every @see with a purpose phrase.
  8. Verify @category, @since 0.0.0, TSDoc grammar, imports, and Example safety.
  9. For schema values, verify $I.annote or $I.annoteSchema using the annotation reference.
  10. Run the bounded docgen check and fix Example compilation failures.

Section grammar

  • Sections are optional except for kind-required Examples.
  • Present sections are non-empty, unique, and ordered exactly: When to use -> Details -> Gotchas -> Examples last.
  • The When-to-use body begins with Use to, Use when, Use as, or Use with.
  • Every Example title is non-empty and unique within its doc block.
  • Each Example has exactly one ts fence; no ts fence is loose outside an Example section.
  • Tags follow all body sections.

**Example** (Title) is canonical everywhere. The legacy @example/@remarks carriers are retired repo-wide. The default beep quality jsdoc-ratchet scan covers non-generated {packages,apps}/**/src; use --include-generated when proving generator output. A default pass does not prove generated compliance. The generated residual allowlist is currently empty.

Kind split

Value-level exports require an Example: functions, constants, classes, schemas, services, layers, and other runtime values. Pure type-level exports require prose only: aliases, interfaces, namespaces, .Encoded companions, and same-name schema type companions. Their Example is optional.

TSDoc hard rules

  • Drop {type} blobs from @param, @returns, and @throws; the signature owns the type.
  • Use @typeParam, never @template.
  • Use a hyphen only in @param name - description, never after @returns or @throws.
  • Use @packageDocumentation, never @module.
  • Use Details or Gotchas, never @remarks.
  • Every @deprecated links its replacement and explains the migration.
  • Every @see contains a link plus a purpose phrase.

Post-pass checklist

  1. Every owning export has a useful one-paragraph lead, canonical @category, and @since 0.0.0.
  2. Every value-level export has a titled, single-fence, observable, compilable Example; pure type-level exports have precise prose.
  3. Sections are non-empty, unique, canonical-order, and Example-last; When-to-use text has an allowed opener; no loose ts fence exists.
  4. Files whose documentation was touched have no @remarks or legacy @example carrier.
  5. Conditional tags add information, follow tag order, and every @see is described.
  6. Examples use S/A/O/P/R namespaces, contain no any, assertions, declare, empty generators, or deprecated @effect/schema imports.
  7. Schema annotations and same-name type companions follow references/annotation-patterns.md.
  8. bun run docgen:local passes; use bun run beep docgen quality -p <package> as advisory editorial input.

The ratchet has two layers: the totals baseline fails on growth, and the zero-legacy scan fails on any legacy carrier in packages/**/src regardless of whether the file was touched.

Escalation

  • schema-first-development — schema modeling beyond annotation work.
  • effect-first-development — code changes broader than documentation, including new tagged-error hierarchies.

Source references

  • .patterns/jsdoc-documentation.md — binding JSDoc/TSDoc law
  • tsdoc.json — registered custom tags
  • packages/tooling/library/repo-utils/src/schemas/JSDocCategories.ts — categories
  • packages/foundation/modeling/schema/src/SemanticVersion.ts — template-literal schema and annotation
  • packages/tooling/tool/cli/src/commands/Quality/Tasks.ts — tagged error and annotation examples

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.