Parent: #209
Related: #228, #214
Purpose
Normalize the v2 normal-user CLI around flattened action commands while keeping catalog ... and recipe ... as focused umbrella namespaces.
This issue exists because the #228 catalog-discovery UX decision clarified the desired command model, but some of the broader command cleanup is cross-cutting and should not be silently folded into #228 if it exceeds official-catalog discovery.
Product decision
Normal users manage settings for apps/tools, not recipes. The normal command surface should be action-first:
dotfiles-manager list
dotfiles-manager search <query>
dotfiles-manager explain <app>
dotfiles-manager manage <app>
dotfiles-manager unmanage <app>
dotfiles-manager status [<app>...]
dotfiles-manager diff [<app>...]
dotfiles-manager sync [<app>...]
dotfiles-manager save [<app>...]
dotfiles-manager apply [<app>...]
Specialized namespaces remain:
dotfiles-manager catalog ... # support sources/catalog lifecycle
dotfiles-manager recipe ... # advanced recipe authoring/debugging
recipe must not be the normal-user discovery noun.
Draft work-item contract
Type: delivery/design cleanup.
Risk tier: Tier 1.
Reason: this changes user-facing CLI vocabulary, help output, examples, and compatibility behavior, but should not introduce new live-setting write authority.
Scope
- Define and implement the canonical flattened command vocabulary for normal users.
- Ensure
list, search, and explain <app> are the normal discovery/explanation path.
- Define
manage as enrolling an app/tool into dotfiles-manager control without silently overwriting live settings.
- Define
unmanage as removing an app/tool from the default managed set without uninstalling the app, deleting live settings, or deleting stored settings.
- Keep
status, diff, sync, save, and apply top-level and app-filterable.
- Decide compatibility behavior for existing command names such as
add, recipe list, recipe explain, and app create/validate/test.
- Keep
catalog ... and recipe ... as umbrella commands for their specialized audiences.
- Update CLI help, docs examples, and tests/fixtures affected by the vocabulary decision.
Non-goals
Design evidence required before implementation
- CLI transcript or docs-first examples covering:
list with supported/managed state;
search <query> across enabled catalogs;
explain <app> with source/provenance/candidate information;
manage <app> safe enrollment and next steps;
unmanage <app> safe unenrollment with data left untouched;
- app-filtered
status, diff, sync, save, and apply;
- compatibility/deprecation behavior for replaced commands.
Real-result verification required
- Targeted CLI tests plus
go test ./... unless a narrower test set is justified.
- Temp-home/fixture command output proving the normal-user command flow.
- Verification that command renames/aliases do not create new write authority or mutate real user settings.
Validation criteria
- Normal help surfaces the flattened normal-user commands and does not teach
recipe as the happy-path discovery noun.
manage and unmanage semantics are safe and clear.
status, diff, sync, save, and apply remain top-level and app-filterable.
- Existing compatibility commands either keep working with clear advanced/legacy wording or are explicitly deprecated according to the accepted contract.
- Tests and docs examples align with the accepted vocabulary.
Acceptance rule
Project Owner acceptance required before closing.
Notes
Created from the #228 managed change recorded at:
#228 (comment)
Project Execution Standards alignment
Latest standard read for this update: /Users/shpoont/Work/shpoont/project-execution-standards/project-execution-standard.md, last-updated 2026-06-29.
Project record / source of truth: #209 plus docs/internal/project/v2-reset-execution-record.md. This issue is a future CLI vocabulary work-item contract and does not override the active #228/#229/#230/#231 gates.
Current gate / no-go actions:
Closure rule:
Parent: #209
Related: #228, #214
Purpose
Normalize the v2 normal-user CLI around flattened action commands while keeping
catalog ...andrecipe ...as focused umbrella namespaces.This issue exists because the #228 catalog-discovery UX decision clarified the desired command model, but some of the broader command cleanup is cross-cutting and should not be silently folded into #228 if it exceeds official-catalog discovery.
Product decision
Normal users manage settings for apps/tools, not recipes. The normal command surface should be action-first:
Specialized namespaces remain:
recipemust not be the normal-user discovery noun.Draft work-item contract
Type: delivery/design cleanup.
Risk tier: Tier 1.
Reason: this changes user-facing CLI vocabulary, help output, examples, and compatibility behavior, but should not introduce new live-setting write authority.
Scope
list,search, andexplain <app>are the normal discovery/explanation path.manageas enrolling an app/tool into dotfiles-manager control without silently overwriting live settings.unmanageas removing an app/tool from the default managed set without uninstalling the app, deleting live settings, or deleting stored settings.status,diff,sync,save, andapplytop-level and app-filterable.add,recipe list,recipe explain, andapp create/validate/test.catalog ...andrecipe ...as umbrella commands for their specialized audiences.Non-goals
Design evidence required before implementation
listwith supported/managed state;search <query>across enabled catalogs;explain <app>with source/provenance/candidate information;manage <app>safe enrollment and next steps;unmanage <app>safe unenrollment with data left untouched;status,diff,sync,save, andapply;Real-result verification required
go test ./...unless a narrower test set is justified.Validation criteria
recipeas the happy-path discovery noun.manageandunmanagesemantics are safe and clear.status,diff,sync,save, andapplyremain top-level and app-filterable.Acceptance rule
Project Owner acceptance required before closing.
Notes
Created from the #228 managed change recorded at:
#228 (comment)
Project Execution Standards alignment
Latest standard read for this update:
/Users/shpoont/Work/shpoont/project-execution-standards/project-execution-standard.md, last-updated 2026-06-29.Project record / source of truth: #209 plus
docs/internal/project/v2-reset-execution-record.md. This issue is a future CLI vocabulary work-item contract and does not override the active #228/#229/#230/#231 gates.Current gate / no-go actions:
Closure rule: