@open-agent-toolkit/cli 0.3.13 → 0.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/contributing/index.md +14 -1
- package/assets/docs/contributing/skills.md +64 -2
- package/assets/docs/contributing/smoke-testing.md +3 -3
- package/assets/docs/contributing/updating-model-guidance.md +2 -2
- package/assets/docs/contributing/verifying-cursor-pins.md +1 -1
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +32 -0
- package/assets/docs/docs-tooling/agent-instructions.md +131 -0
- package/assets/docs/docs-tooling/index.md +1 -0
- package/assets/docs/docs-tooling/meta.json +1 -1
- package/assets/docs/docs-tooling/workflows.md +331 -2
- package/assets/docs/{cli-utilities → getting-started}/bootstrap.md +60 -5
- package/assets/docs/{guide → getting-started}/concepts.md +28 -10
- package/assets/docs/getting-started/index.md +68 -0
- package/assets/docs/getting-started/meta.json +4 -0
- package/assets/docs/getting-started/quickstart.md +174 -0
- package/assets/docs/{cli-utilities → getting-started}/tool-packs.md +142 -14
- package/assets/docs/index.md +47 -48
- package/assets/docs/meta.json +6 -7
- package/assets/docs/provider-sync/commands.md +25 -2
- package/assets/docs/provider-sync/config.md +60 -1
- package/assets/docs/provider-sync/index.md +31 -15
- package/assets/docs/provider-sync/instruction-sync.md +32 -1
- package/assets/docs/provider-sync/manifest-and-drift.md +85 -0
- package/assets/docs/provider-sync/meta.json +1 -0
- package/assets/docs/provider-sync/pilot-with-a-team.md +236 -0
- package/assets/docs/provider-sync/scope-and-surface.md +37 -3
- package/assets/docs/reference/cli-reference.md +33 -33
- package/assets/docs/{cli-utilities → reference}/config-and-local-state.md +25 -9
- package/assets/docs/{cli-utilities → reference}/configuration.md +151 -34
- package/assets/docs/reference/file-locations.md +4 -1
- package/assets/docs/reference/index.md +13 -1
- package/assets/docs/reference/meta.json +7 -1
- package/assets/docs/reference/oat-directory-structure.md +1 -1
- package/assets/docs/{workflows/projects/artifacts.md → reference/project-artifacts.md} +4 -4
- package/assets/docs/{workflows/projects/state-machine.md → reference/project-state-machine.md} +1 -1
- package/assets/docs/{workflows/projects/repo-analysis.md → reference/repository-pr-comments.md} +2 -2
- package/assets/docs/reference/troubleshooting.md +125 -10
- package/assets/docs/reference/what-oat-writes.md +410 -0
- package/assets/docs/skills/brainstorm.md +77 -0
- package/assets/docs/skills/diagnostics.md +56 -0
- package/assets/docs/{workflows/skills → skills}/explainer-kit.md +121 -0
- package/assets/docs/skills/index.md +416 -0
- package/assets/docs/{workflows/skills → skills}/meta.json +4 -2
- package/assets/docs/{workflows/skills → skills}/recon.md +49 -0
- package/assets/docs/skills/repo-improve.md +254 -0
- package/assets/docs/skills/research.md +237 -0
- package/assets/docs/skills/session-closeout.md +61 -0
- package/assets/docs/workflows/advanced/autonomy.md +344 -0
- package/assets/docs/workflows/{projects → advanced}/cursor-cloud.md +69 -1
- package/assets/docs/workflows/{projects → advanced}/dispatch-ceiling.md +163 -18
- package/assets/docs/workflows/{projects → advanced}/evidence-layers.md +1 -1
- package/assets/docs/workflows/advanced/index.md +19 -0
- package/assets/docs/workflows/advanced/meta.json +13 -0
- package/assets/docs/workflows/{projects → advanced}/orchestration-model.md +63 -4
- package/assets/docs/workflows/{projects → advanced}/programmatic-execution.md +4 -4
- package/assets/docs/{cli-utilities → workflows/advanced}/workflow-gates.md +162 -8
- package/assets/docs/workflows/advanced/worktree-bootstrap.md +83 -0
- package/assets/docs/workflows/approvals-and-automation.md +261 -0
- package/assets/docs/workflows/backlog-and-planning/backlog-lifecycle.md +348 -0
- package/assets/docs/workflows/backlog-and-planning/index.md +13 -0
- package/assets/docs/workflows/backlog-and-planning/meta.json +4 -0
- package/assets/docs/workflows/backlog-and-planning/remote-project-management.md +303 -0
- package/assets/docs/workflows/choose-workflow.md +114 -0
- package/assets/docs/workflows/ideas/index.md +3 -3
- package/assets/docs/workflows/ideas/lifecycle.md +218 -1
- package/assets/docs/workflows/index.md +11 -62
- package/assets/docs/workflows/meta.json +10 -2
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +538 -0
- package/assets/docs/workflows/projects/closeout/index.md +14 -0
- package/assets/docs/workflows/projects/closeout/meta.json +4 -0
- package/assets/docs/workflows/projects/{pr-flow.md → closeout/pr-flow.md} +1 -1
- package/assets/docs/workflows/projects/{retro.md → closeout/retro.md} +1 -1
- package/assets/docs/workflows/projects/execution/execution-skills.md +258 -0
- package/assets/docs/workflows/projects/{implementation-execution.md → execution/implementation-execution.md} +8 -8
- package/assets/docs/workflows/projects/execution/index.md +15 -0
- package/assets/docs/workflows/projects/execution/meta.json +9 -0
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +376 -0
- package/assets/docs/{cli-utilities → workflows/projects/execution}/project-log.md +1 -1
- package/assets/docs/workflows/projects/index.md +38 -49
- package/assets/docs/workflows/projects/lifecycle.md +47 -11
- package/assets/docs/workflows/projects/meta.json +2 -23
- package/assets/docs/workflows/projects/{design-modes.md → planning/design-modes.md} +29 -0
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +167 -0
- package/assets/docs/workflows/projects/planning/index.md +16 -0
- package/assets/docs/workflows/projects/planning/meta.json +10 -0
- package/assets/docs/workflows/projects/planning/planning-skills.md +381 -0
- package/assets/docs/workflows/projects/{splitting.md → planning/splitting.md} +3 -3
- package/assets/docs/workflows/projects/planning/starting-projects.md +511 -0
- package/assets/docs/workflows/projects/{reviews.md → reviews/index.md} +51 -5
- package/assets/docs/workflows/projects/reviews/meta.json +4 -0
- package/assets/docs/workflows/projects/reviews/review-flavors.md +643 -0
- package/assets/docs/workflows/projects/{reviewing-oat-prs.md → reviews/reviewing-oat-prs.md} +3 -3
- package/assets/docs/workflows/waves/index.md +12 -0
- package/assets/docs/workflows/waves/meta.json +4 -0
- package/assets/docs/workflows/waves/wave-workflows.md +206 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-docs/SKILL.md +19 -19
- package/assets/skills/oat-docs-analyze/SKILL.md +1 -1
- package/assets/skills/oat-docs-apply/SKILL.md +1 -1
- package/assets/skills/oat-docs-authoring/SKILL.md +1 -1
- package/assets/skills/oat-docs-bootstrap/SKILL.md +1 -1
- package/assets/skills/oat-doctor/SKILL.md +25 -25
- package/package.json +2 -2
- package/assets/docs/cli-utilities/backlog-lifecycle.md +0 -80
- package/assets/docs/cli-utilities/index.md +0 -74
- package/assets/docs/cli-utilities/meta.json +0 -13
- package/assets/docs/cli-utilities/remote-project-management.md +0 -191
- package/assets/docs/guide/index.md +0 -31
- package/assets/docs/guide/meta.json +0 -4
- package/assets/docs/quickstart.md +0 -88
- package/assets/docs/workflows/projects/autonomy.md +0 -196
- package/assets/docs/workflows/projects/hill-checkpoints.md +0 -93
- package/assets/docs/workflows/projects/picking-up-projects.md +0 -124
- package/assets/docs/workflows/projects/review-flavors.md +0 -138
- package/assets/docs/workflows/skills/index.md +0 -184
- package/assets/docs/workflows/skills/repo-improve.md +0 -89
- package/assets/docs/workflows/wave-workflows.md +0 -77
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Starting projects
|
|
3
|
+
description: 'Choose a project entry skill, import an existing plan, capture completed work, or split a confirmed broad scope.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Starting projects
|
|
7
|
+
|
|
8
|
+
Choose an entry path based on what you already know and what already exists.
|
|
9
|
+
These skills do not require an existing active project. They create or import
|
|
10
|
+
tracked work, although quick-start and lite resume an active project of their
|
|
11
|
+
own mode, and import writes into whichever project is active.
|
|
12
|
+
|
|
13
|
+
| Your situation | Entry skill | Result |
|
|
14
|
+
| ------------------------------------------------------------------ | ------------------------- | ------------------------------------------------------------------------------ |
|
|
15
|
+
| Requirements need discovery and a full technical design. | `oat-project-new` | A spec-driven scaffold, ready to begin discovery. |
|
|
16
|
+
| The outcome is bounded, with optional design decisions to resolve. | `oat-project-quick-start` | Discovery and an executable plan, with lightweight design when needed. |
|
|
17
|
+
| The change fits one implementation sitting. | `oat-project-lite` | One approved plan with requirements and validation criteria. |
|
|
18
|
+
| You already have a Markdown plan. | `oat-project-import-plan` | The original source preserved beside a normalized OAT plan. |
|
|
19
|
+
| Implementation happened without project tracking. | `oat-project-capture` | Retroactive discovery and implementation records from the session and commits. |
|
|
20
|
+
| A confirmed scope contains several coordinated projects. | `oat-project-split` | A coordination parent and children that resume at discovery. |
|
|
21
|
+
|
|
22
|
+
For the broader mode decision, see [Choose a workflow](../../choose-workflow.md).
|
|
23
|
+
For an existing project's discovery, design, or plan, see
|
|
24
|
+
[Planning skills](planning-skills.md). The [skill catalog](../../../skills/index.md)
|
|
25
|
+
provides the complete supported-skill inventory.
|
|
26
|
+
|
|
27
|
+
A few terms recur on this page. The _active project_ is the project recorded as
|
|
28
|
+
`activeProject` in `.oat/config.local.json`, which project skills act on by
|
|
29
|
+
default. _Spec-driven_ is the full workflow: discovery, design, plan, then
|
|
30
|
+
implementation. An _artifact_ is a project file such as `discovery.md`,
|
|
31
|
+
`plan.md`, or `state.md`.
|
|
32
|
+
|
|
33
|
+
## Before your first project
|
|
34
|
+
|
|
35
|
+
Check these before you start. Each one can stop or misdirect a first project
|
|
36
|
+
in a fresh repository.
|
|
37
|
+
|
|
38
|
+
1. **Initialize the repository and install the workflows pack.** Run
|
|
39
|
+
`oat init --scope project`, then install the pack that contains the project
|
|
40
|
+
skills, also with `--scope project`. If you leave out `--scope project`,
|
|
41
|
+
`oat init` uses its default scope, `all`, and also writes under your home
|
|
42
|
+
directory, and the pack installs to your user scope instead of the
|
|
43
|
+
repository:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
oat init --scope project
|
|
47
|
+
oat tools install workflows --scope project
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
See [Bootstrap](../../../getting-started/bootstrap.md) and
|
|
51
|
+
[Tool packs](../../../getting-started/tool-packs.md).
|
|
52
|
+
|
|
53
|
+
2. **Decide where project files live.** New projects default to the `synced`
|
|
54
|
+
scope. A synced project is stored on its own Git ref and pushed to a remote
|
|
55
|
+
named `origin` every time a skill saves it. In a repository with no `origin`
|
|
56
|
+
remote, creating a synced project fails with "Synced project creation
|
|
57
|
+
requires a configured origin remote." Either add an `origin` remote, or
|
|
58
|
+
change the default before you start:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
oat config set projects.defaultScope shared
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`shared` keeps project files in the repository and commits them on the
|
|
65
|
+
current branch. `local` keeps them on this machine only; OAT adds a
|
|
66
|
+
`.gitignore` rule for them. This command writes the repository's
|
|
67
|
+
`.oat/config.json`. The `OAT_PROJECTS_DEFAULT_SCOPE` environment variable
|
|
68
|
+
overrides the setting for one shell.
|
|
69
|
+
|
|
70
|
+
3. **Only `oat-project-new` takes a scope.** It accepts `--scope shared|local|synced`.
|
|
71
|
+
Quick-start, lite, import, capture, and split have no scope argument.
|
|
72
|
+
Quick-start, lite, import, and capture always create projects in the
|
|
73
|
+
default scope. Split uses the active project's scope, or `shared` when no
|
|
74
|
+
project is active. Set the default first if you do not want `synced`.
|
|
75
|
+
|
|
76
|
+
4. **Build the knowledge index before spec-driven discovery.** `oat-project-discover`
|
|
77
|
+
refuses to start until `.oat/repo/knowledge/project-index.md` exists. Run
|
|
78
|
+
`/oat-repo-knowledge-index` once before your first spec-driven project.
|
|
79
|
+
Quick-start, lite, import, and capture do not check for it.
|
|
80
|
+
|
|
81
|
+
5. **Know what happens when a project is already active.** Check with
|
|
82
|
+
`oat config get activeProject` before you start:
|
|
83
|
+
- `oat-project-new` and `oat-project-capture` create a new project and make
|
|
84
|
+
it active instead.
|
|
85
|
+
- `oat-project-quick-start` resumes an active quick project and ignores the
|
|
86
|
+
name and description you pass. If that plan is already
|
|
87
|
+
implementation-ready, it goes straight into `oat-project-implement`.
|
|
88
|
+
- `oat-project-lite` resumes an active lite project and ignores the name and
|
|
89
|
+
description you pass. With any other project active, it creates a new lite
|
|
90
|
+
project.
|
|
91
|
+
- `oat-project-import-plan` writes into any active project, whatever its
|
|
92
|
+
mode. It rewrites that project's `plan.md` and switches it to import mode.
|
|
93
|
+
- `oat-project-split` makes its first child the active project.
|
|
94
|
+
|
|
95
|
+
To start fresh work, run `/oat-project-clear-active` (or switch with
|
|
96
|
+
`/oat-project-open`) first.
|
|
97
|
+
|
|
98
|
+
## Before invoking an entry skill
|
|
99
|
+
|
|
100
|
+
Examples beginning with `/` are skill requests sent to your agent, not terminal
|
|
101
|
+
commands. In a provider that uses `$` skill syntax, use `$oat-project-new` instead
|
|
102
|
+
of `/oat-project-new`, and apply the same substitution to the other names.
|
|
103
|
+
Blocks labelled `bash` contain terminal commands.
|
|
104
|
+
|
|
105
|
+
Project creation normally activates the new project in `.oat/config.local.json`.
|
|
106
|
+
Check the reported project path before continuing, especially when another
|
|
107
|
+
project is already active.
|
|
108
|
+
|
|
109
|
+
The new, quick-start, lite, and import skills check inherited Git changes before
|
|
110
|
+
scaffolding. Unrelated changes require an explicit disposition in interactive
|
|
111
|
+
runs. One exception: if the only change is `.oat/sync/manifest.json`, it is
|
|
112
|
+
committed automatically as `chore: run sync`. Capture does not run this check.
|
|
113
|
+
Do not assume starting a project also authorizes implementation or a PR.
|
|
114
|
+
|
|
115
|
+
**Dispatch policy.** Before a plan is marked ready, quick-start, lite, and
|
|
116
|
+
import ask you to choose a _dispatch policy_: the highest tier of models and
|
|
117
|
+
effort OAT may use when it dispatches implementation and review agents. The
|
|
118
|
+
choices come from `oat project dispatch-ceiling choices`. If your configuration
|
|
119
|
+
has no complete dispatch ladder (the list of models for each tier), the skill
|
|
120
|
+
shows the bundled recommendation and asks whether to adopt it into shared,
|
|
121
|
+
local, or user config. That writes a config file, so pick the scope
|
|
122
|
+
deliberately. The plan stays not ready until this resolves. See
|
|
123
|
+
[Dispatch policy](../../advanced/dispatch-ceiling.md).
|
|
124
|
+
|
|
125
|
+
**Approval checkpoints.** A _HiLL (human-in-the-loop lifecycle) checkpoint_ is
|
|
126
|
+
a point where a skill stops and waits for your explicit approval before it marks
|
|
127
|
+
a phase complete. Projects created by `oat-project-new` have checkpoints on
|
|
128
|
+
discovery and design by default. Quick, lite, import, and captured projects have
|
|
129
|
+
no workflow-phase checkpoints before implementation. Lite still asks you to
|
|
130
|
+
approve its plan once. See [HiLL checkpoints](hill-checkpoints.md).
|
|
131
|
+
|
|
132
|
+
Several skills also run a configured _exit gate_, an optional review or command
|
|
133
|
+
your repository configures to run before a skill marks its work complete. When
|
|
134
|
+
a gate produces a review the skill can accept, the skill hands it to
|
|
135
|
+
`oat-project-review-receive` without asking.
|
|
136
|
+
|
|
137
|
+
## oat-project-new
|
|
138
|
+
|
|
139
|
+
Use this entry when you need the spec-driven lifecycle but have not yet explored
|
|
140
|
+
the requirements. This skill creates the project structure. It does not conduct
|
|
141
|
+
discovery or draft the design.
|
|
142
|
+
|
|
143
|
+
**Invocation:** Send the project slug to your agent. Use `--scope` when the
|
|
144
|
+
project's storage scope must differ from the resolved default.
|
|
145
|
+
|
|
146
|
+
```text
|
|
147
|
+
/oat-project-new webhook-delivery --scope shared
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Prerequisites:** No active project is needed; this skill creates one. You
|
|
151
|
+
need an initialized repository (see [Before your first project](#before-your-first-project)).
|
|
152
|
+
The name accepts letters, numbers, dashes, and underscores. Omitted scope uses
|
|
153
|
+
`projects.defaultScope`, which defaults to `synced`. Synced projects need a Git
|
|
154
|
+
remote named `origin`, and creating one pushes the project to `origin`. In a
|
|
155
|
+
repository without `origin`, or if you do not want that push, pass
|
|
156
|
+
`--scope shared` or `--scope local`.
|
|
157
|
+
|
|
158
|
+
**Example scenario:** You need webhook delivery across several services, but
|
|
159
|
+
retry limits, ownership, and failure handling are still undecided. Create
|
|
160
|
+
`webhook-delivery` in shared scope so its artifacts live in the repository.
|
|
161
|
+
Choose this entry rather than quick-start because the requirements and component
|
|
162
|
+
boundaries need a full discovery and design pass.
|
|
163
|
+
|
|
164
|
+
**Expected output:** The scaffolder creates standard project artifacts, reports
|
|
165
|
+
their scope and path, sets the active project, and refreshes the local dashboard
|
|
166
|
+
when enabled. Templates resolve from the repository, then user scope, then the
|
|
167
|
+
bundle. The scaffold is not an approved plan. Its `state.md` sets HiLL
|
|
168
|
+
checkpoints on discovery and design.
|
|
169
|
+
|
|
170
|
+
**What it does without asking:** After the Git-changes check, it runs
|
|
171
|
+
`oat project new`, which creates the project directory and artifacts, makes the
|
|
172
|
+
new project active (replacing any active project), and refreshes `.oat/state.md`.
|
|
173
|
+
It also records the scaffold in Git: a commit in shared scope; in synced scope,
|
|
174
|
+
a push to `origin` plus a commit of the project record and of any `.gitignore`
|
|
175
|
+
rule it added; in local scope, a `.gitignore` rule that it leaves uncommitted.
|
|
176
|
+
It does not start discovery.
|
|
177
|
+
|
|
178
|
+
**Next step:** If `.oat/repo/knowledge/project-index.md` does not exist yet, run
|
|
179
|
+
`oat-repo-knowledge-index` first; discovery refuses to start without it. Then
|
|
180
|
+
invoke [oat-project-discover](planning-skills.md#oat-project-discover) to
|
|
181
|
+
explore the problem. The optional `--force` scaffold flag allows the same slug
|
|
182
|
+
to exist in another scope and fills missing files without overwriting existing
|
|
183
|
+
content. It is not a reset.
|
|
184
|
+
|
|
185
|
+
## oat-project-quick-start
|
|
186
|
+
|
|
187
|
+
Use quick-start to turn a bounded request into a runnable plan without requiring
|
|
188
|
+
separate spec and design phases. Discovery depth follows the ambiguity of the
|
|
189
|
+
request, not the number of files you expect to change.
|
|
190
|
+
|
|
191
|
+
**Invocation:** Supply a name and a substantive description. A bare name prompts
|
|
192
|
+
for the description before repository exploration begins.
|
|
193
|
+
|
|
194
|
+
```text
|
|
195
|
+
/oat-project-quick-start export-filter "Add a date-range filter to CSV exports, preserving the current default output."
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**Prerequisites:** No active project is needed. The repository must contain
|
|
199
|
+
OAT scaffolding, including `.oat/` and `.agents/`, and you need a task
|
|
200
|
+
objective. The new project uses the default scope, because quick-start takes no
|
|
201
|
+
scope argument. If the active project is a quick project, quick-start resumes it
|
|
202
|
+
and ignores the name and description you pass. If that plan is already
|
|
203
|
+
implementation-ready, it goes straight into `oat-project-implement`. To start a
|
|
204
|
+
different piece of work, run `oat-project-clear-active` (or open another
|
|
205
|
+
project) first. The contract does not define what happens when the active
|
|
206
|
+
project uses another mode, so clear or switch it first in that case too.
|
|
207
|
+
|
|
208
|
+
**Example scenario:** The export endpoint works, and you know which date range
|
|
209
|
+
users need. You still need to decide where the filter belongs and how to verify
|
|
210
|
+
unchanged default exports. Quick-start captures those constraints and either
|
|
211
|
+
plans directly or adds lightweight design before writing tasks.
|
|
212
|
+
|
|
213
|
+
**Expected output:** A new or resumed quick project has `discovery.md`, an
|
|
214
|
+
execution-ready `plan.md`, and initialized `implementation.md`. The design
|
|
215
|
+
decision can select straight-to-plan, lightweight `design.md`, or promotion to
|
|
216
|
+
spec-driven. Lightweight design does not create `spec.md` and offers
|
|
217
|
+
collaborative or draft-and-review interaction, not selective collaborative.
|
|
218
|
+
|
|
219
|
+
Before marking the plan ready, the skill asks you to choose a dispatch policy
|
|
220
|
+
(and, if needed, where to adopt a dispatch ladder), then records the
|
|
221
|
+
plan-review result. It commits changed project artifacts and runs any
|
|
222
|
+
configured exit gate. If promotion is selected during discovery, it stops with a
|
|
223
|
+
design handoff instead of generating a quick plan.
|
|
224
|
+
|
|
225
|
+
**What it does without asking:** It creates the project through
|
|
226
|
+
`oat project new` in the default scope (commit or push as described under
|
|
227
|
+
oat-project-new) and makes it active. It commits the changed artifacts
|
|
228
|
+
(`discovery.md`, `design.md`, `plan.md`, `implementation.md`, `state.md`) before
|
|
229
|
+
every pause and again before handoff; in synced scope each commit is an
|
|
230
|
+
`oat project push` to `origin`. It runs the plan artifact review automatically,
|
|
231
|
+
usually in your current agent session, and may launch a separate reviewer agent
|
|
232
|
+
when the current model is unknown or below the reviewer tier. It applies
|
|
233
|
+
unambiguous Critical and High fixes to `plan.md`. It runs any configured exit
|
|
234
|
+
gate and passes an eligible result to `oat-project-review-receive`. When it
|
|
235
|
+
resumes a quick project whose plan is already ready, it starts
|
|
236
|
+
`oat-project-implement`. It asks before: proceeding with a dirty working tree,
|
|
237
|
+
choosing design depth (skipped for clear requests with no design questions),
|
|
238
|
+
confirming the requirements behind the plan, choosing a lightweight design
|
|
239
|
+
mode, adopting a dispatch ladder into config, choosing the dispatch policy,
|
|
240
|
+
enabling an extra phase gate review, and keeping or disabling configured gates
|
|
241
|
+
for this project.
|
|
242
|
+
|
|
243
|
+
**Next step:** Follow the reported handoff to `oat-project-implement` once the
|
|
244
|
+
quick plan is ready. If interrupted before readiness, run quick-start again to
|
|
245
|
+
continue in place. Do not use `oat-project-plan` to finish a quick plan.
|
|
246
|
+
|
|
247
|
+
## oat-project-lite
|
|
248
|
+
|
|
249
|
+
Use lite for a change that fits one implementation sitting and needs explicit
|
|
250
|
+
requirements, proof, and approval in one plan. Lite keeps resumable task commits
|
|
251
|
+
and review while removing separate discovery, spec, and design documents.
|
|
252
|
+
|
|
253
|
+
**Invocation:** Provide the slug and the intended change.
|
|
254
|
+
|
|
255
|
+
```text
|
|
256
|
+
/oat-project-lite retry-message "Show the failed request's retry delay in the CLI error message without changing retry behavior."
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Prerequisites:** No active project is needed. You need an OAT-initialized
|
|
260
|
+
repository and a change intended to fit one sitting. The new project uses the
|
|
261
|
+
default scope, because lite takes no scope argument. If the active project is a
|
|
262
|
+
lite project, lite resumes it and ignores the name and description you pass.
|
|
263
|
+
With any other project active, lite creates a new lite project and makes it
|
|
264
|
+
active. To start a different piece of work while a lite project is active, run
|
|
265
|
+
`oat-project-clear-active` first. Unresolved implementation-affecting design
|
|
266
|
+
decisions or a larger task list trigger promotion to quick mode.
|
|
267
|
+
|
|
268
|
+
**Example scenario:** Users cannot tell when the CLI will retry a failed
|
|
269
|
+
request. The retry algorithm is already correct, so the change only adds the
|
|
270
|
+
delay to the message. Lite asks one batched round of critical questions (plus a
|
|
271
|
+
short follow-up only if your answers raise new ones), records the message
|
|
272
|
+
behavior and its proof, and gives you one plan to approve.
|
|
273
|
+
|
|
274
|
+
**Expected output:** A single sequential phase in `plan.md`, with Summary,
|
|
275
|
+
Decisions, Assumptions, Out of Scope, and executable Validation Criteria. The
|
|
276
|
+
selected content shape adds Product Behavior, Technical Design, or both when
|
|
277
|
+
needed. This example changes visible behavior, so product content is required.
|
|
278
|
+
|
|
279
|
+
The skill persists the authored plan before approval, asks you to choose a
|
|
280
|
+
dispatch policy, records artifact review, and runs the configured exit gate
|
|
281
|
+
before marking readiness. It creates no `spec.md` or `design.md`, no parallel
|
|
282
|
+
group, and no phase-review or [HiLL checkpoint](hill-checkpoints.md) setup. If
|
|
283
|
+
it promotes instead, the authored plan remains available to quick-start.
|
|
284
|
+
|
|
285
|
+
**What it does without asking:** It creates the project through
|
|
286
|
+
`oat project new` in the default scope and makes it active. It writes
|
|
287
|
+
`plan.md`, `state.md`, and `implementation.md` and commits them three times:
|
|
288
|
+
after authoring (before approval), after artifact review, and at completion. In
|
|
289
|
+
synced scope each commit is an `oat project push` to `origin`. If its
|
|
290
|
+
escalation check finds that the work will not fit one sitting or a design
|
|
291
|
+
decision is unresolved, it runs `oat project promote --to quick` and stops,
|
|
292
|
+
pointing you to quick-start. Artifact review runs with no pause and applies only
|
|
293
|
+
unambiguous fixes. It runs any configured exit gate and passes an eligible result
|
|
294
|
+
to `oat-project-review-receive`. It asks before: proceeding with a dirty working
|
|
295
|
+
tree, the critical interview, approving the plan (approve, revise, or promote),
|
|
296
|
+
adopting a dispatch ladder into config, choosing the dispatch policy, and
|
|
297
|
+
keeping or disabling configured gates for this project.
|
|
298
|
+
|
|
299
|
+
**Next step:** Run `oat-project-implement` after the approved lite plan is ready.
|
|
300
|
+
If the scope grows, continue through `oat-project-quick-start` after promotion.
|
|
301
|
+
|
|
302
|
+
## oat-project-import-plan
|
|
303
|
+
|
|
304
|
+
Use import when the plan already exists, including one produced in a provider's
|
|
305
|
+
native plan mode. Import preserves the source before translating it into OAT
|
|
306
|
+
task and review structure.
|
|
307
|
+
|
|
308
|
+
**Invocation:** Provide the local Markdown path. The provider hint records where
|
|
309
|
+
the plan came from.
|
|
310
|
+
|
|
311
|
+
```text
|
|
312
|
+
/oat-project-import-plan ./plans/cache-refresh.md --provider codex --project cache-refresh
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**Prerequisites:** No active project is needed. The external file must exist,
|
|
316
|
+
contain content, and use `.md` unless you explicitly confirm another Markdown
|
|
317
|
+
extension. OAT repository scaffolding must be available.
|
|
318
|
+
|
|
319
|
+
If any project is active, import writes into **that** project, whatever its
|
|
320
|
+
mode: it normalizes the plan into its `plan.md` and switches it to import mode.
|
|
321
|
+
That includes a spec-driven project in the middle of design. `--project` is read
|
|
322
|
+
only when no project is active. To import into a new project, run
|
|
323
|
+
`oat-project-clear-active` first.
|
|
324
|
+
|
|
325
|
+
In the default `synced` scope, the import contract can resolve the wrong
|
|
326
|
+
project directory for a new project: it looks for the new project under
|
|
327
|
+
`projects.root` (`.oat/projects/shared` by default) while the scaffolder creates
|
|
328
|
+
it under `.oat/projects/synced`. Until that is fixed, set `projects.defaultScope`
|
|
329
|
+
to `shared` before importing into a new project, or create the project first and
|
|
330
|
+
import into it while it is active. Confirm the reported project path afterwards.
|
|
331
|
+
|
|
332
|
+
**Example scenario:** You drafted cache-refresh work in Codex plan mode and now
|
|
333
|
+
want stable task IDs and tracked execution. Your repository's default scope is
|
|
334
|
+
`shared` and no project is active, so import creates `cache-refresh` and
|
|
335
|
+
imports the saved file into it. Choose import instead of quick-start because
|
|
336
|
+
the plan's intent and ordering already exist and need preservation, not another
|
|
337
|
+
discovery conversation.
|
|
338
|
+
|
|
339
|
+
**Expected output:** `references/imported-plan.md` preserves the source.
|
|
340
|
+
`plan.md` contains normalized phases, stable `pNN-tNN` tasks, verification,
|
|
341
|
+
review rows, and imported provenance. The source file remains unchanged.
|
|
342
|
+
Replacing an existing source snapshot requires confirmation. A timestamped
|
|
343
|
+
snapshot preserves a later import.
|
|
344
|
+
|
|
345
|
+
The skill asks you to choose a dispatch policy, records import-aware plan
|
|
346
|
+
review, initializes the implementation tracker, persists artifacts, and runs any
|
|
347
|
+
configured exit gate. A normalized single-phase plan with no parallel group can
|
|
348
|
+
offer lite execution. Accepting that offer preserves import provenance. A single
|
|
349
|
+
phase alone does not mean the work fits one sitting, so keep import mode for
|
|
350
|
+
longer-running work.
|
|
351
|
+
|
|
352
|
+
**What it does without asking:** With no active project, it creates one through
|
|
353
|
+
`oat project new --mode import` in the default scope, or activates an existing
|
|
354
|
+
project of that name under `projects.root`. It copies the source into
|
|
355
|
+
`references/`, writes the normalized `plan.md`, sets the project's workflow mode
|
|
356
|
+
to `import` (or `lite` if you accept the offer), creates `implementation.md` if
|
|
357
|
+
missing, makes the project active, and refreshes `.oat/state.md`. Plan review
|
|
358
|
+
runs automatically and applies unambiguous Critical and High conformance fixes.
|
|
359
|
+
It then commits `references/`, `plan.md`, `implementation.md`, and `state.md`;
|
|
360
|
+
in synced scope that is an `oat project push` to `origin`. It runs any
|
|
361
|
+
configured exit gate and passes an eligible result to `oat-project-review-receive`.
|
|
362
|
+
It asks before: proceeding with a dirty working tree, naming the project when no
|
|
363
|
+
project is active and `--project` is absent, picking a plan file when you gave
|
|
364
|
+
no path, accepting a non-`.md` extension, the lite offer, adopting a dispatch
|
|
365
|
+
ladder into config, choosing the dispatch policy, enabling an extra phase gate
|
|
366
|
+
review, and keeping or disabling configured gates for this project.
|
|
367
|
+
|
|
368
|
+
**Next step:** Use `oat-project-implement` after the import handoff completes.
|
|
369
|
+
Resolve missing verification detail before execution. Normalization can expose
|
|
370
|
+
TODO-style gaps rather than invent a proof for the external author.
|
|
371
|
+
|
|
372
|
+
## oat-project-capture
|
|
373
|
+
|
|
374
|
+
Use capture after implementation happened outside OAT tracking. Capture records
|
|
375
|
+
why the work happened from the conversation and what changed from Git history.
|
|
376
|
+
It does not invent a retroactive execution plan.
|
|
377
|
+
|
|
378
|
+
**Invocation:** Invoke the skill in the session that knows the work's context.
|
|
379
|
+
You can explain the goal in the same conversation.
|
|
380
|
+
|
|
381
|
+
```text
|
|
382
|
+
/oat-project-capture
|
|
383
|
+
Capture the retry middleware we implemented in this session as a project, ready for review.
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
**Prerequisites:** No active project is needed; capture creates a new one in
|
|
387
|
+
the default scope. You need a feature branch with at least one commit beyond its
|
|
388
|
+
base and available conversation context. If a project already tracks the
|
|
389
|
+
branch, use `oat-project-reconcile` instead. With no branch commits to capture,
|
|
390
|
+
this skill reports that there is nothing to capture yet.
|
|
391
|
+
|
|
392
|
+
**Example scenario:** A small retry fix grew into middleware and tests during
|
|
393
|
+
an untracked session. The commits explain the changes, but not why one retry
|
|
394
|
+
policy was rejected. Capture uses that conversation to preserve the reasoning
|
|
395
|
+
and groups related commits into implementation records for review.
|
|
396
|
+
|
|
397
|
+
**Expected output:** A quick-mode project with `oat_workflow_origin: captured`,
|
|
398
|
+
populated `discovery.md`, and `implementation.md` entries tied to commit SHAs.
|
|
399
|
+
You confirm the proposed project name and the discovery summary, and choose
|
|
400
|
+
whether the work is ready for review or still in progress. The scaffold's
|
|
401
|
+
`plan.md` template is acceptable, but capture writes no retroactive plan tasks,
|
|
402
|
+
spec, design, or new implementation.
|
|
403
|
+
|
|
404
|
+
**What it does without asking:** It runs `oat project new --mode quick` in the
|
|
405
|
+
default scope (commit or push as described under oat-project-new), which makes
|
|
406
|
+
the new project active and replaces any active project. It writes `state.md`,
|
|
407
|
+
`discovery.md`, and `implementation.md`, commits them (an `oat project push` in
|
|
408
|
+
synced scope), and refreshes `.oat/state.md`. It asks before: using the proposed
|
|
409
|
+
project name, accepting the discovery summary, and setting the work as ready for
|
|
410
|
+
review or still in progress.
|
|
411
|
+
|
|
412
|
+
**Next step:** For review-ready work, use `oat-project-review-provide` before
|
|
413
|
+
sharing it, or `oat-project-pr-final` to open a PR directly. For work still in
|
|
414
|
+
progress, continue implementation and reconcile new commits into the tracked
|
|
415
|
+
project.
|
|
416
|
+
|
|
417
|
+
## oat-project-split
|
|
418
|
+
|
|
419
|
+
Use split after a discovery or brainstorm has confirmed several coordinated
|
|
420
|
+
projects. The parent records their relationship. It does not become another
|
|
421
|
+
implementation project.
|
|
422
|
+
|
|
423
|
+
**Invocation:** Provide a persisted split-plan JSON file, not just child names.
|
|
424
|
+
The skill passes that file to the split orchestrator.
|
|
425
|
+
|
|
426
|
+
```text
|
|
427
|
+
/oat-project-split --plan-file ./split-plan.json
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
The corresponding terminal command is:
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
oat project split run --plan-file ./split-plan.json
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
**Prerequisites:** No active project is needed. You need a saved split-plan
|
|
437
|
+
file (a `SplitPlanDocument`) and a confirmed split trigger. An explicit
|
|
438
|
+
multi-project declaration, a confirmed discovery recommendation, or the
|
|
439
|
+
brainstorm split destination can supply the trigger. Detected recommendations in
|
|
440
|
+
non-interactive execution must fail fast, not silently choose a split.
|
|
441
|
+
|
|
442
|
+
A split confirmed during discovery or brainstorm does not produce this file.
|
|
443
|
+
Those skills hand split an in-conversation payload, and split currently accepts
|
|
444
|
+
only a saved file, so the file must be saved before split can run. You (or your
|
|
445
|
+
agent) write it as JSON with this shape:
|
|
446
|
+
|
|
447
|
+
```json
|
|
448
|
+
{
|
|
449
|
+
"origin": "detected-convergence",
|
|
450
|
+
"interactive": true,
|
|
451
|
+
"plan": {
|
|
452
|
+
"parentSlug": "billing-platform",
|
|
453
|
+
"children": [
|
|
454
|
+
{
|
|
455
|
+
"slug": "billing-migration",
|
|
456
|
+
"description": "Move invoicing onto the new billing service.",
|
|
457
|
+
"inheritedContext": "Discovery decisions that apply to this child.",
|
|
458
|
+
"knownDependencies": [],
|
|
459
|
+
"order": 1
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"slug": "reporting-redesign",
|
|
463
|
+
"inheritedContext": "Discovery decisions that apply to this child.",
|
|
464
|
+
"knownDependencies": ["billing-migration"],
|
|
465
|
+
"order": 2
|
|
466
|
+
}
|
|
467
|
+
],
|
|
468
|
+
"initialActiveChild": "billing-migration"
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
`origin` is one of `declared`, `detected-mid-stream`, `detected-convergence`,
|
|
474
|
+
or `brainstorm-picker`. `foundationChild` and `integrationSketch` are optional
|
|
475
|
+
fields of `plan`. Check the file before running split:
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
oat project split validate-plan --plan-file ./split-plan.json
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
**Example scenario:** Discovery identifies a billing-service migration and an
|
|
482
|
+
independent reporting redesign. You confirm that each needs its own project
|
|
483
|
+
while keeping their integration context. Discovery's split offer does not save a
|
|
484
|
+
plan file, so you (or your agent) write the parent, children, and ordering to
|
|
485
|
+
`split-plan.json` in the shape above. Check it with
|
|
486
|
+
`oat project split validate-plan --plan-file ./split-plan.json`, then invoke
|
|
487
|
+
split with that file. Split creates a coordination parent, seeds the children in
|
|
488
|
+
order, and activates the initial child.
|
|
489
|
+
|
|
490
|
+
**Expected output:** The parent has `oat_kind: coordination`, ordered child
|
|
491
|
+
links, `references/split-plan.json`, and complete decomposition status. It has
|
|
492
|
+
no executable spec, design, plan, or implementation artifacts. Children are
|
|
493
|
+
created as quick projects. They retain parent, sibling, and dependency links, but
|
|
494
|
+
their discovery remains in progress. Inherited context needs revalidation, and
|
|
495
|
+
child plans remain template placeholders rather than implementation-ready plans.
|
|
496
|
+
|
|
497
|
+
**What it does without asking:** It runs `oat project split run`, which creates
|
|
498
|
+
the parent and every child in the active project's scope (`shared` when no
|
|
499
|
+
project is active). In synced scope it pushes each project to `origin`; in
|
|
500
|
+
shared and local scope it does not commit. It writes the parent's `state.md`,
|
|
501
|
+
`discovery.md`, and `references/split-plan.json`, removes the parent's
|
|
502
|
+
executable phase files, seeds each child, makes the initial child active, and
|
|
503
|
+
refreshes `.oat/state.md`. It asks for the plan file path when you give none,
|
|
504
|
+
and asks before resuming a partially completed split.
|
|
505
|
+
|
|
506
|
+
**Next step:** Revalidate the active child's inherited context through its
|
|
507
|
+
discovery path. Children are quick projects, so resume the active child with
|
|
508
|
+
`oat-project-quick-start`, which picks it up at discovery. If generation stopped
|
|
509
|
+
partway through, rerun the orchestrator using the persisted split plan rather
|
|
510
|
+
than rebuilding seed data from child slugs. See [Project splitting](splitting.md)
|
|
511
|
+
for the full coordination contract.
|
|
@@ -134,11 +134,14 @@ This is separate from Tier 1 phase gate reviews. Tier 1 implementation always ru
|
|
|
134
134
|
|
|
135
135
|
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 (Low findings that are clearly out of scope are deferred with a note).
|
|
136
136
|
|
|
137
|
-
This
|
|
137
|
+
This preference is unset by default: interactive implementation asks with
|
|
138
|
+
"no" suggested. Autonomous non-lite implementation forces it on; lite bypasses
|
|
139
|
+
checkpoints. When disabled, the manual `oat-project-review-provide` workflow
|
|
140
|
+
applies, while required per-phase and final reviews still run.
|
|
138
141
|
|
|
139
142
|
## Phase review gate
|
|
140
143
|
|
|
141
|
-
The phase review gate is an optional, **non-pausing** external review gate that runs after a phase's standard per-phase reviewer passes and the phase bookkeeping is committed. Where the Tier 1 reviewer is an in-session self-review, the gate calls `oat gate review` against the configured cross-provider target, adding an independent perspective before implementation moves to the next phase. It is enabled per-project through `plan.md` frontmatter (`oat_phase_review_gate`; see [Project Artifacts](artifacts.md#oat_phase_review_gate) for the field shape and validation).
|
|
144
|
+
The phase review gate is an optional, **non-pausing** external review gate that runs after a phase's standard per-phase reviewer passes and the phase bookkeeping is committed. Where the Tier 1 reviewer is an in-session self-review, the gate calls `oat gate review` against the configured cross-provider target, adding an independent perspective before implementation moves to the next phase. It is enabled per-project through `plan.md` frontmatter (`oat_phase_review_gate`; see [Project Artifacts](../../../reference/project-artifacts.md#oat_phase_review_gate) for the field shape and validation).
|
|
142
145
|
|
|
143
146
|
Plan-producing workflows run the shared setup after stable phase IDs exist and
|
|
144
147
|
before the plan artifact review. A read-only probe requires an explicitly
|
|
@@ -148,7 +151,7 @@ preserved unchanged without re-prompting, including resumed and imported plans.
|
|
|
148
151
|
Probe failure, no qualifying target, non-interactive execution, or user decline
|
|
149
152
|
leaves the gate disabled.
|
|
150
153
|
|
|
151
|
-
It is independent of [HiLL checkpoints](hill-checkpoints.md): a passing gate does not pause, and the gate never touches `oat_hill_completed`, `oat_plan_hill_phases`, or `oat_auto_review_at_hill_checkpoints`.
|
|
154
|
+
It is independent of [HiLL checkpoints](../planning/hill-checkpoints.md): a passing gate does not pause, and the gate never touches `oat_hill_completed`, `oat_plan_hill_phases`, or `oat_auto_review_at_hill_checkpoints`.
|
|
152
155
|
|
|
153
156
|
Gate-produced review artifacts use `oat_review_invocation: gate` in frontmatter (the third invocation marker alongside `manual` and `auto`). The gate verdict — controlled by `exit_nonzero_on` (default `high`) — decides whether the **phase stops**; it does not decide whether sub-threshold findings are ignored. Before invoking `oat-project-review-receive`, the result must satisfy all three eligibility conditions: `status` is `ok` or `blocked`, `receiveEligible` is `true`, and `handoff` is non-null. A missing or contradictory field is an operational failure even when `artifactPath` is present. Once eligibility is established, the produced artifact is consumed autonomously and without user prompts, so findings never evaporate:
|
|
154
157
|
|
|
@@ -165,7 +168,7 @@ is evaluated.
|
|
|
165
168
|
|
|
166
169
|
Gate-originated artifacts (`oat_review_invocation: gate`) are excluded from the same-scope review-cycle cap in `oat-project-review-receive`. The cap measures failed fix cycles of the standard review loop, so counting gate artifacts would trip it on artifact volume rather than real fix rounds.
|
|
167
170
|
|
|
168
|
-
When a phase is re-gated multiple times, each round produces a distinct review artifact — filenames and `oat_generated_at` are seconds-precision, so rounds never collide and `oat review latest` resolves the newest. An orchestrator should know a gate finished from the `oat --json gate review` result envelope on process exit (`status`, `runId`, `generatedAt`), not by watching the `reviews/` directory or the provider's log; see [Gate completion signal](../../
|
|
171
|
+
When a phase is re-gated multiple times, each round produces a distinct review artifact — filenames and `oat_generated_at` are seconds-precision, so rounds never collide and `oat review latest` resolves the newest. An orchestrator should know a gate finished from the `oat --json gate review` result envelope on process exit (`status`, `runId`, `generatedAt`), not by watching the `reviews/` directory or the provider's log; see [Gate completion signal](../../advanced/workflow-gates.md#gate-completion-signal).
|
|
169
172
|
|
|
170
173
|
This feature is opt-in and disabled by default (missing or `enabled: false`). For a parallel phase group, selected gates run after fan-in and bookkeeping, one per merged phase in plan order.
|
|
171
174
|
|
|
@@ -211,7 +214,7 @@ Every re-review reports one resolution line naming the selected range, the reaso
|
|
|
211
214
|
|
|
212
215
|
A narrowed artifact names the prior artifact and reviewed head it builds on. It must not restate requirements-coverage claims that the narrowed pass did not verify; it references the prior artifact's coverage or marks inherited rows as inherited so the union of passes remains auditable.
|
|
213
216
|
|
|
214
|
-
See [Workflow preferences in the Configuration guide](
|
|
217
|
+
See [Workflow preferences in the Configuration guide](../../../reference/configuration.md#workflow-preferences-workflow) for config scopes and the full list of preference keys.
|
|
215
218
|
|
|
216
219
|
## Phase and final review
|
|
217
220
|
|
|
@@ -364,3 +367,46 @@ validation decisions, and output ownership.
|
|
|
364
367
|
- `.agents/skills/oat-project-review-provide-remote/SKILL.md`
|
|
365
368
|
- `.agents/skills/oat-project-review-receive/SKILL.md`
|
|
366
369
|
- `.agents/skills/oat-project-review-receive-remote/SKILL.md`
|
|
370
|
+
|
|
371
|
+
## Contents
|
|
372
|
+
|
|
373
|
+
- [Review Flavors](review-flavors.md) - The four review flavors and who resolves each one's target.
|
|
374
|
+
- [Reviewing OAT PRs](reviewing-oat-prs.md) - Read synced-project records and SHA-pinned reviewer links in a PR.
|
|
375
|
+
|
|
376
|
+
## Choosing review controls
|
|
377
|
+
|
|
378
|
+
These settings tune the reviews described on this page. A **gate** is an extra
|
|
379
|
+
review by a second agent CLI that turns its findings into a pass or a fail; see
|
|
380
|
+
[Workflow Gates](../../advanced/workflow-gates.md). Whatever you choose here,
|
|
381
|
+
the code review after each implementation phase and the final review still run.
|
|
382
|
+
|
|
383
|
+
| Control | Default | Choose a different value when | What it costs |
|
|
384
|
+
| -------------------------------------------------------------- | ------------------------------------ | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
|
385
|
+
| Gate severity (`--exit-nonzero-on`) | `high` | Set `medium` when Medium findings should also block | More fix rounds. Findings below the threshold are still received |
|
|
386
|
+
| [Phase review gate](#phase-review-gate) | Off | Turn it on when you want a second model to check each phase early | One extra gate run per selected phase. It never pauses for a person |
|
|
387
|
+
| [Artifact review loops](#auto-artifact-review-loops) | On for plans and analyses | Turn a loop off only when something else reviews that artifact | Turning it off records the review as skipped, not verified |
|
|
388
|
+
| [Review at HiLL checkpoints](#auto-review-at-hill-checkpoints) | Unset: the agent asks, suggesting no | Set `true` when nobody will be around at checkpoints | An extra lifecycle review at each checkpoint |
|
|
389
|
+
| [Re-review scope narrowing](#re-review-scope-narrowing) | On | Set `false` when fixes might break code that was already reviewed | Narrowed re-reviews skip unchanged code. If OAT cannot verify the earlier review, it reviews everything |
|
|
390
|
+
| [Final review execution](#phase-and-final-review) | Unset: the agent asks | Set `subagent` when your agent tool supports subagents | `inline` keeps the review in the same conversation; `fresh-session` needs you to start the review |
|
|
391
|
+
|
|
392
|
+
An artifact review loop runs in the same agent session that wrote the artifact,
|
|
393
|
+
so it is not an independent review. It retries up to the project's retry limit,
|
|
394
|
+
which defaults to two; a limit of zero still allows the first review. Autonomous
|
|
395
|
+
runs turn on review at HiLL checkpoints for every project except lite projects,
|
|
396
|
+
which have no checkpoints.
|
|
397
|
+
|
|
398
|
+
- If you are a solo developer, or runs are unattended, and your agent tool
|
|
399
|
+
supports subagents, set the final review execution to `subagent`.
|
|
400
|
+
- If a plan or analysis will be handed to another workflow, keep its artifact
|
|
401
|
+
loop on. If you also want a second model family to check it, add a planning
|
|
402
|
+
gate and check which reviewer it actually used.
|
|
403
|
+
- If the change is high-risk, such as a security fix that could affect code
|
|
404
|
+
already reviewed, turn off re-review narrowing and set gate severity to
|
|
405
|
+
`medium`.
|
|
406
|
+
- If your team wants a second model after every phase, turn on the phase review
|
|
407
|
+
gate. If nobody will be present at checkpoints, set
|
|
408
|
+
`workflow.autoReviewAtHillCheckpoints` to `true` before the first
|
|
409
|
+
implementation run, because that run copies the value into `plan.md`.
|
|
410
|
+
- Choose `fresh-session` only when a person will start the review in a new
|
|
411
|
+
session, and `inline` only when a review in the same conversation is
|
|
412
|
+
acceptable and the skill allows it.
|