plan update Command
Summary
In-place editing of plan file attributes and acceptance criteria checkboxes. This is the highest-value command for AI agent workflows — it enables structured status transitions (refrakt plan update {% ref "WORK-020" /%} --status in-progress) and criterion tracking (refrakt plan update {% ref "WORK-020" /%} --check "Schema validates") without manually editing Markdoc files.
Acceptance Criteria
- Finds entity file by ID scan (using scanner from Plan File Scanner Library)
--status <status>edits the rune tag's status attribute in place--check "text"toggles- [ ]to- [x]for matching criterion (substring match)--uncheck "text"toggles- [x]to- [ ]- Validates attribute values against rune schema (rejects invalid statuses like
--status working) - Multiple flags combine in a single call (
--status in-progress --assignee claude --milestone v0.5.0) --format jsonoutputs structured change summary with old and new values- Reports error on ambiguous criterion match (multiple lines match substring)
- Exit codes: 0 = success, 1 = validation error, 2 = entity not found
- Tests for attribute editing, checkbox toggling, validation, ambiguity detection, and error cases
Approach
Use the scanner (Plan File Scanner Library) to find the file by ID. Read the file content as a string. For attribute changes, regex-replace the opening tag line to update the target attribute. For checkbox toggling, find the matching - [ ] or - [x] line by substring and flip the bracket. Write the modified string back to the same file.
Validation uses the rune schema's attribute enum values (already defined in runes/plan/src/tags/).
Dependencies
- CLI Plugin Discovery Architecture (plugin architecture)
- Plan File Scanner Library (plan file scanner)
References
- Plan CLI (Plan CLI)
Relationships
Depends on
Dependency of
History
- f262d7bsource+SPEC-022
- feda13estatusready→done
- ☑ Finds entity file by ID scan (using scanner from {% ref "WORK-028" /%})
- ☑ `--status <status>` edits the rune tag's status attribute in place
- ☑ `--check "text"` toggles `- [ ]` to `- [x]` for matching criterion (substring match)
- +7 more criteria
- ebe0c64
- − Finds entity file by ID scan (using scanner from WORK-028)
- + Finds entity file by ID scan (using scanner from {% ref "WORK-028" /%})
- 30b2ae0Created (ready, high, moderate, cli, plan, ai-workflow)