Skip to main content

Contributing

Keep changes small, testable, and reviewable. CI is a hard gate.

Development Workflow

  1. Sync main: git checkout main && git pull origin main
  2. Create branch: git checkout -b feat/<short-name>
  3. Implement with tests/docs in the same change set
  4. Run local checks before opening PR
  5. Open PR to main
  6. Merge only after required checks pass

Required Local Checks

pnpm --dir apps/terra tsc --noEmit
pnpm --dir apps/terra lint
pnpm --dir apps/terra test
For E2E-sensitive changes, also run:
pnpm --dir apps/terra exec playwright test tests/status-lookup.spec.ts --project=chromium --grep "Smoke Tests"

Commit Convention

Use conventional commits:
feat(forms): add rating field type
fix(auth): handle expired sessions
docs(ops): update onboarding steps
test(terra): unskip duplicate-form suite

Pull Request Checklist

  • Problem statement is clear
  • Scope is limited to one coherent change
  • Typecheck/lint/tests pass locally
  • Security/permission boundaries considered
  • Docs updated if behavior changed
  • Release note sentence included for user-facing changes

Release Notes Guidance

When a PR changes behavior users/staff will notice, include:
  1. What changed (plain language)
  2. Why it matters
  3. Any migration/config impact

Architecture Decisions

For significant design choices:
  1. Document context and tradeoffs in docs
  2. Link to affected systems/pages
  3. Capture migration path if needed