usm/cli-enrich
The usm enrich command fills in TODO: describe placeholders in .usm files using an LLM (LiteLLM, OpenAI, Anthropic, or Ollama).
Usage
bash
# Enrich all .usm files with TODO placeholders
usm enrich
# Enrich a single file
usm enrich --file .usm/features/auth/login.usm
# Show what would change without calling LLM or writing
usm enrich --dry-run
# Override the LLM model
usm enrich --model anthropic/claude-sonnet-4-5Why this exists
Scanned .usm files contain TODO placeholders for summary, intent, decisions, flows, contracts, and tests. Enrich calls an LLM with source code context to fill these in, preserving existing human-written content.
How it works
Enrich a single .usm file (enrich-single-file)
User enriches one file with LLM-generated content
- Parse — .usm file with TODO placeholders
- Setup — source code context from referenced file paths
- Post — LLM API with system prompt + user prompt
- Parse — LLM response YAML
- Merge — filled fields into original .usm, preserving human edits
Guarantees
enrich-preserves-human-edits
Enrich must never overwrite fields that already have non-TODO content
Acceptance criteria:
- [ ] Fields with TODO: describe are filled
- [ ] Fields with existing content are preserved
- [ ] preserve_human_edits defaults to true
Test specifications
enrich-fills-todos
Given:
- usm_with_todo_fields: true
Then:
- assertion: TODO fields replaced with LLM content
- assertion: non-TODO fields unchanged
enrich-dry-run
Given:
- dry_run: true
Then:
- assertion: no files written
- assertion: planned changes reported
Implementation
- Primary: src/enrich/index.ts
- Test code status: none
See Also
- usm/cli-scan