GitHub

Contribute

How work enters the library: design first, then plan, implement, review, and release — every component graduates through explicit lifecycle stages.

Design gates code
No code without a preceding design. This holds even for a single component. Breaking changes start with an RFC and ship with a codemod written before the change lands.
§1

Contribution cycle

Every change follows the same seven-step path from idea to published package.

1

Design

Brainstorming skill produces an approved spec. No code without a preceding design.

2

Plan

Writing-plans skill breaks the spec into bite-sized tasks.

3

Implement

Build with TDD where applicable — code plus tests.

4

Pull request

Review plus CI: lint, test, a11y, visual, and bundle size.

5

Changeset

Declare the version bump level.

6

Merge

Changesets bot opens a Release PR.

7

Release

Published to GitHub Packages.


§2

Component lifecycle stages

Where a component lives and how stable its API is, signalled by a stage annotation.

StageAnnotationExport locationUse when
experimental@experimental@idinstudio/ui/experimentalDesign exploration, not yet validated.
alpha@alphamain export (doc-hidden)Early production use; API may change in a minor.
beta@betamain exportAPI frozen; behaviour may still adjust.
stablemain exportProduction-ready; API locked.

§3

Stage progression

Each promotion has an explicit gate and a Changeset noting the change.

ExperimentalAlpha

Typed, has at least one test, design reviewed.

AlphaBeta

Full test coverage, a11y contract complete, stories cover all variants, used in at least one consumer.

BetaStable

In production at least 4 weeks in a consumer, zero high-severity bugs, Chromatic baseline approved.

StableDeprecated

Replacement exists, codemod written, deprecated across 2 minor versions before removal.


§4

Every component ships seven files

Co-located in one folder. A missing file fails CI. Scaffold them with the create-component CLI.

  • {name}.tsx — implementation
  • {name}.stories.tsx — all variants × severities × sizes
  • {name}.test.tsx — unit tests (Vitest + RTL)
  • {name}.a11y.test.tsx — axe-core tests
  • {name}.a11y.md — accessibility contract, written first
  • {name}.figma.ts — Figma Code Connect mapping
  • index.ts — barrel re-export