@open-agent-toolkit/cli 0.3.18 → 0.3.20
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 +2 -1
- package/assets/agents/oat-phase-implementer.md +104 -3
- package/assets/agents/oat-reviewer.md +20 -5
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/reference/cli-reference.md +15 -7
- package/assets/docs/reference/oat-directory-structure.md +2 -0
- package/assets/docs/reference/project-artifacts.md +72 -1
- package/assets/docs/reference/project-state-machine.md +55 -6
- package/assets/docs/skills/brainstorm.md +3 -1
- package/assets/docs/skills/index.md +13 -9
- package/assets/docs/workflows/advanced/autonomy.md +12 -2
- package/assets/docs/workflows/advanced/dispatch-ceiling.md +2 -2
- package/assets/docs/workflows/advanced/workflow-gates.md +25 -7
- package/assets/docs/workflows/approvals-and-automation.md +25 -9
- package/assets/docs/workflows/choose-workflow.md +24 -8
- package/assets/docs/workflows/ideas/index.md +1 -1
- package/assets/docs/workflows/ideas/lifecycle.md +3 -2
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +83 -5
- package/assets/docs/workflows/projects/closeout/pr-flow.md +9 -1
- package/assets/docs/workflows/projects/execution/execution-skills.md +27 -2
- package/assets/docs/workflows/projects/execution/implementation-execution.md +15 -0
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +20 -1
- package/assets/docs/workflows/projects/lifecycle.md +172 -9
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
- package/assets/docs/workflows/projects/planning/planning-skills.md +13 -10
- package/assets/docs/workflows/projects/planning/starting-projects.md +138 -20
- package/assets/docs/workflows/projects/reviews/index.md +36 -2
- package/assets/docs/workflows/projects/reviews/review-flavors.md +7 -3
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +58 -9
- package/assets/skills/oat-brainstorm/references/destinations.md +12 -4
- package/assets/skills/oat-docs/SKILL.md +13 -4
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +20 -8
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +156 -122
- package/assets/skills/oat-project-brief/SKILL.md +592 -0
- package/assets/skills/oat-project-brief/references/brief-contract.md +743 -0
- package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +412 -0
- package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +93 -0
- package/assets/skills/oat-project-capture/SKILL.md +2 -2
- package/assets/skills/oat-project-complete/SKILL.md +16 -2
- package/assets/skills/oat-project-discover/SKILL.md +4 -2
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
- package/assets/skills/oat-project-document/SKILL.md +17 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-goal/SKILL.md +697 -0
- package/assets/skills/oat-project-goal/references/docs/autonomy-contract.md +412 -0
- package/assets/skills/oat-project-goal/references/docs/gate-approval-record.md +93 -0
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +107 -0
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +13 -0
- package/assets/skills/oat-project-implement/references/phase-execution.md +173 -1
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +124 -3
- package/assets/skills/oat-project-import-plan/SKILL.md +5 -1
- package/assets/skills/oat-project-lite/SKILL.md +4 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-new/SKILL.md +5 -1
- package/assets/skills/oat-project-next/SKILL.md +71 -14
- package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +13 -0
- package/assets/skills/oat-project-plan/SKILL.md +24 -3
- package/assets/skills/oat-project-plan-writing/SKILL.md +8 -4
- package/assets/skills/oat-project-pr-final/SKILL.md +65 -3
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-pr-progress/SKILL.md +125 -4
- package/assets/skills/oat-project-progress/SKILL.md +63 -8
- package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +13 -0
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
- package/assets/skills/oat-project-quick-start/SKILL.md +65 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +156 -122
- package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +13 -0
- package/assets/skills/oat-project-reconcile/SKILL.md +94 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +397 -12
- package/assets/skills/oat-project-review-receive/SKILL.md +155 -1
- package/assets/skills/oat-project-revise/SKILL.md +51 -4
- package/assets/skills/oat-project-summary/SKILL.md +150 -2
- package/assets/skills/oat-wave-execute/SKILL.md +3 -2
- package/assets/templates/implementation-brief.md +165 -0
- package/assets/templates/plan-brief.md +140 -0
- package/assets/templates/plan.md +1 -1
- package/assets/templates/state.md +8 -2
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts +119 -3
- package/dist/commands/project/closeout-check/closeout-invariant.d.ts.map +1 -1
- package/dist/commands/project/closeout-check/closeout-invariant.js +454 -2
- package/dist/commands/project/closeout-check/index.d.ts +21 -3
- package/dist/commands/project/closeout-check/index.d.ts.map +1 -1
- package/dist/commands/project/closeout-check/index.js +190 -4
- package/dist/commands/project/complete-state/index.d.ts +2 -1
- package/dist/commands/project/complete-state/index.d.ts.map +1 -1
- package/dist/commands/project/complete-state/index.js +7 -1
- package/dist/commands/project/delivery/check.d.ts +66 -0
- package/dist/commands/project/delivery/check.d.ts.map +1 -0
- package/dist/commands/project/delivery/check.js +232 -0
- package/dist/commands/project/delivery/evidence.d.ts +171 -0
- package/dist/commands/project/delivery/evidence.d.ts.map +1 -0
- package/dist/commands/project/delivery/evidence.js +902 -0
- package/dist/commands/project/delivery/index.d.ts +7 -0
- package/dist/commands/project/delivery/index.d.ts.map +1 -0
- package/dist/commands/project/delivery/index.js +13 -0
- package/dist/commands/project/delivery/refresh.d.ts +110 -0
- package/dist/commands/project/delivery/refresh.d.ts.map +1 -0
- package/dist/commands/project/delivery/refresh.js +441 -0
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/log/append.d.ts +6 -0
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +6 -1
- package/dist/commands/project/new/scaffold.d.ts +1 -1
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +81 -7
- package/dist/commands/project/promote/promote.d.ts +46 -1
- package/dist/commands/project/promote/promote.d.ts.map +1 -1
- package/dist/commands/project/promote/promote.js +646 -5
- package/dist/commands/project/validate-plan/frontmatter.d.ts +12 -0
- package/dist/commands/project/validate-plan/frontmatter.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/frontmatter.js +27 -0
- package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/index.js +62 -18
- package/dist/commands/project/validate-plan/profiles.d.ts +69 -0
- package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
- package/dist/commands/project/validate-plan/profiles.js +420 -0
- package/dist/commands/project/validate-plan/validate-plan.d.ts +3 -19
- package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
- package/dist/commands/project/validate-plan/validate-plan.js +5 -82
- package/dist/commands/shared/frontmatter.d.ts +1 -1
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +2 -0
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +82 -2
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +4 -0
- package/package.json +2 -2
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.4.
|
|
9
|
+
version: 1.4.5
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# New OAT Project
|
|
@@ -73,6 +73,10 @@ Use the CLI scaffolder:
|
|
|
73
73
|
oat project new "{project-name}" --mode spec-driven [--scope shared|local|synced]
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
+
This skill scaffolds spec-driven projects only. Quick, lite, brief, and goal projects
|
|
77
|
+
start from their entry skills (`oat-project-quick-start`, `oat-project-lite`,
|
|
78
|
+
`oat-project-brief`, `oat-project-goal`), which run `oat project new --mode <mode>` themselves.
|
|
79
|
+
|
|
76
80
|
Optional flags:
|
|
77
81
|
|
|
78
82
|
- `--scope shared|local|synced` (omitting it uses `projects.defaultScope`, whose default is `synced`)
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Glob, Grep, Bash(git:*), Bash(oat:*), Skill
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.1.
|
|
8
|
+
version: 1.1.7
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Project Next
|
|
@@ -108,6 +108,8 @@ projects, and synced records whose detached checkout is absent.
|
|
|
108
108
|
- `oat-project-new` — Create a spec-driven project
|
|
109
109
|
- `oat-project-quick-start` — Start a quick workflow project
|
|
110
110
|
- `oat-project-lite` — Start a lite workflow project
|
|
111
|
+
- `oat-project-brief` — Start a brief workflow project
|
|
112
|
+
- `oat-project-goal` — Start a goal workflow project
|
|
111
113
|
- `oat-project-import-plan` — Import an external plan
|
|
112
114
|
- **STOP.** Do not attempt routing.
|
|
113
115
|
|
|
@@ -126,17 +128,17 @@ projects, and synced records whose detached checkout is absent.
|
|
|
126
128
|
|
|
127
129
|
Read `"$PROJECT_PATH/state.md"` frontmatter and extract:
|
|
128
130
|
|
|
129
|
-
| Field | Used For
|
|
130
|
-
| ------------------------- |
|
|
131
|
-
| `oat_phase` | Current lifecycle position (discovery, spec, design, plan, implement)
|
|
132
|
-
| `oat_phase_status` | Phase completion state (in_progress, complete, pr_open)
|
|
133
|
-
| `oat_workflow_mode` | Routing table selection (spec-driven, quick, import, lite). Default: `spec-driven`
|
|
134
|
-
| `oat_hill_checkpoints` | Which phases require HiLL approval
|
|
135
|
-
| `oat_hill_completed` | Which HiLL gates have been passed
|
|
136
|
-
| `oat_blockers` | Informational warnings (not routing gates)
|
|
137
|
-
| `oat_implement_exit_gate` | Whether the implementation exit gate is allowed and fresh
|
|
138
|
-
| `oat_quick_start_gate` | Reported only in the Step 6 announcement; never a routing input
|
|
139
|
-
| `oat_lifecycle` | Terminal status (active, paused, complete). `complete` is the terminal signal Step 5.2 reads
|
|
131
|
+
| Field | Used For |
|
|
132
|
+
| ------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
133
|
+
| `oat_phase` | Current lifecycle position (discovery, spec, design, plan, implement) |
|
|
134
|
+
| `oat_phase_status` | Phase completion state (in_progress, complete, pr_open) |
|
|
135
|
+
| `oat_workflow_mode` | Routing table selection (spec-driven, quick, import, lite, brief, goal). Default: `spec-driven` |
|
|
136
|
+
| `oat_hill_checkpoints` | Which phases require HiLL approval |
|
|
137
|
+
| `oat_hill_completed` | Which HiLL gates have been passed |
|
|
138
|
+
| `oat_blockers` | Informational warnings (not routing gates) |
|
|
139
|
+
| `oat_implement_exit_gate` | Whether the implementation exit gate is allowed and fresh |
|
|
140
|
+
| `oat_quick_start_gate` | Reported only in the Step 6 announcement; never a routing input |
|
|
141
|
+
| `oat_lifecycle` | Terminal status (active, paused, complete). `complete` is the terminal signal Step 5.2 reads |
|
|
140
142
|
|
|
141
143
|
**If state.md is missing or unreadable:** Report error and suggest running the relevant phase skill directly. STOP.
|
|
142
144
|
|
|
@@ -220,6 +222,10 @@ Phase-to-skill mapping for HiLL override:
|
|
|
220
222
|
| design | `oat-project-design` |
|
|
221
223
|
| plan | `oat-project-plan` |
|
|
222
224
|
|
|
225
|
+
In brief mode the `plan` row maps to `oat-project-brief`, which owns brief
|
|
226
|
+
planning; spec-driven planning is never a brief project's current-phase skill.
|
|
227
|
+
In goal mode it maps to `oat-project-goal` the same way.
|
|
228
|
+
|
|
223
229
|
Note: a `spec` HiLL phase only appears in legacy projects scaffolded before requirements confirmation was folded into `oat-project-design`. New projects scaffold with `['discovery', 'design']` HiLL checkpoints, so `spec` falls through to `oat-project-design` here as a graceful migration. The standalone `oat-project-spec` skill remains available as an opt-in for users who want to formalize requirements separately.
|
|
224
230
|
|
|
225
231
|
Note: `implement` is intentionally omitted. Implementation-phase checkpoints are handled by `oat_plan_hill_phases` in plan.md (plan-phase-level gates), not by the workflow-level `oat_hill_checkpoints` in state.md.
|
|
@@ -300,6 +306,45 @@ for a quick project.
|
|
|
300
306
|
| plan | complete | tier 1 | `oat-project-implement` \* |
|
|
301
307
|
| implement | in_progress | — | `oat-project-implement` \* |
|
|
302
308
|
|
|
309
|
+
**Brief Mode:**
|
|
310
|
+
|
|
311
|
+
| Current Phase | Phase Status | Boundary Tier | Target Skill |
|
|
312
|
+
| ------------- | ------------ | ------------- | -------------------------- |
|
|
313
|
+
| plan | in_progress | tier 3 | `oat-project-brief` |
|
|
314
|
+
| plan | in_progress | tier 2 | `oat-project-brief` |
|
|
315
|
+
| plan | complete | tier 1 | `oat-project-implement` \* |
|
|
316
|
+
| implement | in_progress | — | `oat-project-implement` \* |
|
|
317
|
+
|
|
318
|
+
Unlike lite, tier 2 stays with `oat-project-brief`: a brief becomes
|
|
319
|
+
implementation-ready only through its recorded review disposition and single
|
|
320
|
+
approval, which that skill owns. Brief progress counts phase-units, not tasks.
|
|
321
|
+
|
|
322
|
+
**Goal Mode:** the control plane owns goal routing (`oat project status --json`,
|
|
323
|
+
`recommendation.skill` and `recommendation.context`); dispatch that skill with
|
|
324
|
+
that context. Before any milestone state exists, the planning rows match brief
|
|
325
|
+
mode with `oat-project-goal` in place of `oat-project-brief`. After it exists,
|
|
326
|
+
routing follows this priority, the first match winning:
|
|
327
|
+
|
|
328
|
+
| Priority | Condition | Target Skill | Context |
|
|
329
|
+
| -------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------ |
|
|
330
|
+
| 1 | `oat_goal_status: declared_met` with an invalid outcome audit | `oat-project-goal` | `audit` |
|
|
331
|
+
| 1 | `declared_met`: received feedback, then pending recovery, then incomplete terminal scope, then the post-implementation router | review-receive / stage owner / `oat-project-implement` / Step 5 | `scope terminal: …` |
|
|
332
|
+
| 2 | Actionable review artifacts | `oat-project-review-receive` | — |
|
|
333
|
+
| 2 | Pending `oat_goal_recovery` at `implementing` / `exit_gate` | `oat-project-implement` | `scope mNN/dNN: …` / `closeout mNN/dNN: …` |
|
|
334
|
+
| 2 | Pending `oat_goal_recovery` at `reviewing` / `receiving` / `delivering` | by missing evidence (rows 4c–4d below) | the recovery's explicit scope |
|
|
335
|
+
| 3 | Active milestone membership invalid | `oat-project-goal` | — |
|
|
336
|
+
| 4a | `aligning` | `oat-project-goal` | `align mNN` |
|
|
337
|
+
| 4b | `implementing`: incomplete unit in scope / every unit accepted | `oat-project-implement` | `scope mNN: …` / `closeout mNN: …` |
|
|
338
|
+
| 4c | `reviewing`: queued fixes or a missing, blocked or stale exit carrier | `oat-project-implement` | `scope mNN: …` / `closeout mNN: …` |
|
|
339
|
+
| 4c | `reviewing`: carrier fresh, integrated review missing or stale / produced and unreceived / passed | review-provide / review-receive / review-receive | `code mNN: …` / `receive <artifact>` |
|
|
340
|
+
| 4d | `delivering`: passed review and allowed, fresh carrier; otherwise rows 4c by missing evidence | `oat-project-pr-progress` | `deliver mNN` |
|
|
341
|
+
| 4e | `delivered` | `oat-project-goal` | `realign mNN` |
|
|
342
|
+
|
|
343
|
+
Goal progress counts phase-units per active milestone. `delivered` is not the
|
|
344
|
+
endpoint: activation of the next milestone waits for the delivery's agreed
|
|
345
|
+
endpoint, which `oat-project-goal` observes. The Step 5 brief phase-unit guard
|
|
346
|
+
applies to goal only within the active milestone's scope at `implementing`.
|
|
347
|
+
|
|
303
348
|
\* `oat-project-implement` handles both sequential and parallel execution.
|
|
304
349
|
|
|
305
350
|
### Step 4: Check for Unprocessed Reviews (Review Safety Check)
|
|
@@ -329,6 +374,14 @@ Entry condition: `oat_phase == "implement"` AND (`oat_phase_status == "complete"
|
|
|
329
374
|
|
|
330
375
|
Apply the following checks in priority order. Stop at the first match:
|
|
331
376
|
|
|
377
|
+
**Brief phase-unit guard (brief mode, applied first).** When
|
|
378
|
+
`oat_workflow_mode: brief` and `oat_lifecycle` is not `complete`, read
|
|
379
|
+
`project.progress.phases` from `oat project status --json`. If any phase has
|
|
380
|
+
`provisional: true` or `completed` below `total`, route to
|
|
381
|
+
`oat-project-implement` before every check below and announce: "Incomplete
|
|
382
|
+
phase-units remain in the active scope". A `complete` or `pr_open` phase status
|
|
383
|
+
alone never finalizes a brief project.
|
|
384
|
+
|
|
332
385
|
**5.0: Unresolved implementation exit gate**
|
|
333
386
|
|
|
334
387
|
Before every other post-implementation route, inspect
|
|
@@ -479,7 +532,8 @@ and fall through to 5.3, and do not route to `oat-project-implement` even when
|
|
|
479
532
|
signal here — neither a null current task nor a `complete` or `pr_open`
|
|
480
533
|
`oat_phase_status` is terminal, because an active project reaches both while it
|
|
481
534
|
still owns pending revision work. The guard is workflow-mode independent: it
|
|
482
|
-
applies identically to `spec-driven`, `quick`, `import`,
|
|
535
|
+
applies identically to `spec-driven`, `quick`, `import`, `lite`, `brief`, and
|
|
536
|
+
`goal` projects.
|
|
483
537
|
|
|
484
538
|
For every other `oat_lifecycle` value the check below is unchanged.
|
|
485
539
|
|
|
@@ -529,7 +583,10 @@ Ignore matching rows outside `REVIEWS_SECTION`; they are not review events.
|
|
|
529
583
|
routes directly to `oat-project-pr-final` before the summary check below.
|
|
530
584
|
Announce: "Final review passed — creating final PR". Optional lite summary or
|
|
531
585
|
documentation work is owned by the immutable implementation closeout snapshot,
|
|
532
|
-
not this fallback router.
|
|
586
|
+
not this fallback router. The lite shortcut does not apply to brief projects:
|
|
587
|
+
brief closeout takes 5.5 through 5.7 and never skips the summary. Goal
|
|
588
|
+
terminal closeout follows brief closeout after a valid declaration; its `pr`
|
|
589
|
+
step is satisfied by delivery coverage.
|
|
533
590
|
|
|
534
591
|
**5.5: Summary not done**
|
|
535
592
|
|
|
@@ -58,6 +58,19 @@ replaces the record.
|
|
|
58
58
|
record is current.
|
|
59
59
|
- **`oat_quick_start_gate`** (`oat-project-quick-start`, Gate Execution) carries
|
|
60
60
|
exactly the core.
|
|
61
|
+
- **`oat_brief_gate`** (`oat-project-brief`, Gate Execution) carries exactly the
|
|
62
|
+
core, written and read under the same rules as `oat_quick_start_gate`. It is
|
|
63
|
+
absent when no gate is configured, and nothing routes on it: it is provenance
|
|
64
|
+
only.
|
|
65
|
+
- **`oat_milestone_gates[mNN].plan` and `.exit`** (goal mode;
|
|
66
|
+
`oat-project-goal` writes `plan` after each milestone's approval, and
|
|
67
|
+
`oat-project-implement`'s milestone closeout writes `exit`) carry the core
|
|
68
|
+
plus `resolution` (`configured`, `no_gate`, or `project_disabled`), a
|
|
69
|
+
`subject` binding (`plan` or `code` and the milestone's ordered phase set),
|
|
70
|
+
and derived `freshness` with `freshness_reason`. `reviewed_head` is `null`
|
|
71
|
+
for `no_gate` and `project_disabled`, and `no_gate` is written rather than
|
|
72
|
+
omitted because routing reads these carriers. `oat-project-brief`'s
|
|
73
|
+
`references/brief-contract.md` section 12.4 is their contract.
|
|
61
74
|
|
|
62
75
|
## Reading a quick-start record
|
|
63
76
|
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Bash(git:*), Bash(oat template:*), Glob, Grep, AskUserQuestion
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.4.
|
|
9
|
+
version: 1.4.19
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Planning Phase
|
|
@@ -20,8 +20,8 @@ Before a parent-branch commit, verify `oat internal commit-paths --help` succeed
|
|
|
20
20
|
## Prerequisites
|
|
21
21
|
|
|
22
22
|
This skill is the plan authoring path for **spec-driven** projects only. Quick,
|
|
23
|
-
import, and
|
|
24
|
-
directly.
|
|
23
|
+
import, lite, brief, and goal modes have dedicated entry skills that produce
|
|
24
|
+
`plan.md` directly.
|
|
25
25
|
|
|
26
26
|
Read `oat_workflow_mode` from `{PROJECT_PATH}/state.md` (default: `spec-driven`):
|
|
27
27
|
|
|
@@ -29,6 +29,8 @@ Read `oat_workflow_mode` from `{PROJECT_PATH}/state.md` (default: `spec-driven`)
|
|
|
29
29
|
- **`quick`**: **Stop.** Spec-driven planning does not apply here: the quick workflow authors `plan.md` itself and owns it through its own review disposition. Step 1 routes the project by the named **quick plan readiness** predicate instead of assuming the plan is finished.
|
|
30
30
|
- **`import`**: **Stop.** If a normalized `plan.md` exists, tell the user: "Imported plan is ready. Run `oat-project-implement` to begin execution." If no `plan.md` exists, tell the user: "Run `oat-project-import-plan` to import and normalize the external plan first."
|
|
31
31
|
- **`lite`**: **Stop.** Tell the user: "Lite planning is owned by `oat-project-lite`; run it to author or resume the combined plan contract."
|
|
32
|
+
- **`brief`**: **Stop.** Tell the user: "Brief planning is owned by `oat-project-brief`; run it to author or resume the Project Brief."
|
|
33
|
+
- **`goal`**: **Stop.** Tell the user: "Goal planning is owned by `oat-project-goal`; run it to author, amend, or re-align the Project Brief and its milestones."
|
|
32
34
|
|
|
33
35
|
## Plan Format Contract
|
|
34
36
|
|
|
@@ -162,6 +164,25 @@ Exit skill.
|
|
|
162
164
|
|
|
163
165
|
Exit skill.
|
|
164
166
|
|
|
167
|
+
**Mode: `brief`** — **STOP.** Print:
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
⚠️ This project uses brief mode. Run `oat-project-brief` to author or resume
|
|
171
|
+
its Project Brief; brief phases carry intent and exit evidence, not tasks.
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Exit skill.
|
|
175
|
+
|
|
176
|
+
**Mode: `goal`** — **STOP.** Print:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
⚠️ This project uses goal mode. Run `oat-project-goal` to author, amend, or
|
|
180
|
+
re-align its Project Brief and milestones; goal phases carry intent and
|
|
181
|
+
exit evidence, not tasks.
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Exit skill.
|
|
185
|
+
|
|
165
186
|
**Mode: `import`** — **STOP.** Check if `"$PROJECT_PATH/plan.md"` exists:
|
|
166
187
|
|
|
167
188
|
- If yes: Print: "Imported plan is ready. Run `oat-project-implement` to begin execution."
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Glob, Grep
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.2.
|
|
8
|
+
version: 1.2.37
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Plan Writing Contract
|
|
@@ -87,8 +87,8 @@ then continue without formatting.
|
|
|
87
87
|
## Managed Dispatch Readiness and Review Contract
|
|
88
88
|
|
|
89
89
|
All plan-producing workflows and their artifact reviews use this contract:
|
|
90
|
-
spec-driven planning, quick-start, lite planning,
|
|
91
|
-
provider-plan-via-import.
|
|
90
|
+
spec-driven planning, quick-start, lite planning, brief and goal authoring,
|
|
91
|
+
imported plans, and provider-plan-via-import.
|
|
92
92
|
The contract runs before a plan becomes implementation-ready and immediately
|
|
93
93
|
before each artifact review dispatch.
|
|
94
94
|
|
|
@@ -564,7 +564,7 @@ Every `plan.md` produced or edited by any OAT skill **must** satisfy these invar
|
|
|
564
564
|
|
|
565
565
|
```yaml
|
|
566
566
|
---
|
|
567
|
-
oat_plan_source: spec-driven | quick | imported | lite # origin workflow mode
|
|
567
|
+
oat_plan_source: spec-driven | quick | imported | lite | brief | goal # origin workflow mode
|
|
568
568
|
oat_status: in_progress | complete # plan lifecycle status
|
|
569
569
|
oat_ready_for: null | oat-project-implement # downstream consumer
|
|
570
570
|
# Optional after implementation confirmation:
|
|
@@ -669,11 +669,15 @@ Required inputs vary by workflow mode. The calling skill reads `oat_workflow_mod
|
|
|
669
669
|
| `quick` | `discovery.md` + repo knowledge context | No |
|
|
670
670
|
| `import` | Preserved external source + normalized `plan.md` | No |
|
|
671
671
|
| `lite` | `plan.md` only | No |
|
|
672
|
+
| `brief` | `plan.md` (Project Brief) from the interview | No |
|
|
673
|
+
| `goal` | `plan.md` (Project Brief with Milestones) | No |
|
|
672
674
|
|
|
673
675
|
- **`spec-driven`**: Plan is derived from a complete design document. All design components must be covered by tasks.
|
|
674
676
|
- **`quick`**: Plan is generated directly from discovery decisions and repo knowledge. No design artifact is required.
|
|
675
677
|
- **`import`**: External plan is preserved in `references/imported-plan.md` and normalized into canonical format. Subsequent edits follow this contract.
|
|
676
678
|
- **`lite`**: `plan.md` is the sole requirements and implementation contract. It carries Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria before one sequential phase; no discovery, spec, or design artifact is required.
|
|
679
|
+
- **`brief`**: `plan.md` is the Project Brief authored by `oat-project-brief`: Goal, Outcomes with intended evidence, Approach, Decisions, Known Unknowns, and `## Phase pNN:` blocks with Intent and Exit evidence instead of tasks. `oat project validate-plan` applies the brief profile. Stable Task IDs, task totals, and the task grammar in this contract do not apply to the brief; execution records live in `implementation.md`, and the Reviews preservation rules apply unchanged.
|
|
680
|
+
- **`goal`**: `plan.md` is a Project Brief authored and amended by `oat-project-goal`, with the brief rules above plus a canonical `## Milestones` table (`oat-project-brief/references/brief-contract.md` section 12.1). `oat project validate-plan` applies the goal profile on top of the brief profile. Each milestone's approval is evidenced by its `oat_milestone_gates[mNN].plan` carrier after the first approval (section 12.4).
|
|
677
681
|
|
|
678
682
|
## Resume and Edit Guardrails
|
|
679
683
|
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: false
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Bash(awk:*), Bash(gh:*), Bash(git:*), Bash(mktemp:*), Bash(oat:*), Bash(rm:*), Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.6.
|
|
8
|
+
version: 1.6.11
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Project PR (Final)
|
|
@@ -29,6 +29,9 @@ Generate a PR-ready summary grounded in canonical OAT artifacts, including:
|
|
|
29
29
|
- In `spec-driven` mode: `{PROJECT_PATH}/spec.md` and `{PROJECT_PATH}/design.md` are required
|
|
30
30
|
- In `quick`/`import`/`lite` mode: `spec.md`/`design.md` are optional; lite
|
|
31
31
|
proceeds with a reduced assurance note because plan.md is its full contract
|
|
32
|
+
- In `brief` mode: `plan.md` (the Project Brief) and `implementation.md` are
|
|
33
|
+
required, `discovery.md`/`spec.md`/`design.md` are absent by design, and
|
|
34
|
+
`summary.md` is required exactly as in quick mode
|
|
32
35
|
|
|
33
36
|
**Required (recommended to proceed):**
|
|
34
37
|
|
|
@@ -177,7 +180,56 @@ If `WORKFLOW_MODE=spec-driven`, also require:
|
|
|
177
180
|
ls "$PROJECT_PATH/spec.md" "$PROJECT_PATH/design.md" 2>/dev/null
|
|
178
181
|
```
|
|
179
182
|
|
|
180
|
-
If `WORKFLOW_MODE` is `quick`, `import`, or `
|
|
183
|
+
If `WORKFLOW_MODE` is `quick`, `import`, `lite`, or `brief`, proceed without spec/design and include a reduced assurance note in the PR body. For lite, explicitly note that plan.md is the reduced artifact contract and the absence of discovery/spec/design is intentional. For brief, the note names the Project Brief (`plan.md`) as the requirements contract, audited against its numbered Outcomes, with the phase journal as the evidence record; the absence of discovery/spec/design is intentional.
|
|
184
|
+
|
|
185
|
+
**Goal mode (`oat_workflow_mode: goal`).** pr-final is the terminal delivery
|
|
186
|
+
registration owner, not a second project PR (brief contract sections 12.7 and
|
|
187
|
+
12.9). Run Step 1.5 instead of Steps 2–6.
|
|
188
|
+
|
|
189
|
+
### Step 1.5: Goal Terminal Delivery Registration (`goal` only)
|
|
190
|
+
|
|
191
|
+
1. **Declaration first.** Require `oat_goal_status: declared_met` and a valid
|
|
192
|
+
outcome audit: run `oat project closeout-check "$PROJECT_PATH" --json`
|
|
193
|
+
(read-only). A `not-declared` or `audit-invalid` refusal routes to
|
|
194
|
+
`oat-project-goal`; refusals naming the review owners, scoped implement, or
|
|
195
|
+
`oat-project-pr-progress` route there. Continue only when the remaining
|
|
196
|
+
refusal is `phase-uncovered` (`nextOwner.skill: oat-project-pr-final`).
|
|
197
|
+
2. **No redundant PR.** When the boundary reports no uncovered accepted phase,
|
|
198
|
+
delivery coverage already holds: create no pull request, write no state, and
|
|
199
|
+
report that the configured `pr` step is satisfied by delivery coverage at its
|
|
200
|
+
position (implement records `satisfied_by: { pr: delivery-coverage }`).
|
|
201
|
+
3. **Terminal scope.** The terminal delivery's frozen `scope` is the uncovered
|
|
202
|
+
accepted phases named by the refusal, ordered by the brief, never audited
|
|
203
|
+
`deferred`, `retired`, or `extracted` phases. A delivery never spans
|
|
204
|
+
milestones (`goal-delivered-scope-changed`), so uncovered phases in several
|
|
205
|
+
milestones register one terminal delivery per milestone, in milestone order.
|
|
206
|
+
Registered from one head branch, they share the same member pull request:
|
|
207
|
+
the second delivery's `gh pr list` attach finds the PR the first one
|
|
208
|
+
created, and that shared member is expected, not a duplicate
|
|
209
|
+
(`oat-project-brief/references/brief-contract.md` section 12.7, Shared
|
|
210
|
+
members). Coverage judges each delivery's own scope and bound evidence.
|
|
211
|
+
4. **Same registration contract.** Load the current
|
|
212
|
+
`oat-project-pr-progress/SKILL.md` and, for each terminal delivery, run its
|
|
213
|
+
Step 5.5 steps 1–3 and 4–7 as written (never step 3a, which
|
|
214
|
+
re-checks the active milestone's own registered delivery) with `kind: pr`: refresh, a
|
|
215
|
+
deliverable `oat project delivery check` (`status: ok`) for the subject,
|
|
216
|
+
stale evidence stopping before registration, the `registering` entry with
|
|
217
|
+
its lookup keys, reciprocal links, the integrated review and the captured
|
|
218
|
+
`exit_gate`, idempotent create-or-attach through `gh pr list`, and the
|
|
219
|
+
member and `status: open` record. The Step 5 ledger-path guard runs before
|
|
220
|
+
`gh pr create`. While the boundary still reports `phase-uncovered`, a
|
|
221
|
+
`summary` step configured before `pr` writes only project-directory files
|
|
222
|
+
and defers its repo-level ledger and decision-record
|
|
223
|
+
writes until this registration is done (`oat-project-summary` Step 6, Goal
|
|
224
|
+
terminal deferral), so the terminal subject stays deliverable.
|
|
225
|
+
5. **Log.** After the registration commit, append exactly one structural entry
|
|
226
|
+
and commit it in this step:
|
|
227
|
+
`oat project log append --project "$PROJECT_PATH" --structural --producer oat-project-pr-final --ref <dNN> --idempotency-key "<goal-slug>-register-<dNN>" --body "Registered terminal delivery <dNN> (<ordered phase ids>) at <url>; <goal-slug>-register-<dNN>"`.
|
|
228
|
+
Never pre-check log configuration: the helper no-ops when logging is
|
|
229
|
+
disabled.
|
|
230
|
+
6. Re-run `oat project closeout-check "$PROJECT_PATH" --json` and report the
|
|
231
|
+
next owner. Coverage completes only when every terminal delivery reaches its
|
|
232
|
+
agreed endpoint (`oat project delivery refresh` observes it).
|
|
181
233
|
|
|
182
234
|
### Step 2: Check Final Review Status
|
|
183
235
|
|
|
@@ -254,6 +306,10 @@ only for the remaining available artifacts; do not invoke
|
|
|
254
306
|
`oat-project-summary` for lite. This branch ends Step 3.0 and jumps directly to
|
|
255
307
|
Step 3.1.
|
|
256
308
|
|
|
309
|
+
Brief projects take the non-lite branch below: `summary.md` is generated or
|
|
310
|
+
refreshed exactly as in quick mode, with freshness decided by
|
|
311
|
+
`oat_summary_phase_fingerprint` (`oat-project-summary` Step 3).
|
|
312
|
+
|
|
257
313
|
**Non-lite branch only:** If the route contract sets
|
|
258
314
|
`GENERIC_SUMMARY_REACHABLE=true`, check if `{PROJECT_PATH}/summary.md` exists:
|
|
259
315
|
|
|
@@ -277,6 +333,11 @@ Read:
|
|
|
277
333
|
- `{PROJECT_PATH}/discovery.md` (recommended for quick mode)
|
|
278
334
|
- `{PROJECT_PATH}/references/imported-plan.md` (recommended for import mode)
|
|
279
335
|
|
|
336
|
+
In brief mode `plan.md` is the Project Brief (Goal, Outcomes, Approach,
|
|
337
|
+
Constraints and Out of Scope, Decisions, phases, and Reviews) and
|
|
338
|
+
`implementation.md` is the per-phase journal; spec, design, and discovery are
|
|
339
|
+
absent by design and are not read.
|
|
340
|
+
|
|
280
341
|
If `implementation.md` exists, check for a filled `## Final Summary (for PR/docs)` section:
|
|
281
342
|
|
|
282
343
|
- If missing or obviously empty, warn the user that PR/docs quality will suffer and recommend:
|
|
@@ -388,7 +449,7 @@ oat_project: { PROJECT_PATH }
|
|
|
388
449
|
|
|
389
450
|
## Goals / Non-Goals
|
|
390
451
|
|
|
391
|
-
{brief bullets from available requirement artifacts: spec in spec-driven mode; discovery/import source in quick/import; plan contract in lite}
|
|
452
|
+
{brief bullets from available requirement artifacts: spec in spec-driven mode; discovery/import source in quick/import; plan contract in lite; the brief's Goal, Outcomes, and Constraints and Out of Scope in brief}
|
|
392
453
|
|
|
393
454
|
## Changes
|
|
394
455
|
|
|
@@ -775,3 +836,4 @@ If `state.md` is missing, skip with a warning.
|
|
|
775
836
|
- User has clear next step to open PR (manual or gh)
|
|
776
837
|
- Project `state.md` shows `oat_phase_status: pr_open`
|
|
777
838
|
- Next milestone references both `oat-project-revise` (for feedback) and both supported `oat-project-complete` orderings
|
|
839
|
+
- Goal mode: a terminal delivery was registered only after a valid declaration and audit, only for uncovered accepted phases, through the pr-progress registration contract, with one structural log entry per registration; no PR was created when coverage already held
|