Thanks for considering a contribution. jsdoc-scribe is deliberately small in scope — pure, deterministic, AST-based JSDoc generation and doc-site building, no AI/LLM involved. Keeping that pitch honest is part of reviewing any change.
- Bug fix or small improvement: open a PR directly.
- New feature or behavior change: open an issue first describing the problem and your proposed approach, so we can agree on scope before you invest time in a patch.
git clone https://github.com/imchintoo/jsdoc-scribe.git
cd jsdoc-scribe
npm install
npm testnpm test runs the full deterministic self-test suite (node test/run.js) — no network
calls, no snapshots that require external services. Node >=18 is required to run the
internal dashboard/quality tooling below (the published package itself still only requires
Node >=14 — see package.json engines).
npm run docs:internal generates jsdoc-scribe's own API docs (lib/, bin/, the eslint
plugin package) with a "Code Health" section (code-multivitals's metrics plus the
import-graph/orphan-file findings) embedded directly into docs-internal/index.html —
one artifact, no separate dashboard file. Not part of the published package; useful for
getting oriented in this repo specifically. See
docs/backlog/adr-phase-j-project-dashboard.md for the design (revised 2026-07-06 to fold
the dashboard into the normal doc site rather than a second file).
npm run quality runs code-multivitals directly against lib/, bin/, and the eslint
plugin package with a plain console report (no site build, no embedded section).
- Determinism is non-negotiable. Every code path must produce the same output for the same input, every time. No randomness, no timestamps in generated output, no network calls. (Exception: code-multivitals's own snapshot/trend files are legitimately timestamped by that tool's own contract — this applies to jsdoc-scribe's own output, not to an integrated third-party tool's documented behavior.)
- No new runtime dependencies without a design discussion first — the published
package deliberately stays at one runtime dependency (
typescript), used as a syntax parser (seedocs/backlog/adr-010-checker-api-and-ast-ergonomics.mdfor the reasoning behind that constraint). This guideline is specifically aboutdependencies(what ships to end users viapackage.jsonfiles) —devDependencies(e.g.code-multivitals, used only for this repo's own internal dashboard/quality tooling) and optionalpeerDependencies(e.g.code-multivitalsagain, this time asgen-docs --quality's opt-in end-user feature — never auto-installed, never required) are a different category and don't need the same discussion, though any new one is still worth flagging in a PR description. Seedocs/backlog/adr-phase-j-project-dashboard.mdfor the full reasoning the first time this distinction came up. - Tests required. New behavior needs a corresponding test in
test/.npm testmust stay green. - Keep PRs focused. One logical change per PR — easier to review, easier to revert if something's wrong.
Open a GitHub issue with:
- jsdoc-scribe version (
npx jsdoc-scribe --version) and Node version - A minimal source snippet that reproduces the issue
- What you expected vs. what happened
This project follows the Code of Conduct. By participating, you're expected to uphold it.