@open-agent-toolkit/cli 0.0.42 → 0.0.50
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 +230 -0
- package/assets/agents/oat-reviewer.md +3 -3
- package/assets/docs/cli-utilities/configuration.md +15 -3
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +12 -1
- package/assets/docs/docs-tooling/commands.md +4 -0
- package/assets/docs/reference/cli-reference.md +17 -14
- package/assets/docs/reference/oat-directory-structure.md +17 -17
- package/assets/docs/workflows/projects/artifacts.md +34 -0
- package/assets/docs/workflows/projects/implementation-execution.md +161 -0
- package/assets/docs/workflows/projects/lifecycle.md +22 -29
- package/assets/docs/workflows/projects/reviews.md +4 -2
- package/assets/docs/workflows/skills/index.md +0 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-docs-bootstrap/SKILL.md +11 -3
- package/assets/skills/oat-doctor/SKILL.md +3 -3
- package/assets/skills/oat-project-implement/SKILL.md +368 -126
- package/assets/skills/oat-project-import-plan/SKILL.md +2 -3
- package/assets/skills/oat-project-next/SKILL.md +11 -12
- package/assets/skills/oat-project-plan/SKILL.md +23 -5
- package/assets/skills/oat-project-plan-writing/SKILL.md +2 -2
- package/assets/skills/oat-project-progress/SKILL.md +29 -35
- package/assets/skills/oat-project-quick-start/SKILL.md +14 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +24 -2
- package/assets/skills/oat-project-review-receive/SKILL.md +5 -1
- package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +2 -2
- package/assets/templates/docs-app-fuma/docs/index.md +2 -0
- package/assets/templates/implementation.md +8 -3
- package/assets/templates/plan.md +24 -3
- package/assets/templates/state.md +1 -1
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +17 -4
- package/dist/commands/docs/index-generate/index.d.ts +1 -0
- package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
- package/dist/commands/docs/index-generate/index.js +8 -1
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +46 -0
- package/dist/commands/docs/init/resolve-options.d.ts +2 -0
- package/dist/commands/docs/init/resolve-options.d.ts.map +1 -1
- package/dist/commands/docs/init/resolve-options.js +1 -0
- package/dist/commands/docs/init/root-package.d.ts +23 -0
- package/dist/commands/docs/init/root-package.d.ts.map +1 -0
- package/dist/commands/docs/init/root-package.js +226 -0
- package/dist/commands/init/tools/index.js +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.d.ts +2 -2
- package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.js +1 -1
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +3 -1
- package/dist/commands/project/set-mode/index.d.ts +0 -6
- package/dist/commands/project/set-mode/index.d.ts.map +1 -1
- package/dist/commands/project/set-mode/index.js +16 -96
- package/dist/commands/project/validate-plan/index.d.ts +3 -0
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/index.js +44 -0
- package/dist/commands/project/validate-plan/validate-plan.d.ts +20 -0
- package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/validate-plan.js +77 -0
- package/dist/commands/tools/update/index.d.ts +4 -0
- package/dist/commands/tools/update/index.d.ts.map +1 -1
- package/dist/commands/tools/update/index.js +17 -1
- package/dist/commands/tools/update/update-tools.d.ts +1 -0
- package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
- package/dist/commands/tools/update/update-tools.js +80 -1
- package/dist/config/oat-config.d.ts +1 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +3 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +9 -0
- package/package.json +2 -2
- package/assets/skills/oat-project-subagent-implement/SKILL.md +0 -549
- package/assets/skills/oat-project-subagent-implement/examples/pattern-hill-checkpoint.md +0 -110
- package/assets/skills/oat-project-subagent-implement/examples/pattern-parallel-phases.md +0 -118
- package/assets/skills/oat-project-subagent-implement/scripts/dispatch.sh +0 -133
- package/assets/skills/oat-project-subagent-implement/scripts/reconcile.sh +0 -182
- package/assets/skills/oat-project-subagent-implement/scripts/review-gate.sh +0 -187
- package/assets/skills/oat-project-subagent-implement/tests/fixtures/sample-plan.md +0 -234
- package/assets/skills/oat-project-subagent-implement/tests/test-dry-run.sh +0 -126
- package/assets/skills/oat-project-subagent-implement/tests/test-hill-checkpoint.sh +0 -127
- package/assets/skills/oat-project-subagent-implement/tests/test-reconcile.sh +0 -254
- package/assets/skills/oat-project-subagent-implement/tests/test-review-gate.sh +0 -220
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Implementation Execution
|
|
3
|
+
description: 'Phase-subagent dispatch, tier detection, bounded fix loop, plan-declared parallelism, and dry-run mode in oat-project-implement v2.0.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Implementation Execution
|
|
7
|
+
|
|
8
|
+
This page covers how `oat-project-implement` actually runs a plan: tier selection, phase-level subagent dispatch, the review + fix loop, plan-declared parallelism with worktree fan-in, and dry-run.
|
|
9
|
+
|
|
10
|
+
## Quick Look
|
|
11
|
+
|
|
12
|
+
- **When to use:** you have a plan ready and want to understand what happens during `oat-project-implement`.
|
|
13
|
+
- **Unit of dispatch:** one phase at a time (not one task). A phase implementer executes all tasks in the phase, commits per task, and returns a single summary.
|
|
14
|
+
- **Two tiers, one lock:** capability detection picks Tier 1 (native subagents) or Tier 2 (inline) at start. The tier is locked for the whole run — no mid-run downgrades.
|
|
15
|
+
|
|
16
|
+
## Execution model
|
|
17
|
+
|
|
18
|
+
### Tier selection
|
|
19
|
+
|
|
20
|
+
At skill start, `oat-project-implement` detects whether the host supports native subagent dispatch for `oat-phase-implementer` and `oat-reviewer`.
|
|
21
|
+
|
|
22
|
+
- **Claude Code / Cursor:** native subagent dispatch → Tier 1.
|
|
23
|
+
- **Codex multi-agent:** Tier 1 if `spawn_agent` is allowed without authorization, or after an explicit single prompt at skill start if authorization is required. Codex subagent dispatch should use self-contained scope packets with fresh context; do not assume pinned OAT roles can also inherit the full parent thread.
|
|
24
|
+
- **Authorization declined or agents do not resolve:** Tier 2 (inline). The orchestrator reads `.agents/agents/oat-phase-implementer.md` and `.agents/agents/oat-reviewer.md` as reference and executes that process itself.
|
|
25
|
+
|
|
26
|
+
The approval decision covers both phase implementation and checkpoint review for the run. The orchestrator should not drift into a mixed mode based on conversational emphasis alone; if Tier 1 was not approved, stay inline throughout unless the user explicitly requests mixed execution.
|
|
27
|
+
|
|
28
|
+
The selected tier is reported to the user and locked for the remainder of the run:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
[preflight] Checking subagent availability…
|
|
32
|
+
→ oat-phase-implementer + oat-reviewer: available
|
|
33
|
+
→ Selected: Tier 1 — Subagents
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Per-phase loop
|
|
37
|
+
|
|
38
|
+
For each phase in the plan (whether sequential or inside a parallel group):
|
|
39
|
+
|
|
40
|
+
1. **Dispatch `oat-phase-implementer`** with a Phase Scope block (project path, phase id, artifact paths, commit convention, workflow mode).
|
|
41
|
+
2. **Receive the summary:** `DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED`.
|
|
42
|
+
- `BLOCKED` stops the run and surfaces the blocker to the user.
|
|
43
|
+
3. **Dispatch `oat-reviewer`** with a Review Scope block (phase id, commit range, optional files-changed hint). The commit range is authoritative; the file list is only orientation metadata. In Codex, pass this as a self-contained packet and keep fresh context (`fork_context: false`) so the reviewer reads git/OAT artifacts directly instead of inheriting the orchestration thread. If the reviewer does not conclude on the first wait, poll once more, then send a concise "return now with current findings" nudge before falling back inline for that phase.
|
|
44
|
+
4. **Parse the verdict:** zero Critical + zero Important findings → `pass`; otherwise `fail`.
|
|
45
|
+
5. **On fail, run the bounded fix loop** (see below).
|
|
46
|
+
6. **Update artifacts** (`implementation.md`, `plan.md` review row, `state.md`) and make the mandatory bookkeeping commit.
|
|
47
|
+
7. **HiLL checkpoint** if the phase id is listed in `oat_plan_hill_phases`.
|
|
48
|
+
|
|
49
|
+
### Bounded fix loop
|
|
50
|
+
|
|
51
|
+
On a `fail` verdict:
|
|
52
|
+
|
|
53
|
+
- Read `oat_orchestration_retry_limit` from `state.md` frontmatter (default `2`, range `0–5`).
|
|
54
|
+
- For each retry: re-dispatch the implementer in `fix` mode with the review artifact and findings, then re-dispatch the reviewer.
|
|
55
|
+
- On `pass` → exit the loop; the phase disposition becomes `merged` (sequential) or `merged` (parallel, after fan-in).
|
|
56
|
+
- On retries exhausted:
|
|
57
|
+
- **Sequential mode:** STOP the run with phase id, unresolved findings, and review artifact path.
|
|
58
|
+
- **Parallel group mode:** mark the phase `excluded`, do not merge its worktree, continue the remaining phases in the group, and report it in Outstanding Items.
|
|
59
|
+
|
|
60
|
+
Tier is never silently downgraded. If a Tier 1 dispatch has a transient failure, the orchestrator retries exactly once; a second failure is treated the same as fix-loop exhaustion for that phase.
|
|
61
|
+
|
|
62
|
+
## Plan-declared parallelism
|
|
63
|
+
|
|
64
|
+
Phases whose task file sets do not overlap may execute concurrently. Declare this in `plan.md` frontmatter:
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
oat_plan_parallel_groups: [['p02', 'p03'], ['p04', 'p05']]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
- Each inner array is a group of phases that run concurrently — one worktree per phase.
|
|
71
|
+
- Phases not listed in any group run sequentially in plan order.
|
|
72
|
+
- Groups themselves run sequentially — group `[p02, p03]` merges before group `[p04, p05]` starts.
|
|
73
|
+
- Empty or missing field → fully sequential, no worktrees created, behavior identical to today's `oat-project-implement`.
|
|
74
|
+
|
|
75
|
+
### How a parallel group runs
|
|
76
|
+
|
|
77
|
+
1. **Bootstrap worktrees** via `oat-worktree-bootstrap-auto`, one per phase, branch name `{project-name}/{pNN}`.
|
|
78
|
+
- If any bootstrap fails, cancel successful worktrees and **degrade the entire group** to sequential inline execution.
|
|
79
|
+
2. **Concurrent dispatch** of `oat-phase-implementer` into each worktree (Tier 1 only — Tier 2 cannot run concurrently and also degrades to sequential).
|
|
80
|
+
3. **Wait for terminal verdicts** (`pass` or `failed`) across every phase in the group.
|
|
81
|
+
4. **Fan-in reconciliation in plan order:** for each passing phase, `git merge --no-ff {project-name}/{pNN}`. Integration verification (`pnpm test && pnpm lint && pnpm type-check`) runs after each merge.
|
|
82
|
+
5. **Failed phases are excluded** — their worktrees are preserved and logged in `implementation.md` Outstanding Items. Passing phases still merge (partial merge-back, not atomic).
|
|
83
|
+
6. **Worktree cleanup** runs for merged phases; preserved for excluded phases.
|
|
84
|
+
7. **Bookkeeping commit** + HiLL checkpoint check after the group finishes.
|
|
85
|
+
|
|
86
|
+
### Merge-conflict handling
|
|
87
|
+
|
|
88
|
+
When a merge produces a conflict:
|
|
89
|
+
|
|
90
|
+
1. `git merge --no-ff` is aborted.
|
|
91
|
+
2. `git cherry-pick` of the phase's commits is attempted.
|
|
92
|
+
3. If cherry-pick also conflicts, an **inline conflict-resolution subagent** is dispatched via the Task tool. The orchestrator **never reads conflicted files itself** — that context belongs in a fresh subagent.
|
|
93
|
+
4. The subagent reads conflicted files and project artifacts (`plan.md`, `design.md`, `spec.md`), applies a resolution, runs integration verification, and returns:
|
|
94
|
+
- `RESOLVED` → merge is committed; orchestrator proceeds.
|
|
95
|
+
- `UNRESOLVABLE` or `VERIFICATION_FAILED` → STOP the run with phase id, conflicting files, worktree path, and the subagent's reasoning summary.
|
|
96
|
+
|
|
97
|
+
The orchestrator does not proceed past a broken merge.
|
|
98
|
+
|
|
99
|
+
## Validating plan metadata
|
|
100
|
+
|
|
101
|
+
Before dispatching, `oat-project-implement` invokes the validator CLI:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
oat project validate-plan --project-path "${PROJECT_PATH}"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
The command enforces:
|
|
108
|
+
|
|
109
|
+
- `oat_plan_parallel_groups` is either missing/empty (treated as fully sequential) or a non-empty nested array of phase ID strings.
|
|
110
|
+
- Every referenced phase id exists in the plan body.
|
|
111
|
+
- No phase id appears in more than one group.
|
|
112
|
+
- No singleton groups (each group must contain at least 2 phases).
|
|
113
|
+
- Frontmatter YAML parses cleanly — malformed frontmatter fails with exit 1.
|
|
114
|
+
|
|
115
|
+
Non-zero exit stops the run. The skill does not re-implement validation in prose — the CLI is the single source of truth.
|
|
116
|
+
|
|
117
|
+
## Dry-run mode
|
|
118
|
+
|
|
119
|
+
Run with `--dry-run` to preview a run without dispatching anything:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
oat-project-implement --dry-run
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Dry-run:
|
|
126
|
+
|
|
127
|
+
- Performs tier selection and plan validation.
|
|
128
|
+
- Builds the execution schedule (singleton phases + parallel groups in plan order).
|
|
129
|
+
- Prints the planned dispatches and worktree layout.
|
|
130
|
+
- Exits 0 without dispatching subagents, creating worktrees, or modifying files.
|
|
131
|
+
|
|
132
|
+
Use dry-run as a sanity check after editing `oat_plan_parallel_groups` to confirm the schedule matches your intent.
|
|
133
|
+
|
|
134
|
+
## Resumption
|
|
135
|
+
|
|
136
|
+
On re-invocation after a partial run:
|
|
137
|
+
|
|
138
|
+
1. Read `implementation.md` for the most recent orchestration-runs entry.
|
|
139
|
+
2. Compare phase counts against the plan's phase list; phases not covered by any run are the resume targets.
|
|
140
|
+
3. Read `state.md` for `oat_current_task` and cross-check with git log.
|
|
141
|
+
4. If a phase committed implementer output but has no review verdict recorded, the reviewer is re-dispatched for that phase's current HEAD.
|
|
142
|
+
5. If un-cleaned worktrees remain from a prior parallel group, the orchestrator lists them and asks whether to resume or clean up.
|
|
143
|
+
|
|
144
|
+
First-ever invocations skip resumption detection.
|
|
145
|
+
|
|
146
|
+
## State and artifact updates
|
|
147
|
+
|
|
148
|
+
After each phase (or parallel group) completes, `oat-project-implement` updates:
|
|
149
|
+
|
|
150
|
+
- `implementation.md` — appends a `### Run N` entry between the `<!-- orchestration-runs-start -->` markers with tier, policy, phase outcomes, parallel groups, and outstanding items.
|
|
151
|
+
- `plan.md` — updates the reviews table lifecycle (`pending` → `passed` or `fixes_added` → `fixes_completed` → `passed`).
|
|
152
|
+
- `state.md` — updates `oat_current_task`, `oat_last_commit`, `oat_project_state_updated`, and persists `oat_orchestration_retry_limit` if the user overrode the default.
|
|
153
|
+
|
|
154
|
+
Legacy `oat_execution_mode: subagent-driven` in existing projects is silently ignored and removed on the next bookkeeping write.
|
|
155
|
+
|
|
156
|
+
## Related
|
|
157
|
+
|
|
158
|
+
- [Lifecycle](lifecycle.md) — where implementation sits in the full project flow.
|
|
159
|
+
- [Artifacts](artifacts.md) — `plan.md` frontmatter contract, including `oat_plan_parallel_groups`.
|
|
160
|
+
- [HiLL Checkpoints](hill-checkpoints.md) — orthogonal pause semantics; fires after a phase or group completes and merges.
|
|
161
|
+
- [CLI Reference](../../reference/cli-reference.md) — `oat project validate-plan` and other commands.
|
|
@@ -13,7 +13,7 @@ OAT lifecycle order:
|
|
|
13
13
|
2. Spec (`oat-project-spec`)
|
|
14
14
|
3. Design (`oat-project-design`)
|
|
15
15
|
4. Plan (`oat-project-plan`)
|
|
16
|
-
5. Implement (`oat-project-implement`
|
|
16
|
+
5. Implement (`oat-project-implement`)
|
|
17
17
|
6. Review loop (`oat-project-review-provide` / `oat-project-review-receive`)
|
|
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
|
|
@@ -34,12 +34,8 @@ OAT lifecycle order:
|
|
|
34
34
|
```mermaid
|
|
35
35
|
flowchart LR
|
|
36
36
|
D["Discovery"] --> S["Spec"] --> G["Design"] --> P["Plan"]
|
|
37
|
-
P -->
|
|
38
|
-
|
|
39
|
-
M --> I2["Subagent-driven"]
|
|
40
|
-
I1 --> R["Review loop"]
|
|
41
|
-
I2 --> R
|
|
42
|
-
R --> PR["PR flow"]
|
|
37
|
+
P --> I["Implement (oat-project-implement)"]
|
|
38
|
+
I --> R["Review loop"] --> PR["PR flow"]
|
|
43
39
|
PR --> DOC["Docs sync (optional)"]
|
|
44
40
|
DOC --> C["Complete"]
|
|
45
41
|
```
|
|
@@ -83,16 +79,23 @@ Actual PR existence is tracked separately from `oat_phase_status`:
|
|
|
83
79
|
|
|
84
80
|
This distinction matters during completion: `oat-project-complete` can skip the "Open a PR?" prompt when `oat_pr_status: open` is already present.
|
|
85
81
|
|
|
86
|
-
### Auto-review at checkpoints
|
|
82
|
+
### Auto-review at HiLL checkpoints
|
|
87
83
|
|
|
88
|
-
When `
|
|
84
|
+
When `workflow.autoReviewAtHillCheckpoints` is enabled or `plan.md` frontmatter sets `oat_auto_review_at_hill_checkpoints`, completing a HiLL checkpoint automatically runs the extra lifecycle review scoped to every implementation phase not already covered by a passed whole-phase code review, through the just-completed checkpoint. Mid-implementation multi-phase reviews use inclusive phase-range scopes such as `p02-p03`; the final implementation checkpoint uses `code final`. The review uses auto-disposition mode (minors auto-converted to fix tasks, no user prompts). Disabled by default. Legacy `autoReviewAtCheckpoints` and `oat_auto_review_at_checkpoints` are still read as fallbacks. This does not control Tier 1 per-phase `oat-reviewer` gates.
|
|
89
85
|
|
|
90
86
|
## Implementation modes
|
|
91
87
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
88
|
+
`oat-project-implement` v2.0 dispatches one subagent per phase (not per task). Capability detection at skill start selects a tier, locked for the run:
|
|
89
|
+
|
|
90
|
+
- **Tier 1 (subagents):** native subagent dispatch via Claude Code, Cursor, or Codex with spawn authorization.
|
|
91
|
+
- **Tier 2 (inline):** orchestrator reads the agent files and executes the process itself when subagents are unavailable or authorization is declined.
|
|
92
|
+
|
|
93
|
+
Within either tier, parallelism is expressed as plan metadata:
|
|
94
|
+
|
|
95
|
+
- **Sequential (default):** plans with no `oat_plan_parallel_groups` field, or with an empty array. Phases run in plan order on the orchestration branch.
|
|
96
|
+
- **Parallel groups:** phases listed together in `oat_plan_parallel_groups` run concurrently in worktrees (Tier 1 only) and merge back to the orchestration branch in plan order. Groups themselves execute sequentially.
|
|
97
|
+
|
|
98
|
+
See [Implementation Execution](implementation-execution.md) for the full execution model — tier detection, bounded fix loop, fan-in, merge-conflict handling, dry-run, and resumption.
|
|
96
99
|
|
|
97
100
|
## Review receive behavior
|
|
98
101
|
|
|
@@ -106,18 +109,14 @@ When `autoReviewAtCheckpoints` is enabled (via `.oat/config.json` or `plan.md` f
|
|
|
106
109
|
|
|
107
110
|
1. `oat-project-quick-start` (adaptive discovery — provide a project name and optional description; if only the name is provided, quick-start asks for the missing description before discovery. Well-understood requests synthesize quickly, exploratory requests invest in solution space exploration)
|
|
108
111
|
2. Decision point: straight to plan, optional lightweight `design.md`, or promote to spec-driven
|
|
109
|
-
3. Implement:
|
|
110
|
-
- `oat-project-implement` (sequential)
|
|
111
|
-
- `oat-project-subagent-implement` (parallel/subagent-driven)
|
|
112
|
+
3. Implement: `oat-project-implement` (sequential by default; parallel when `oat_plan_parallel_groups` is declared)
|
|
112
113
|
4. `oat-project-review-provide` / `oat-project-pr-final`
|
|
113
114
|
5. Optional `oat-project-promote-spec-driven` to backfill spec-driven lifecycle artifacts in-place
|
|
114
115
|
|
|
115
116
|
### Import lane diagram
|
|
116
117
|
|
|
117
118
|
1. `oat-project-import-plan`
|
|
118
|
-
2. Implement:
|
|
119
|
-
- `oat-project-implement` (sequential)
|
|
120
|
-
- `oat-project-subagent-implement` (parallel/subagent-driven)
|
|
119
|
+
2. Implement: `oat-project-implement` (sequential by default; parallel when `oat_plan_parallel_groups` is declared)
|
|
121
120
|
3. `oat-project-review-provide` / `oat-project-pr-final`
|
|
122
121
|
4. Optional `oat-project-promote-spec-driven` to switch project mode to spec-driven lifecycle
|
|
123
122
|
|
|
@@ -128,10 +127,8 @@ When `autoReviewAtCheckpoints` is enabled (via `.oat/config.json` or `plan.md` f
|
|
|
128
127
|
```mermaid
|
|
129
128
|
flowchart LR
|
|
130
129
|
D["Discover"] --> S["Spec"] --> G["Design"] --> P["Plan"]
|
|
131
|
-
P -->
|
|
132
|
-
|
|
133
|
-
I1 --> R["Review"] --> PR["PR"] --> Doc["Docs (optional)"] --> C["Complete"]
|
|
134
|
-
I2 --> R
|
|
130
|
+
P --> I["Implement (oat-project-implement)"]
|
|
131
|
+
I --> R["Review"] --> PR["PR"] --> Doc["Docs (optional)"] --> C["Complete"]
|
|
135
132
|
```
|
|
136
133
|
|
|
137
134
|
### Quick lane
|
|
@@ -142,10 +139,8 @@ flowchart LR
|
|
|
142
139
|
D -->|Straight to plan| P["Plan"]
|
|
143
140
|
D -->|Lightweight design| LD["Design (quick)"] --> P
|
|
144
141
|
D -->|Promote| SD["→ Spec-Driven lane"]
|
|
145
|
-
P -->
|
|
146
|
-
|
|
147
|
-
QI1 --> QR["Review / PR"]
|
|
148
|
-
QI2 --> QR
|
|
142
|
+
P --> QI["Implement (oat-project-implement)"]
|
|
143
|
+
QI --> QR["Review / PR"]
|
|
149
144
|
```
|
|
150
145
|
|
|
151
146
|
### Import lane
|
|
@@ -153,9 +148,7 @@ flowchart LR
|
|
|
153
148
|
```mermaid
|
|
154
149
|
flowchart LR
|
|
155
150
|
I["Import Plan"] --> II1["Implement (oat-project-implement)"]
|
|
156
|
-
I --> II2["Implement (oat-project-subagent-implement)"]
|
|
157
151
|
II1 --> IR["Review / PR"]
|
|
158
|
-
II2 --> IR
|
|
159
152
|
```
|
|
160
153
|
|
|
161
154
|
### Capture lane
|
|
@@ -56,9 +56,11 @@ Status progression in `plan.md` Reviews table:
|
|
|
56
56
|
- Minor (non-final scopes): do not auto-defer by default. Convert when likely future cleanup or when the fix is trivial; defer only with recorded rationale.
|
|
57
57
|
- Minor (final scope): not auto-deferred; require explicit user disposition (defer vs convert), and recommend convert when likely future cleanup or trivial to fix.
|
|
58
58
|
|
|
59
|
-
## Auto-review at checkpoints
|
|
59
|
+
## Auto-review at HiLL checkpoints
|
|
60
60
|
|
|
61
|
-
When `
|
|
61
|
+
When `workflow.autoReviewAtHillCheckpoints` is enabled (for example, `oat config set workflow.autoReviewAtHillCheckpoints true --user`) or per-project `plan.md` frontmatter sets `oat_auto_review_at_hill_checkpoints`, completing a HiLL checkpoint automatically runs the extra lifecycle review. The review scope covers every implementation phase not already covered by a passed whole-phase code review, through the just-completed checkpoint. Mid-implementation multi-phase checkpoint reviews use inclusive phase-range scopes such as `p02-p03`. The final phase checkpoint triggers a `code final` review.
|
|
62
|
+
|
|
63
|
+
This is separate from Tier 1 phase gate reviews. Tier 1 implementation always runs `oat-reviewer` after each phase; `workflow.autoReviewAtHillCheckpoints` only controls the additional lifecycle review when a HiLL checkpoint is reached. Legacy `autoReviewAtCheckpoints` and `oat_auto_review_at_checkpoints` are still read as fallbacks.
|
|
62
64
|
|
|
63
65
|
Auto-triggered reviews use `oat_review_invocation: auto` in the review artifact frontmatter. In auto mode, `oat-project-review-receive` auto-converts all findings to fix tasks without user prompts (Minor findings that are clearly out of scope are deferred with a note).
|
|
64
66
|
|
|
@@ -52,7 +52,6 @@ Use this section when you want to choose the right OAT skill for a task. If you
|
|
|
52
52
|
- `oat-project-plan`
|
|
53
53
|
- `oat-project-plan-writing`
|
|
54
54
|
- `oat-project-implement`
|
|
55
|
-
- `oat-project-subagent-implement`
|
|
56
55
|
- `oat-project-progress`
|
|
57
56
|
- `oat-project-next`
|
|
58
57
|
- `oat-project-capture`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-docs-bootstrap
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.1
|
|
4
4
|
description: Use when bootstrapping a new OAT docs app in a repo. Guides the user through preflight detection, richer input gathering than the raw CLI, `oat docs init` invocation with labeled post-patches for open CLI gaps, build verification, post-scaffold config inspection, and an educational walkthrough. Supports Fumadocs (full path) and MkDocs (lean path with defined minimum contract).
|
|
5
5
|
argument-hint: '<optional-target-dir>'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -473,6 +473,7 @@ Capture both stdout and stderr. **Do not** stream output directly to the user; t
|
|
|
473
473
|
createdFiles: string[] // paths relative to appRoot
|
|
474
474
|
capabilities: { siteNameFlag: boolean, ... } // from Capability Detection (3b)
|
|
475
475
|
cliLogs: { stdout: string, stderr: string } // retained for Walkthrough
|
|
476
|
+
rootBuildPatch: { status, reason?, diff?, manualSnippet? } | null // parsed from CLI output when available
|
|
476
477
|
patchesApplied: [] // populated by 3c/3d site-identity + scaffold-integrity sub-procedures
|
|
477
478
|
```
|
|
478
479
|
|
|
@@ -655,7 +656,7 @@ Four sub-findings, each with its own gate, target, and idempotency check. All su
|
|
|
655
656
|
- **D.2 — Generated `index.md` header comment.** The header to prepend:
|
|
656
657
|
|
|
657
658
|
```markdown
|
|
658
|
-
<!--
|
|
659
|
+
<!-- AUTOGENERATED by `oat docs generate-index`. Do not hand-edit; changes are clobbered on every `predev` / `prebuild`. -->
|
|
659
660
|
```
|
|
660
661
|
|
|
661
662
|
**Two-pass strategy. Both passes MUST run — do not treat the second as optional.**
|
|
@@ -931,6 +932,13 @@ Narrate each field actually present in their config (skip fields that are absent
|
|
|
931
932
|
- **`documentation.config`** (MkDocs only) — path to `mkdocs.yml`. Present for MkDocs because its chrome/nav is YAML-configured; absent for Fumadocs because chrome is code.
|
|
932
933
|
- **`documentation.requireForProjectCompletion`** — the opt-in collected in Step 5e. If `true`, `oat-project-complete` will block project completion until `oat-docs-analyze` reports no open recommendations. Explain whichever value is set on this project.
|
|
933
934
|
|
|
935
|
+
If `Scaffold Result.rootBuildPatch` is present, narrate it here before moving on:
|
|
936
|
+
|
|
937
|
+
- **When `status` is `applied`, `dry-run`, or `already-configured`:** explain why the root `package.json` changed. The point is not cosmetics; it's to keep repo-root `pnpm build` from pulling the new docs app into the consumer's default Turbo build, where React / Next type collisions can break CI. Show the exact script diff from `rootBuildPatch.diff` when available; if the diff was not retained, at minimum quote the before/after values for `scripts.build` and `scripts["build:docs"]`.
|
|
938
|
+
- Make the behavior concrete: `build` now excludes `{appName}` from the default Turbo build graph, and `build:docs` is the explicit root-level command that builds only the docs app.
|
|
939
|
+
- Document the adjustment/revert path explicitly: "If you want different scope behavior, edit the root `package.json` `scripts.build` and `scripts["build:docs"]` entries together. Removing the extra `--filter='!{appName}'` restores the old all-packages build; changing `build:docs` changes the docs-only target."
|
|
940
|
+
- **When `status` is `skipped`:** surface the skip reason in plain language, then print `rootBuildPatch.manualSnippet` verbatim as the recommended manual Turbo snippet to add. Explain that OAT intentionally left the root scripts alone because it could not prove the existing root build was a Turbo build it was safe to rewrite.
|
|
941
|
+
|
|
934
942
|
End with: "This config is how every OAT docs tool finds your docs. Editing it by hand is supported — but changes to `root` or `config` paths need to match reality on disk."
|
|
935
943
|
|
|
936
944
|
#### Section B (both frameworks) — The two `index.md` files
|
|
@@ -941,7 +949,7 @@ Narrate:
|
|
|
941
949
|
|
|
942
950
|
- **The authored source** at `<appRoot>/docs/index.md`. This is the file the user edits. It has frontmatter (`title`, `description`) and a `## Contents` section listing direct children of the docs root. It is the top of a fractal: every directory has its own `index.md`, each with its own `## Contents`.
|
|
943
951
|
- **The generated map** at `<appRoot>/index.md` (when Fumadocs — the path differs for MkDocs; use the `documentation.index` path resolved by the Inspector if it differs). Regenerated on every `predev` / `prebuild` by the `oat docs generate-index` command. Machine-shaped: rolls up every `## Contents` section in the tree into a single searchable map that tools consume. **Hand-edits are silently clobbered.**
|
|
944
|
-
- **How to tell them apart when opening a file.** If the file sits inside `docs/`, it's authored. If it sits at `<appRoot>/index.md` (outside `docs/`), it's generated — and
|
|
952
|
+
- **How to tell them apart when opening a file.** If the file sits inside `docs/`, it's authored. If it sits at `<appRoot>/index.md` (outside `docs/`), it's generated — and when the CLI or Scaffold-integrity FP-13/D.2 wrote the warning correctly, the first line is `<!-- AUTOGENERATED by \`oat docs generate-index\`... -->`.
|
|
945
953
|
|
|
946
954
|
End with: "Always edit `docs/index.md` and the `## Contents` sections. Never edit the root-level `index.md` — your edits will disappear next build."
|
|
947
955
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-doctor
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.2
|
|
4
4
|
description: Use when you need to diagnose your OAT setup, check for outdated skills, identify misconfigurations, or get a summary of installed tools and config. Runs health checks and recommends corrective actions.
|
|
5
5
|
argument-hint: '[--summary]'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -160,7 +160,7 @@ Workflow pack skills:
|
|
|
160
160
|
- oat-project-promote-spec-driven, oat-project-quick-start
|
|
161
161
|
- oat-project-reconcile, oat-project-revise, oat-project-review-provide
|
|
162
162
|
- oat-project-review-receive, oat-project-review-receive-remote
|
|
163
|
-
- oat-project-spec, oat-project-
|
|
163
|
+
- oat-project-spec, oat-project-summary
|
|
164
164
|
- oat-repo-knowledge-index, oat-worktree-bootstrap, oat-worktree-bootstrap-auto
|
|
165
165
|
|
|
166
166
|
Ideas pack skills:
|
|
@@ -263,7 +263,7 @@ Read config key descriptions from `~/.oat/docs/reference/file-locations.md` and
|
|
|
263
263
|
- **documentation.config:** Path to docs config file (e.g., mkdocs.yml).
|
|
264
264
|
- **documentation.tooling:** Docs tooling in use (e.g., mkdocs, fumadocs).
|
|
265
265
|
- **documentation.requireForProjectCompletion:** Whether docs update is required before project completion.
|
|
266
|
-
- **
|
|
266
|
+
- **workflow.autoReviewAtHillCheckpoints:** When true, completing a HiLL checkpoint auto-triggers the lifecycle review. Default unset. This does not control Tier 1 per-phase `oat-reviewer` gates. Can be overridden per-project via `oat_auto_review_at_hill_checkpoints` in plan.md frontmatter. Legacy `autoReviewAtCheckpoints` and `oat_auto_review_at_checkpoints` are still read as fallbacks.
|
|
267
267
|
- **worktrees.root:** Base directory for git worktrees. Used by worktree-bootstrap skills.
|
|
268
268
|
|
|
269
269
|
## Sync Status
|