This repository uses Yarn, Husky hooks, and Volta-pinned tool versions. Install Volta or use compatible local versions of Node and Yarn before installing dependencies.
yarn installCommon package scripts:
yarn build
yarn format
yarn format:check
yarn lint
yarn test
yarn test:coverageBuild artifacts are emitted to dist/:
yarn buildThe build emits compiled JavaScript, TypeScript declarations, and source maps.
prepack runs the build automatically to ensure published packages use compiled
output.
Tests are run with Vitest. Coverage thresholds are enforced at 100% for statements, branches, functions, and lines.
yarn test
yarn test:coverageBefore starting any non-trivial change, write a plan document in docs/plans/.
Plans are named sequentially (NNN-short-description.md) and committed
alongside the implementation. See docs/plans/README.md for
the full convention.
To create a plan with Copilot, use the plan-writing skill in
.github/skills/plan-writing/SKILL.md.
PR titles follow conventional commit format with the issue number in scope:
<type>(<issue-number>): <description>
Example: chore(272): add plan documentation system
The PR body uses three sections — Overview, Details, and Related
Tickets and/or Pull Requests — with issue/PR links under the tickets section
(e.g. Closes #N, Fixes #N, Relates to #N).
Commit messages are validated with commitlint using conventional commits.
pre-commit: runslint-stagedcommit-msg: runscommitlint
Examples:
feat: add custom sanitizer optionfix: handle non-string input safelychore: upgrade lint dependencies
Releases are script-driven and modeled after the reference repository workflow.
Dry run:
yarn release --bump patch --dry-runLive release:
yarn release --bump patchSupported bump values: major, minor, patch.
Before publishing or cutting a release, run the local validation scripts:
yarn format:check
yarn lint
yarn build
yarn test:coverageLive release behavior:
- Generates release notes from conventional commits.
- Bumps version in
package.json. - Commits release metadata and creates an annotated tag.
- Pushes
mainand tags. - Creates a GitHub Release with generated notes.