@open-agent-toolkit/cli 0.3.13 → 0.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +1 -1
  2. package/assets/bundle-metadata.json +1 -1
  3. package/assets/docs/contributing/index.md +14 -1
  4. package/assets/docs/contributing/skills.md +64 -2
  5. package/assets/docs/contributing/smoke-testing.md +3 -3
  6. package/assets/docs/contributing/updating-model-guidance.md +2 -2
  7. package/assets/docs/contributing/verifying-cursor-pins.md +1 -1
  8. package/assets/docs/docs-tooling/add-docs-to-a-repo.md +32 -0
  9. package/assets/docs/docs-tooling/agent-instructions.md +131 -0
  10. package/assets/docs/docs-tooling/index.md +1 -0
  11. package/assets/docs/docs-tooling/meta.json +1 -1
  12. package/assets/docs/docs-tooling/workflows.md +331 -2
  13. package/assets/docs/{cli-utilities → getting-started}/bootstrap.md +60 -5
  14. package/assets/docs/{guide → getting-started}/concepts.md +28 -10
  15. package/assets/docs/getting-started/index.md +68 -0
  16. package/assets/docs/getting-started/meta.json +4 -0
  17. package/assets/docs/getting-started/quickstart.md +174 -0
  18. package/assets/docs/{cli-utilities → getting-started}/tool-packs.md +142 -14
  19. package/assets/docs/index.md +47 -48
  20. package/assets/docs/meta.json +6 -7
  21. package/assets/docs/provider-sync/commands.md +25 -2
  22. package/assets/docs/provider-sync/config.md +60 -1
  23. package/assets/docs/provider-sync/index.md +31 -15
  24. package/assets/docs/provider-sync/instruction-sync.md +32 -1
  25. package/assets/docs/provider-sync/manifest-and-drift.md +85 -0
  26. package/assets/docs/provider-sync/meta.json +1 -0
  27. package/assets/docs/provider-sync/pilot-with-a-team.md +236 -0
  28. package/assets/docs/provider-sync/scope-and-surface.md +37 -3
  29. package/assets/docs/reference/cli-reference.md +33 -33
  30. package/assets/docs/{cli-utilities → reference}/config-and-local-state.md +25 -9
  31. package/assets/docs/{cli-utilities → reference}/configuration.md +151 -34
  32. package/assets/docs/reference/file-locations.md +4 -1
  33. package/assets/docs/reference/index.md +13 -1
  34. package/assets/docs/reference/meta.json +7 -1
  35. package/assets/docs/reference/oat-directory-structure.md +1 -1
  36. package/assets/docs/{workflows/projects/artifacts.md → reference/project-artifacts.md} +4 -4
  37. package/assets/docs/{workflows/projects/state-machine.md → reference/project-state-machine.md} +1 -1
  38. package/assets/docs/{workflows/projects/repo-analysis.md → reference/repository-pr-comments.md} +2 -2
  39. package/assets/docs/reference/troubleshooting.md +125 -10
  40. package/assets/docs/reference/what-oat-writes.md +410 -0
  41. package/assets/docs/skills/brainstorm.md +77 -0
  42. package/assets/docs/skills/diagnostics.md +56 -0
  43. package/assets/docs/{workflows/skills → skills}/explainer-kit.md +121 -0
  44. package/assets/docs/skills/index.md +416 -0
  45. package/assets/docs/{workflows/skills → skills}/meta.json +4 -2
  46. package/assets/docs/{workflows/skills → skills}/recon.md +49 -0
  47. package/assets/docs/skills/repo-improve.md +254 -0
  48. package/assets/docs/skills/research.md +237 -0
  49. package/assets/docs/skills/session-closeout.md +61 -0
  50. package/assets/docs/workflows/advanced/autonomy.md +344 -0
  51. package/assets/docs/workflows/{projects → advanced}/cursor-cloud.md +69 -1
  52. package/assets/docs/workflows/{projects → advanced}/dispatch-ceiling.md +163 -18
  53. package/assets/docs/workflows/{projects → advanced}/evidence-layers.md +1 -1
  54. package/assets/docs/workflows/advanced/index.md +19 -0
  55. package/assets/docs/workflows/advanced/meta.json +13 -0
  56. package/assets/docs/workflows/{projects → advanced}/orchestration-model.md +63 -4
  57. package/assets/docs/workflows/{projects → advanced}/programmatic-execution.md +4 -4
  58. package/assets/docs/{cli-utilities → workflows/advanced}/workflow-gates.md +162 -8
  59. package/assets/docs/workflows/advanced/worktree-bootstrap.md +83 -0
  60. package/assets/docs/workflows/approvals-and-automation.md +261 -0
  61. package/assets/docs/workflows/backlog-and-planning/backlog-lifecycle.md +348 -0
  62. package/assets/docs/workflows/backlog-and-planning/index.md +13 -0
  63. package/assets/docs/workflows/backlog-and-planning/meta.json +4 -0
  64. package/assets/docs/workflows/backlog-and-planning/remote-project-management.md +303 -0
  65. package/assets/docs/workflows/choose-workflow.md +114 -0
  66. package/assets/docs/workflows/ideas/index.md +3 -3
  67. package/assets/docs/workflows/ideas/lifecycle.md +218 -1
  68. package/assets/docs/workflows/index.md +11 -62
  69. package/assets/docs/workflows/meta.json +10 -2
  70. package/assets/docs/workflows/projects/closeout/closeout-skills.md +538 -0
  71. package/assets/docs/workflows/projects/closeout/index.md +14 -0
  72. package/assets/docs/workflows/projects/closeout/meta.json +4 -0
  73. package/assets/docs/workflows/projects/{pr-flow.md → closeout/pr-flow.md} +1 -1
  74. package/assets/docs/workflows/projects/{retro.md → closeout/retro.md} +1 -1
  75. package/assets/docs/workflows/projects/execution/execution-skills.md +258 -0
  76. package/assets/docs/workflows/projects/{implementation-execution.md → execution/implementation-execution.md} +8 -8
  77. package/assets/docs/workflows/projects/execution/index.md +15 -0
  78. package/assets/docs/workflows/projects/execution/meta.json +9 -0
  79. package/assets/docs/workflows/projects/execution/picking-up-projects.md +376 -0
  80. package/assets/docs/{cli-utilities → workflows/projects/execution}/project-log.md +1 -1
  81. package/assets/docs/workflows/projects/index.md +38 -49
  82. package/assets/docs/workflows/projects/lifecycle.md +47 -11
  83. package/assets/docs/workflows/projects/meta.json +2 -23
  84. package/assets/docs/workflows/projects/{design-modes.md → planning/design-modes.md} +29 -0
  85. package/assets/docs/workflows/projects/planning/hill-checkpoints.md +167 -0
  86. package/assets/docs/workflows/projects/planning/index.md +16 -0
  87. package/assets/docs/workflows/projects/planning/meta.json +10 -0
  88. package/assets/docs/workflows/projects/planning/planning-skills.md +381 -0
  89. package/assets/docs/workflows/projects/{splitting.md → planning/splitting.md} +3 -3
  90. package/assets/docs/workflows/projects/planning/starting-projects.md +511 -0
  91. package/assets/docs/workflows/projects/{reviews.md → reviews/index.md} +51 -5
  92. package/assets/docs/workflows/projects/reviews/meta.json +4 -0
  93. package/assets/docs/workflows/projects/reviews/review-flavors.md +643 -0
  94. package/assets/docs/workflows/projects/{reviewing-oat-prs.md → reviews/reviewing-oat-prs.md} +3 -3
  95. package/assets/docs/workflows/waves/index.md +12 -0
  96. package/assets/docs/workflows/waves/meta.json +4 -0
  97. package/assets/docs/workflows/waves/wave-workflows.md +206 -0
  98. package/assets/public-package-versions.json +4 -4
  99. package/assets/skills/oat-docs/SKILL.md +19 -19
  100. package/assets/skills/oat-docs-analyze/SKILL.md +1 -1
  101. package/assets/skills/oat-docs-apply/SKILL.md +1 -1
  102. package/assets/skills/oat-docs-authoring/SKILL.md +1 -1
  103. package/assets/skills/oat-docs-bootstrap/SKILL.md +1 -1
  104. package/assets/skills/oat-doctor/SKILL.md +25 -25
  105. package/package.json +2 -2
  106. package/assets/docs/cli-utilities/backlog-lifecycle.md +0 -80
  107. package/assets/docs/cli-utilities/index.md +0 -74
  108. package/assets/docs/cli-utilities/meta.json +0 -13
  109. package/assets/docs/cli-utilities/remote-project-management.md +0 -191
  110. package/assets/docs/guide/index.md +0 -31
  111. package/assets/docs/guide/meta.json +0 -4
  112. package/assets/docs/quickstart.md +0 -88
  113. package/assets/docs/workflows/projects/autonomy.md +0 -196
  114. package/assets/docs/workflows/projects/hill-checkpoints.md +0 -93
  115. package/assets/docs/workflows/projects/picking-up-projects.md +0 -124
  116. package/assets/docs/workflows/projects/review-flavors.md +0 -138
  117. package/assets/docs/workflows/skills/index.md +0 -184
  118. package/assets/docs/workflows/skills/repo-improve.md +0 -89
  119. package/assets/docs/workflows/wave-workflows.md +0 -77
@@ -12,10 +12,10 @@ Use this guide when you need to answer two questions quickly:
12
12
 
13
13
  For the deep file-by-file reference, see:
14
14
 
15
- - [File Locations](../reference/file-locations.md)
16
- - [`.oat` Directory Structure](../reference/oat-directory-structure.md)
15
+ - [File Locations](file-locations.md)
16
+ - [`.oat` Directory Structure](oat-directory-structure.md)
17
17
  - [Sync Config (`.oat/sync/config.json`)](../provider-sync/config.md)
18
- - [Remote Project Management](remote-project-management.md)
18
+ - [Remote Project Management](../workflows/backlog-and-planning/remote-project-management.md)
19
19
 
20
20
  ## The five config surfaces
21
21
 
@@ -44,15 +44,15 @@ oat config list
44
44
  oat config get projects.root
45
45
  oat config describe
46
46
  oat config describe archive.s3Uri
47
- oat config describe sync.providers.github.enabled
47
+ oat config describe sync.providers.copilot.enabled
48
48
  ```
49
49
 
50
50
  What each command is for:
51
51
 
52
52
  - `oat config list` shows the currently resolved command-surface values for shared and repo-local keys.
53
53
  - `oat config get <key>` reads one supported key value.
54
- - `oat config set <key> <value>` updates supported shared or repo-local keys. Writes to the shared `.oat/config.json` keep the file's existing key order, and a write that would not change any value leaves the file byte-identical.
55
- - `oat config unset <key>` removes a supported key from one surface, using the same `--shared`/`--local`/`--user` flags and per-key restrictions as `set`. The resolved value then falls back to the next surface down, or to the built-in default. A key the surface does not hold exits 0 as already-unset (`--json` adds a `removed` boolean to tell the two apart). Unknown keys, lifecycle state, `tools.*` pack intent, aggregate read views, read-only remote-policy structure, and environment-shadowed keys with nothing stored are refused with exit 1 — see [CLI Reference](../reference/cli-reference.md#oat-config-surface-flags).
54
+ - `oat config set <key> <value>` updates supported shared, repo-local, or user keys according to per-key restrictions. Writes to the shared `.oat/config.json` keep the file's existing key order, and a write that would not change any value leaves the file byte-identical.
55
+ - `oat config unset <key>` removes a supported key from one surface, using the same `--shared`/`--local`/`--user` flags and per-key restrictions as `set`. The resolved value then falls back to the next surface down, or to the built-in default. A key the surface does not hold exits 0 as already-unset (`--json` adds a `removed` boolean to tell the two apart). Unknown keys, lifecycle state, `tools.*` pack intent, aggregate read views, read-only remote-policy structure, and environment-shadowed keys with nothing stored are refused with exit 1 — see [CLI Reference](cli-reference.md#oat-config-surface-flags).
56
56
  - `oat config describe` shows the supported config catalog across shared repo, repo-local, user, and sync/provider surfaces.
57
57
  - `oat config describe <key>` shows file, scope, default, mutability, owning command, and description for one key. A deprecated key also prints `Deprecated: prefer <successor>`, and `--json` carries the same fact as a `deprecated` object (`supersededBy`, plus `note` and `legacyValues` where they apply).
58
58
 
@@ -72,9 +72,9 @@ For a guided pass instead of individual commands, run the `/oat-doctor` skill (c
72
72
 
73
73
  These labels match what `oat config dump` emits, so tooling that consumes either command can rely on the same vocabulary.
74
74
 
75
- :::note Upgrade note
76
- Earlier CLI versions returned `config.json` / `config.local.json` / `env` / `default` as the `source` strings. External scripts that previously matched on `"source":"config.json"` or `"source":"config.local.json"` should update to match the new `shared` / `local` labels. This change was made to align the `oat config get` / `oat config list` output with `oat config dump` and to avoid confusing users about which file was consulted.
77
- :::
75
+ > [!NOTE]
76
+ > **Upgrade note.**
77
+ > Earlier CLI versions returned `config.json` / `config.local.json` / `env` / `default` as the `source` strings. External scripts that previously matched on `"source":"config.json"` or `"source":"config.local.json"` should update to match the new `shared` / `local` labels. This change was made to align the `oat config get` / `oat config list` output with `oat config dump` and to avoid confusing users about which file was consulted.
78
78
 
79
79
  ## Shared repo config you will touch most often
80
80
 
@@ -93,7 +93,7 @@ Common keys in `.oat/config.json`:
93
93
  configured value for the current process.
94
94
  - `worktrees.root` — where OAT-managed worktrees live
95
95
  - `git.defaultBranch` — base branch fallback for PR workflows
96
- - `documentation.root`, `documentation.tooling`, `documentation.config` — docs-surface ownership. With tooling `markdown`, root is the literal content directory (including nested `docs`) and `documentation.index` is authored `<root>/index.md`; Markdown adds no framework config. Framework roots retain app/source semantics. Use `oat docs init --framework markdown` or explicit `--adopt` for setup; optional manifests need external output and never change the authored index. See [Documentation path resolution](../reference/oat-directory-structure.md#documentation-path-resolution)
96
+ - `documentation.root`, `documentation.tooling`, `documentation.config` — docs-surface ownership. With tooling `markdown`, root is the literal content directory (including nested `docs`) and `documentation.index` is authored `<root>/index.md`; Markdown adds no framework config. Framework roots retain app/source semantics. Use `oat docs init --framework markdown` or explicit `--adopt` for setup; optional manifests need external output and never change the authored index. See [Documentation path resolution](oat-directory-structure.md#documentation-path-resolution)
97
97
  - `documentation.excludes` — a JSON array of globs, relative to the docs directory, that `oat docs generate-index` leaves out of the generated index. `oat config set` takes the list as one comma-separated value (`"a/**,b.md"`) and stores it as an array; repeated `--exclude` flags extend it, and an empty value clears the key
98
98
  - `documentation.requireForProjectCompletion` — whether docs sync is a completion gate
99
99
  - `instructions.claude.shims` — how `oat instructions sync` keeps a `CLAUDE.md` beside each `AGENTS.md`: `none` (the default: no shims; sync removes the ones OAT created and warns about any other `CLAUDE.md`, all or nothing: it removes none while any `CLAUDE.md`, `.claude/CLAUDE.md`, or `CLAUDE.local.md` has content of its own; see [All or nothing](../provider-sync/instruction-sync.md#all-or-nothing)), `pointer`, `symlink`, or `copy`. The `--strategy` flag overrides it for one run. Set it with `oat config set instructions.claude.shims pointer` when contributors need `CLAUDE.md` (see [Claude Code and AGENTS.md](../provider-sync/instruction-sync.md#claude-code-and-agentsmd)); `oat config unset` returns to `none`. Any other value is rejected with exit code `2` rather than read as unset, and `oat config set` can still replace it
@@ -106,7 +106,8 @@ Common keys in `.oat/config.json`:
106
106
  - `archive.awsRegion` — optional AWS region forwarded as `AWS_REGION` to every `aws` invocation in archive flows
107
107
  - `tools.<pack>` — project-scope intent for a bundled tool pack (`true` or absent)
108
108
  - `pjm.remote.storage.state` — `local` by default; `shared` requires an
109
- explicit preview and fresh approval and is unavailable to local projects
109
+ explicit preview and fresh approval. The current production store does not
110
+ enforce the intended local-project exclusion; see the remote storage warning
110
111
  - `pjm.remote.policy.description` — `none`, `managed-section`, or `replace`;
111
112
  the default is `none`
112
113
  - `pjm.remote.policy.authority.*` — repository defaults and operation-specific
@@ -126,6 +127,10 @@ and purpose field grants intersect to narrow outbound fields. No configured
126
127
  layer bypasses hard approval floors or current caller-owned authority evidence;
127
128
  missing, stale, or mismatched evidence fails closed.
128
129
 
130
+ Current CLI bindings use fixed intake/source or publish/planning purposes and
131
+ empty per-binding restrictions. Those internal narrowing layers are not
132
+ additional user-settable binding policy controls.
133
+
129
134
  The shared `pjm.remote` tree is closed. An unknown key, a non-object where an
130
135
  object is expected, or a wrong-typed leaf (for example `authority.default: 5`,
131
136
  a string `schemaVersion`, or a number, boolean, array, object, or `null` where a
@@ -189,7 +194,7 @@ oat pjm doctor --json
189
194
  verified. It is the authoritative repository adoption marker: PJM, backlog, and
190
195
  decision mutations fail closed without it, and `oat doctor` keys its `pjm:*`
191
196
  checks on adoption state rather than on `tools.project-management`. See
192
- [Install vs. initialize](tool-packs.md#install-vs-initialize) for the full state
197
+ [Install vs. initialize](../getting-started/tool-packs.md#install-vs-initialize) for the full state
193
198
  table and template precedence.
194
199
 
195
200
  ### Explainer configuration
@@ -263,9 +268,8 @@ packaged `assets/` directory next to the installed CLI. Setting a non-empty
263
268
  `validateBundleStructure`. That is a narrower promise than the exit-2 list
264
269
  above: release validation does not check bundle metadata beyond its presence,
265
270
  so a malformed or version-mismatched `bundle-metadata.json` is not covered.
266
- The regression evidence is the negative pack control in
267
- `packages/cli/src/release/public-package-contract.test.ts`:
268
- `fails release validation when a required bundle directory is empty in the tarball`.
271
+ OAT's own release tests include a check that release validation fails when a
272
+ required bundle directory is empty in the packed tarball.
269
273
  - Produce a matching bundle with `bash packages/cli/scripts/bundle-assets.sh`
270
274
  while `OAT_ASSETS_DIR` points at the target directory (the script already
271
275
  honors the variable as its destination).
@@ -273,12 +277,12 @@ packaged `assets/` directory next to the installed CLI. Setting a non-empty
273
277
  This is primarily a test-isolation and packaging seam; day-to-day use of the CLI
274
278
  does not need it.
275
279
 
276
- See [Explainer Kit](../workflows/skills/explainer-kit.md) for recipes, artifact
280
+ See [Explainer Kit](../skills/explainer-kit.md) for recipes, artifact
277
281
  locations, lifecycle behavior, and archive/export behavior.
278
282
 
279
283
  Workflow gate objects are structured config and use their own command group
280
284
  instead of the scalar `oat config set` surface. See
281
- [Workflow Gates](workflow-gates.md) for the full command surface and examples.
285
+ [Workflow Gates](../workflows/advanced/workflow-gates.md) for the full command surface and examples.
282
286
 
283
287
  Gate budgets resolve per run in this order: CLI `--timeout-ms`, selected
284
288
  target `timeoutMs`, `workflow.gateTimeouts` by review type,
@@ -377,7 +381,7 @@ configuration, never mutates any config layer, and is never written by a
377
381
  non-interactive run. Resolve it with
378
382
  `oat gate resolve <skill> --project <path-or-name> --json`; without `--project`
379
383
  the command keeps its original raw output. See
380
- [Workflow gates](./workflow-gates.md) for the full resolution envelope and the
384
+ [Workflow gates](../workflows/advanced/workflow-gates.md) for the full resolution envelope and the
381
385
  phase-review and autonomous exclusions.
382
386
 
383
387
  In practice, you usually inspect these via:
@@ -398,14 +402,14 @@ Dispatch configuration has two layers:
398
402
 
399
403
  A named ceiling is a maximum constraint, not an exact model-family or effort
400
404
  preference. For the full model, see
401
- [Dispatch Policy](../workflows/projects/dispatch-ceiling.md).
405
+ [Dispatch Policy](../workflows/advanced/dispatch-ceiling.md).
402
406
 
403
407
  ### Config keys
404
408
 
405
409
  | Key | Values | Purpose |
406
410
  | ------------------------------------------------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------ |
407
411
  | `workflow.dispatchPolicy.mode` | `managed`, `inherit` | `managed` lets OAT select exact candidates; `inherit` leaves controls to the host |
408
- | `workflow.dispatchPolicy.policy` | `economy`, `balanced`, `high`, `frontier`, `uncapped` | Default named maximum or explicit managed uncapped state |
412
+ | `workflow.dispatchPolicy.policy` | `economy`, `balanced`, `high`, `frontier`, `uncapped` | Configured maximum overriding project state, or explicit managed uncapped state |
409
413
  | `workflow.dispatchCeiling.providers.<provider>` | tier map or legacy bare value | Reusable provider candidate column |
410
414
  | `workflow.dispatchCeiling.providers.<provider>.<tier>` | `candidates` cell, route, or legacy bare value | One named tier in the provider ladder |
411
415
  | `workflow.dispatchCeiling.recommendationVersion` | string | Bundle version last written by adoption; does not prove the effective ladder matches |
@@ -705,7 +709,7 @@ Workflow preferences let power users answer repetitive confirmation prompts once
705
709
  Workflow preference keys live under the `workflow.*` namespace:
706
710
 
707
711
  - `workflow.designMode` — `collaborative`, `selective`, or `draft`. Default design interaction mode. `selective` applies only to full `oat-project-design`; quick-start lightweight design treats it as collaborative because quick-start keeps the smaller collaborative/draft choice.
708
- - `workflow.hillCheckpointDefault` — `every` or `final`. Default HiLL checkpoint behavior in `oat-project-implement`: pause after every phase or only after the last phase. When unset, the skill prompts.
712
+ - `workflow.hillCheckpointDefault` — `every` or `final`. Default HiLL checkpoint behavior in `oat-project-implement` (a HiLL, or human-in-the-loop, checkpoint is a stop for your review): pause after every phase or only after the last phase. When unset, the skill prompts. See [Choosing a checkpoint default](#choosing-a-checkpoint-default).
709
713
  - `workflow.archiveOnComplete` — boolean. Skip the "Archive after completion?" prompt in `oat-project-complete`. When unset, the skill prompts.
710
714
  - `workflow.createPrOnComplete` — boolean. Skip the "Open a PR?" prompt in `oat-project-complete`; when true, completion auto-triggers PR creation. When unset, the skill prompts.
711
715
  - `workflow.postImplementSequence` — legacy `wait`, `summary`, `pr`, or `docs-pr`, or `{ "preApproval": [...], "postApproval": [...] }`. Legacy values remain strings and keep their existing mappings. Structured arrays contain ordered, globally unique `summary`, `document`, `pr`, and `retro` steps. `retro` is post-approval only: a structured value containing it in `preApproval` is rejected. Pre-approval steps run after final review and before final HiLL approval; post-approval steps run only after that approval. Plain retrieval keeps legacy strings and prints structured values as compact JSON; `--json` returns the raw value.
@@ -735,6 +739,22 @@ Without those settings, non-interactive retro generation records proposals but
735
739
  does not apply or file them. Interactive runs still present the applicable
736
740
  promotion and filing choices before side effects.
737
741
 
742
+ What leaves your repository through retro filing: `oat-project-retro-file`
743
+ files the retro's "OAT Upstream Feedback" items (`UP-01`, `UP-02`, and so on;
744
+ each is a title plus a problem, evidence summary, and suggested direction) as
745
+ GitHub issues in the upstream repository. That repository is
746
+ `workflow.retro.upstreamRepo` when set and `voxmedia/open-agent-toolkit` when
747
+ it is not. Nothing is filed by default: the skill runs only when you ask for
748
+ it, an interactive run asks you to confirm each destination and each item, and
749
+ a non-interactive run files nothing for a lane whose filing key is unset or
750
+ `none`. When the source repository is private and the destination is public,
751
+ the skill removes private log excerpts, internal URLs, credential-shaped
752
+ strings, and private identifiers before posting, and does not post an item it
753
+ cannot sanitize safely. To stop non-interactive upstream filing, run
754
+ `oat config set workflow.retro.filing.upstream none`; to send upstream items to
755
+ a different repository, run
756
+ `oat config set workflow.retro.upstreamRepo <owner/name>`.
757
+
738
758
  The two project-log keys use the standard workflow precedence:
739
759
  `local > shared > user > default`.
740
760
 
@@ -764,7 +784,7 @@ explicit final-default path and enables checkpoint auto-review; it preserves an
764
784
  existing valid empty or explicit list. Because autonomy itself is never
765
785
  persisted, a later interactive run pauses at the stored checkpoints normally.
766
786
 
767
- See [HiLL Checkpoints](../workflows/projects/hill-checkpoints.md) for timing and
787
+ See [HiLL Checkpoints](../workflows/projects/planning/hill-checkpoints.md) for timing and
768
788
  approval behavior.
769
789
 
770
790
  ### Auto artifact-review preferences
@@ -792,23 +812,20 @@ Workflow preferences resolve through three config surfaces, with `local > shared
792
812
 
793
813
  ```bash
794
814
  # User-level: applies to all repos on this machine
815
+ # Checkpoint default: choose every (pause after each phase) or final (pause once at the end)
795
816
  oat config set workflow.hillCheckpointDefault final --user
796
- oat config set workflow.archiveOnComplete true --user
797
- oat config set workflow.createPrOnComplete true --user
798
- oat config set workflow.postImplementSequence pr --user
799
817
  oat config set workflow.reviewExecutionModel subagent --user
800
818
  oat config set workflow.autoReviewAtHillCheckpoints true --user
801
819
  oat config set workflow.designMode selective --user
802
- oat config set workflow.dispatchCeiling.preset balanced --user
803
- oat config adopt dispatch-matrix --user
804
- oat config set workflow.autoArtifactReview.plan true --user
805
- oat config set workflow.autoArtifactReview.analysis true --user
820
+ oat config set workflow.autoNarrowReReviewScope true --user
821
+ oat config adopt dispatch-matrix --user # your own model ladder; sets no policy
806
822
 
807
823
  # Shared repo: team decision for this repo
824
+ oat config set workflow.archiveOnComplete true --shared
825
+ oat config set workflow.postImplementSequence docs-pr --shared
808
826
  oat config set workflow.createPrOnComplete false --shared
809
827
  oat config set workflow.designMode collaborative --shared
810
- oat config set workflow.dispatchCeiling.preset balanced --shared
811
- oat config set workflow.dispatchCeiling.providers.cursor.high composer-2.5 --shared
828
+ oat config set workflow.dispatchCeiling.providers.cursor.high composer-2.5 --shared # one ladder cell
812
829
  oat config set workflow.autoArtifactReview.plan false --shared
813
830
  oat config set workflow.projectLog auto --shared
814
831
  oat config set workflow.projectLogLedgerPath .oat/repo/reference/project-observations.md --shared
@@ -816,10 +833,40 @@ oat config set workflow.projectLogLedgerPath .oat/repo/reference/project-observa
816
833
  # Repo-local: personal override for this repo (default when no flag)
817
834
  oat config set workflow.hillCheckpointDefault every
818
835
  oat config set workflow.designMode draft
819
- oat config set workflow.dispatchCeiling.providers.codex medium # Advanced: per-provider override
820
836
  oat config set workflow.autoArtifactReview.analysis false
821
837
  ```
822
838
 
839
+ The user-level workflow preference lines use only keys that this page lists as
840
+ safe personal defaults in [Choosing the right surface](#choosing-the-right-surface-personal-vs-per-repo).
841
+ The dispatch lines adopt a model ladder and set one ladder cell; neither sets
842
+ a dispatch policy. The examples deliberately leave out the legacy
843
+ `workflow.dispatchCeiling.preset` key and bare per-provider values such as
844
+ `workflow.dispatchCeiling.providers.codex medium`: both still work, but they
845
+ replace that scope's ladder columns with a single legacy ceiling, and a
846
+ dispatch policy set in any config file overrides every project's own choice.
847
+ Read the warning below and [Dispatch Policy](../workflows/advanced/dispatch-ceiling.md)
848
+ before setting either.
849
+ The completion and PR keys (`workflow.archiveOnComplete`,
850
+ `workflow.createPrOnComplete`, and `workflow.postImplementSequence`) appear in
851
+ the shared block instead. A value in `~/.oat/config.json` applies in every
852
+ repository on your machine that does not set the same key in its own
853
+ `.oat/config.json` or `.oat/config.local.json`, because OAT resolves each key
854
+ as local, then shared, then user, then the built-in default. Whether those
855
+ completion keys are safe depends on each repository's archive and
856
+ documentation settings, so set them per repository. The
857
+ `workflow.autoArtifactReview.*` keys already default to `true`; set them only
858
+ in a repository that opts out, as the shared and repo-local examples show.
859
+
860
+ The legacy preset and bare-provider examples above remain readable compatibility
861
+ syntax, not recommended complete-ladder setup. They can replace candidate
862
+ columns with bare legacy ceilings. Prefer named policy plus explicit ladder
863
+ adoption for new configurations.
864
+
865
+ > [!WARNING]
866
+ > A dispatch policy set in any config file overrides the policy that every
867
+ > project chose for itself in its `state.md`. Leave the policy keys unset when
868
+ > each project should choose its own policy.
869
+
823
870
  Default (no flag) targets `.oat/config.local.json` for workflow keys. Pass at most one of `--user`, `--shared`, or `--local`. Structural keys (`projects.root`, `worktrees.root`, `git.*`, `documentation.*`, `instructions.*`, `archive.*`, `tools.*`) are still shared-only regardless of flag.
824
871
 
825
872
  ### Choosing the right surface (personal vs per-repo)
@@ -830,7 +877,7 @@ Not every workflow preference belongs at user level, even though "set once, appl
830
877
 
831
878
  Some preferences are **genuinely personal** — their correct value is the same for you regardless of which repo you're in. These are safe to set at `--user`:
832
879
 
833
- - `workflow.hillCheckpointDefault` — your personal tolerance for mid-implementation interruption
880
+ - `workflow.hillCheckpointDefault` — how often you want implementation to pause for your review. It is a personal preference by default; see [Choosing a checkpoint default](#choosing-a-checkpoint-default) below for when a team should set it instead.
834
881
  - `workflow.designMode` — your preferred full-design interaction style. Set `selective` when you usually want low-risk sections drafted silently but high-risk sections reviewed live.
835
882
  - `workflow.reviewExecutionModel` — depends on your provider environment (Claude Code, Cursor, Codex), not the repo
836
883
  - `workflow.autoReviewAtHillCheckpoints` — your preference for automatic lifecycle review at HiLL checkpoints. Shared/local config can still override this when a repo should behave differently.
@@ -845,10 +892,12 @@ Other preferences **depend on per-repo configuration** to be safe. These should
845
892
 
846
893
  **Cross-repo foot-gun example:** If you set `workflow.createPrOnComplete: true --user`, it applies to every repo you work on. In a repo with `documentation.requireForProjectCompletion: true` and `postImplementSequence: pr` (no docs step), running `oat-project-complete` would try to auto-create a PR, then immediately hit the docs gate and block you — leaving you with an open PR and a stuck completion. Your user-level preference silently asserted something that only holds in a specific shared-config shape.
847
894
 
848
- **Recommended split for most users:**
895
+ **Example split between personal and team settings:**
849
896
 
850
897
  ```bash
851
898
  # Personal preferences that differ from built-in defaults (apply everywhere)
899
+ # Optional checkpoint default: every for more control, final for fewer interruptions;
900
+ # leave unset to be asked on each project's first implementation run
852
901
  oat config set workflow.hillCheckpointDefault final --user
853
902
  oat config set workflow.reviewExecutionModel subagent --user
854
903
  oat config set workflow.autoReviewAtHillCheckpoints true --user
@@ -864,6 +913,29 @@ If you want to override a shared team decision for this specific checkout, use `
864
913
  oat config set workflow.archiveOnComplete false --local # "I don't want to archive on this specific branch checkout"
865
914
  ```
866
915
 
916
+ ### Choosing a checkpoint default
917
+
918
+ `workflow.hillCheckpointDefault` decides where `oat-project-implement` stops
919
+ for your review. These stops are called HiLL checkpoints (HiLL stands for
920
+ "human in the loop"). Neither value is right for everyone:
921
+
922
+ - `every` pauses after each phase. You get more control over the work, at the
923
+ cost of more interruptions.
924
+ - `final` pauses once, after the last phase. You are interrupted less, but you
925
+ see the work only at the end.
926
+
927
+ When the key is unset, the first implementation run of each project asks you
928
+ which to use. When it is set, that first run uses the configured value without
929
+ asking, and the value replaces any checkpoint value already written in the
930
+ project's `plan.md`. Later runs of the same project keep the value stored in
931
+ `plan.md`.
932
+
933
+ Treat the key as a personal preference by default, and set it at user level
934
+ (`--user`) or for one checkout (`--local`). Set it at shared level (`--shared`)
935
+ only when your team has agreed on a rule for where agents must pause. A shared
936
+ value overrides each person's user-level value, but anyone can still override
937
+ it for their own checkout with `--local`.
938
+
867
939
  ### Relationship to `autoReviewAtCheckpoints`
868
940
 
869
941
  `workflow.autoReviewAtHillCheckpoints` is the preferred key. It controls whether `oat-project-implement` runs the extra lifecycle review when a configured HiLL checkpoint is reached.
@@ -914,3 +986,48 @@ When you are unsure where a setting lives:
914
986
  3. Use the owning command shown there.
915
987
 
916
988
  That keeps config discovery centralized without forcing you to remember which settings belong to workflow state versus provider sync.
989
+
990
+ ## Choosing a config layer
991
+
992
+ `oat config set` can write a setting to one of three files, called layers:
993
+
994
+ - **shared** (`--shared`): `.oat/config.json`, committed with the repository so
995
+ it applies to the whole team;
996
+ - **local** (`--local`): `.oat/config.local.json`, which applies only to this
997
+ checkout and is not committed;
998
+ - **user** (`--user`): `~/.oat/config.json` in your home directory, which
999
+ applies to you in every repository.
1000
+
1001
+ When the same key is set in more than one layer, local wins over shared, and
1002
+ shared wins over user. A team's shared value therefore overrides your personal
1003
+ user value unless you also set it locally.
1004
+
1005
+ | Layer | Choose it when | What you give up |
1006
+ | ---------- | ----------------------------------------------------------- | --------------------------------------------------------------------- |
1007
+ | `--shared` | The team should behave the same way in this repository | Personal flexibility: changes go through code review like other files |
1008
+ | `--local` | You want to override something for yourself in one checkout | Nobody else, and none of your other checkouts, sees the value |
1009
+ | `--user` | The value is about how you work, whatever the repository | Any repository that sets the key in shared or local config wins |
1010
+
1011
+ With no flag, workflow preferences, project state, and explainer defaults are
1012
+ written to local config, update notifications to user config, and structural
1013
+ settings (repository paths and policy, such as `projects.root` or
1014
+ `documentation.*`) to shared config. Some keys can live in only one layer:
1015
+ project state is local-only, update notifications are user-only, and remote
1016
+ project-management policy is shared-only. `oat tools install` records each pack
1017
+ in the scope you installed it to, but `oat config set tools.*` writes only to
1018
+ shared config.
1019
+
1020
+ - If you are trying OAT on your own, set values with no flag and accept the
1021
+ defaults.
1022
+ - If you are rolling OAT out to a team, set policy keys with `--shared` and
1023
+ commit the change so it is reviewed.
1024
+ - If you want a preference to follow you into every repository, use `--user`,
1025
+ but only for keys listed as personal in
1026
+ [Choosing the right surface](#choosing-the-right-surface-personal-vs-per-repo).
1027
+ - If you need to differ from the team's setting in one checkout, use `--local`
1028
+ rather than changing the policy for everyone.
1029
+
1030
+ Environment variables override all three layers, but only for three keys:
1031
+ `projects.root`, `projects.defaultScope`, and `worktrees.root`. Some skills read
1032
+ their own environment variables, such as `OAT_DESIGN_MODE`; those are separate
1033
+ from config resolution.
@@ -111,7 +111,7 @@ When shared state is explicitly previewed and approved,
111
111
  `.oat/repo/pjm/remote/state/` or `<project>/remote/state/` replaces the local
112
112
  operational root. Shared state can contain remote planning content and is not
113
113
  available for local projects. See
114
- [Remote Project Management](../cli-utilities/remote-project-management.md).
114
+ [Remote Project Management](../workflows/backlog-and-planning/remote-project-management.md).
115
115
 
116
116
  ## Project artifact trees
117
117
 
@@ -168,6 +168,9 @@ Archive sync surfaces:
168
168
 
169
169
  ## CLI code
170
170
 
171
+ These paths are in the OAT source repository, not in a repository that uses
172
+ OAT. They matter only if you are working on OAT itself.
173
+
171
174
  - `packages/control-plane/` - read-only control-plane library for project-state parsing and recommendation
172
175
  - `packages/cli/src/commands/`
173
176
  - `packages/cli/src/commands/cleanup/`
@@ -11,11 +11,17 @@ Contributor how-to material now lives under `contributing/`, and user-facing rou
11
11
 
12
12
  ## Contents
13
13
 
14
+ - [What OAT Writes](what-oat-writes.md) - Every file, link and Git ref OAT creates, what to commit, and how to remove it.
15
+ - [Configuration](configuration.md) - OAT configuration guidance across shared, local, user, and provider-sync surfaces.
16
+ - [Config and Local State](config-and-local-state.md) - Utility command groups for config, local state, diagnostics, and related inspection flows.
14
17
  - [CLI Reference](cli-reference.md) - Shallow map of the OAT command surface with links to owning sections.
15
18
  - [File Locations](file-locations.md) - Where core OAT files, assets, and artifacts live.
16
19
  - [Docs Index Contract](docs-index-contract.md) - Authored `index.md` maps, `.md` links, generated Fumadocs manifests, and MkDocs and Fumadocs nav sync boundaries.
17
- - [OAT Directory Structure](oat-directory-structure.md) - Canonical `.oat/` tree map and the role of each major directory.
20
+ - [`.oat` Directory Structure](oat-directory-structure.md) - Canonical `.oat/` tree map and the role of each major directory.
18
21
  - [Troubleshooting](troubleshooting.md) - Common issues, diagnostics, and remediation guidance.
22
+ - [Project Artifacts](project-artifacts.md) - What lives in `state.md`, `discovery.md`, `plan.md`, `implementation.md`, and related files.
23
+ - [State Machine](project-state-machine.md) - Lifecycle and review status transitions across a project.
24
+ - [Repository PR Comment Analysis](repository-pr-comments.md) - Repo-wide PR comment collection and triage workflows.
19
25
 
20
26
  ## What Belongs Here
21
27
 
@@ -28,3 +34,9 @@ Contributor how-to material now lives under `contributing/`, and user-facing rou
28
34
  - [CLI Reference](cli-reference.md) for the command-surface map
29
35
  - [Docs Tooling](../docs-tooling/index.md) for docs app setup and workflow guidance
30
36
  - [Contributing](../contributing/index.md) for code, docs, and skill-authoring practices
37
+
38
+ ## General CLI Adoption Guidance
39
+
40
+ Use OAT's general CLI for repository setup, tool-pack management, configuration and diagnostics independently of provider sync, docs tooling or tracked workflows.
41
+
42
+ Start with [Getting Started](../getting-started/index.md) for bootstrap and tool packs. See [Configuration](configuration.md) for settings, [Config and Local State](config-and-local-state.md) for diagnostics, and [Advanced](../workflows/advanced/index.md) for workflow gates.
@@ -1,10 +1,16 @@
1
1
  {
2
2
  "title": "Reference",
3
3
  "pages": [
4
+ "what-oat-writes",
5
+ "configuration",
6
+ "config-and-local-state",
4
7
  "cli-reference",
5
8
  "file-locations",
6
9
  "docs-index-contract",
7
10
  "oat-directory-structure",
8
- "troubleshooting"
11
+ "troubleshooting",
12
+ "project-artifacts",
13
+ "project-state-machine",
14
+ "repository-pr-comments"
9
15
  ]
10
16
  }
@@ -148,7 +148,7 @@ Current schema keys:
148
148
  Most `documentation.*` keys are managed via `oat config get/set` and are set automatically by `oat docs init`. One has no `oat config set` entry and is edited directly in `.oat/config.json`: `documentation.index`, which `oat docs init` still seeds for you.
149
149
  The `git.defaultBranch` key is auto-detected during `oat init` and can be overridden via `oat config set git.defaultBranch <branch>`.
150
150
  Archive settings are managed via `oat config get/set`, and `oat config describe archive.s3Uri` (or the other archive keys) shows the lifecycle and ownership details from the CLI.
151
- Workflow gate objects are structured config and are managed with `oat gate`, not the scalar `oat config set` surface. See [Workflow Gates](../cli-utilities/workflow-gates.md).
151
+ Workflow gate objects are structured config and are managed with `oat gate`, not the scalar `oat config set` surface. See [Workflow Gates](../workflows/advanced/workflow-gates.md).
152
152
 
153
153
  Example:
154
154
 
@@ -86,7 +86,7 @@ behavioral change needs evidence that fails without the change.
86
86
  machine-scannable repo-improvement (`RP-NN`) and upstream-feedback (`UP-NN`)
87
87
  registers. Promotion and filing rollups let the retro skills resume approved
88
88
  applications and tracker filing without repeating settled work. See
89
- [Project Retrospectives](retro.md).
89
+ [Project Retrospectives](../workflows/projects/closeout/retro.md).
90
90
 
91
91
  ### Explainer artifacts
92
92
 
@@ -197,7 +197,7 @@ Coordination parents do not contain executable phase files. `spec.md`, `design.m
197
197
 
198
198
  The parent still keeps `state.md`, `discovery.md`, and `references/split-plan.json`. Child projects are flat siblings and link back to the parent through state metadata. Each child starts from a distilled discovery seed and must revalidate inherited context before moving beyond discovery/design.
199
199
 
200
- See [Project Splitting](splitting.md) for the full parent/child model.
200
+ See [Project Splitting](../workflows/projects/planning/splitting.md) for the full parent/child model.
201
201
 
202
202
  ### plan.md frontmatter
203
203
 
@@ -232,7 +232,7 @@ Each inner array is a group of phases that execute concurrently in their own wor
232
232
 
233
233
  **Validation:**
234
234
 
235
- Before dispatching, `oat-project-implement` invokes `oat project validate-plan --project-path "${PROJECT_PATH}"`. Non-zero exit blocks the run. See [CLI Reference](../../reference/cli-reference.md) and [Implementation Execution](implementation-execution.md) for details.
235
+ Before dispatching, `oat-project-implement` invokes `oat project validate-plan --project-path "${PROJECT_PATH}"`. Non-zero exit blocks the run. See [CLI Reference](cli-reference.md) and [Implementation Execution](../workflows/projects/execution/implementation-execution.md) for details.
236
236
 
237
237
  #### oat_phase_review_gate
238
238
 
@@ -261,7 +261,7 @@ oat_phase_review_gate:
261
261
  - `review_type` → optional, defaults to `code`. Only `code` is supported for phase gates.
262
262
  - `exit_nonzero_on` → optional, defaults to `high`. One of `critical`, `high`, `medium`, `low`. This is the blocking threshold: findings at or above it stop the phase; sub-threshold findings are dispositioned by the judgment sweep rather than ignored.
263
263
 
264
- A malformed gate stops the run before task execution rather than being silently disabled. The gate is independent of HiLL checkpoints and reuses the existing `oat gate review` target config — it does not hardcode a `--target`. See [Reviews → Phase review gate](reviews.md#phase-review-gate) for the runtime behavior and disposition rules.
264
+ A malformed gate stops the run before task execution rather than being silently disabled. The gate is independent of HiLL checkpoints and reuses the existing `oat gate review` target config — it does not hardcode a `--target`. See [Reviews → Phase review gate](../workflows/projects/reviews/index.md#phase-review-gate) for the runtime behavior and disposition rules.
265
265
 
266
266
  ## Reference artifacts
267
267
 
@@ -83,7 +83,7 @@ Lite progression:
83
83
  A lite project that outgrows one sitting can move to the quick chain with `oat
84
84
  project promote <project-path> --to quick`, which flips `oat_workflow_mode` to
85
85
  `quick` and sets `oat_phase: discovery` with `oat_phase_status: complete`. See
86
- [Lifecycle](lifecycle.md#promoting-a-lite-project-to-quick).
86
+ [Lifecycle](../workflows/projects/lifecycle.md#promoting-a-lite-project-to-quick).
87
87
 
88
88
  ## Review progression
89
89
 
@@ -7,7 +7,7 @@ description: 'Repository-level PR comment analysis commands for collecting and t
7
7
 
8
8
  The `oat repo pr-comments` command group provides repository-level review analysis tools. These commands operate across merged pull requests rather than on individual PRs.
9
9
 
10
- This page covers the PR-comment analysis surface only. Other repository-level commands, such as `oat repo archive sync`, are covered in [Lifecycle](lifecycle.md#completion-archive-behavior) and [Configuration](../../cli-utilities/configuration.md#shared-repo-config-you-will-touch-most-often).
10
+ This page covers the PR-comment analysis surface only. Other repository-level commands, such as `oat repo archive sync`, are covered in [Lifecycle](../workflows/projects/lifecycle.md#completion-archive-behavior) and [Configuration](configuration.md#shared-repo-config-you-will-touch-most-often).
11
11
 
12
12
  ## Quick Look
13
13
 
@@ -102,4 +102,4 @@ Both commands accept dependency injection for testability:
102
102
 
103
103
  - Source: `packages/cli/src/commands/repo/pr-comments/`
104
104
  - Types: `packages/cli/src/commands/repo/pr-comments/collect/pr-comments.types.ts`
105
- - Archive sync: [Lifecycle](lifecycle.md#completion-archive-behavior) and [Configuration](../../cli-utilities/configuration.md#shared-repo-config-you-will-touch-most-often)
105
+ - Archive sync: [Lifecycle](../workflows/projects/lifecycle.md#completion-archive-behavior) and [Configuration](configuration.md#shared-repo-config-you-will-touch-most-often)