@open-agent-toolkit/cli 0.3.17 → 0.3.19

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 (109) hide show
  1. package/assets/agents/oat-phase-implementer.md +81 -3
  2. package/assets/agents/oat-reviewer.md +15 -5
  3. package/assets/bundle-metadata.json +1 -1
  4. package/assets/docs/reference/cli-reference.md +8 -5
  5. package/assets/docs/reference/oat-directory-structure.md +1 -0
  6. package/assets/docs/reference/project-artifacts.md +17 -1
  7. package/assets/docs/reference/project-state-machine.md +19 -4
  8. package/assets/docs/skills/brainstorm.md +2 -1
  9. package/assets/docs/skills/index.md +1 -0
  10. package/assets/docs/workflows/advanced/autonomy.md +9 -1
  11. package/assets/docs/workflows/advanced/workflow-gates.md +11 -6
  12. package/assets/docs/workflows/approvals-and-automation.md +13 -8
  13. package/assets/docs/workflows/choose-workflow.md +16 -8
  14. package/assets/docs/workflows/projects/closeout/closeout-skills.md +8 -3
  15. package/assets/docs/workflows/projects/closeout/pr-flow.md +2 -0
  16. package/assets/docs/workflows/projects/execution/execution-skills.md +14 -2
  17. package/assets/docs/workflows/projects/execution/implementation-execution.md +15 -0
  18. package/assets/docs/workflows/projects/execution/picking-up-projects.md +10 -1
  19. package/assets/docs/workflows/projects/execution/project-log.md +22 -0
  20. package/assets/docs/workflows/projects/lifecycle.md +73 -9
  21. package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
  22. package/assets/docs/workflows/projects/planning/planning-skills.md +11 -10
  23. package/assets/docs/workflows/projects/planning/starting-projects.md +92 -20
  24. package/assets/docs/workflows/projects/reviews/index.md +15 -2
  25. package/assets/docs/workflows/projects/reviews/review-flavors.md +5 -3
  26. package/assets/public-package-versions.json +4 -4
  27. package/assets/skills/oat-brainstorm/SKILL.md +33 -9
  28. package/assets/skills/oat-brainstorm/references/destinations.md +9 -4
  29. package/assets/skills/oat-docs/SKILL.md +9 -4
  30. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  31. package/assets/skills/oat-project-autonomous/SKILL.md +14 -8
  32. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +17 -2
  33. package/assets/skills/oat-project-brief/SKILL.md +592 -0
  34. package/assets/skills/oat-project-brief/references/brief-contract.md +294 -0
  35. package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +393 -0
  36. package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +84 -0
  37. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  38. package/assets/skills/oat-project-complete/SKILL.md +7 -2
  39. package/assets/skills/oat-project-discover/SKILL.md +3 -2
  40. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
  41. package/assets/skills/oat-project-document/SKILL.md +11 -1
  42. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +17 -2
  43. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  44. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +40 -0
  45. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +17 -2
  46. package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +4 -0
  47. package/assets/skills/oat-project-implement/references/phase-execution.md +166 -1
  48. package/assets/skills/oat-project-implement/references/plan-and-resume.md +97 -3
  49. package/assets/skills/oat-project-import-plan/SKILL.md +5 -1
  50. package/assets/skills/oat-project-lite/SKILL.md +4 -1
  51. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +17 -2
  52. package/assets/skills/oat-project-new/SKILL.md +5 -1
  53. package/assets/skills/oat-project-next/SKILL.md +31 -4
  54. package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +4 -0
  55. package/assets/skills/oat-project-plan/SKILL.md +12 -2
  56. package/assets/skills/oat-project-plan-writing/SKILL.md +6 -4
  57. package/assets/skills/oat-project-pr-final/SKILL.md +15 -3
  58. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +17 -2
  59. package/assets/skills/oat-project-pr-progress/SKILL.md +31 -4
  60. package/assets/skills/oat-project-progress/SKILL.md +30 -8
  61. package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +4 -0
  62. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
  63. package/assets/skills/oat-project-quick-start/SKILL.md +60 -1
  64. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +17 -2
  65. package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +4 -0
  66. package/assets/skills/oat-project-reconcile/SKILL.md +65 -3
  67. package/assets/skills/oat-project-review-provide/SKILL.md +331 -12
  68. package/assets/skills/oat-project-review-receive/SKILL.md +86 -1
  69. package/assets/skills/oat-project-revise/SKILL.md +27 -4
  70. package/assets/skills/oat-project-summary/SKILL.md +95 -2
  71. package/assets/skills/oat-wave-execute/SKILL.md +3 -2
  72. package/assets/templates/implementation-brief.md +165 -0
  73. package/assets/templates/plan-brief.md +140 -0
  74. package/assets/templates/plan.md +1 -1
  75. package/assets/templates/state.md +8 -2
  76. package/dist/commands/init/tools/shared/skill-script-references.d.ts.map +1 -1
  77. package/dist/commands/init/tools/shared/skill-script-references.js +8 -1
  78. package/dist/commands/project/log/append.d.ts.map +1 -1
  79. package/dist/commands/project/log/append.js +70 -10
  80. package/dist/commands/project/new/scaffold.d.ts +1 -1
  81. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  82. package/dist/commands/project/new/scaffold.js +35 -7
  83. package/dist/commands/project/promote/promote.d.ts +32 -1
  84. package/dist/commands/project/promote/promote.d.ts.map +1 -1
  85. package/dist/commands/project/promote/promote.js +562 -5
  86. package/dist/commands/project/validate-plan/frontmatter.d.ts +12 -0
  87. package/dist/commands/project/validate-plan/frontmatter.d.ts.map +1 -0
  88. package/dist/commands/project/validate-plan/frontmatter.js +27 -0
  89. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  90. package/dist/commands/project/validate-plan/index.js +52 -18
  91. package/dist/commands/project/validate-plan/profiles.d.ts +54 -0
  92. package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
  93. package/dist/commands/project/validate-plan/profiles.js +269 -0
  94. package/dist/commands/project/validate-plan/validate-plan.d.ts +3 -19
  95. package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
  96. package/dist/commands/project/validate-plan/validate-plan.js +5 -82
  97. package/dist/commands/shared/agents-md-lock.d.ts +3 -0
  98. package/dist/commands/shared/agents-md-lock.d.ts.map +1 -0
  99. package/dist/commands/shared/agents-md-lock.js +130 -0
  100. package/dist/commands/shared/agents-md.d.ts.map +1 -1
  101. package/dist/commands/shared/agents-md.js +26 -8
  102. package/dist/commands/shared/frontmatter.d.ts +1 -1
  103. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  104. package/dist/commands/shared/frontmatter.js +1 -0
  105. package/dist/commands/state/generate.d.ts.map +1 -1
  106. package/dist/commands/state/generate.js +51 -2
  107. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  108. package/dist/commands/tools/shared/pack-manifest.js +3 -0
  109. package/package.json +2 -2
@@ -0,0 +1,294 @@
1
+ # Brief Contract
2
+
3
+ This is the shared contract for brief-family workflow modes. `brief` delivers
4
+ once; `goal` (many milestones) will extend this contract and its sections are
5
+ reserved below. Lifecycle skills and agent roles that read a brief project
6
+ follow these rules; where a skill restates a rule, this file wins.
7
+
8
+ ## 1. The Project Brief
9
+
10
+ A brief project has one authored artifact: `plan.md`, titled "Project Brief",
11
+ scaffolded from the `plan-brief` template. Its frontmatter is the ordinary plan
12
+ frontmatter with `oat_plan_source: brief`, so plan consumers keep working.
13
+ Only the body differs. Sections, in order:
14
+
15
+ | Section | Content |
16
+ | ------------------------------- | --------------------------------------------------------------------------------------------------------- |
17
+ | Goal | The outcome and why it matters. |
18
+ | Outcomes | Numbered observable outcomes, each naming its intended evidence. Completion is audited against this list. |
19
+ | Approach | The agreed architecture. An optional `### Design` subsection; longer notes go in `references/`. |
20
+ | Constraints and Out of Scope | Rules the work respects and adjacent work excluded. |
21
+ | Decisions | One line and rationale per decision, including the alternatives rejected. |
22
+ | Known Unknowns | Deliberately open questions, each with the phase that settles it. |
23
+ | Delivery endpoint and authority | What "delivered" means, who approves what, what the agent decides alone. Recorded once and reused. |
24
+ | Milestones | Reserved for goal mode; brief projects leave it empty. |
25
+ | Phases | `## Phase pNN:` blocks (section 2). |
26
+ | Parallelism | Declared phase groups (`oat_plan_parallel_groups`). |
27
+ | Reviews | The review table, preserved row by row. |
28
+ | Implementation Complete | Filled at closeout. |
29
+ | References | Journal, research, and project log locations. |
30
+
31
+ Planned proof lives in the brief; observed evidence lives in
32
+ `implementation.md`. The brief has no Status paragraph and no Continuations
33
+ section, and never carries `### Task` headings.
34
+
35
+ ## 2. Phase grammar
36
+
37
+ Each phase is one `## Phase pNN: <name>` heading, a blank line, and these exact
38
+ lines:
39
+
40
+ ```markdown
41
+ **Intent:** what this phase changes and why
42
+ **Exit evidence:** the verification that shows the phase is done
43
+ **Provisional:** no
44
+ ```
45
+
46
+ - `**Intent:**` and `**Exit evidence:**` are required and non-empty.
47
+ - `**Provisional:**` takes `yes` or `no`; absent means `no`. The first phase is
48
+ never provisional. Only the next phase must be concrete.
49
+ - Phase IDs are stable and never reused. Document order, not numeric order,
50
+ governs execution and review ranges. Revision phases use `p-revN`.
51
+ - Validation is strict and fence-aware: `oat project validate-plan` applies the
52
+ brief profile and reports `brief-no-phases`, `brief-duplicate-phase`,
53
+ `brief-phase-missing-intent`, `brief-phase-missing-exit-evidence`,
54
+ `brief-provisional-invalid`, `brief-first-phase-provisional`, and
55
+ `brief-malformed-phase-heading` as errors, and `brief-task-headings-ignored`
56
+ as a warning.
57
+
58
+ Within the approved outcomes, constraints, authority, and evidence, the agent
59
+ may add, split, or reorder phases and make provisional phases concrete without
60
+ re-approval, logging each change in `project-log.md` when the project log is
61
+ enabled (otherwise in the journal). Parallel groups may be declared whenever
62
+ their phases become concrete.
63
+
64
+ ## 3. Journal and progress
65
+
66
+ `implementation.md` is the per-phase journal. Each `## Phase pNN:` heading in
67
+ the brief is one **phase-unit**. Progress counts units, not tasks.
68
+
69
+ **Phase markers** are exact lines directly under the journal's phase heading:
70
+
71
+ - `**Status:** pending | in_progress | completed | failed | extracted`
72
+ - `**Base:** <full SHA>`, captured before phase work starts
73
+ - `**Head:** <full SHA>`, the candidate head captured when the phase ends
74
+ - `**Executor:** root | phase-implementer:<id> | worker:<id> | inline:<exception-ref> | reconciled`
75
+ - `**Extracted to:** <slug>`, required with `extracted` (goal mode only);
76
+ `extracted` without it reads as `pending`
77
+ - `**Corrects:** pNN` on a revision phase
78
+
79
+ **Marker ownership.** The root writes `**Base:**` in the phase-start commit
80
+ before dispatch; the committing owner writes `**Head:**` when the phase's work
81
+ ends, before its review; only the root writes `**Status:** completed`, at
82
+ acceptance.
83
+
84
+ Phase ownership ends at the next line starting with `#`, including a
85
+ `### Task` heading, so a task record's status is never read as its phase's
86
+ status.
87
+
88
+ **Unit precedence**, per phase: extracted (excluded from totals); provisional
89
+ (always incomplete, regardless of any marker); accepted (`**Status:**
90
+ completed`); otherwise incomplete. `**Status:** completed` means accepted:
91
+ verification, review dispositions, queued fixes, and selected gates are
92
+ settled. Finalization requires every unit in scope to be accepted.
93
+
94
+ ## 4. Readiness and the design strand
95
+
96
+ The interview is conversational and runs in readiness rounds. Batch
97
+ independent questions, sequence dependent ones, and ask a single question when
98
+ its answer reshapes the rest. Each question carries a recommendation and its
99
+ tradeoff.
100
+
101
+ - **Facts** that code, docs, or research can settle are the agent's job and
102
+ never become questions; resolve them without blocking the round.
103
+ - **Decisions** belong to the user.
104
+ - **Design strand**, proportional to the work: architecture (components,
105
+ boundaries, interfaces, data shapes, where the work sits); behavior (what a
106
+ user or caller observes, captured as Outcomes); alternatives and tradeoffs
107
+ for each consequential decision, with a recommendation and its cost;
108
+ risks and unknowns, which become research or prototype phases.
109
+ - Questions that matter inside one phase go to Known Unknowns with the phase
110
+ that settles them; only decisions that change the brief or the phase split
111
+ stay in the interview.
112
+
113
+ **Readiness** is design alignment, not a round count: outcome, boundaries,
114
+ approach, evidence, and remaining uncertainty are understood and the user has
115
+ explicitly accepted the design. Brief approval confirms a design the user has
116
+ already agreed to; it is never the first time the user sees it. Interview
117
+ length alone never forces a different workflow.
118
+
119
+ **Realignment.** A material change (to an Outcome, a Constraint, the
120
+ authority, the endpoint, a reversal of a Decision, or a departure from the
121
+ Approach) triggers a short, focused realignment with the user before work
122
+ continues. Phase-local design inside the agreed Approach is the agent's
123
+ decision and is logged.
124
+
125
+ ## 5. Review ladder
126
+
127
+ Before implementation:
128
+
129
+ 1. The brief is written and committed.
130
+ 2. Independent artifact review of the committed brief. The reviewer gets the
131
+ brief and this contract, not the session. Minor findings are folded;
132
+ material findings return to the user as a focused realignment.
133
+ 3. The configured gate for `oat-project-brief` runs on the committed bundle
134
+ (reruns bounded by its `maxAttempts`). Its outcome is recorded as
135
+ `oat_brief_gate` with the core fields of the gate approval record.
136
+ 4. One user approval of the reviewed brief.
137
+
138
+ During implementation:
139
+
140
+ 1. Author self-check with fresh verification evidence, and outcomes re-read
141
+ against the brief.
142
+ 2. A fresh independent review of each phase on its anchored range.
143
+ 3. The optional `oat_phase_review_gate`, unchanged and off by default.
144
+ 4. A final integrated independent review.
145
+ 5. The configured implement exit gate.
146
+
147
+ Exhausted correction rounds never convert blocking findings into acceptance.
148
+
149
+ ## 6. Execution precedence
150
+
151
+ Project scheduling is separate from phase execution:
152
+
153
+ 1. Run ready, concrete, declared parallel phase groups (worktree per phase,
154
+ merged back in document order).
155
+ 2. For a non-group phase, fan out from the root when at least two bounded
156
+ slices pass the independence test.
157
+ 3. Otherwise delegate one phase implementer.
158
+ 4. Work inline only through an exception recorded before editing that holds
159
+ for the whole phase: no new surface, no unresolved design, no consequential
160
+ change, and one existing proof command. File count alone is not a
161
+ predicate; reclassify when scope grows.
162
+
163
+ **Independence test** for phases and slices alike: no shared files, state,
164
+ generated files, lockfiles, formatter or build output, fixtures, or services,
165
+ and no sequential dependency. A parallel phase is also a coherent deliverable
166
+ on its own.
167
+
168
+ There is one committing owner per worktree: the root for a root fan-out, the
169
+ phase implementer for its phase worktree. Nested workers return edits on owned
170
+ paths and never commit. Parallel phase worktrees write phase-local records;
171
+ the root reconciles them into `implementation.md` at fan-in. The phase-start
172
+ record names the executor, worktree, committing owner, and the parallelism
173
+ assessment.
174
+
175
+ ## 7. Execution records
176
+
177
+ Tasks are execution records, never a plan:
178
+
179
+ - Open a record when work starts, under its phase in `implementation.md`:
180
+ `### Task pNN-tNN: <name>` with intent, files, proof command, executor, and
181
+ the live handle while in flight.
182
+ - Close it when its implementation commit lands, with the commit SHA and
183
+ `**Status:** completed`, or with a terminal status (`failed`, `cancelled`,
184
+ `no-change`) and no fabricated commit. Bookkeeping and merge commits are
185
+ separate from the one implementation commit.
186
+ - Whoever executes creates the record. Commit messages keep `(pNN-tNN)`.
187
+ - Records are coherent units tied to a commit; not every command or edit
188
+ becomes a record.
189
+ - Lookahead is allowed: the root may sketch several independent records before
190
+ dispatching them together. A maintained, approved up-front task plan is a
191
+ promotion to quick, not lookahead.
192
+ - Records never change phase totals. Task completion is committed execution;
193
+ phase completion is accepted evidence.
194
+ - Resume reconciles open records against `git log` and live handles before any
195
+ redispatch.
196
+
197
+ ## 8. Pointer interpretation
198
+
199
+ `oat_current_task_id` in `implementation.md` may hold a task ID or a phase ID.
200
+ Brief-mode resume resolves a task ID to its phase, a phase ID to itself, and
201
+ `null`, an unknown ID, or an extracted or accepted unit to the first incomplete
202
+ unit in document order within the active scope.
203
+
204
+ ## 9. Record ownership
205
+
206
+ | Record | Owns |
207
+ | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
208
+ | `plan.md` (the brief) | Intent: outcomes, approach, decisions, phases, review table. |
209
+ | `state.md` | Routing, dispatch policy, gate overrides, and the `oat_brief_gate` record. |
210
+ | `implementation.md` | The per-phase journal: status, anchors, verification results, review disposition, authority changes, deviations, next action, records. |
211
+ | `project-log.md` | Observations and phase amendments, when the project log is enabled. |
212
+ | `references/research/` | Research and imported material. |
213
+
214
+ `pr/` and archived reviews are gitignored; nothing authoritative lives only
215
+ there.
216
+
217
+ ## 10. Anchors and review scope
218
+
219
+ Per-phase review scope comes from the recorded `**Base:**` and `**Head:**`
220
+ anchors, not from task-message commit inference. For a requested scope
221
+ (`pNN`, a contiguous document-order run `pNN-pMM`, or `final` for every
222
+ accepted non-extracted phase including revision phases):
223
+
224
+ - every base and head exists, and each base is an ancestor of its head;
225
+ - the aggregate head is the last selected phase's head, and every selected
226
+ phase head is contained in it;
227
+ - sequential phases continue: the next base equals or descends from the
228
+ previous head (bookkeeping commits between phases sit inside the range);
229
+ - a parallel group shares its fork base, and member heads advance in document
230
+ order on the project branch; each head is the member's integration head,
231
+ normally a merge commit, but the merge-commit property is not enforced
232
+ because a member may be integrated by cherry-pick;
233
+ - the range is the first base through the aggregate head.
234
+
235
+ A group member's per-phase review runs before fan-in on
236
+ `EXPECTED_HEAD..<worktree head>` with `oat_review_scope_source: anchors`; the
237
+ fan-in anchors govern `pNN-pMM` and `final`.
238
+
239
+ Missing anchors widen the range to the confirmed merge-base range, using
240
+ `(pNN-` commit-message matches only to label commits, never to narrow. Invalid
241
+ or contradictory anchors stop and route to `oat-project-reconcile`.
242
+
243
+ **Late-fix rule.** Fix commits may advance a phase's `**Head:**`, base
244
+ unchanged, only while no later phase has a `**Base:**`. Once a later phase has
245
+ started, corrections are recorded as an appended revision phase
246
+ `## Phase p-revN:` with its own anchors and `**Corrects:** pNN`; the corrected
247
+ phase keeps its anchors and its review row is re-evaluated by the revision's
248
+ review.
249
+
250
+ ## 11. Promotion to quick
251
+
252
+ Mode changes are manual. A brief becomes a quick project only through:
253
+
254
+ ```bash
255
+ oat project promote "$PROJECT_PATH" --to quick --json
256
+ ```
257
+
258
+ There is no reverse direction. Promotion migrates by phase state:
259
+
260
+ - **Accepted** phases keep their completed execution records, copied into
261
+ `plan.md` as `### Task` entries with the same IDs; failed, cancelled, and
262
+ no-change records stay in the journal and are listed as historical. An
263
+ accepted phase with no completed record gets one synthesized
264
+ `Accepted via phase evidence` task against its phase head.
265
+ - **Active** phases keep completed records; unfinished records become the
266
+ first authored tasks during the promoted-brief resume. No acceptance task is
267
+ synthesized for an unaccepted phase.
268
+ - **Pending or provisional** phases stay taskless and need authored tasks.
269
+
270
+ Promotion sets `oat_promoted_from: brief` and lists every phase still needing
271
+ tasks in `oat_promotion_pending_phases`; quick plan readiness stays false until
272
+ that list is empty. The brief's Goal, Outcomes, Approach, Decisions,
273
+ Constraints, Known Unknowns, and delivery endpoint and authority are rendered
274
+ into `discovery.md`; the original brief is
275
+ archived to `references/brief-archive.md`; existing `## Reviews` rows keep
276
+ their cells, and one provenance line under `## Reviews` states that rows dated
277
+ on or before the promotion were recorded under workflow mode brief.
278
+ `oat-project-quick-start` resumes the promoted project and authors the
279
+ pending tasks.
280
+
281
+ Promotion refuses, writing nothing, with:
282
+
283
+ - `brief-archive-exists`: `references/brief-archive.md` already exists;
284
+ - `extracted-phases`: a journal phase is `extracted`;
285
+ - `invalid-brief-plan`: the brief has no parseable phases;
286
+ - `missing-phase-head`: an accepted phase has no completed record and no
287
+ `**Head:**` anchor to synthesize from (the refused phases are listed).
288
+
289
+ ## 12. Goal mode (reserved)
290
+
291
+ Goal mode adds a `## Milestones` index, milestone state, a delivery registry,
292
+ milestone-scoped gates, re-alignment at each delivered milestone, and terminal
293
+ closeout by verified delivery coverage. It is not registered yet; its
294
+ sections will be added here when it ships.