@open-agent-toolkit/cli 0.3.12 → 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 +112 -15
- package/assets/docs/docs-tooling/agent-instructions.md +131 -0
- package/assets/docs/docs-tooling/commands.md +74 -30
- package/assets/docs/docs-tooling/index.md +7 -6
- package/assets/docs/docs-tooling/meta.json +1 -1
- package/assets/docs/docs-tooling/workflows.md +357 -11
- 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 +146 -15
- package/assets/docs/index.md +47 -48
- package/assets/docs/meta.json +6 -7
- package/assets/docs/provider-sync/commands.md +26 -3
- 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 +43 -5
- 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 +34 -34
- 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/docs-index-contract.md +19 -4
- package/assets/docs/reference/file-locations.md +7 -2
- package/assets/docs/reference/index.md +13 -1
- package/assets/docs/reference/meta.json +7 -1
- package/assets/docs/reference/oat-directory-structure.md +24 -22
- 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 +27 -7
- package/assets/skills/oat-docs-analyze/references/quality-checklist.md +16 -3
- package/assets/skills/oat-docs-apply/SKILL.md +20 -3
- package/assets/skills/oat-docs-authoring/SKILL.md +11 -7
- package/assets/skills/oat-docs-authoring/references/docs-root-resolution.md +12 -5
- package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +7 -7
- package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +13 -3
- package/assets/skills/oat-docs-authoring/references/targeted-authoring-workflow.md +5 -4
- package/assets/skills/oat-docs-authoring/references/validation.md +11 -1
- package/assets/skills/oat-docs-bootstrap/SKILL.md +31 -8
- package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +2 -1
- package/assets/skills/oat-doctor/SKILL.md +25 -25
- package/assets/skills/oat-project-document/SKILL.md +21 -2
- package/assets/templates/docs-markdown/contributing.md +35 -0
- package/assets/templates/docs-markdown/index.md +18 -0
- package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
- package/dist/commands/docs/index-generate/index.js +41 -8
- package/dist/commands/docs/init/index.d.ts +17 -2
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +194 -14
- package/dist/commands/docs/init/markdown.d.ts +39 -0
- package/dist/commands/docs/init/markdown.d.ts.map +1 -0
- package/dist/commands/docs/init/markdown.js +317 -0
- package/dist/commands/docs/init/resolve-options.d.ts +3 -1
- package/dist/commands/docs/init/resolve-options.d.ts.map +1 -1
- package/dist/commands/docs/init/resolve-options.js +36 -0
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +11 -0
- package/dist/commands/shared/agents-md.d.ts +7 -0
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +131 -91
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/dist/config/oat-config.d.ts +2 -1
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +4 -2
- 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,643 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Review Flavors
|
|
3
|
+
description: 'The four OAT project review flavors, when each fires in the lifecycle, and who resolves its reviewer target.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review Flavors
|
|
7
|
+
|
|
8
|
+
Looking for which review skill to run? Skip to
|
|
9
|
+
[Choosing a Review Skill](#choosing-a-review-skill), which compares the eight
|
|
10
|
+
review skills and then describes each one. The sections before it explain how
|
|
11
|
+
OAT picks and isolates the reviewer model.
|
|
12
|
+
|
|
13
|
+
OAT projects run reviews at several different lifecycle points, and those points
|
|
14
|
+
have different independence requirements. A self-review that checks a freshly
|
|
15
|
+
written plan does not need the same producer isolation as a lifecycle gate that
|
|
16
|
+
signs off on the final artifact. Rather than force one reviewer-selection rule
|
|
17
|
+
onto every point, OAT recognizes **four review flavors**, each with its own
|
|
18
|
+
target-resolution policy layered on the shared reviewer role class.
|
|
19
|
+
|
|
20
|
+
The distinguishing question is always _"who resolves this review's target, and
|
|
21
|
+
how independent must that target be from whatever produced the work?"_ The four
|
|
22
|
+
flavors answer it differently while preserving one invariant: the reviewer runs
|
|
23
|
+
**at or above the ceiling** (see [Dispatch Policy](../../advanced/dispatch-ceiling.md)). Gate
|
|
24
|
+
independence is project policy layered on the generic reviewer role class
|
|
25
|
+
described in the `oat-project-dispatch-subagents` lifecycle-role table; this page
|
|
26
|
+
covers _which_ flavor fires _when_ and _who_ resolves its target, and links out
|
|
27
|
+
for the deep review request/receive mechanics.
|
|
28
|
+
|
|
29
|
+
## Quick Look
|
|
30
|
+
|
|
31
|
+
- What it does: names the four review flavors and states who resolves each
|
|
32
|
+
one's reviewer target.
|
|
33
|
+
- When to use it: when you need to know which review fires at a lifecycle point
|
|
34
|
+
and whether it inherits, pins the ceiling, or requires an independent gate.
|
|
35
|
+
- Primary sources: `oat-project-implement` phase-execution mechanics, the
|
|
36
|
+
`oat-project-dispatch-subagents` lifecycle-role table, and the OAT design
|
|
37
|
+
decision that defined these four flavors.
|
|
38
|
+
|
|
39
|
+
## Flow map
|
|
40
|
+
|
|
41
|
+
```mermaid
|
|
42
|
+
flowchart TD
|
|
43
|
+
subgraph Planning
|
|
44
|
+
PL["Planning-phase\nartifact self-review"] --> PLR["Inherit planning parent"]
|
|
45
|
+
PLR --> PLT["Parent model\n(root already at/above ceiling)"]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
subgraph Implementation
|
|
49
|
+
IM["Root-owned phase\nself-review"] --> IMR["Resolve dispatch ceiling"]
|
|
50
|
+
IMR --> IMPIN["At-ceiling pin\n(ceiling final candidate)"]
|
|
51
|
+
IMR --> IMINH["Inherit\n(only if dispatcher known at/above ceiling)"]
|
|
52
|
+
IMR --> IMCLI["Exact CLI reviewer\n(selected pre-launch)"]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
subgraph Gates
|
|
56
|
+
PG["Phase review gate\n(external)"] --> PGR["Configured exec target\n(gates.execTargets)"]
|
|
57
|
+
PGR --> PGT["Separate reviewer CLI\n(prefers another model family;\nfalls back with a warning)"]
|
|
58
|
+
|
|
59
|
+
LG["Lifecycle / final gate"] --> LGR["Configured exec target\n(gates.execTargets)"]
|
|
60
|
+
LGR --> LGT["Separate reviewer CLI\n(never replaced by self-review;\nfalls back with a warning)"]
|
|
61
|
+
LGT -. may spawn .-> LGN["Nested managed\nreviewer child inside gate"]
|
|
62
|
+
end
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The dotted branch marks the only flavor that may **spawn a nested managed
|
|
66
|
+
reviewer child** inside the gate exec target: the lifecycle/final gate.
|
|
67
|
+
|
|
68
|
+
## The four flavors
|
|
69
|
+
|
|
70
|
+
| Flavor | Lifecycle point | Target resolution |
|
|
71
|
+
| ----------------------------------- | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
72
|
+
| Planning-phase artifact self-review | Auto artifact-review loop for plan/spec/design | Inherit the planning parent by default (root is already at/above ceiling) |
|
|
73
|
+
| Implementation-phase self-review | Phase and final code reviews dispatched by `oat-project-implement` | Resolve the dispatch ceiling; pin the ceiling's final candidate (at-ceiling pin); inherit only when the review-owning dispatcher is known to be at/above ceiling; else select an exact CLI reviewer pre-launch |
|
|
74
|
+
| Phase review gate (external) | Optional non-pausing gate after a phase passes its self-review | Separate reviewer CLI chosen from the configured exec targets (`gates.execTargets`), unconstrained by native catalog; prefers another model family but falls back with a warning; fails if no target can start |
|
|
75
|
+
| Lifecycle / final gate | End-of-lifecycle sign-off | Separate reviewer CLI chosen the same way; never replaced by a same-context self-review; fails if no target can start; may spawn a nested managed reviewer child inside the gate exec target |
|
|
76
|
+
|
|
77
|
+
The first two flavors are **self-reviews**. Planning review inherits its
|
|
78
|
+
producing parent by default; implementation phase review is dispatched by the
|
|
79
|
+
project root after the phase producer returns. The last two are **gates** — an
|
|
80
|
+
external, configured, producer-independent target. Phase implementation may run
|
|
81
|
+
_below_ the review ceiling for cost reasons, but review must never silently
|
|
82
|
+
inherit the below-ceiling phase agent.
|
|
83
|
+
|
|
84
|
+
Pre-plan inheritance has a narrow executable guard. When dispatch resolution
|
|
85
|
+
reports `unresolvedReason: policy`, an artifact review of `discovery`, `design`,
|
|
86
|
+
or `spec` deliberately inherits the current planning context and records
|
|
87
|
+
`selection_reason: inherit (pre-plan; no project policy)`. An explicit project
|
|
88
|
+
policy is still honored at those scopes. Missing or incomplete ladders
|
|
89
|
+
(`unresolvedReason: ladder | both`) fail closed, as do plan-scope artifact
|
|
90
|
+
reviews and every code review without a resolved policy. Gate exec-target
|
|
91
|
+
selection is separate and unaffected.
|
|
92
|
+
|
|
93
|
+
## Independence: what blocks and what falls back
|
|
94
|
+
|
|
95
|
+
The invariant across all four flavors is that the reviewer runs **at or above
|
|
96
|
+
the ceiling**. What changes between flavors is the required _independence from
|
|
97
|
+
the producer_ (the agent that wrote the work). For the two gate flavors, three
|
|
98
|
+
different things can happen, and only two of them stop the workflow:
|
|
99
|
+
|
|
100
|
+
- **Findings that block.** The reviewer ran and reported findings at or above
|
|
101
|
+
the gate's threshold. The gate's `onFailure` setting decides what happens
|
|
102
|
+
next: `block` fixes and reruns, `prompt` asks a person, and `warn` records
|
|
103
|
+
the failure and continues.
|
|
104
|
+
- **Operational failures stay blocked.** The reviewer could not start, timed
|
|
105
|
+
out without writing a review, or wrote a review OAT could not validate or
|
|
106
|
+
match to this run. Nothing was reviewed. `oat-project-implement` and
|
|
107
|
+
`oat-project-lite` keep these failures blocked whatever `onFailure` says.
|
|
108
|
+
The planning skills handle them differently; see
|
|
109
|
+
[When the gate finds blocking problems](../../advanced/workflow-gates.md#when-the-gate-finds-blocking-problems).
|
|
110
|
+
- **Reviewer selection falls back.** By default (`--avoid same-family`) the gate
|
|
111
|
+
prefers a reviewer from a different model family than the producer. If none
|
|
112
|
+
is available, it runs the best available reviewer instead, which can be the
|
|
113
|
+
same model family or even the same agent CLI, and records a warning. It does
|
|
114
|
+
not block. The gate result's `diversity.achieved` field shows what happened:
|
|
115
|
+
only `different-family` means the reviewer came from another family. With
|
|
116
|
+
`--avoid same-runtime`, the gate does not fall back: it fails if no other
|
|
117
|
+
agent CLI is available, but it excludes the current CLI only when OAT
|
|
118
|
+
recognizes it, and it never checks the model family. See
|
|
119
|
+
[How independent the reviewer must be](../../advanced/workflow-gates.md#how-independent-the-reviewer-must-be).
|
|
120
|
+
|
|
121
|
+
So a gate never quietly replaces itself with a self-review in the producer's
|
|
122
|
+
own session, and it never reports a pass when no review ran. It does not
|
|
123
|
+
guarantee a reviewer from a different model family; check `diversity.achieved`
|
|
124
|
+
before you present a gate review as independent evidence.
|
|
125
|
+
|
|
126
|
+
Per flavor:
|
|
127
|
+
|
|
128
|
+
- **Planning self-review** needs the least independence. The planning root
|
|
129
|
+
already runs at or above the review ceiling, so inheriting the parent model
|
|
130
|
+
satisfies the invariant without managed re-pinning. Pinning is _possible_
|
|
131
|
+
once the ceiling is resolved during planning, but it is not the default.
|
|
132
|
+
- **Implementation self-review** needs ceiling-level capability but not
|
|
133
|
+
cross-family isolation. The root resolves the dispatch ceiling and pins the
|
|
134
|
+
tier's final candidate after the phase report. Inheritance is allowed only
|
|
135
|
+
when the root dispatcher is _known_ to be at or above the ceiling; otherwise
|
|
136
|
+
an exact provider CLI reviewer is selected before launch. Reviewer selection
|
|
137
|
+
is never delegated to the phase implementer.
|
|
138
|
+
- **Phase review gate** aims for cross-family independence. It runs a separate
|
|
139
|
+
reviewer CLI chosen from the exec targets in `gates.execTargets`,
|
|
140
|
+
unconstrained by the harness's native subagent catalog, and prefers a
|
|
141
|
+
different model family as described above. If no target can start at all,
|
|
142
|
+
the gate fails and stays blocked; it does not downgrade to a review in the
|
|
143
|
+
producer's context. If only a same-family target is available, it runs that
|
|
144
|
+
target and records a warning.
|
|
145
|
+
- **Lifecycle / final gate** also runs a separate reviewer CLI, chosen the same
|
|
146
|
+
way, outside the producer's session. It never substitutes a same-context
|
|
147
|
+
self-review, and it is the one flavor permitted to spawn a nested managed
|
|
148
|
+
reviewer child _inside_ the gate exec target when the gate's own contract
|
|
149
|
+
calls for it. Its reviewer can still fall back to the same model family, with
|
|
150
|
+
a warning.
|
|
151
|
+
|
|
152
|
+
Gate independence is not a property of the generic reviewer class; it is project
|
|
153
|
+
policy layered on top of it. The dispatch adapter resolves the configured gate
|
|
154
|
+
target before launch and passes it as exact selection input. What fails closed
|
|
155
|
+
is the review itself: a gate whose reviewer cannot start, or whose review
|
|
156
|
+
cannot be validated, blocks instead of quietly reusing whatever produced the
|
|
157
|
+
work. Reviewer selection is best effort, as described above. For the
|
|
158
|
+
gate configuration keys and non-pausing behavior, see
|
|
159
|
+
[Workflow gates](../../advanced/workflow-gates.md) and the
|
|
160
|
+
[phase review gate](index.md#phase-review-gate) section of the review doc.
|
|
161
|
+
|
|
162
|
+
## Related
|
|
163
|
+
|
|
164
|
+
- [Reviews](index.md) — the review request/receive flows and the deep review
|
|
165
|
+
contract these flavors plug into.
|
|
166
|
+
- [Dispatch Policy](../../advanced/dispatch-ceiling.md) — named ceilings, at-ceiling reviewer
|
|
167
|
+
selection, and the Dispatch Report V1 / producer-provenance record.
|
|
168
|
+
- [HiLL Checkpoints](../planning/hill-checkpoints.md) — how the non-pausing phase review gate
|
|
169
|
+
relates to pauseable lifecycle checkpoints.
|
|
170
|
+
- [Orchestration Model](../../advanced/orchestration-model.md) — the native-first dispatch
|
|
171
|
+
topology these reviewer roles run inside.
|
|
172
|
+
- [Workflow gates](../../advanced/workflow-gates.md) — gate configuration
|
|
173
|
+
and exec-target selection.
|
|
174
|
+
- [Smoke testing](../../../contributing/smoke-testing.md) — how the fixture makes
|
|
175
|
+
these flavors observable and assertable.
|
|
176
|
+
|
|
177
|
+
## Choosing a Review Skill
|
|
178
|
+
|
|
179
|
+
The four lifecycle flavors above describe reviewer selection and independence.
|
|
180
|
+
The eight skills below answer a different question: **where is the review,
|
|
181
|
+
and where should its findings go?**
|
|
182
|
+
|
|
183
|
+
- **Provide** examines work and produces findings; **receive** triages findings
|
|
184
|
+
that already exist.
|
|
185
|
+
- **Ad-hoc** produces standalone findings or tasks without changing project
|
|
186
|
+
lifecycle artifacts; **project** uses the project's requirements, plan and
|
|
187
|
+
review ledger.
|
|
188
|
+
- **Local** exchanges Markdown review artifacts; **remote** exchanges GitHub
|
|
189
|
+
PR reviews and comments. “Remote” describes the exchange, not a requirement
|
|
190
|
+
to own a second physical machine.
|
|
191
|
+
|
|
192
|
+
Put together, pick a skill by answering three questions:
|
|
193
|
+
|
|
194
|
+
1. **Is this work tracked as an OAT project?** Yes: use an `oat-project-review-*`
|
|
195
|
+
skill. No, or you want findings kept out of the project: use an
|
|
196
|
+
`oat-review-*` (ad-hoc) skill.
|
|
197
|
+
2. **Are you producing findings or acting on them?** Producing: a `provide`
|
|
198
|
+
skill. Acting on findings someone already produced: a `receive` skill.
|
|
199
|
+
3. **Where do the findings live?** In a Markdown file in this checkout: the
|
|
200
|
+
local skill. On a GitHub pull request: the `-remote` skill.
|
|
201
|
+
|
|
202
|
+
The two project remote skills are normally used as a pair, often on different
|
|
203
|
+
machines or by different people: the reviewer runs
|
|
204
|
+
`oat-project-review-provide-remote` and posts findings to the PR, then the
|
|
205
|
+
author runs `oat-project-review-receive-remote` in the checkout that owns the
|
|
206
|
+
project, which turns those findings into project tasks. The ad-hoc remote
|
|
207
|
+
skills pair the same way without project tracking.
|
|
208
|
+
|
|
209
|
+
**Terms used in these skill guides:**
|
|
210
|
+
|
|
211
|
+
- **Active project:** the project OAT works on in this checkout when you do
|
|
212
|
+
not name one, stored as `activeProject` in the local, uncommitted
|
|
213
|
+
`.oat/config.local.json`.
|
|
214
|
+
- **Synced project:** a project whose artifacts travel on their own Git ref on
|
|
215
|
+
`origin` instead of on your branch. OAT saves its tracking changes by
|
|
216
|
+
pushing that ref (`oat project push`) instead of committing on your branch.
|
|
217
|
+
- **Review artifact:** the Markdown file a local review writes. Project
|
|
218
|
+
reviews go in the project's `reviews/` directory; once received, the file is
|
|
219
|
+
moved to `reviews/archived/`.
|
|
220
|
+
- **Dispatch policy:** the project's rule for which models and effort levels
|
|
221
|
+
OAT may use when it launches subagents such as the reviewer. See
|
|
222
|
+
[Dispatch Policy](../../advanced/dispatch-ceiling.md).
|
|
223
|
+
- **Gate:** a configured check, usually an independent review run by another
|
|
224
|
+
model, that must pass before the workflow continues. See
|
|
225
|
+
[Workflow gates](../../advanced/workflow-gates.md).
|
|
226
|
+
|
|
227
|
+
| You want to | Ad-hoc | Project-scoped |
|
|
228
|
+
| --------------------------------------- | --------------------------- | ----------------------------------- |
|
|
229
|
+
| Review local work | `oat-review-provide` | `oat-project-review-provide` |
|
|
230
|
+
| Triage a local review | `oat-review-receive` | `oat-project-review-receive` |
|
|
231
|
+
| Review and post findings on a GitHub PR | `oat-review-provide-remote` | `oat-project-review-provide-remote` |
|
|
232
|
+
| Triage GitHub feedback | `oat-review-receive-remote` | `oat-project-review-receive-remote` |
|
|
233
|
+
|
|
234
|
+
A project-required review does not always require a previously active pointer:
|
|
235
|
+
project provide can resolve an explicitly named project, and remote project
|
|
236
|
+
provide can resolve it from the PR or `--project`. Remote project **receive**
|
|
237
|
+
currently requires a valid active project with its tracking artifacts; select
|
|
238
|
+
it before receiving. Do not infer one variant's prerequisites from its twin.
|
|
239
|
+
|
|
240
|
+
All variants use Critical, High, Medium and Low severities. A reviewer reports
|
|
241
|
+
the issue; receive establishes its disposition. Remote posting, replies and
|
|
242
|
+
any optional ad-hoc remote fix-and-push flow have separate approval boundaries.
|
|
243
|
+
Examples below are agent skill invocations, not terminal `oat` subcommands.
|
|
244
|
+
|
|
245
|
+
## oat-review-provide
|
|
246
|
+
|
|
247
|
+
Review a bounded set of local changes without creating or resuming an OAT
|
|
248
|
+
project. Scope can be unstaged changes, staged changes, an explicit file list
|
|
249
|
+
or a commit range. Neither this skill nor `oat-review-provide-remote` can send
|
|
250
|
+
the review to a different model or runtime: each runs the review inline in the
|
|
251
|
+
agent session where you invoke it, so to get a review from another model,
|
|
252
|
+
invoke the skill in that model's agent tool.
|
|
253
|
+
|
|
254
|
+
**Invocation:**
|
|
255
|
+
|
|
256
|
+
```text
|
|
257
|
+
/oat-review-provide staged
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
If you omit scope, the skill asks what to review and recommends unstaged work
|
|
261
|
+
for an in-progress review. It shows the resolved scope for confirmation.
|
|
262
|
+
|
|
263
|
+
**Needs an active OAT project:** no.
|
|
264
|
+
|
|
265
|
+
**Prerequisites:** The selected files or changes must be available locally.
|
|
266
|
+
No existing project or active pointer is required. Agree whether findings
|
|
267
|
+
should be local-only, tracked or inline; these are output policies, not
|
|
268
|
+
different code-review scopes.
|
|
269
|
+
|
|
270
|
+
**What it does without asking:** After you confirm the scope, it writes the
|
|
271
|
+
review artifact: by default to the untracked
|
|
272
|
+
`.oat/projects/local/orphan-reviews/`, or to `.oat/repo/reviews/` when that
|
|
273
|
+
directory exists and is tracked. It commits a tracked artifact only after
|
|
274
|
+
asking you; local and inline output is never committed unless you request it.
|
|
275
|
+
|
|
276
|
+
**Example scenario:** You staged a small callback fix that does not warrant a
|
|
277
|
+
tracked project. Use the ad-hoc local provide variant to review precisely that
|
|
278
|
+
staged diff. The reviewer can flag a missing input check without interpreting
|
|
279
|
+
the change as fulfillment of a project plan.
|
|
280
|
+
|
|
281
|
+
**Expected output:** Findings with severity, file locations and verification
|
|
282
|
+
guidance, plus the reviewed scope and artifact location or an explicit
|
|
283
|
+
inline-only result. File output defaults to local active orphan-review storage
|
|
284
|
+
unless the repository's tracked review convention applies; new findings are
|
|
285
|
+
not written directly into an archive.
|
|
286
|
+
|
|
287
|
+
**Next step:** Pass the active artifact to ad-hoc review-receive for triage.
|
|
288
|
+
If you chose inline-only output, request a file artifact when you need that
|
|
289
|
+
later artifact-based handoff. Reviewing does not implement the fixes; committing
|
|
290
|
+
a tracked review artifact is an explicit bookkeeping choice.
|
|
291
|
+
|
|
292
|
+
## oat-review-receive
|
|
293
|
+
|
|
294
|
+
Turn an existing local review into standalone tasks, preserving explicit
|
|
295
|
+
decisions about what will be fixed, deferred or dismissed.
|
|
296
|
+
|
|
297
|
+
**Invocation:**
|
|
298
|
+
|
|
299
|
+
```text
|
|
300
|
+
/oat-review-receive
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
An explicit review-artifact path can select the input. Without one, the skill
|
|
304
|
+
discovers active artifacts under repository-review and local orphan-review
|
|
305
|
+
storage, orders candidates by their recorded generation time and reports which
|
|
306
|
+
it selected. Archived artifacts are history, not default triage inputs.
|
|
307
|
+
|
|
308
|
+
**Needs an active OAT project:** no.
|
|
309
|
+
|
|
310
|
+
**Prerequisites:** A readable, nonempty Markdown review artifact exists. No
|
|
311
|
+
project is required, and this rail does not mutate `plan.md`, `state.md` or
|
|
312
|
+
`implementation.md`.
|
|
313
|
+
|
|
314
|
+
**What it does without asking:** After triage, it moves the consumed artifact
|
|
315
|
+
into the sibling `archived/` directory, adding a timestamp suffix if a file
|
|
316
|
+
with that name is already there. It makes no commits: if the review came from
|
|
317
|
+
the tracked `.oat/repo/reviews/`, commit the move yourself.
|
|
318
|
+
|
|
319
|
+
**Example scenario:** The callback review has one High finding and a Low
|
|
320
|
+
cleanup note. Receive shows both before asking for dispositions. You convert
|
|
321
|
+
the missing input check into a task and either convert the cleanup or explain
|
|
322
|
+
why it should be deferred. Use this local ad-hoc variant because the input is
|
|
323
|
+
a Markdown artifact and the output should remain outside project tracking.
|
|
324
|
+
|
|
325
|
+
**Expected output:** Severity counts, converted/deferred/dismissed decisions
|
|
326
|
+
with rationale, and a standalone task list inline or at a requested path.
|
|
327
|
+
After triage, the consumed artifact moves to its sibling archive and the
|
|
328
|
+
archived location is reported. A zero-findings review reports a clean result
|
|
329
|
+
and stops.
|
|
330
|
+
|
|
331
|
+
**Next step:** Implement the accepted tasks through your chosen development
|
|
332
|
+
flow, then request another review if needed. This receive skill does not
|
|
333
|
+
change code or silently start implementation.
|
|
334
|
+
|
|
335
|
+
## oat-review-provide-remote
|
|
336
|
+
|
|
337
|
+
Review a GitHub PR and post its findings without using project lifecycle
|
|
338
|
+
context. The GitHub review, rather than a local Markdown artifact on the
|
|
339
|
+
reviewing machine, is the handoff to the author.
|
|
340
|
+
|
|
341
|
+
**Invocation:**
|
|
342
|
+
|
|
343
|
+
```text
|
|
344
|
+
/oat-review-provide-remote --pr 84
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
**Needs an active OAT project:** no.
|
|
348
|
+
|
|
349
|
+
**Prerequisites:** The PR is reachable through the current repository remote,
|
|
350
|
+
and `gh` is installed and authenticated. No OAT project is required. The
|
|
351
|
+
`oat-review-provide` skill (utility pack) must also be installed, because its
|
|
352
|
+
review template supplies the checklist; without it the skill stops. Confirm
|
|
353
|
+
the selected PR, and separately approve the review body before posting it.
|
|
354
|
+
|
|
355
|
+
**What it does without asking:** After you confirm the PR number, it creates a
|
|
356
|
+
temporary worktree, runs `gh pr checkout` inside it and removes it when
|
|
357
|
+
finished; if the checkout fails, it switches to diff-only review with a
|
|
358
|
+
warning. It posts nothing to GitHub until you approve the review body, and it
|
|
359
|
+
writes no local artifact, commits nothing and pushes nothing.
|
|
360
|
+
|
|
361
|
+
**Example scenario:** A teammate opened PR 84 for the standalone callback fix.
|
|
362
|
+
Use remote ad-hoc provide so the findings arrive on that PR, even though the
|
|
363
|
+
reviewer has no active project. The skill normally acquires a temporary
|
|
364
|
+
worktree for context rather than changing the caller's checkout. Diff-only
|
|
365
|
+
mode is available with `--no-checkout`, with a degraded-context warning, and
|
|
366
|
+
is used automatically when the checkout fails.
|
|
367
|
+
|
|
368
|
+
**Expected output:** A single approved GitHub review containing severity
|
|
369
|
+
counts, inline findings where the diff supports them and body findings for
|
|
370
|
+
locations outside the diff. The report identifies the reviewed PR head,
|
|
371
|
+
scope and posting result. Critical or High findings produce
|
|
372
|
+
`REQUEST_CHANGES`; otherwise the verdict is `COMMENT`, not automatic approval.
|
|
373
|
+
No local review artifact, implementation commit or project bookkeeping is
|
|
374
|
+
created by this variant.
|
|
375
|
+
|
|
376
|
+
**Next step:** On the author's side, use ad-hoc remote receive to triage the
|
|
377
|
+
comments. For re-review, guarded prior-review metadata may narrow the scope;
|
|
378
|
+
if no valid prior review is available, the normal path reviews the full PR.
|
|
379
|
+
A failed post is not a delivered review: follow the reported diagnosis.
|
|
380
|
+
|
|
381
|
+
## oat-review-receive-remote
|
|
382
|
+
|
|
383
|
+
Fetch unresolved GitHub review feedback and turn it into standalone tasks.
|
|
384
|
+
This is the receiving half of the remote ad-hoc flow.
|
|
385
|
+
|
|
386
|
+
**Invocation:**
|
|
387
|
+
|
|
388
|
+
```text
|
|
389
|
+
/oat-review-receive-remote --pr 84
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**Needs an active OAT project:** no.
|
|
393
|
+
|
|
394
|
+
**Prerequisites:** `npx agent-reviews` is available and GitHub authentication
|
|
395
|
+
is configured. No project is required. The selected PR is confirmed before
|
|
396
|
+
comment ingestion.
|
|
397
|
+
|
|
398
|
+
**What it does without asking:** After you confirm the PR, it fetches the
|
|
399
|
+
unresolved comments and builds the task list. Every action beyond that needs
|
|
400
|
+
your explicit yes: applying fixes, committing them and running `git push`
|
|
401
|
+
happen only after you accept the offer, and replies are posted to GitHub only
|
|
402
|
+
after you approve them.
|
|
403
|
+
|
|
404
|
+
**Example scenario:** PR 84 now has the callback finding from remote provide
|
|
405
|
+
and a separate reviewer comment about an edge case. Use remote ad-hoc receive
|
|
406
|
+
to gather the unresolved feedback, classify the actual issues and decide what
|
|
407
|
+
to convert. This variant is appropriate because the source is GitHub and the
|
|
408
|
+
accepted work should become standalone tasks, not project task IDs.
|
|
409
|
+
|
|
410
|
+
**Expected output:** A finding register and task list, with severity and
|
|
411
|
+
converted/deferred/dismissed counts. No unresolved comments produces a clean
|
|
412
|
+
status and stops. Deferrals and dismissals need concrete rationale, including
|
|
413
|
+
for Low findings; a GitHub changes-requested state is evidence to inspect,
|
|
414
|
+
not an automatic severity assignment for every comment.
|
|
415
|
+
|
|
416
|
+
**Next step:** Decide whether to implement the tasks yourself or authorize the
|
|
417
|
+
skill's optional fix, verification, commit and push flow. That flow requires
|
|
418
|
+
explicit confirmation after the task list. Posting replies is another explicit
|
|
419
|
+
choice, and replies distinguish fixed work from merely acknowledged tasks.
|
|
420
|
+
Neither optional action changes project lifecycle artifacts on this ad-hoc rail.
|
|
421
|
+
|
|
422
|
+
## oat-project-review-provide
|
|
423
|
+
|
|
424
|
+
Review project work against the requirements and artifacts appropriate to its
|
|
425
|
+
workflow mode. Use this when the question is not only “is the code sound?” but
|
|
426
|
+
also “does this work satisfy the agreed plan?”
|
|
427
|
+
|
|
428
|
+
**Invocation:**
|
|
429
|
+
|
|
430
|
+
```text
|
|
431
|
+
/oat-project-review-provide code p02
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
Code scope can select a task, phase, contiguous phase range or final review.
|
|
435
|
+
Artifact review selects an artifact instead, for example
|
|
436
|
+
`/oat-project-review-provide artifact plan`. Without arguments, the skill
|
|
437
|
+
proposes or asks for type and scope, then confirms a manual review.
|
|
438
|
+
|
|
439
|
+
**Needs an active OAT project:** yes, or a project you name explicitly in the
|
|
440
|
+
request.
|
|
441
|
+
|
|
442
|
+
**Prerequisites:** An initialized project must resolve from the active pointer
|
|
443
|
+
or an explicitly supplied project/review target. Its core artifacts must be
|
|
444
|
+
committed before review. Code review needs completed implementation work and
|
|
445
|
+
the mode-appropriate requirements sources; lite review does not require absent
|
|
446
|
+
discovery, spec or design artifacts. Code reviews and plan artifact reviews
|
|
447
|
+
also need a resolved dispatch policy (`oat_dispatch_policy` in `state.md` or
|
|
448
|
+
`workflow.dispatchPolicy.*` in config); without one the review stops before
|
|
449
|
+
launching a reviewer. Discovery, spec and design artifact reviews run without
|
|
450
|
+
a policy by using the current session's model.
|
|
451
|
+
|
|
452
|
+
**What it does without asking:** After you confirm the review type and scope,
|
|
453
|
+
it dispatches an `oat-reviewer` subagent when the host supports one (on Codex
|
|
454
|
+
it may first ask you to authorize that). It writes the review artifact to
|
|
455
|
+
`reviews/`, adds a `received` row to the Reviews table in `plan.md`, and
|
|
456
|
+
commits both as `chore(oat): record {scope} review artifact`; a synced project
|
|
457
|
+
pushes its project ref instead. It skips that commit only if you explicitly
|
|
458
|
+
ask to defer it and confirm. If the project's branch is checked out in another
|
|
459
|
+
worktree, the artifact and commit land there; if the branch differs from
|
|
460
|
+
yours and has no worktree, the skill stops and offers to `git checkout` that
|
|
461
|
+
branch, review inline only, or cancel. A review started by a gate runs with no
|
|
462
|
+
confirmation prompts.
|
|
463
|
+
|
|
464
|
+
**Example scenario:** Checkout-hardening has finished phase p02, including
|
|
465
|
+
caller updates. Request a local project code review of p02 to check those
|
|
466
|
+
changes against the plan and implementation evidence, not just an arbitrary
|
|
467
|
+
branch diff. If the project is not active, name its path or project explicitly
|
|
468
|
+
when asking for the review rather than switching to the ad-hoc rail by accident.
|
|
469
|
+
|
|
470
|
+
**Expected output:** A scoped review artifact in the project's active
|
|
471
|
+
`reviews/` directory, with requirements alignment, findings, verification
|
|
472
|
+
guidance and a next-step recommendation, plus a `received` row in `plan.md`
|
|
473
|
+
and the bookkeeping commit described above. An explicitly selected
|
|
474
|
+
inline-only flow does not create the ordinary artifact or commit. A blocked reviewer is not a passed
|
|
475
|
+
review with zero findings.
|
|
476
|
+
|
|
477
|
+
**Next step:** Use project review-receive for the active artifact. If findings
|
|
478
|
+
identify stale requirements artifacts rather than a code defect, preserve that
|
|
479
|
+
distinction during triage; do not automatically change defensible code to match
|
|
480
|
+
an outdated description.
|
|
481
|
+
|
|
482
|
+
## oat-project-review-receive
|
|
483
|
+
|
|
484
|
+
Process an actionable local project review and reconnect its findings to the
|
|
485
|
+
project's execution or artifact-editing flow.
|
|
486
|
+
|
|
487
|
+
**Invocation:**
|
|
488
|
+
|
|
489
|
+
```text
|
|
490
|
+
/oat-project-review-receive
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
**Needs an active OAT project:** yes, or a project you name. Without one, the
|
|
494
|
+
skill can only offer to hand an ad-hoc review to `oat-review-receive`.
|
|
495
|
+
|
|
496
|
+
**Prerequisites:** A valid project and an active project review must resolve.
|
|
497
|
+
The normal input is an actionable artifact in the top level of its `reviews/`
|
|
498
|
+
directory. A named project can supply the target even without an active
|
|
499
|
+
pointer. Historical archived reviews are not automatically received again;
|
|
500
|
+
discovery of an ad-hoc review routes to the ad-hoc receive skill instead.
|
|
501
|
+
|
|
502
|
+
**What it does without asking:** For a manual code review it asks you to
|
|
503
|
+
decide each finding, then applies your decisions without further prompts: it
|
|
504
|
+
adds
|
|
505
|
+
fix tasks to `plan.md`, updates `implementation.md` and `state.md`, moves the
|
|
506
|
+
review artifact to `reviews/archived/`, and commits all of that together as
|
|
507
|
+
`chore(oat): record review findings and add fix tasks ({scope})`. A synced
|
|
508
|
+
project pushes its project ref instead. The commit is required; it is
|
|
509
|
+
deferred only if you explicitly approve. Reviews started by checkpoint
|
|
510
|
+
auto-review or by a gate are dispositioned with no prompts at all, and after a
|
|
511
|
+
passing gate it may apply small, contained fixes directly and commit them with
|
|
512
|
+
the bookkeeping. When the same scope has had 3 review cycles (not counting
|
|
513
|
+
gate reviews), further automated cycles are blocked and the skill asks
|
|
514
|
+
whether to review the findings manually, proceed to the PR, or explicitly
|
|
515
|
+
override the limit.
|
|
516
|
+
|
|
517
|
+
**Example scenario:** The p02 reviewer found a missed caller and a stale plan
|
|
518
|
+
statement. Project receive explains the findings before disposition. For a
|
|
519
|
+
manual code review, accepted fixes become stable review-fix task IDs in the
|
|
520
|
+
plan; for an artifact review, approved changes are applied directly to the
|
|
521
|
+
artifact rather than pretending they are implementation tasks. Use the project
|
|
522
|
+
local variant because the input is a local project review event and its
|
|
523
|
+
dispositions belong in the project ledger.
|
|
524
|
+
|
|
525
|
+
**Expected output:** Finding analysis and dispositions, updated project
|
|
526
|
+
tracking and the review artifact moved to `reviews/archived/` under a name that
|
|
527
|
+
does not overwrite earlier reviews. For a code review, the skill then commits
|
|
528
|
+
`plan.md`,
|
|
529
|
+
`implementation.md`, `state.md` and the archive move together (synced projects
|
|
530
|
+
push the project ref instead). The outcome reports added tasks or artifact
|
|
531
|
+
dispositions, the review cycle count out of 3, and the next route. Reviews
|
|
532
|
+
started automatically or by a gate have their own disposition rules; findings
|
|
533
|
+
below a passing gate's threshold are still recorded, not silently erased, and
|
|
534
|
+
small contained fixes may be applied directly during that sweep.
|
|
535
|
+
|
|
536
|
+
**Next step:** Review any added tasks, then run implementation when ready, or
|
|
537
|
+
choose its offered execution handoff: execute the fix tasks now (which can
|
|
538
|
+
invoke `oat-project-implement` directly), review the plan first, or exit. For artifact-review changes, request a
|
|
539
|
+
new artifact review or follow the phase's approval flow. Final review also
|
|
540
|
+
resurfaces deferred Medium findings; receiving one phase review does not
|
|
541
|
+
automatically close the project.
|
|
542
|
+
|
|
543
|
+
## oat-project-review-provide-remote
|
|
544
|
+
|
|
545
|
+
Review a project's GitHub PR using its requirements context, then post findings
|
|
546
|
+
back without writing project tracking on the reviewing machine.
|
|
547
|
+
|
|
548
|
+
**Invocation:**
|
|
549
|
+
|
|
550
|
+
```text
|
|
551
|
+
/oat-project-review-provide-remote code p02 --pr 84 --project .oat/projects/shared/checkout-hardening
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
**Needs an active OAT project:** no. The project is found from the PR diff or
|
|
555
|
+
from `--project`, not from the active pointer.
|
|
556
|
+
|
|
557
|
+
**Prerequisites:** The PR is reachable and `gh` is installed and authenticated.
|
|
558
|
+
An existing project must resolve from exactly one project's `state.md` in the
|
|
559
|
+
PR diff or from the explicit `--project` path. The override is needed when the
|
|
560
|
+
diff identifies zero or multiple projects. Its artifacts must be available
|
|
561
|
+
for mode-aware review. A local active-project pointer is not required.
|
|
562
|
+
|
|
563
|
+
**What it does without asking:** After you confirm the PR number, it creates a
|
|
564
|
+
temporary worktree, runs `gh pr checkout` inside it (falling back to
|
|
565
|
+
diff-only review if that fails) and removes the worktree when finished. It
|
|
566
|
+
dispatches an `oat-reviewer` subagent to perform the review when the host
|
|
567
|
+
supports one. It posts to GitHub only after you approve the review body, and
|
|
568
|
+
it never writes project files, commits or pushes on the reviewing machine.
|
|
569
|
+
|
|
570
|
+
**Example scenario:** The checkout-hardening author asks another workstation
|
|
571
|
+
to review phase p02 on PR 84. That reviewer has no active project, and the PR
|
|
572
|
+
also touches an unrelated project's state. Use remote project provide with the
|
|
573
|
+
explicit project path so the review checks checkout-hardening's plan and posts
|
|
574
|
+
findings tagged for that project and scope, rather than mixing the two projects
|
|
575
|
+
or producing an ad-hoc review.
|
|
576
|
+
|
|
577
|
+
**Expected output:** After explicit posting approval, one GitHub review with
|
|
578
|
+
project and scope metadata, severity counts, supported inline findings and a
|
|
579
|
+
report of the PR head reviewed. The reviewing checkout is preserved through
|
|
580
|
+
temporary-worktree acquisition or the declared diff-only fallback. The skill
|
|
581
|
+
writes no local review artifact and makes no project bookkeeping, fixes,
|
|
582
|
+
commits or pushes on the reviewing machine. Its verdict is `REQUEST_CHANGES`
|
|
583
|
+
for Critical/High findings and `COMMENT` otherwise.
|
|
584
|
+
|
|
585
|
+
**Next step:** On the originating checkout, select the project and run project
|
|
586
|
+
remote receive. A re-review can narrow only against guarded prior metadata for
|
|
587
|
+
the same project, scope and invocation lineage; an unrelated project's review
|
|
588
|
+
must not become the baseline.
|
|
589
|
+
|
|
590
|
+
## oat-project-review-receive-remote
|
|
591
|
+
|
|
592
|
+
Bring unresolved GitHub review feedback into an existing project's task and
|
|
593
|
+
review ledger. Unlike ad-hoc remote receive, this skill does not directly
|
|
594
|
+
implement code fixes.
|
|
595
|
+
|
|
596
|
+
**Invocation:**
|
|
597
|
+
|
|
598
|
+
```text
|
|
599
|
+
/oat-project-open checkout-hardening
|
|
600
|
+
/oat-project-review-receive-remote --pr 84
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
**Needs an active OAT project:** yes. Open the project first; the reviewing
|
|
604
|
+
machine's ability to infer a project from the PR does not apply here.
|
|
605
|
+
|
|
606
|
+
**Prerequisites:** The active project is valid and has `plan.md`,
|
|
607
|
+
`implementation.md` and `state.md`. `npx agent-reviews` is available and GitHub
|
|
608
|
+
authentication is configured. Confirm the selected PR; the reviewing machine's
|
|
609
|
+
ability to infer a project does not remove this receiving variant's active
|
|
610
|
+
project requirement.
|
|
611
|
+
|
|
612
|
+
**What it does without asking:** After you confirm the PR, it fetches the
|
|
613
|
+
unresolved comments and asks you to decide each finding. It then writes a new
|
|
614
|
+
review artifact for this receive, adds fix tasks for the findings you
|
|
615
|
+
converted to `plan.md`, updates `implementation.md` and `state.md`, and commits
|
|
616
|
+
them in one commit, `chore(oat): record remote review findings and add fix
|
|
617
|
+
tasks (pr-#<N>)`. A synced project pushes its project ref instead. The commit
|
|
618
|
+
is required; it is deferred only if you explicitly approve. If the PR has no
|
|
619
|
+
unresolved comments, it still records a `passed` review in `plan.md` and
|
|
620
|
+
commits it as `chore(oat): record clean remote review (pr-#<N>)`. After 3
|
|
621
|
+
receive cycles on the same scope, it stops and asks whether to escalate the
|
|
622
|
+
scope or resolve the findings manually. Replies are posted to GitHub only after
|
|
623
|
+
you approve them, and it never implements code fixes itself.
|
|
624
|
+
|
|
625
|
+
**Example scenario:** The remote p02 review on PR 84 identified a missing
|
|
626
|
+
caller check. Back in the authoring checkout, open checkout-hardening and
|
|
627
|
+
receive that PR's unresolved feedback. The agent presents the finding and
|
|
628
|
+
creates a stable review-fix task in the correct project, keeping later
|
|
629
|
+
implementation and re-review connected to the same event.
|
|
630
|
+
|
|
631
|
+
**Expected output:** Findings and dispositions, created `pNN-tNN` task IDs when
|
|
632
|
+
needed, a review artifact for this receive (each receive gets its own
|
|
633
|
+
timestamped file), and `plan.md`, `implementation.md` and `state.md` updated
|
|
634
|
+
and committed together with that artifact (synced projects push the project
|
|
635
|
+
ref). A PR with no unresolved comments is still recorded and committed as a
|
|
636
|
+
passed review. After 3 receive cycles on the same scope, the skill stops and
|
|
637
|
+
asks how to proceed rather than silently repeating ingestion. Optional GitHub
|
|
638
|
+
replies require explicit approval and describe the actual disposition.
|
|
639
|
+
|
|
640
|
+
**Next step:** Run implementation for added fix tasks, then request re-review
|
|
641
|
+
of the relevant scope. If no tasks were needed and the review passed, follow
|
|
642
|
+
the reported finalization route. Receiving feedback is not itself proof that
|
|
643
|
+
the changes were fixed, verified, pushed or approved for merge.
|
package/assets/docs/workflows/projects/{reviewing-oat-prs.md → reviews/reviewing-oat-prs.md}
RENAMED
|
@@ -59,6 +59,6 @@ commands do not depend on editor discovery.
|
|
|
59
59
|
|
|
60
60
|
## Related
|
|
61
61
|
|
|
62
|
-
- [PR Flow](pr-flow.md)
|
|
63
|
-
- [Project Artifacts](artifacts.md)
|
|
64
|
-
- [Picking Up Projects](picking-up-projects.md)
|
|
62
|
+
- [PR Flow](../closeout/pr-flow.md)
|
|
63
|
+
- [Project Artifacts](../../../reference/project-artifacts.md)
|
|
64
|
+
- [Picking Up Projects](../execution/picking-up-projects.md)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Waves
|
|
3
|
+
description: 'Wave-program planning and execution over a corpus of external plans.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Waves
|
|
7
|
+
|
|
8
|
+
Use the wave guide to coordinate a corpus of external plans.
|
|
9
|
+
|
|
10
|
+
## Contents
|
|
11
|
+
|
|
12
|
+
- [Wave Workflows](wave-workflows.md) - Program planning and wave execution.
|