@open-agent-toolkit/cli 0.2.13 → 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.
- package/assets/agents/oat-phase-implementer.md +5 -2
- package/assets/agents/oat-reviewer.md +2 -2
- package/assets/docs/cli-utilities/config-and-local-state.md +14 -1
- package/assets/docs/cli-utilities/configuration.md +23 -2
- package/assets/docs/cli-utilities/tool-packs.md +68 -24
- package/assets/docs/contributing/skills.md +17 -10
- package/assets/docs/provider-sync/providers.md +26 -0
- package/assets/docs/reference/cli-reference.md +1 -1
- package/assets/docs/reference/troubleshooting.md +42 -0
- package/assets/docs/workflows/projects/lifecycle.md +2 -2
- package/assets/docs/workflows/projects/orchestration-model.md +14 -7
- package/assets/docs/workflows/projects/programmatic-execution.md +1 -1
- package/assets/docs/workflows/projects/reviews.md +18 -11
- package/assets/docs/workflows/skills/index.md +2 -0
- package/assets/docs/workflows/skills/repo-improve.md +13 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-agent-instructions-analyze/SKILL.md +2 -2
- package/assets/skills/oat-brainstorm/SKILL.md +8 -8
- package/assets/skills/oat-brainstorm/references/destinations.md +3 -3
- package/assets/skills/oat-cursor-cloud-projects/SKILL.md +12 -5
- package/assets/skills/oat-dispatch-subagents/SKILL.md +81 -24
- package/assets/skills/oat-dispatch-subagents/references/provider-claude.md +10 -7
- package/assets/skills/oat-dispatch-subagents/references/provider-codex.md +18 -13
- package/assets/skills/oat-dispatch-subagents/references/provider-cursor.md +30 -23
- package/assets/skills/oat-dispatch-subagents/references/record-schema.md +86 -2
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +4 -4
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +8 -3
- package/assets/skills/oat-project-document/SKILL.md +4 -4
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +9 -5
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +4 -4
- package/assets/skills/oat-project-plan-writing/SKILL.md +9 -5
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +4 -4
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +4 -4
- package/assets/skills/oat-project-summary/SKILL.md +9 -9
- package/assets/skills/oat-repo-improve/SKILL.md +9 -2
- package/assets/skills/subagent-orchestration/SKILL.md +109 -0
- package/assets/skills/subagent-orchestration/references/evidence-and-refresh.md +103 -0
- package/assets/skills/subagent-orchestration/references/model-selection-principles.md +105 -0
- package/assets/skills/subagent-orchestration/references/provider-claude.md +81 -0
- package/assets/skills/subagent-orchestration/references/provider-codex.md +63 -0
- package/assets/skills/subagent-orchestration/references/provider-cursor.md +78 -0
- package/dist/commands/init/tools/brainstorm/index.d.ts +0 -3
- package/dist/commands/init/tools/brainstorm/index.d.ts.map +1 -1
- package/dist/commands/init/tools/brainstorm/index.js +0 -12
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +46 -25
- package/dist/commands/init/tools/shared/skill-manifest.d.ts +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.js +1 -0
- package/dist/commands/init/tools/utility/index.d.ts.map +1 -1
- package/dist/commands/init/tools/utility/index.js +16 -2
- package/dist/commands/tools/has/has-pack.d.ts +18 -0
- package/dist/commands/tools/has/has-pack.d.ts.map +1 -0
- package/dist/commands/tools/has/has-pack.js +33 -0
- package/dist/commands/tools/has/index.d.ts +4 -0
- package/dist/commands/tools/has/index.d.ts.map +1 -0
- package/dist/commands/tools/has/index.js +57 -0
- package/dist/commands/tools/index.d.ts.map +1 -1
- package/dist/commands/tools/index.js +2 -0
- package/dist/commands/tools/remove/index.d.ts.map +1 -1
- package/dist/commands/tools/remove/index.js +10 -20
- package/dist/commands/tools/shared/project-tools-config.d.ts +16 -0
- package/dist/commands/tools/shared/project-tools-config.d.ts.map +1 -0
- package/dist/commands/tools/shared/project-tools-config.js +59 -0
- package/dist/commands/tools/update/index.d.ts.map +1 -1
- package/dist/commands/tools/update/index.js +11 -22
- package/dist/engine/compute-plan.d.ts.map +1 -1
- package/dist/engine/compute-plan.js +8 -2
- package/dist/engine/execute-plan.d.ts +5 -1
- package/dist/engine/execute-plan.d.ts.map +1 -1
- package/dist/engine/execute-plan.js +23 -1
- package/dist/engine/index.d.ts +1 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -0
- package/dist/engine/provider-path-safety.d.ts +2 -0
- package/dist/engine/provider-path-safety.d.ts.map +1 -0
- package/dist/engine/provider-path-safety.js +54 -0
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-phase-implementer
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.9
|
|
4
4
|
description: Implements one plan phase end-to-end, commits each task separately, self-checks between tasks, and handles bounded review fixes when resumed by oat-project-implement.
|
|
5
5
|
tools: Read, Write, Edit, Bash, Grep, Glob, Task
|
|
6
6
|
color: cyan
|
|
@@ -60,7 +60,10 @@ read and follow:
|
|
|
60
60
|
|
|
61
61
|
1. `.agents/skills/oat-project-dispatch-subagents/SKILL.md`;
|
|
62
62
|
2. `.agents/skills/oat-dispatch-subagents/SKILL.md`; and
|
|
63
|
-
3.
|
|
63
|
+
3. `.agents/skills/subagent-orchestration/references/model-selection-principles.md`;
|
|
64
|
+
4. read exactly one active-provider selection reference from
|
|
65
|
+
`.agents/skills/subagent-orchestration/references/`; and
|
|
66
|
+
5. read the matching mechanics reference from
|
|
64
67
|
`.agents/skills/oat-dispatch-subagents/references/`.
|
|
65
68
|
|
|
66
69
|
Every optional launch must have a bounded objective, explicit read/write
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-reviewer
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.9
|
|
4
4
|
description: Unified reviewer for OAT projects - mode-aware verification of requirements/design alignment and code quality. Writes a review artifact to disk by default, or returns structured findings in-memory when dispatched in structured-output mode.
|
|
5
5
|
tools: Read, Bash, Grep, Glob, Write, Task
|
|
6
6
|
color: yellow
|
|
@@ -80,7 +80,7 @@ The primary reviewer must establish the authoritative scope before considering d
|
|
|
80
80
|
When delegation is eligible:
|
|
81
81
|
|
|
82
82
|
1. Use one bounded, read-only, non-recursive reconnaissance round with disjoint lane scopes. This is a one-level fan-out limit: lane workers must not spawn additional workers.
|
|
83
|
-
2. Before launching any lane, read `.agents/skills/oat-dispatch-subagents/SKILL.md
|
|
83
|
+
2. Before launching any lane, read `.agents/skills/oat-dispatch-subagents/SKILL.md` and `.agents/skills/subagent-orchestration/references/model-selection-principles.md`. Resolve the active provider, then read exactly one matching selection reference under `.agents/skills/subagent-orchestration/references/` and one matching mechanics reference under `.agents/skills/oat-dispatch-subagents/references/`. Reviewer-local reconnaissance must not read or load `.agents/skills/oat-project-dispatch-subagents/SKILL.md`; that adapter is reserved for project lifecycle phase/task policy.
|
|
84
84
|
3. Map every lane worker to the shared `recon` role class (`role.class: recon`); role authority stays read-only and advisory. Assign the independent `task_class`, `classification_source: caller`, and non-empty `classification_reason` fields after understanding the artifacts and diff. These task-class fields are required for reviewer-local reconnaissance even though the generic dispatch contract keeps them optional for other callers.
|
|
85
85
|
4. Classify each lane as `mechanical-recon`, `intelligent-recon`, `default-implementation`, `hard-reasoning`, or `consequential`. Use the stronger floor when uncertain. Classification proceeds from deterministic verification to silent-miss risk, then dispersed context, ambiguity, and consequence; file count alone never justifies escalation.
|
|
86
86
|
- `mechanical-recon`: deterministic inventories, parity checks, and test/lint/format/build execution whose misses are visible and cheaply checked.
|
|
@@ -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
|
-
|
|
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>` —
|
|
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.*`
|
|
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
|
|
|
@@ -19,17 +19,35 @@ This page covers CLI commands that manage bundled OAT tool packs and installed O
|
|
|
19
19
|
- `docs` - docs and agent-instructions governance workflows
|
|
20
20
|
- `workflows` - project lifecycle skills, wave-program orchestration (`oat-wave-program`, `oat-wave-execute`), the project subagent-dispatch adapter, wrap-up reporting, reviewer agents, and core project templates
|
|
21
21
|
- `ideas` - lightweight ideation and promotion flows
|
|
22
|
-
- `utility` - review and repo-maintenance helpers plus the provider-neutral
|
|
22
|
+
- `utility` - review and repo-maintenance helpers plus portable subagent-selection guidance and the provider-neutral dispatch engine
|
|
23
23
|
- `project-management` - file-backed backlog/reference skills plus backlog, roadmap, current-state, file-per-record decision, and AGENTS-guide templates
|
|
24
24
|
- `research` - research, analysis, comparison, and synthesis skills
|
|
25
25
|
- `brainstorm` - always-on brainstorming entry point with visual companion
|
|
26
26
|
|
|
27
|
-
###
|
|
27
|
+
### Orchestration guidance and dispatch dependencies
|
|
28
28
|
|
|
29
|
-
The
|
|
29
|
+
The utility pack ships the reusable orchestration pair:
|
|
30
|
+
|
|
31
|
+
- `subagent-orchestration` owns durable task classes, model-selection
|
|
32
|
+
principles, dated provider selection matrices, and refresh evidence.
|
|
33
|
+
- `oat-dispatch-subagents` owns capability checks, live catalog intersection,
|
|
34
|
+
authorized routes, launch acceptance, recovery, and dispatch records.
|
|
35
|
+
|
|
36
|
+
Provider-aware callers load the generic principles plus exactly one provider
|
|
37
|
+
selection reference, then the dispatch contract plus exactly one matching
|
|
38
|
+
provider mechanics reference. The first reference answers which candidates
|
|
39
|
+
satisfy the task-class floor; the second answers how the active provider can
|
|
40
|
+
launch them. Root callers retain classification, selection judgment,
|
|
41
|
+
cross-lane synthesis, and final authority.
|
|
42
|
+
|
|
43
|
+
Custom utility selection has a directional dependency: choosing
|
|
44
|
+
`oat-dispatch-subagents` automatically includes `subagent-orchestration`, while
|
|
45
|
+
the self-contained guidance skill may be installed alone. Full utility-pack
|
|
46
|
+
update and removal treat both as explicit members. Removing either skill by
|
|
47
|
+
name does not implicitly remove the other.
|
|
48
|
+
|
|
49
|
+
The OAT lifecycle adapter intentionally lives in a separate pack:
|
|
30
50
|
|
|
31
|
-
- `utility` owns `oat-dispatch-subagents`, the provider-neutral engine for
|
|
32
|
-
capability checks, catalog-aware selection, launch evidence, and recovery.
|
|
33
51
|
- `workflows` owns `oat-project-dispatch-subagents`, the adapter that adds OAT
|
|
34
52
|
project lifecycle context without duplicating provider mechanics.
|
|
35
53
|
|
|
@@ -41,9 +59,9 @@ oat tools install workflows
|
|
|
41
59
|
```
|
|
42
60
|
|
|
43
61
|
The packs remain independently installable. If the workflows adapter is
|
|
44
|
-
present without the utility
|
|
62
|
+
present without the utility contracts, it fails closed and reports the missing
|
|
45
63
|
dependency instead of inventing a fallback route. Non-project analytical
|
|
46
|
-
skills can use the utility
|
|
64
|
+
skills can use the utility guidance and dispatch layers directly.
|
|
47
65
|
|
|
48
66
|
### Cross-pack explainer dependency
|
|
49
67
|
|
|
@@ -169,6 +187,28 @@ Key behavior:
|
|
|
169
187
|
- Reports whether the tool is invocable (for skills) and whether an update is available
|
|
170
188
|
- Returns exit code 1 if the tool is not found in any scope
|
|
171
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
|
+
|
|
172
212
|
### `oat tools install`
|
|
173
213
|
|
|
174
214
|
Purpose:
|
|
@@ -187,7 +227,7 @@ Key behavior:
|
|
|
187
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
|
|
188
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
|
|
189
229
|
- Tracks installed vs bundled skill versions and reports outdated skills
|
|
190
|
-
-
|
|
230
|
+
- Reconciles shared repo config from project-scoped canonical assets only; a user-only install does not set `tools.<pack>: true`
|
|
191
231
|
- Refreshes the managed `OAT tools` section in the repository-root `AGENTS.md`.
|
|
192
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.
|
|
193
233
|
- Interactive runs can prompt to update selected outdated skills
|
|
@@ -208,7 +248,7 @@ Key behavior:
|
|
|
208
248
|
- Compares installed versions against bundled versions and copies updated assets
|
|
209
249
|
- For `--pack <pack>` and `--all`, an already-installed pack is reconciled to include newly added bundled skills or agents in that same scope
|
|
210
250
|
- Pack-targeted updates intentionally rewrite bundled template and script companions in place, even when the pack's installed skills are already current
|
|
211
|
-
- For `--pack <pack>` and `--all`, shared repo config is also reconciled from
|
|
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
|
|
212
252
|
- Dry-run mode with `--dry-run`; auto-sync after mutations by default
|
|
213
253
|
- Use `--no-sync` to skip auto-sync
|
|
214
254
|
- Reports tools that are already current, newer than bundled, or not bundled (custom)
|
|
@@ -223,19 +263,21 @@ Key behavior:
|
|
|
223
263
|
|
|
224
264
|
- Accepts a tool name, `--pack <pack>`, or `--all` (mutually exclusive)
|
|
225
265
|
- Removes skill directories and agent `.md` files from canonical locations
|
|
226
|
-
- For `--pack <pack>` and `--all`, shared repo config is
|
|
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
|
|
227
267
|
- Dry-run mode with `--dry-run`; auto-sync after mutations by default
|
|
228
268
|
- Use `--no-sync` to skip auto-sync
|
|
229
269
|
|
|
230
270
|
## Shared config signal: `tools.*`
|
|
231
271
|
|
|
232
|
-
Tool-pack lifecycle commands
|
|
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.
|
|
233
277
|
|
|
234
|
-
|
|
235
|
-
- `oat tools update --pack <pack>` and `oat tools update --all` rebuild the full `tools` map from installed-pack scans
|
|
236
|
-
- `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.
|
|
237
279
|
|
|
238
|
-
|
|
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.
|
|
239
281
|
|
|
240
282
|
## Workflows pack
|
|
241
283
|
|
|
@@ -360,20 +402,22 @@ Key behavior:
|
|
|
360
402
|
and can surface it later if the conversation turns visual. Persistence paths
|
|
361
403
|
use OAT-managed prefixes (`.oat/brainstorm/<session-id>/` repo-scope or
|
|
362
404
|
`~/.oat/brainstorm/<session-id>/` user-scope).
|
|
363
|
-
- **Terminal-state picker filtered by
|
|
364
|
-
converges on a destination, the skill
|
|
365
|
-
|
|
366
|
-
terminal states. Pack-gated outcomes (capture-as-idea, scoped
|
|
367
|
-
project promotion, active-project fold-back)
|
|
368
|
-
corresponding pack is
|
|
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.
|
|
369
412
|
- **Destinations playbook.** The full set of terminal-state stanzas — trigger
|
|
370
413
|
phrases, required template fields, confirmation patterns, handoff targets —
|
|
371
414
|
lives at `.agents/skills/oat-brainstorm/references/destinations.md` and is
|
|
372
415
|
consulted by the skill at destination-identification time.
|
|
373
416
|
- **Pack lifecycle.** `oat tools install brainstorm`, `oat tools update --pack
|
|
374
417
|
brainstorm`, and `oat tools remove --pack brainstorm` manage the skill plus
|
|
375
|
-
visual-companion bundle as a unit.
|
|
376
|
-
|
|
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.
|
|
377
421
|
|
|
378
422
|
### Auto-sync behavior
|
|
379
423
|
|
|
@@ -97,21 +97,28 @@ At minimum, the skill contract should:
|
|
|
97
97
|
- Stop before side effects if delegation is required for correctness and authorization remains unresolved.
|
|
98
98
|
- Document the fallback path and any quality or independence tradeoff.
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
100
|
+
Delegation-capable skills should load `subagent-orchestration` instead of
|
|
101
|
+
copying task classes, model-selection principles, dated provider matrices, or
|
|
102
|
+
refresh evidence. Load exactly one active-provider selection reference from
|
|
103
|
+
that skill. The caller applies the guidance and still owns decomposition,
|
|
104
|
+
classification judgment, user interaction, verification of load-bearing
|
|
105
|
+
claims, cross-lane synthesis, and artifact writes.
|
|
106
|
+
|
|
107
|
+
OAT-specific skills should separately compose with the internal
|
|
108
|
+
`oat-dispatch-subagents` contract instead of copying launch or recovery rules.
|
|
109
|
+
Load exactly one matching provider mechanics reference from that skill. The
|
|
110
|
+
dispatch contract owns capability and authorization checks, live catalog
|
|
111
|
+
evidence, authorized routes, launch acceptance, recovery, and the neutral
|
|
112
|
+
dispatch record. Keep model/effort/reasoning/service-tier axes explicit and do
|
|
113
|
+
not collapse the selection and mechanics references into one provider matrix.
|
|
107
114
|
|
|
108
115
|
Keep project lifecycle policy out of that general layer. A lifecycle caller
|
|
109
116
|
loads `oat-project-dispatch-subagents` to resolve project, phase/task, gate,
|
|
110
117
|
write-boundary, commit, and worktree context, then passes a generic request to
|
|
111
118
|
`oat-dispatch-subagents`. Analytical callers such as repository audits can use
|
|
112
|
-
the
|
|
113
|
-
case, resolve the provider first
|
|
114
|
-
|
|
119
|
+
the guidance and dispatch contracts without requiring an active project. In
|
|
120
|
+
either case, resolve the provider first, then load one selection reference and
|
|
121
|
+
the matching mechanics reference.
|
|
115
122
|
|
|
116
123
|
Use `create-agnostic-skill` or `create-oat-skill` as the starting point; both include the current delegation guidance and optional capability-detection template.
|
|
117
124
|
|
|
@@ -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)
|
|
@@ -66,7 +66,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
66
66
|
- `oat project complete-state <project-path>` - apply the canonical completed-state mutation to a project's `state.md`; used by `oat-project-complete` during lifecycle closeout
|
|
67
67
|
- `oat project archive [project-path] [--project-recap-run <project-relative-path>]` - archive a tracked project through the same local move, summary export, and optional S3 upload path used by completion. When omitted, the project path falls back to the active project. The optional recap path must identify a `project-recap` run inside the project's `explainers/` directory. Archive stages the selected complete package into `.oat/repo/reference/project-recaps/<YYYYMMDD-project-slug>/`, verifies every manifest-declared immutable file byte, then atomically installs the export before deleting the active project. Existing destinations, incomplete legacy hash coverage, stale bytes, path escapes, and recipe mismatches fail without removing the active project.
|
|
68
68
|
- `oat repo archive sync [project-name]` - hydrate archived project snapshots from the configured repo-scoped S3 archive into `.oat/projects/archived/`. The old `oat project archive sync` path remains as a deprecated shim.
|
|
69
|
-
- `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. See [Implementation Execution](../workflows/projects/implementation-execution.md#
|
|
69
|
+
- `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. See [Implementation Execution](../workflows/projects/implementation-execution.md#parallel-phase-groups).
|
|
70
70
|
- `oat project log append|check|synthesize|rollup` - manage the optional append-only project observation log: append validated judgment or structural entries, inspect grammar and synthesis status, complete end-of-run synthesis, and roll observations into `summary.md` plus the configured repository ledger. See [Project Log](../cli-utilities/project-log.md).
|
|
71
71
|
- `oat project set-mode` — deprecated no-op. Execution mode is no longer user-selectable; emits a deprecation warning and preserves the `--json` contract.
|
|
72
72
|
- `oat gate review <prompt...>` - run a stateful, headless OAT review through the target registry, parse the produced review artifact, and exit nonzero for configured blocking findings. `--timeout-ms <milliseconds>` overrides target, `workflow.gateTimeouts`, environment, and scope defaults; accepted values are 1,000–14,400,000. Final/phase/range code reviews default to 30 minutes, while task code and artifact reviews default to 15 minutes. With `--json`, the result envelope on exit is the canonical completion signal: `status` is `ok` | `blocked` | `review_failed` | `artifact_validation_failed` | `targeting_correlation_failed`, alongside `runId`, `generatedAt`, and `artifactPath` when available. For `targeting_correlation_failed`, do not run review-receive even if an artifact path is present. For `artifact_validation_failed`, correct the artifact and rerun the gate until it revalidates as `ok` or `blocked`. Invoke `oat-project-review-receive` only when all three conditions hold: `status` is `ok` or `blocked`, `receiveEligible` is `true`, and `handoff` is non-null. `review_failed` may include structured `refusal`, `noOutputProduced`, and metadata-only `activityEvidence`; these diagnostic fields never make a run receive-eligible. After a timeout, a validated run-correlated artifact returns the ordinary `ok` or `blocked` envelope with additive `lateCompletion: true`. Duplicate run-ID matches or a changed artifact with a mismatched run ID retain `targeting_correlation_failed` and `receiveEligible: false`. Orchestrators should read the structured result rather than poll the filesystem. See [Workflow Gates](../cli-utilities/workflow-gates.md).
|
|
@@ -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
|
|
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;
|
|
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
|
|
@@ -53,16 +53,23 @@ does not launch a third tier.
|
|
|
53
53
|
|
|
54
54
|
## Dispatch Layers
|
|
55
55
|
|
|
56
|
-
Every lifecycle launch
|
|
56
|
+
Every lifecycle launch composes three responsibilities:
|
|
57
57
|
|
|
58
58
|
1. `oat-project-dispatch-subagents` resolves project state, role policy,
|
|
59
59
|
ceilings, scope, files, commits, worktrees, and checkpoints.
|
|
60
|
-
2. `
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
2. `subagent-orchestration` supplies the durable task classes and
|
|
61
|
+
model-selection principles. The caller loads exactly one active-provider
|
|
62
|
+
selection reference for dated candidates and refresh evidence.
|
|
63
|
+
3. `oat-dispatch-subagents` resolves capabilities, live catalogs, exact
|
|
64
|
+
routes, launch acceptance, continuation, recovery, and dispatch records. It
|
|
65
|
+
loads exactly one matching provider mechanics reference.
|
|
66
|
+
|
|
67
|
+
The selection and mechanics references form a two-reference provider contract:
|
|
68
|
+
the first owns model guidance, while the second owns provider control surfaces.
|
|
69
|
+
They are loaded together for dispatch but never collapsed into one universal
|
|
70
|
+
matrix. The lifecycle workflow remains authoritative for classification,
|
|
71
|
+
selection judgment, synthesis, and state mutation. The dispatch engine does
|
|
72
|
+
not edit `plan.md`, `implementation.md`, or project state.
|
|
66
73
|
|
|
67
74
|
```mermaid
|
|
68
75
|
sequenceDiagram
|
|
@@ -23,7 +23,7 @@ comes from configured dispatch policy or a configured cross-family gate
|
|
|
23
23
|
(standing, scope-bound), or from explicit user approval for the current run.
|
|
24
24
|
Availability of a provider CLI is capability evidence, not authorization. See
|
|
25
25
|
the route tiers in
|
|
26
|
-
[Orchestration Model](orchestration-model.md#
|
|
26
|
+
[Orchestration Model](orchestration-model.md#accepted-launch-terminality) for
|
|
27
27
|
how native, policy-resolved, and improvised routes are ranked, and why an
|
|
28
28
|
accepted launch is terminal for automatic replacement.
|
|
29
29
|
|
|
@@ -276,8 +276,8 @@ task class sets its minimum model-capability floor:
|
|
|
276
276
|
File count alone does not justify escalation. Interpretation and policy
|
|
277
277
|
judgment either use an adequate stronger class or remain with the primary
|
|
278
278
|
reviewer. Active user and repository instructions, the active-provider
|
|
279
|
-
guidance, and the live nested catalog resolve current model
|
|
280
|
-
canonical reviewer does not promise named models.
|
|
279
|
+
selection guidance, and the live nested catalog resolve current model
|
|
280
|
+
examples; the canonical reviewer does not promise named models.
|
|
281
281
|
|
|
282
282
|
Reviewer-local fan-out is limited to one bounded, read-only, non-recursive
|
|
283
283
|
round. Each worker receives a disjoint scope, cannot modify files or spawn more
|
|
@@ -288,15 +288,22 @@ workers, and returns a compact advisory report containing:
|
|
|
288
288
|
- gaps in the assigned scope; and
|
|
289
289
|
- explicit uncertainty, including uncertainty about absence claims.
|
|
290
290
|
|
|
291
|
-
Before launching these lanes, the reviewer loads
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
291
|
+
Before launching these lanes, the reviewer loads `subagent-orchestration` for
|
|
292
|
+
durable task classes and model-selection principles, then exactly one
|
|
293
|
+
active-provider selection reference. The reviewer applies that guidance and
|
|
294
|
+
retains the classification, authority, reconciliation, and final finding
|
|
295
|
+
judgment.
|
|
296
|
+
|
|
297
|
+
The reviewer separately loads the internal `oat-dispatch-subagents` contract
|
|
298
|
+
and exactly one matching provider mechanics reference. That layer owns nested
|
|
299
|
+
capability checks, live worker-catalog resolution, authorized routing, launch
|
|
300
|
+
acceptance, recovery, and dispatch records. Selection guidance owns dated
|
|
301
|
+
provider matrices and refresh evidence; dispatch mechanics do not duplicate
|
|
302
|
+
them. The dispatch record preserves each reviewer-supplied task class,
|
|
303
|
+
model-class floor, classification rationale, selected axes, and floor
|
|
304
|
+
satisfaction without assuming workers inherit the primary reviewer's target.
|
|
305
|
+
Lanes may share one wave only when their task classes, model floors, and all
|
|
306
|
+
other dispatch axes match; mixed-class reviews use separate waves and records.
|
|
300
307
|
|
|
301
308
|
This generic reviewer-local use is distinct from
|
|
302
309
|
`oat-project-dispatch-subagents`, which is reserved for OAT lifecycle phase and
|
|
@@ -26,6 +26,7 @@ Use this section when you want to choose the right OAT skill for a task. If you
|
|
|
26
26
|
- Capture a scoped, shippable backlog item: `oat-pjm-add-backlog-item` directly when the work is already scoped, or `oat-brainstorm` when the thought hasn't converged yet — the brainstorm dispatcher's "scoped backlog item" destination pre-fills the title / description / acceptance criteria / scope estimate / priority from the conversation and then runs `oat-pjm-add-backlog-item` with confirmed inputs
|
|
27
27
|
- Manage the repo backlog and reference docs: `oat-pjm-update-repo-reference`, `oat-pjm-review-backlog`
|
|
28
28
|
- Turn a repo audit, maintainability review, backlog review, backlog directory, or backlog item into standalone external implementation plans: `oat-repo-improve`. Plans land under `.oat/repo/reference/external-plans/`; execute them directly or optionally pass one to `oat-project-import-plan` for tracked OAT execution.
|
|
29
|
+
- Choose what to delegate and route bounded work by task class across Codex, Claude, or Cursor: `subagent-orchestration`. It is self-contained and usable without OAT; live catalogs and current instructions take precedence over its dated provider examples.
|
|
29
30
|
- Build visual project explainers and final project recaps: `oat-explainer-kit`, backed by the destination-neutral `explainer-kit` core. See [Explainer Kit](explainer-kit.md).
|
|
30
31
|
- Work on docs surfaces: `authoring-docs` (general documentation baseline), `oat-docs-authoring` (targeted OAT/Fumadocs authoring), `oat-docs-bootstrap` (guided bootstrap of a new docs app), `oat-docs-analyze`, `oat-docs-apply`, and `oat-project-document`
|
|
31
32
|
- Generate a shipping digest or scheduled recap: `oat-wrap-up`
|
|
@@ -123,6 +124,7 @@ Use this section when you want to choose the right OAT skill for a task. If you
|
|
|
123
124
|
|
|
124
125
|
=== "Scaffolding and utility"
|
|
125
126
|
|
|
127
|
+
- `subagent-orchestration`
|
|
126
128
|
- `explainer-kit`
|
|
127
129
|
- `oat-worktree-bootstrap`
|
|
128
130
|
- `oat-worktree-bootstrap-auto`
|
|
@@ -56,4 +56,16 @@ Failure to publish a backlog item or issue does not invalidate a successfully wr
|
|
|
56
56
|
|
|
57
57
|
## Orchestration
|
|
58
58
|
|
|
59
|
-
Full repository audits use
|
|
59
|
+
Full repository audits use bounded read-only reconnaissance while the root
|
|
60
|
+
agent retains classification, vetting, prioritization, cross-lane synthesis,
|
|
61
|
+
and plan writing. Before launch, the caller loads the durable task classes and
|
|
62
|
+
model-selection principles from `subagent-orchestration` plus exactly one
|
|
63
|
+
active-provider selection reference.
|
|
64
|
+
|
|
65
|
+
The internal `oat-dispatch-subagents` skill then owns capability checks, live
|
|
66
|
+
catalog intersection, exact route selection, launch acceptance, recovery, and
|
|
67
|
+
dispatch records. It loads exactly one matching provider mechanics reference;
|
|
68
|
+
selection and mechanics references are not merged into one universal provider
|
|
69
|
+
contract. Dispatch is native-first. Configured project/workflow policy may
|
|
70
|
+
authorize required CLI or cross-runtime routes; an agent-improvised alternate
|
|
71
|
+
route requires explicit current-run approval.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-agent-instructions-analyze
|
|
3
|
-
version: 1.11.
|
|
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
|
|
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
|
|