usm/cli-generate
The usm generate command reads all .usm files and produces markdown, OpenAPI, Mermaid, ArchiMate, TOGAF, AGENTS.md, and Vitest test specs.
Intent
After scanning and enriching, generate produces all output artifacts from the .usm source. It runs 6 passes: per-file markdown, area overviews, aggregator docs, surface tables, Mermaid diagrams, and TOGAF deliverables.
Flows
Run usm generate (run-generate)
User runs usm generate to produce all documentation
- parse → all .usm files in monorepo
- observe → duplicate $id detection
- generate → per-file markdown for each validated .usm
- generate → aggregator docs (risks, roadmap, AGENTS.md, OpenAPI, test specs)
- generate → surface tables injected into overview.md files
- generate → Mermaid diagrams (architecture, ER, service deps)
- generate → TOGAF ADM phase deliverables
Contracts
generate-from-source-only
Generate must read .usm files directly — never derive docs from other docs
Acceptance criteria:
- [ ] All outputs derived from parsed .usm data
- [ ] Duplicate $ids detected and warned
- [ ] --check mode compares without writing
Tests
generate-produces-outputs
Given:
- valid_usm_files: true
Then:
- assertion: markdown files written for each .usm
- assertion: aggregator docs written if system.usm present
generate-check-mode
Given:
- existing_outputs: true
Then:
- assertion: reports up-to-date or out-of-date without writing
Implementation
- Primary: src/cli/index.ts (generate command)
- Test code status: none
See Also
- usm/cli-scan