@open-agent-toolkit/cli 0.2.14 → 0.2.15

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 (49) hide show
  1. package/assets/docs/cli-utilities/config-and-local-state.md +14 -1
  2. package/assets/docs/cli-utilities/configuration.md +23 -2
  3. package/assets/docs/cli-utilities/tool-packs.md +43 -17
  4. package/assets/docs/provider-sync/providers.md +26 -0
  5. package/assets/docs/reference/troubleshooting.md +42 -0
  6. package/assets/docs/workflows/projects/lifecycle.md +2 -2
  7. package/assets/public-package-versions.json +4 -4
  8. package/assets/skills/oat-agent-instructions-analyze/SKILL.md +2 -2
  9. package/assets/skills/oat-brainstorm/SKILL.md +8 -8
  10. package/assets/skills/oat-brainstorm/references/destinations.md +3 -3
  11. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +2 -2
  12. package/assets/skills/oat-project-document/SKILL.md +4 -4
  13. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +2 -2
  14. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +2 -2
  15. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +2 -2
  16. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +2 -2
  17. package/assets/skills/oat-project-summary/SKILL.md +9 -9
  18. package/dist/commands/init/tools/brainstorm/index.d.ts +0 -3
  19. package/dist/commands/init/tools/brainstorm/index.d.ts.map +1 -1
  20. package/dist/commands/init/tools/brainstorm/index.js +0 -12
  21. package/dist/commands/init/tools/index.d.ts.map +1 -1
  22. package/dist/commands/init/tools/index.js +46 -25
  23. package/dist/commands/tools/has/has-pack.d.ts +18 -0
  24. package/dist/commands/tools/has/has-pack.d.ts.map +1 -0
  25. package/dist/commands/tools/has/has-pack.js +33 -0
  26. package/dist/commands/tools/has/index.d.ts +4 -0
  27. package/dist/commands/tools/has/index.d.ts.map +1 -0
  28. package/dist/commands/tools/has/index.js +57 -0
  29. package/dist/commands/tools/index.d.ts.map +1 -1
  30. package/dist/commands/tools/index.js +2 -0
  31. package/dist/commands/tools/remove/index.d.ts.map +1 -1
  32. package/dist/commands/tools/remove/index.js +10 -20
  33. package/dist/commands/tools/shared/project-tools-config.d.ts +16 -0
  34. package/dist/commands/tools/shared/project-tools-config.d.ts.map +1 -0
  35. package/dist/commands/tools/shared/project-tools-config.js +59 -0
  36. package/dist/commands/tools/update/index.d.ts.map +1 -1
  37. package/dist/commands/tools/update/index.js +11 -22
  38. package/dist/engine/compute-plan.d.ts.map +1 -1
  39. package/dist/engine/compute-plan.js +8 -2
  40. package/dist/engine/execute-plan.d.ts +5 -1
  41. package/dist/engine/execute-plan.d.ts.map +1 -1
  42. package/dist/engine/execute-plan.js +23 -1
  43. package/dist/engine/index.d.ts +1 -0
  44. package/dist/engine/index.d.ts.map +1 -1
  45. package/dist/engine/index.js +1 -0
  46. package/dist/engine/provider-path-safety.d.ts +2 -0
  47. package/dist/engine/provider-path-safety.d.ts.map +1 -0
  48. package/dist/engine/provider-path-safety.js +54 -0
  49. package/package.json +2 -2
@@ -166,6 +166,7 @@ Archive lifecycle settings live here as shared repo config:
166
166
  Tool-pack installation state also lives here as shared repo config:
167
167
 
168
168
  - `tools.core`
169
+ - `tools.brainstorm`
169
170
  - `tools.docs`
170
171
  - `tools.ideas`
171
172
  - `tools.project-management`
@@ -173,7 +174,19 @@ Tool-pack installation state also lives here as shared repo config:
173
174
  - `tools.utility`
174
175
  - `tools.workflows`
175
176
 
176
- Use `oat config get tools.<pack>` when you need an explicit installed-capability signal for workflows or troubleshooting. PJM diagnostics use `tools.project-management`; disabled or unset repos report PJM as skipped instead of treating absent `.oat/repo/pjm/` files as drift.
177
+ This complete eight-pack map is the shared project installation snapshot.
178
+ Lifecycle reconciliation derives it only from project-scoped canonical assets;
179
+ user-only packs do not set these keys. Use `oat config get tools.<pack>` to
180
+ inspect repository installation state.
181
+
182
+ For workflow routing or troubleshooting that needs current effective
183
+ availability, run `oat tools has <pack>`. It checks project plus user scope by
184
+ default; use `--scope project` or `--scope user` to isolate one scope. The
185
+ global `--json` flag returns the matching scopes with the boolean result.
186
+
187
+ PJM diagnostics intentionally use project configuration where repository setup
188
+ is the question. Disabled or unset repos report PJM as skipped instead of
189
+ treating absent `.oat/repo/pjm/` files as drift.
177
190
 
178
191
  Workflow automation preferences are also visible through `oat config` and can be set at local, shared, or user scope. Notable review-loop keys:
179
192
 
@@ -87,7 +87,7 @@ Common keys in `.oat/config.json`:
87
87
  - `archive.wrapUpExportPath` — optional tracked destination for `oat-wrap-up` reports; when unset, the skill falls back to `.oat/repo/reference/wrap-ups`
88
88
  - `archive.awsProfile` — optional AWS named profile forwarded as `AWS_PROFILE` to every `aws` invocation in archive flows
89
89
  - `archive.awsRegion` — optional AWS region forwarded as `AWS_REGION` to every `aws` invocation in archive flows
90
- - `tools.<pack>` — whether a bundled tool pack is currently installed in the repo or user scopes after lifecycle reconciliation
90
+ - `tools.<pack>` — project-scoped installation state for a bundled tool pack after lifecycle reconciliation
91
91
  - `workflow.gates.skills` / `workflow.gates.execTargets` — per-skill gates and cross-runtime exec targets; manage with `oat gate`
92
92
  - `workflow.gateTimeouts.code` / `workflow.gateTimeouts.artifact` — default review budgets in milliseconds
93
93
 
@@ -98,7 +98,28 @@ oat config get tools.project-management
98
98
  oat config set tools.project-management true
99
99
  ```
100
100
 
101
- The `tools.*` keys are primarily maintained by `oat tools install`, `oat tools update`, and `oat tools remove`, but they are intentionally visible through `oat config` so workflows and operators can inspect or override pack-state signals when needed.
101
+ The `tools.*` group is a shared project installation snapshot, not an
102
+ effective project-plus-user capability signal. `oat tools install`, `oat tools
103
+ update`, and `oat tools remove` reconcile it from project-scoped canonical
104
+ assets only. When project state is non-empty, reconciliation writes the complete
105
+ eight-pack boolean map. When no project packs remain, it removes the group while
106
+ preserving unrelated shared keys. User-only assets are ignored.
107
+
108
+ Use `oat config get tools.<pack>` to inspect project installation state.
109
+ `oat config set tools.<pack> ...` remains available as a shared override, but a
110
+ later lifecycle reconciliation may replace the manual value with the canonical
111
+ project snapshot.
112
+
113
+ Use `oat tools has <pack>` for current effective availability. It checks project
114
+ and user scopes by default; add `--scope project` or `--scope user` to isolate a
115
+ scope, and use the global `--json` flag for the `{ pack, available, scopes }`
116
+ result:
117
+
118
+ ```bash
119
+ oat tools has project-management
120
+ oat tools has project-management --scope user
121
+ oat --json tools has project-management
122
+ ```
102
123
 
103
124
  ### Explainer configuration
104
125
 
@@ -11,7 +11,7 @@ This page covers CLI commands that manage bundled OAT tool packs and installed O
11
11
 
12
12
  - What it does: explains how bundled OAT packs are installed, updated, inspected, and removed.
13
13
  - When to use it: when you need to add capabilities to a repo, update installed skills, or understand which packs own which tools.
14
- - Primary commands: `oat tools list`, `oat tools install`, `oat tools update`, `oat tools remove`
14
+ - Primary commands: `oat tools list`, `oat tools has`, `oat tools install`, `oat tools update`, `oat tools remove`
15
15
 
16
16
  ## Bundled packs at a glance
17
17
 
@@ -187,6 +187,28 @@ Key behavior:
187
187
  - Reports whether the tool is invocable (for skills) and whether an update is available
188
188
  - Returns exit code 1 if the tool is not found in any scope
189
189
 
190
+ ### `oat tools has <pack>`
191
+
192
+ Purpose:
193
+
194
+ - Check current availability of one bundled pack without treating shared config as a runtime capability cache
195
+
196
+ Key behavior:
197
+
198
+ - Defaults to effective availability across project and user scopes
199
+ - Accepts `--scope project`, `--scope user`, or `--scope all`
200
+ - Prints `true` or `false` in plain mode
201
+ - With the global `--json` flag, emits `{ "pack": "<pack>", "available": <boolean>, "scopes": ["project", "user"] }`; `scopes` contains only locations where the pack is currently found
202
+ - Exits `0` for every valid query, including an unavailable pack, `1` for an invalid pack or other actionable input error, and `2` for an unexpected scan or runtime failure
203
+
204
+ Examples:
205
+
206
+ ```bash
207
+ oat tools has project-management
208
+ oat tools has brainstorm --scope user
209
+ oat --json tools has workflows
210
+ ```
211
+
190
212
  ### `oat tools install`
191
213
 
192
214
  Purpose:
@@ -205,7 +227,7 @@ Key behavior:
205
227
  - Removing a pack from a scope happens only when you explicitly choose a narrower end-state in the interactive flow (e.g. a pack at `both` set to `project` only). All staged removals are shown in a single change summary and applied only after one batch confirmation — declining makes no changes
206
228
  - Non-interactive installs (including `--scope project`, `--scope user`, and the default pack set) are strictly additive and never remove a pack from a scope. Removal is interactive-only
207
229
  - Tracks installed vs bundled skill versions and reports outdated skills
208
- - Records installed pack state in shared repo config as `tools.<pack>: true` so other OAT workflows can detect installed capabilities without relying on filesystem heuristics
230
+ - Reconciles shared repo config from project-scoped canonical assets only; a user-only install does not set `tools.<pack>: true`
209
231
  - Refreshes the managed `OAT tools` section in the repository-root `AGENTS.md`.
210
232
  - Installing the `project-management` pack—through either the aggregate picker or `oat tools install project-management`—also upserts a managed `OAT project-management` section. It points agents to `.oat/repo/AGENTS.md` for active PJM and durable-reference routing, summarizes when to consult it, and gives decision-specific guidance for reviewing and creating durable records without hand-editing the generated index.
211
233
  - Interactive runs can prompt to update selected outdated skills
@@ -226,7 +248,7 @@ Key behavior:
226
248
  - Compares installed versions against bundled versions and copies updated assets
227
249
  - For `--pack <pack>` and `--all`, an already-installed pack is reconciled to include newly added bundled skills or agents in that same scope
228
250
  - Pack-targeted updates intentionally rewrite bundled template and script companions in place, even when the pack's installed skills are already current
229
- - For `--pack <pack>` and `--all`, shared repo config is also reconciled from an installed-pack scan so `tools.*` reflects what is actually available and stale `true` flags are cleared
251
+ - For `--pack <pack>` and `--all`, shared repo config is also reconciled from a project-scoped installed-pack scan so `tools.*` reflects repository installation state and stale `true` flags are cleared
230
252
  - Dry-run mode with `--dry-run`; auto-sync after mutations by default
231
253
  - Use `--no-sync` to skip auto-sync
232
254
  - Reports tools that are already current, newer than bundled, or not bundled (custom)
@@ -241,19 +263,21 @@ Key behavior:
241
263
 
242
264
  - Accepts a tool name, `--pack <pack>`, or `--all` (mutually exclusive)
243
265
  - Removes skill directories and agent `.md` files from canonical locations
244
- - For `--pack <pack>` and `--all`, shared repo config is rewritten from a post-removal scan so `tools.<pack>` becomes `false` when a pack is no longer installed in any scope
266
+ - For `--pack <pack>` and `--all`, shared repo config is reconciled from a post-removal project scan; removing the last project copy clears project state even when a user copy remains
245
267
  - Dry-run mode with `--dry-run`; auto-sync after mutations by default
246
268
  - Use `--no-sync` to skip auto-sync
247
269
 
248
270
  ## Shared config signal: `tools.*`
249
271
 
250
- Tool-pack lifecycle commands now persist pack availability in shared repo config under `.oat/config.json`.
272
+ Tool-pack lifecycle commands maintain a project installation snapshot in shared repo config under `.oat/config.json`.
273
+
274
+ - Install, update, and remove reconcile the snapshot from project-scoped canonical assets only. User-only operations never set a shared `true` flag.
275
+ - When at least one project pack is installed, reconciliation writes the complete eight-pack boolean map: `core`, `ideas`, `docs`, `workflows`, `utility`, `project-management`, `research`, and `brainstorm`.
276
+ - When no project packs remain, reconciliation removes the entire `tools` map. It preserves unrelated shared keys, avoids creating a default-only config file, and skips unchanged writes.
251
277
 
252
- - `oat tools install <pack>` writes `tools.<pack>: true`
253
- - `oat tools update --pack <pack>` and `oat tools update --all` rebuild the full `tools` map from installed-pack scans
254
- - `oat tools remove --pack <pack>` and `oat tools remove --all` rebuild the same map after removals
278
+ Use `oat config get tools.<pack>` to inspect this project snapshot. A manual `oat config set tools.<pack> ...` value is a shared override that the next lifecycle reconciliation may replace.
255
279
 
256
- This matters because other workflows can now check `oat config get tools.<pack>` instead of inferring capabilities from directory existence alone. For example, `oat-project-document` checks `tools.project-management` before auto-running repo-reference refresh work.
280
+ Use `oat tools has <pack>` when a workflow needs current effective availability from project or user scope. For example, `oat-project-document` checks `oat tools has project-management` before auto-running repo-reference refresh work.
257
281
 
258
282
  ## Workflows pack
259
283
 
@@ -378,20 +402,22 @@ Key behavior:
378
402
  and can surface it later if the conversation turns visual. Persistence paths
379
403
  use OAT-managed prefixes (`.oat/brainstorm/<session-id>/` repo-scope or
380
404
  `~/.oat/brainstorm/<session-id>/` user-scope).
381
- - **Terminal-state picker filtered by `tools.<pack>` config.** When the user
382
- converges on a destination, the skill consults `oat config get tools.ideas`,
383
- `tools.project-management`, and `tools.workflows` to filter the available
384
- terminal states. Pack-gated outcomes (capture-as-idea, scoped backlog item,
385
- project promotion, active-project fold-back) only appear when the
386
- corresponding pack is installed.
405
+ - **Terminal-state picker filtered by effective pack availability.** When the
406
+ user converges on a destination, the skill runs `oat tools has ideas`, `oat
407
+ tools has project-management`, and `oat tools has workflows` to filter the
408
+ available terminal states. Pack-gated outcomes (capture-as-idea, scoped
409
+ backlog item, project promotion, active-project fold-back) appear when the
410
+ corresponding pack is available at project or user scope. The separate `oat
411
+ config get activeProject` lookup resolves active project state.
387
412
  - **Destinations playbook.** The full set of terminal-state stanzas — trigger
388
413
  phrases, required template fields, confirmation patterns, handoff targets —
389
414
  lives at `.agents/skills/oat-brainstorm/references/destinations.md` and is
390
415
  consulted by the skill at destination-identification time.
391
416
  - **Pack lifecycle.** `oat tools install brainstorm`, `oat tools update --pack
392
417
  brainstorm`, and `oat tools remove --pack brainstorm` manage the skill plus
393
- visual-companion bundle as a unit. Standard config-write semantics
394
- (`tools.brainstorm: true` on install) apply.
418
+ visual-companion bundle as a unit. Project installs participate in the shared
419
+ project snapshot; user-only installs remain available through `oat tools has
420
+ brainstorm` without setting `tools.brainstorm` in shared config.
395
421
 
396
422
  ### Auto-sync behavior
397
423
 
@@ -116,6 +116,32 @@ than falling back to the root target or a base role.
116
116
  - Rule adoption normalizes provider filenames back to canonical `.agents/rules/*.md` entries before cross-provider fanout.
117
117
  - Cross-provider fanout is explicit via `oat sync --scope all`.
118
118
 
119
+ ## Provider mutation safety
120
+
121
+ The generic sync engine validates provider destinations for every operation that
122
+ creates or updates a symlink, creates or updates a copy, or removes a managed
123
+ provider path. The same guard applies across provider adapters; it is not
124
+ Claude-specific.
125
+
126
+ Validation runs at three boundaries:
127
+
128
+ 1. During planning, before a provider operation is classified.
129
+ 2. Across the complete mutating plan before apply starts, so an already-unsafe
130
+ later entry cannot allow earlier provider or manifest mutations.
131
+ 3. Immediately before each entry's first filesystem mutation, so ancestry that
132
+ changes after preflight fails closed.
133
+
134
+ A mutation is refused when its destination escapes the sync scope, equals the
135
+ scope root, or has any existing parent that is a symbolic link or not a
136
+ directory. The final managed destination is excluded from the ancestry walk, so
137
+ an existing managed symlink can still be updated or removed normally.
138
+
139
+ Whole-plan preflight refusal leaves provider paths, canonical content, external
140
+ symlink targets, and manifest state unchanged. If ancestry changes after
141
+ preflight, the affected entry fails before its first removal or write and does
142
+ not gain manifest ownership. OAT does not traverse, unlink, or rewrite the
143
+ unsafe parent.
144
+
119
145
  ## Reference artifacts
120
146
 
121
147
  - `.oat/projects/<scope>/<project>/spec.md` (FR5)
@@ -61,6 +61,48 @@ Use [Instruction Sync](../provider-sync/instruction-sync.md) for the full strate
61
61
  - In TTY mode, select which outdated skills to update when prompted.
62
62
  - In non-interactive mode, rerun the relevant pack subcommand with `--force` if you want to overwrite outdated installed skills.
63
63
 
64
+ ## `sync` reports an unsafe provider parent
65
+
66
+ Errors containing `Unsafe provider parent`, `symbolic links are not allowed in
67
+ provider ancestry`, or `provider ancestry is not a directory` mean an existing
68
+ parent of a managed provider destination is a symlink or a non-directory entry.
69
+ OAT refuses to traverse, unlink, or rewrite that parent because it may be
70
+ user-managed or externally owned. Canonical content and external symlink targets
71
+ remain untouched.
72
+
73
+ Recover explicitly:
74
+
75
+ 1. Inspect the reported parent and preserve or migrate any user-managed content.
76
+ 2. Replace that provider parent with a real directory under the intended project
77
+ or user sync scope.
78
+ 3. Rerun sync with the matching scope:
79
+
80
+ ```bash
81
+ oat sync --scope project
82
+ oat sync --scope user
83
+ oat sync --scope all
84
+ ```
85
+
86
+ Do not replace the parent until you understand who owns its existing target.
87
+ OAT intentionally does not automate this recovery.
88
+
89
+ ## A user-installed pack is missing from shared `tools.*`
90
+
91
+ This is expected. `.oat/config.json#tools` records project installation state,
92
+ so a user-only install does not set `tools.<pack>` in shared repo config.
93
+
94
+ Check effective project-plus-user availability with:
95
+
96
+ ```bash
97
+ oat tools has <pack>
98
+ ```
99
+
100
+ To confirm specifically that the user copy is present, run:
101
+
102
+ ```bash
103
+ oat tools has <pack> --scope user
104
+ ```
105
+
64
106
  ## Manifest not found or invalid
65
107
 
66
108
  - Missing manifest: run `sync` or `init`
@@ -18,7 +18,7 @@ OAT lifecycle order:
18
18
  7. Summary (`oat-project-summary`) — generates `summary.md` as institutional memory; `oat-project-pr-final` and `oat-project-complete` auto-refresh it when missing or stale
19
19
  8. PR (`oat-project-pr-progress` / `oat-project-pr-final`) — sets `pr_open` status
20
20
  9. Revision loop (`oat-project-revise`) — optional; accepts post-PR feedback
21
- 10. Documentation sync (`oat-project-document`) — optional; reads project artifacts and code evidence to identify docs needing updates, checks for missing coverage of newly shipped capability areas, checks `tools.project-management`, and auto-runs `oat-pjm-update-repo-reference` before scanning docs when the project-management pack is installed
21
+ 10. Documentation sync (`oat-project-document`) — optional; reads project artifacts and code evidence to identify docs needing updates, checks for missing coverage of newly shipped capability areas, checks effective project-management availability with `oat tools has project-management`, and auto-runs `oat-pjm-update-repo-reference` before scanning docs when the pack is available
22
22
  11. Complete (`oat-project-complete`)
23
23
 
24
24
  **Shortcut:** `oat-project-next` reads project state and invokes the correct next skill automatically — use it instead of remembering which skill comes next. Complements `oat-project-progress` (which is read-only diagnostic).
@@ -63,7 +63,7 @@ from missing state.
63
63
  After implementation closeout finishes:
64
64
 
65
65
  1. **Summary** (`oat-project-summary`) — generates `summary.md` as institutional memory from project artifacts; PR-final and completion will auto-refresh it if you have not already run it or if it is stale
66
- 2. **Documentation** (`oat-project-document`) — optional sync of project docs; now uses the shared `tools.project-management` config signal to decide whether repo-reference refresh should run before docs analysis, and should recommend new docs pages/directories when the shipped work introduces a capability area that the docs app does not already cover
66
+ 2. **Documentation** (`oat-project-document`) — optional sync of project docs; checks effective project-management availability with `oat tools has project-management` to decide whether repo-reference refresh should run before docs analysis, and should recommend new docs pages/directories when the shipped work introduces a capability area that the docs app does not already cover
67
67
  3. **PR** (`oat-project-pr-final`) — creates PR description (auto-refreshes `summary.md` first when needed, then uses it as source), sets `oat_phase_status: pr_open`, and tracks actual PR existence with `oat_pr_status` / `oat_pr_url`
68
68
  4. **Revision loop** (`oat-project-revise`) — accepts post-PR feedback:
69
69
  - Inline feedback creates `p-revN` revision phases with `prevN-tNN` task IDs
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.2.14",
3
- "docs-config": "0.2.14",
4
- "docs-theme": "0.2.14",
5
- "docs-transforms": "0.2.14"
2
+ "cli": "0.2.15",
3
+ "docs-config": "0.2.15",
4
+ "docs-theme": "0.2.15",
5
+ "docs-transforms": "0.2.15"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-agent-instructions-analyze
3
- version: 1.11.1
3
+ version: 1.11.2
4
4
  description: Run when you need to evaluate agent instruction file coverage, quality, and drift. Produces a severity-rated analysis artifact. Run before oat-agent-instructions-apply to identify what needs improvement.
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
@@ -107,7 +107,7 @@ Delta mode scoping:
107
107
  git diff --name-only "$STORED_HASH"..HEAD
108
108
  ```
109
109
 
110
- Use the changed file list to limit coverage gap assessment (Step 5) and drift detection (Step 7) to affected directories. Quality evaluation (Step 4) always runs on ALL instruction files regardless of mode.
110
+ Use the changed file list to limit coverage gap assessment (Step 4) and drift detection (Step 6) to affected directories. Quality evaluation (Step 3) always runs on ALL instruction files regardless of mode.
111
111
 
112
112
  ### Step 1: Discover Instruction Files
113
113
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-brainstorm
3
- version: 1.1.0
3
+ version: 1.1.1
4
4
  description: Use when the user explicitly invokes the `brainstorm` verb, including `/oat-brainstorm`, "let's brainstorm", "brainstorm this", "can we brainstorm X", or "help me brainstorm X". For ambiguous exploratory phrasing ("I've been thinking", "what if", "help me think through"), do NOT auto-enter; respond conversationally and offer mode only after ≥2 sustained exploratory turns. Do NOT use for review, debug, PR, status, implementation, or active-workflow questions.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -97,7 +97,7 @@ These messages get a direct response, not a workflow takeover. If the model has
97
97
 
98
98
  - Free-form exploratory conversation, one question at a time, multiple-choice when possible, 2-3 distinct approaches with a recommendation.
99
99
  - Per-question visual-companion routing (browser for visual content, terminal for text).
100
- - Pack and active-project detection at convergence time (`oat config get tools.<pack>` / `oat config get activeProject`).
100
+ - Pack and active-project detection at convergence time (`oat tools has <pack>` / `oat config get activeProject`).
101
101
  - Reading downstream skill files (`oat-idea-*`, `oat-pjm-add-backlog-item`, `oat-project-*`) and following their process inline using the synthesized payload as pre-filled answers.
102
102
  - Rendering the doc-to-path artifact from `templates/brainstorm-doc.md`.
103
103
  - Active-project fold-back: appending synthesis to the chosen upstream artifact and committing — only after the safety contract (preflight, scoped staging, conditional handoff print) is satisfied.
@@ -135,7 +135,7 @@ These indicators apply only on Hard Activation (see `## Activation Contract`). O
135
135
  - `Activating brainstorm mode…`
136
136
  - `Asserting mode (blocked / allowed)…`
137
137
  - `Assessing visual need…`
138
- - `Detecting installed packs and active project…`
138
+ - `Detecting available packs and active project…`
139
139
  - `Free brainstorming (Superpowers cadence)…`
140
140
  - `Watching for destination signals…`
141
141
  - `Satisfaction check…`
@@ -156,7 +156,7 @@ Apply the **Activation Contract**. The full Process flow (Steps 2-9) only runs o
156
156
 
157
157
  When Hard Activation triggers, the user has not already named a destination skill or artifact type. Do not route those blank-slate brainstorms to `oat-idea-ideate` merely because they may later become an idea, backlog item, project, or document.
158
158
 
159
- There are no preconditions to check at activation — pack detection and active-project detection happen at step 4, after visual-need assessment, so this skill works in any repo regardless of which OAT packs are installed.
159
+ There are no preconditions to check at activation — pack detection and active-project detection happen at step 4, after visual-need assessment, so this skill works in any repo regardless of which OAT packs are available.
160
160
 
161
161
  **Soft Exploratory Path** (per Activation Contract): respond conversationally with brainstorm-quality structure (options, tradeoffs, open questions, no premature implementation, no destination guess). Do not print the banner, assert mode, run pack detection, or offer the visual companion. Track an exploratory-turn counter for the thread; on the 2nd+ consecutive exploratory turn with no concrete action requested, append the soft offer once: "If you want, I can switch into structured brainstorm mode for this." If the user accepts, transition to Hard Activation and re-enter Step 2.
162
162
 
@@ -216,9 +216,9 @@ The `active`, `declined`, and `unavailable` decisions apply for the rest of the
216
216
  Run pack-detection and active-project resolution **once** per session, before the conversation starts. Mirrors the convention used by `oat-project-document`.
217
217
 
218
218
  ```bash
219
- IDEAS_INSTALLED=$(oat config get tools.ideas 2>/dev/null || echo "false")
220
- PJM_INSTALLED=$(oat config get tools.project-management 2>/dev/null || echo "false")
221
- WORKFLOWS_INSTALLED=$(oat config get tools.workflows 2>/dev/null || echo "false")
219
+ IDEAS_INSTALLED=$(oat tools has ideas 2>/dev/null || echo "false")
220
+ PJM_INSTALLED=$(oat tools has project-management 2>/dev/null || echo "false")
221
+ WORKFLOWS_INSTALLED=$(oat tools has workflows 2>/dev/null || echo "false")
222
222
  ACTIVE_PROJECT=$(oat config get activeProject 2>/dev/null || echo "")
223
223
 
224
224
  ACTIVE_PROJECT_VALID="false"
@@ -626,7 +626,7 @@ End mode assertion when the split handoff completes or reports its own blocker.
626
626
  - ✅ Phase banner `OAT ▸ BRAINSTORM` is printed exactly once at activation; mode assertion follows immediately.
627
627
  - ✅ Visual-companion offer is conditional on visual need, not Node availability alone. Text-likely brainstorms set `VISUAL_COMPANION = "deferred"` and continue without mentioning the companion.
628
628
  - ✅ When a visual-companion offer is made, it is its own message with no other content. The offer is suppressed entirely (no message printed) when `node` is not on PATH.
629
- - ✅ Pack and active-project detection (`oat config get tools.<pack>` and `oat config get activeProject`) runs once per session at step 4, before the conversation starts.
629
+ - ✅ Pack and active-project detection (`oat tools has <pack>` and `oat config get activeProject`) runs once per session at step 4, before the conversation starts.
630
630
  - ✅ Conversation cadence holds the Superpowers contract: one question at a time, multiple-choice preferred, 2-3 distinct approaches with a recommendation, per-question visual-companion routing.
631
631
  - ✅ Destination is identified via either trigger-phrase opportunistic surfacing (loose substring + paraphrase tolerance, not regex; ambiguity → ask) or convergence cue (pack-filtered terminal-state picker).
632
632
  - ✅ The terminal-state picker conditionally includes `Promote to N projects` only when `oat project split evaluate-signals` reports `triggered: true`; small-scope convergence keeps the option hidden.
@@ -47,7 +47,7 @@ Always honor an explicit user-supplied path over the suggestion. Brainstorm docs
47
47
 
48
48
  ### Destination: Capture as new idea
49
49
 
50
- **Pack required:** `ideas` (i.e., `oat config get tools.ideas` returns `true`)
50
+ **Pack required:** `ideas` (i.e., `oat tools has ideas` returns `true`)
51
51
  **Trigger phrases:** "capture as an idea", "this is an idea worth keeping", "let's track this as an idea", "save this as an idea", "make a new idea for this".
52
52
  **Required template fields:** `title` (slug-friendly), `summary`, `motivation` (Why Is It Interesting?), `vision` (What Would It Look Like?), `transcriptSessionNote`. Template: `.oat/templates/ideas/idea-discovery.md` (consumed via `oat-idea-new`).
53
53
  **Optional template fields:** `approachesConsidered`, `chosenDirection`, `openQuestions`, `nextSteps`.
@@ -83,7 +83,7 @@ Always honor an explicit user-supplied path over the suggestion. Brainstorm docs
83
83
 
84
84
  ### Destination: Scoped backlog item
85
85
 
86
- **Pack required:** `project-management` (i.e., `oat config get tools.project-management` returns `true`)
86
+ **Pack required:** `project-management` (i.e., `oat tools has project-management` returns `true`)
87
87
  **Trigger phrases:** "track this as a backlog item", "make a ticket", "log this", "open a backlog entry", "add this to the backlog", "create a backlog item for this".
88
88
  **Required template fields:** `title` (1-line summary), `description` (problem + proposed approach), `acceptance criteria` (bullet list), `scope` (xs / s / m / l / xl), `priority` (p0 / p1 / p2 / p3). Template: `.oat/templates/backlog-item.md` (consumed via `oat-pjm-add-backlog-item`).
89
89
  **Optional template fields:** related items, target release, owner.
@@ -112,7 +112,7 @@ Confirm to write this to a new backlog item file, or tell me what to change.
112
112
 
113
113
  ### Destination: Promote to new OAT project
114
114
 
115
- **Pack required:** `workflows` (i.e., `oat config get tools.workflows` returns `true`)
115
+ **Pack required:** `workflows` (i.e., `oat tools has workflows` returns `true`)
116
116
  **Trigger phrases:** "let's make this a project", "promote this to a project", "scaffold a project for this", "this is project-sized — let's start one".
117
117
  **Required template fields:** `title`, `summary` (Initial Request), `approachesConsidered` (Solution Space), `chosenDirection` (Chosen Direction), key decisions, `openQuestions`. Template: `.oat/templates/discovery.md` (consumed via `oat project new`).
118
118
  **Optional template fields:** `motivation`, `vision`, `nextSteps`.
@@ -239,9 +239,9 @@ remains immutable baseline evidence for the original p01-t01 verification.
239
239
  | `oat-project-implement/references/docs/autonomy-contract.md` | `* -> NG` |
240
240
  | `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10` |
241
241
  | `oat-project-implement/references/plan-and-resume.md` | `413829d31e32 -> IMPLEMENT-02`; `c7706cd8ad09 -> IMPLEMENT-03`; `a80a948df658 -> IMPLEMENT-03`; `b7ea139780ec -> IMPLEMENT-03+IMPLEMENT-04`; `8d438f2180ba -> IMPLEMENT-03`; `9e72e0518cda -> IMPLEMENT-03`; `3e177a1021e6 -> IMPLEMENT-03+IMPLEMENT-04`; `b59fc9eb9ce3 -> IMPLEMENT-03`; `a2b1d6855283 -> IMPLEMENT-03`; `44351a32e52a -> IMPLEMENT-03`; `b98b022f5523 -> IMPLEMENT-03`; `e9f5b949e214 -> IMPLEMENT-03`; `316fb6d9e980 -> IMPLEMENT-03`; `8b25a2c5c548 -> IMPLEMENT-03`; `1a59b1c0e705 -> IMPLEMENT-03`; `466cd562fc52 -> IMPLEMENT-03`; `083d896978d5 -> IMPLEMENT-03`; `f4ab11c13ae9 -> IMPLEMENT-03`; `7dc17ffcc1c4 -> IMPLEMENT-03`; `f731a90adabd -> IMPLEMENT-04`; `886ac01e7aa9 -> IMPLEMENT-04`; `b715db67df0c -> IMPLEMENT-04`; `2d9f26a539f3 -> IMPLEMENT-10`; `28384dee114f -> IMPLEMENT-05`; `f2591a4978b4 -> NG`; `8290823080b5 -> IMPLEMENT-06`; `f75789bf6c8e -> IMPLEMENT-07` |
242
- | `oat-project-document/SKILL.md` | `4fc2d8618208 -> NG`; `173a1c48e53c -> NG`; `40f8be47affa -> NG`; `3a3c390528f3 -> DOCUMENT-03`; `2a7ba093b315 -> DOCUMENT-02`; `252aabe44db2 -> DOCUMENT-02`; `3751172de299 -> DOCUMENT-02`; `b987a0697ba9 -> DOCUMENT-01`; `a06ff3ca7926 -> NG`; `0d04714ca9fc -> NG`; `f79af01d94c6 -> DOCUMENT-02`; `71634113c348 -> DOCUMENT-02`; `cdb707f5081e -> NG` |
242
+ | `oat-project-document/SKILL.md` | `4fc2d8618208 -> NG`; `3f9b0273ba77 -> NG`; `40f8be47affa -> NG`; `3a3c390528f3 -> DOCUMENT-03`; `2a7ba093b315 -> DOCUMENT-02`; `252aabe44db2 -> DOCUMENT-02`; `3751172de299 -> DOCUMENT-02`; `b987a0697ba9 -> DOCUMENT-01`; `a06ff3ca7926 -> NG`; `0d04714ca9fc -> NG`; `f79af01d94c6 -> DOCUMENT-02`; `71634113c348 -> DOCUMENT-02`; `cdb707f5081e -> NG` |
243
243
  | `oat-project-document/references/docs/autonomy-contract.md` | `* -> NG` |
244
- | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `696bb6045b6a -> NG`; `bcb503aaefb5 -> NG`; `f3e49b727752 -> NG`; `f583e86359ae -> NG`; `e73bd88837ea -> NG`; `83257ff6cb68 -> NG`; `c8fced47ef8e -> NG`; `d7ea1e2a4f5f -> NG` |
244
+ | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `8ff515033147 -> NG`; `ac36f854dd6b -> NG`; `f3e49b727752 -> NG`; `5f315ab87cb1 -> NG`; `e73bd88837ea -> NG`; `83257ff6cb68 -> NG`; `c8fced47ef8e -> NG`; `d7ea1e2a4f5f -> NG` |
245
245
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `5eb3949f32e1 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
246
246
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
247
247
  | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `ffcdc9d576c0 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `9497d9f94eed -> COMPLETE-01`; `7b59c728d3fb -> COMPLETE-01`; `48e10a9636fe -> COMPLETE-01`; `c0dad37fc166 -> COMPLETE-01`; `aa9a36243ec1 -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `12f7c30a54c8 -> NG`; `fffe5eea5ebd -> NG` |
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: oat-project-document
3
- version: 1.6.1
3
+ version: 1.6.2
4
4
  description: Use when the user requests or confirms documenting an active OAT project — e.g. "document the project", "update the docs", "run oat-project-document", or confirms a previously offered documentation run. Do NOT auto-invoke when implementation completes. Analyzes project artifacts, presents a documentation delta plan, and applies approved changes.
5
5
  argument-hint: '[project-path] [--auto]'
6
6
  disable-model-invocation: false
7
7
  user-invocable: true
8
- allowed-tools: Read, Write, Edit, Bash(git:*), Glob, Grep, AskUserQuestion, Skill
8
+ allowed-tools: Read, Write, Edit, Bash(git:*), Bash(oat tools:*), Glob, Grep, AskUserQuestion, Skill
9
9
  ---
10
10
 
11
11
  # Project Documentation Sync
@@ -159,10 +159,10 @@ Store resolved values for use in later steps. Do not write auto-detected values
159
159
 
160
160
  ### Step 1: Check for PJM Infrastructure
161
161
 
162
- Check whether the project-management tool pack is installed by reading config:
162
+ Check whether the project-management tool pack is effectively available:
163
163
 
164
164
  ```bash
165
- PJM_INSTALLED=$(oat config get tools.project-management 2>/dev/null || echo "false")
165
+ PJM_INSTALLED=$(oat tools has project-management 2>/dev/null || echo "false")
166
166
  ```
167
167
 
168
168
  **If `PJM_INSTALLED` is `true`:**
@@ -239,9 +239,9 @@ remains immutable baseline evidence for the original p01-t01 verification.
239
239
  | `oat-project-implement/references/docs/autonomy-contract.md` | `* -> NG` |
240
240
  | `oat-project-implement/references/phase-execution.md` | `27737e814790 -> NG`; `6dda2b8e62e2 -> IMPLEMENT-10`; `b3197086bb1e -> IMPLEMENT-10` |
241
241
  | `oat-project-implement/references/plan-and-resume.md` | `413829d31e32 -> IMPLEMENT-02`; `c7706cd8ad09 -> IMPLEMENT-03`; `a80a948df658 -> IMPLEMENT-03`; `b7ea139780ec -> IMPLEMENT-03+IMPLEMENT-04`; `8d438f2180ba -> IMPLEMENT-03`; `9e72e0518cda -> IMPLEMENT-03`; `3e177a1021e6 -> IMPLEMENT-03+IMPLEMENT-04`; `b59fc9eb9ce3 -> IMPLEMENT-03`; `a2b1d6855283 -> IMPLEMENT-03`; `44351a32e52a -> IMPLEMENT-03`; `b98b022f5523 -> IMPLEMENT-03`; `e9f5b949e214 -> IMPLEMENT-03`; `316fb6d9e980 -> IMPLEMENT-03`; `8b25a2c5c548 -> IMPLEMENT-03`; `1a59b1c0e705 -> IMPLEMENT-03`; `466cd562fc52 -> IMPLEMENT-03`; `083d896978d5 -> IMPLEMENT-03`; `f4ab11c13ae9 -> IMPLEMENT-03`; `7dc17ffcc1c4 -> IMPLEMENT-03`; `f731a90adabd -> IMPLEMENT-04`; `886ac01e7aa9 -> IMPLEMENT-04`; `b715db67df0c -> IMPLEMENT-04`; `2d9f26a539f3 -> IMPLEMENT-10`; `28384dee114f -> IMPLEMENT-05`; `f2591a4978b4 -> NG`; `8290823080b5 -> IMPLEMENT-06`; `f75789bf6c8e -> IMPLEMENT-07` |
242
- | `oat-project-document/SKILL.md` | `4fc2d8618208 -> NG`; `173a1c48e53c -> NG`; `40f8be47affa -> NG`; `3a3c390528f3 -> DOCUMENT-03`; `2a7ba093b315 -> DOCUMENT-02`; `252aabe44db2 -> DOCUMENT-02`; `3751172de299 -> DOCUMENT-02`; `b987a0697ba9 -> DOCUMENT-01`; `a06ff3ca7926 -> NG`; `0d04714ca9fc -> NG`; `f79af01d94c6 -> DOCUMENT-02`; `71634113c348 -> DOCUMENT-02`; `cdb707f5081e -> NG` |
242
+ | `oat-project-document/SKILL.md` | `4fc2d8618208 -> NG`; `3f9b0273ba77 -> NG`; `40f8be47affa -> NG`; `3a3c390528f3 -> DOCUMENT-03`; `2a7ba093b315 -> DOCUMENT-02`; `252aabe44db2 -> DOCUMENT-02`; `3751172de299 -> DOCUMENT-02`; `b987a0697ba9 -> DOCUMENT-01`; `a06ff3ca7926 -> NG`; `0d04714ca9fc -> NG`; `f79af01d94c6 -> DOCUMENT-02`; `71634113c348 -> DOCUMENT-02`; `cdb707f5081e -> NG` |
243
243
  | `oat-project-document/references/docs/autonomy-contract.md` | `* -> NG` |
244
- | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `696bb6045b6a -> NG`; `bcb503aaefb5 -> NG`; `f3e49b727752 -> NG`; `f583e86359ae -> NG`; `e73bd88837ea -> NG`; `83257ff6cb68 -> NG`; `c8fced47ef8e -> NG`; `d7ea1e2a4f5f -> NG` |
244
+ | `oat-project-summary/SKILL.md` | `68c197c44c18 -> NG`; `a167d03559fa -> NG`; `cf317c17c586 -> SUMMARY-01`; `8ff515033147 -> NG`; `ac36f854dd6b -> NG`; `f3e49b727752 -> NG`; `5f315ab87cb1 -> NG`; `e73bd88837ea -> NG`; `83257ff6cb68 -> NG`; `c8fced47ef8e -> NG`; `d7ea1e2a4f5f -> NG` |
245
245
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `5eb3949f32e1 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
246
246
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
247
247
  | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `ffcdc9d576c0 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `9497d9f94eed -> COMPLETE-01`; `7b59c728d3fb -> COMPLETE-01`; `48e10a9636fe -> COMPLETE-01`; `c0dad37fc166 -> COMPLETE-01`; `aa9a36243ec1 -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `12f7c30a54c8 -> NG`; `fffe5eea5ebd -> NG` |