@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.
Files changed (132) hide show
  1. package/README.md +2 -1
  2. package/assets/agents/oat-phase-implementer.md +104 -3
  3. package/assets/agents/oat-reviewer.md +20 -5
  4. package/assets/bundle-metadata.json +1 -1
  5. package/assets/docs/reference/cli-reference.md +15 -7
  6. package/assets/docs/reference/oat-directory-structure.md +2 -0
  7. package/assets/docs/reference/project-artifacts.md +72 -1
  8. package/assets/docs/reference/project-state-machine.md +55 -6
  9. package/assets/docs/skills/brainstorm.md +3 -1
  10. package/assets/docs/skills/index.md +13 -9
  11. package/assets/docs/workflows/advanced/autonomy.md +12 -2
  12. package/assets/docs/workflows/advanced/dispatch-ceiling.md +2 -2
  13. package/assets/docs/workflows/advanced/workflow-gates.md +25 -7
  14. package/assets/docs/workflows/approvals-and-automation.md +25 -9
  15. package/assets/docs/workflows/choose-workflow.md +24 -8
  16. package/assets/docs/workflows/ideas/index.md +1 -1
  17. package/assets/docs/workflows/ideas/lifecycle.md +3 -2
  18. package/assets/docs/workflows/projects/closeout/closeout-skills.md +83 -5
  19. package/assets/docs/workflows/projects/closeout/pr-flow.md +9 -1
  20. package/assets/docs/workflows/projects/execution/execution-skills.md +27 -2
  21. package/assets/docs/workflows/projects/execution/implementation-execution.md +15 -0
  22. package/assets/docs/workflows/projects/execution/picking-up-projects.md +20 -1
  23. package/assets/docs/workflows/projects/lifecycle.md +172 -9
  24. package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
  25. package/assets/docs/workflows/projects/planning/planning-skills.md +13 -10
  26. package/assets/docs/workflows/projects/planning/starting-projects.md +138 -20
  27. package/assets/docs/workflows/projects/reviews/index.md +36 -2
  28. package/assets/docs/workflows/projects/reviews/review-flavors.md +7 -3
  29. package/assets/public-package-versions.json +4 -4
  30. package/assets/skills/oat-brainstorm/SKILL.md +58 -9
  31. package/assets/skills/oat-brainstorm/references/destinations.md +12 -4
  32. package/assets/skills/oat-docs/SKILL.md +13 -4
  33. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  34. package/assets/skills/oat-project-autonomous/SKILL.md +20 -8
  35. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +156 -122
  36. package/assets/skills/oat-project-brief/SKILL.md +592 -0
  37. package/assets/skills/oat-project-brief/references/brief-contract.md +743 -0
  38. package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +412 -0
  39. package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +93 -0
  40. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  41. package/assets/skills/oat-project-complete/SKILL.md +16 -2
  42. package/assets/skills/oat-project-discover/SKILL.md +4 -2
  43. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
  44. package/assets/skills/oat-project-document/SKILL.md +17 -1
  45. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +156 -122
  46. package/assets/skills/oat-project-goal/SKILL.md +697 -0
  47. package/assets/skills/oat-project-goal/references/docs/autonomy-contract.md +412 -0
  48. package/assets/skills/oat-project-goal/references/docs/gate-approval-record.md +93 -0
  49. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  50. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +107 -0
  51. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +156 -122
  52. package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +13 -0
  53. package/assets/skills/oat-project-implement/references/phase-execution.md +173 -1
  54. package/assets/skills/oat-project-implement/references/plan-and-resume.md +124 -3
  55. package/assets/skills/oat-project-import-plan/SKILL.md +5 -1
  56. package/assets/skills/oat-project-lite/SKILL.md +4 -1
  57. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +156 -122
  58. package/assets/skills/oat-project-new/SKILL.md +5 -1
  59. package/assets/skills/oat-project-next/SKILL.md +71 -14
  60. package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +13 -0
  61. package/assets/skills/oat-project-plan/SKILL.md +24 -3
  62. package/assets/skills/oat-project-plan-writing/SKILL.md +8 -4
  63. package/assets/skills/oat-project-pr-final/SKILL.md +65 -3
  64. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +156 -122
  65. package/assets/skills/oat-project-pr-progress/SKILL.md +125 -4
  66. package/assets/skills/oat-project-progress/SKILL.md +63 -8
  67. package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +13 -0
  68. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
  69. package/assets/skills/oat-project-quick-start/SKILL.md +65 -1
  70. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +156 -122
  71. package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +13 -0
  72. package/assets/skills/oat-project-reconcile/SKILL.md +94 -3
  73. package/assets/skills/oat-project-review-provide/SKILL.md +397 -12
  74. package/assets/skills/oat-project-review-receive/SKILL.md +155 -1
  75. package/assets/skills/oat-project-revise/SKILL.md +51 -4
  76. package/assets/skills/oat-project-summary/SKILL.md +150 -2
  77. package/assets/skills/oat-wave-execute/SKILL.md +3 -2
  78. package/assets/templates/implementation-brief.md +165 -0
  79. package/assets/templates/plan-brief.md +140 -0
  80. package/assets/templates/plan.md +1 -1
  81. package/assets/templates/state.md +8 -2
  82. package/dist/commands/project/closeout-check/closeout-invariant.d.ts +119 -3
  83. package/dist/commands/project/closeout-check/closeout-invariant.d.ts.map +1 -1
  84. package/dist/commands/project/closeout-check/closeout-invariant.js +454 -2
  85. package/dist/commands/project/closeout-check/index.d.ts +21 -3
  86. package/dist/commands/project/closeout-check/index.d.ts.map +1 -1
  87. package/dist/commands/project/closeout-check/index.js +190 -4
  88. package/dist/commands/project/complete-state/index.d.ts +2 -1
  89. package/dist/commands/project/complete-state/index.d.ts.map +1 -1
  90. package/dist/commands/project/complete-state/index.js +7 -1
  91. package/dist/commands/project/delivery/check.d.ts +66 -0
  92. package/dist/commands/project/delivery/check.d.ts.map +1 -0
  93. package/dist/commands/project/delivery/check.js +232 -0
  94. package/dist/commands/project/delivery/evidence.d.ts +171 -0
  95. package/dist/commands/project/delivery/evidence.d.ts.map +1 -0
  96. package/dist/commands/project/delivery/evidence.js +902 -0
  97. package/dist/commands/project/delivery/index.d.ts +7 -0
  98. package/dist/commands/project/delivery/index.d.ts.map +1 -0
  99. package/dist/commands/project/delivery/index.js +13 -0
  100. package/dist/commands/project/delivery/refresh.d.ts +110 -0
  101. package/dist/commands/project/delivery/refresh.d.ts.map +1 -0
  102. package/dist/commands/project/delivery/refresh.js +441 -0
  103. package/dist/commands/project/index.d.ts.map +1 -1
  104. package/dist/commands/project/index.js +2 -0
  105. package/dist/commands/project/log/append.d.ts +6 -0
  106. package/dist/commands/project/log/append.d.ts.map +1 -1
  107. package/dist/commands/project/log/append.js +6 -1
  108. package/dist/commands/project/new/scaffold.d.ts +1 -1
  109. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  110. package/dist/commands/project/new/scaffold.js +81 -7
  111. package/dist/commands/project/promote/promote.d.ts +46 -1
  112. package/dist/commands/project/promote/promote.d.ts.map +1 -1
  113. package/dist/commands/project/promote/promote.js +646 -5
  114. package/dist/commands/project/validate-plan/frontmatter.d.ts +12 -0
  115. package/dist/commands/project/validate-plan/frontmatter.d.ts.map +1 -0
  116. package/dist/commands/project/validate-plan/frontmatter.js +27 -0
  117. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  118. package/dist/commands/project/validate-plan/index.js +62 -18
  119. package/dist/commands/project/validate-plan/profiles.d.ts +69 -0
  120. package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
  121. package/dist/commands/project/validate-plan/profiles.js +420 -0
  122. package/dist/commands/project/validate-plan/validate-plan.d.ts +3 -19
  123. package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
  124. package/dist/commands/project/validate-plan/validate-plan.js +5 -82
  125. package/dist/commands/shared/frontmatter.d.ts +1 -1
  126. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  127. package/dist/commands/shared/frontmatter.js +2 -0
  128. package/dist/commands/state/generate.d.ts.map +1 -1
  129. package/dist/commands/state/generate.js +82 -2
  130. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  131. package/dist/commands/tools/shared/pack-manifest.js +4 -0
  132. 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.3
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.5
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`, and `lite` projects.
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.17
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 lite modes have dedicated entry skills that produce `plan.md`
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.35
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, imported plans, and
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.9
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 `lite`, 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.
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