For agents: an index of these docs is at /docs/llms.txt, and this page as markdown is at /docs/contributing.md.
Contributing
Issues, ideas and how the repo is laid out.
Thanks for looking. Signet is a Bun workspace: packages/* are the published
libraries, apps/* are apps built on them (apps/showcase is the demo).
Setup
bun installChecks
Run these before opening a pull request:
bun run lint # Biome, whole repobun run format # Biome with --writecd packages/<name>bun run test # each package defines its own test scriptbun run typecheck # tsc --noEmit (src and tests)bun run typecheck at the root runs every workspace's typecheck. Suppress a
Biome rule only with a written reason.
If you change a package's exports, regenerate the reference page:
bun run gen:api # rewrites API.mdAdd a theme
- Copy
packages/tokens/src/themes/editorial.csstopackages/tokens/src/themes/<name>.cssand change the values. - Define every required variable in CONTRACT.md
(inside
@theme inline { ... }). Do not add product vocabulary such as category colours; those belong in an overlay likefinance.css. - Add it to
exportsinpackages/tokens/package.json, thenbun run gen:api. - Add it to the theme list in
packages/tokens/test/themes.tsand runbun run testthere. The test compiles the theme against the real components and checks the utilities resolve to different values. - It appears in
apps/showcaseautomatically (it reads the themes directory).
Conventions
Read CONVENTIONS.md first. The short version: where Signet owns a behaviour it ships a default plus an override point; server modules take config and never read env at import time; base packages carry no domain vocabulary.
Releases
Maintainers publish; see PUBLISHING.md. Add a line to CHANGELOG.md under "Unreleased" for any user-visible change.