Files
initiative/specs/002-add-combatant/quickstart.md

1.7 KiB

Quickstart: Add Combatant

Feature: 002-add-combatant

Prerequisites

pnpm install

Development

pnpm test:watch                   # Watch all tests
pnpm vitest run packages/domain/src/__tests__/add-combatant.test.ts  # Run feature tests
pnpm --filter web dev             # Dev server at localhost:5173

Merge Gate

pnpm check   # Must pass before commit (format + lint + typecheck + test)

Implementation Order

  1. Domain event — Add CombatantAdded to events.ts and the DomainEvent union
  2. Domain function — Create add-combatant.ts with the pure addCombatant function
  3. Domain exports — Update index.ts to re-export new items
  4. Domain tests — Create add-combatant.test.ts with all 6 acceptance scenarios + invariant checks
  5. Application use case — Create add-combatant-use-case.ts
  6. Application exports — Update index.ts to re-export
  7. Web hook — Update use-encounter.ts to expose addCombatant callback
  8. Web UI — Update App.tsx with name input and add button

Key Files

File Action Purpose
packages/domain/src/events.ts Edit Add CombatantAdded event type
packages/domain/src/add-combatant.ts Create Pure addCombatant function
packages/domain/src/index.ts Edit Export new items
packages/domain/src/__tests__/add-combatant.test.ts Create Acceptance + invariant tests
packages/application/src/add-combatant-use-case.ts Create Use case orchestration
packages/application/src/index.ts Edit Export new use case
apps/web/src/hooks/use-encounter.ts Edit Add combatant hook callback
apps/web/src/App.tsx Edit Name input + add button UI