@open-agent-toolkit/cli 0.3.18 → 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 (99) 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/lifecycle.md +73 -9
  20. package/assets/docs/workflows/projects/planning/hill-checkpoints.md +18 -1
  21. package/assets/docs/workflows/projects/planning/planning-skills.md +11 -10
  22. package/assets/docs/workflows/projects/planning/starting-projects.md +92 -20
  23. package/assets/docs/workflows/projects/reviews/index.md +15 -2
  24. package/assets/docs/workflows/projects/reviews/review-flavors.md +5 -3
  25. package/assets/public-package-versions.json +4 -4
  26. package/assets/skills/oat-brainstorm/SKILL.md +33 -9
  27. package/assets/skills/oat-brainstorm/references/destinations.md +9 -4
  28. package/assets/skills/oat-docs/SKILL.md +9 -4
  29. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  30. package/assets/skills/oat-project-autonomous/SKILL.md +14 -8
  31. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +17 -2
  32. package/assets/skills/oat-project-brief/SKILL.md +592 -0
  33. package/assets/skills/oat-project-brief/references/brief-contract.md +294 -0
  34. package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +393 -0
  35. package/assets/skills/oat-project-brief/references/docs/gate-approval-record.md +84 -0
  36. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  37. package/assets/skills/oat-project-complete/SKILL.md +7 -2
  38. package/assets/skills/oat-project-discover/SKILL.md +3 -2
  39. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +9 -1
  40. package/assets/skills/oat-project-document/SKILL.md +11 -1
  41. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +17 -2
  42. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  43. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +40 -0
  44. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +17 -2
  45. package/assets/skills/oat-project-implement/references/docs/gate-approval-record.md +4 -0
  46. package/assets/skills/oat-project-implement/references/phase-execution.md +166 -1
  47. package/assets/skills/oat-project-implement/references/plan-and-resume.md +97 -3
  48. package/assets/skills/oat-project-import-plan/SKILL.md +5 -1
  49. package/assets/skills/oat-project-lite/SKILL.md +4 -1
  50. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +17 -2
  51. package/assets/skills/oat-project-new/SKILL.md +5 -1
  52. package/assets/skills/oat-project-next/SKILL.md +31 -4
  53. package/assets/skills/oat-project-next/references/docs/gate-approval-record.md +4 -0
  54. package/assets/skills/oat-project-plan/SKILL.md +12 -2
  55. package/assets/skills/oat-project-plan-writing/SKILL.md +6 -4
  56. package/assets/skills/oat-project-pr-final/SKILL.md +15 -3
  57. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +17 -2
  58. package/assets/skills/oat-project-pr-progress/SKILL.md +31 -4
  59. package/assets/skills/oat-project-progress/SKILL.md +30 -8
  60. package/assets/skills/oat-project-progress/references/docs/gate-approval-record.md +4 -0
  61. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -2
  62. package/assets/skills/oat-project-quick-start/SKILL.md +60 -1
  63. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +17 -2
  64. package/assets/skills/oat-project-quick-start/references/docs/gate-approval-record.md +4 -0
  65. package/assets/skills/oat-project-reconcile/SKILL.md +65 -3
  66. package/assets/skills/oat-project-review-provide/SKILL.md +331 -12
  67. package/assets/skills/oat-project-review-receive/SKILL.md +86 -1
  68. package/assets/skills/oat-project-revise/SKILL.md +27 -4
  69. package/assets/skills/oat-project-summary/SKILL.md +95 -2
  70. package/assets/skills/oat-wave-execute/SKILL.md +3 -2
  71. package/assets/templates/implementation-brief.md +165 -0
  72. package/assets/templates/plan-brief.md +140 -0
  73. package/assets/templates/plan.md +1 -1
  74. package/assets/templates/state.md +8 -2
  75. package/dist/commands/project/new/scaffold.d.ts +1 -1
  76. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  77. package/dist/commands/project/new/scaffold.js +35 -7
  78. package/dist/commands/project/promote/promote.d.ts +32 -1
  79. package/dist/commands/project/promote/promote.d.ts.map +1 -1
  80. package/dist/commands/project/promote/promote.js +562 -5
  81. package/dist/commands/project/validate-plan/frontmatter.d.ts +12 -0
  82. package/dist/commands/project/validate-plan/frontmatter.d.ts.map +1 -0
  83. package/dist/commands/project/validate-plan/frontmatter.js +27 -0
  84. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  85. package/dist/commands/project/validate-plan/index.js +52 -18
  86. package/dist/commands/project/validate-plan/profiles.d.ts +54 -0
  87. package/dist/commands/project/validate-plan/profiles.d.ts.map +1 -0
  88. package/dist/commands/project/validate-plan/profiles.js +269 -0
  89. package/dist/commands/project/validate-plan/validate-plan.d.ts +3 -19
  90. package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
  91. package/dist/commands/project/validate-plan/validate-plan.js +5 -82
  92. package/dist/commands/shared/frontmatter.d.ts +1 -1
  93. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  94. package/dist/commands/shared/frontmatter.js +1 -0
  95. package/dist/commands/state/generate.d.ts.map +1 -1
  96. package/dist/commands/state/generate.js +51 -2
  97. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  98. package/dist/commands/tools/shared/pack-manifest.js +3 -0
  99. package/package.json +2 -2
@@ -5,7 +5,7 @@ disable-model-invocation: false
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 1.3.8
8
+ version: 1.3.9
9
9
  ---
10
10
 
11
11
  # Brainstorm
@@ -238,7 +238,7 @@ ACTIVE_PROJECT_PR_STATUS=""
238
238
  if [ -n "$ACTIVE_PROJECT" ] && [ -f "$ACTIVE_PROJECT/state.md" ]; then
239
239
  ACTIVE_PROJECT_VALID="true"
240
240
  # Read state.md frontmatter — extract:
241
- # oat_workflow_mode → ACTIVE_PROJECT_MODE (e.g., "spec-driven", "quick", "lite")
241
+ # oat_workflow_mode → ACTIVE_PROJECT_MODE (e.g., "spec-driven", "quick", "import", "lite", "brief")
242
242
  # oat_phase → ACTIVE_PROJECT_PHASE (e.g., "discovery", "design", "plan", "implement")
243
243
  # oat_pr_status → ACTIVE_PROJECT_PR_STATUS (e.g., "none", "open", "closed")
244
244
  fi
@@ -401,8 +401,8 @@ The payload is staged in memory only — it is not persisted between conversatio
401
401
  - Capture as new idea → confirm slug.
402
402
  - Extend existing idea → confirm which idea (slug or path).
403
403
  - Doc-to-path → confirm path.
404
- - Promote to new project → confirm slug + workflow mode (`lite`, `quick`, or `spec-driven`, with skill proposing a default based on the chosen direction and scope signals).
405
- - Active-project fold-back → for lite confirm `plan.md`; otherwise confirm which artifact (`design.md` if exists, else `discovery.md`; user signal can override toward `discovery.md` for foundational changes).
404
+ - Promote to new project → confirm slug + workflow mode (`lite`, `brief`, `quick`, or `spec-driven`, with skill proposing a default based on the chosen direction and scope signals).
405
+ - Active-project fold-back → for lite and brief confirm `plan.md`; for import confirm `design.md` or `discovery.md` when present, else `plan.md`; otherwise confirm which artifact (`design.md` if exists, else `discovery.md`; user signal can override toward `discovery.md` for foundational changes).
406
406
  - Active-project reference file → confirm filename (default `YYYY-MM-DD-<topic>.md`).
407
407
 
408
408
  - **`none`** (currently `Inline only` and `Summarize idea directly`): no per-field confirmation at this layer. For `Inline only`, write the closing summary directly. For `Summarize idea directly`, hand off — the downstream `oat-idea-summarize` surfaces its own summary for accept/refine review.
@@ -510,7 +510,7 @@ End mode assertion when the backlog-add hands control back.
510
510
 
511
511
  #### 9g — Promote to new OAT project
512
512
 
513
- The slug and workflow mode (`lite`, `quick`, or `spec-driven`) were confirmed at
513
+ The slug and workflow mode (`lite`, `brief`, `quick`, or `spec-driven`) were confirmed at
514
514
  step 8. Run:
515
515
 
516
516
  ```bash
@@ -552,6 +552,16 @@ fi
552
552
  # END LITE PROJECT PROMOTION CONTRACT
553
553
  ```
554
554
 
555
+ **Brief branch:** When mode is `brief`, the scaffold holds `plan.md` (the
556
+ `plan-brief` template), `implementation.md`, and `references/research/`, and
557
+ no `discovery.md`. Write the synthesized payload (`summary`, `motivation`,
558
+ `approachesConsidered`, `chosenDirection`, key decisions, `openQuestions`) to
559
+ `<project>/references/research/brainstorm-YYYY-MM-DD.md` and leave `plan.md`
560
+ as scaffolded: `oat-project-brief` authors the brief through its interview,
561
+ reading that research first. Do not create `discovery.md` or `design.md`.
562
+ Leave the project state at plan/in-progress, print the `oat-project-brief`
563
+ handoff, and stop.
564
+
555
565
  **Quick/spec-driven branch:** Only for those two modes, continue with the
556
566
  discovery flow below.
557
567
 
@@ -598,11 +608,13 @@ The 3-way router fires once per session. After convergence resumes (e.g., the us
598
608
 
599
609
  #### 9i — Active project: fold-back to upstream artifact
600
610
 
601
- Uniform across spec-driven, quick, and lite modes. Differs only in which plan-authoring skill the handoff prompt addresses (resolved by `ACTIVE_PROJECT_MODE` and `ACTIVE_PROJECT_PR_STATUS`).
611
+ Uniform across spec-driven, quick, import, lite, and brief modes. Differs only in which plan-authoring skill the handoff prompt addresses (resolved by `ACTIVE_PROJECT_MODE` and `ACTIVE_PROJECT_PR_STATUS`).
602
612
 
603
613
  **Step 1 — Pick upstream artifact.** Prefer the most-specific existing one:
604
614
 
605
615
  - For lite, always select `<ACTIVE_PROJECT>/plan.md`. Append `## Brainstorming Update` immediately above `## Phase 1`; lite has no discovery or design artifact.
616
+ - For brief, always select `<ACTIVE_PROJECT>/plan.md` (the Project Brief). Append `## Brainstorming Update` immediately above the first `## Phase` heading; brief has no discovery or design artifact, and the receiving skill folds the update into the brief's sections.
617
+ - For import, use `design.md` or `discovery.md` when present (the rules below); otherwise `<ACTIVE_PROJECT>/plan.md`, because the import scaffold has neither.
606
618
  - `<ACTIVE_PROJECT>/design.md` if it exists (any mode — quick lightweight design counts).
607
619
  - Otherwise `<ACTIVE_PROJECT>/discovery.md`.
608
620
  - The user's signal during the conversation can override toward `discovery.md` even when `design.md` exists ("this is foundational" → discovery; "this is a design refinement" → design).
@@ -674,7 +686,7 @@ beside another dirty project file must take Step 4.
674
686
 
675
687
  For non-synced projects, use the explicit `--` filename form. **Never `git add -A`. Never directory globs.** Other working-tree paths are not touched by this commit. For synced projects, `FOLD_BACK_COMMIT_SHA` comes from the push JSON rather than the parent branch.
676
688
 
677
- 3. `<artifact-basename>` is `plan.md` for lite, otherwise `design.md` or `discovery.md` depending on which was chosen. `<project-name>` is the active project's slug.
689
+ 3. `<artifact-basename>` is `plan.md` for lite and brief (and for import when it has no `design.md` or `discovery.md`), otherwise `design.md` or `discovery.md` depending on which was chosen. `<project-name>` is the active project's slug.
678
690
 
679
691
  4. If the guarded persistence succeeded → proceed to step 5 (handoff prompt).
680
692
 
@@ -749,8 +761,20 @@ Resolve the handoff target by `ACTIVE_PROJECT_MODE` and `ACTIVE_PROJECT_PR_STATU
749
761
  | spec-driven | none / closed | `oat-project-plan` |
750
762
  | quick | none / closed | `oat-project-quick-start` |
751
763
  | lite | none / closed | `oat-project-lite` |
764
+ | import | none / closed | `oat-project-import-plan` |
765
+ | brief | none / closed | `oat-project-brief` |
752
766
  | any mode | open (`oat_pr_status: open`) | `oat-project-revise` |
753
767
 
768
+ For brief, `oat-project-brief` is the target while the brief is still in
769
+ planning (`oat_phase: plan`); once implementation has started
770
+ (`oat_phase: implement`), the target is `oat-project-implement`, which
771
+ integrates the update as new or amended phases and stops for the brief's
772
+ focused realignment when the update changes an Outcome, a Constraint, a
773
+ Decision, the authority, the endpoint, or the agreed Approach. For brief, the
774
+ prompt's last two sentences read "Integrate the new content into the brief as
775
+ new or amended phases. Don't refresh the brief — preserve the review table and
776
+ the journal." instead.
777
+
754
778
  Print the handoff prompt template, substituting `<skill-name>`, `<artifact>`, `<hash>`, and `<subject>` from the actual branch commit or synced push receipt:
755
779
 
756
780
  ```
@@ -822,9 +846,9 @@ End mode assertion when the split handoff completes or reports its own blocker.
822
846
  - ✅ The terminal-state picker conditionally includes `Promote to N projects` only when `oat project split evaluate-signals` reports `triggered: true`; small-scope convergence keeps the option hidden.
823
847
  - ✅ Synthesis payload is built per the design Data Models `SynthesizedPayload` schema: `title`, `summary`, `motivation`, `vision`, `approachesConsidered[]`, `chosenDirection`, `openQuestions[]`, `nextSteps[]`, `transcriptSessionNote`.
824
848
  - ✅ Confirmation pattern matches `references/destinations.md`: `full` for scoped backlog item (field-by-field with example wording), `minimal` for slug/path/artifact destinations, `none` for inline-only and summarize-idea-directly.
825
- - ✅ Each handoff branch (9a-9k) reads the correct downstream `SKILL.md` path and enters at the documented step. Project promotion writes `discovery.md` only — never `design.md` — and does not auto-chain into the next phase.
849
+ - ✅ Each handoff branch (9a-9k) reads the correct downstream `SKILL.md` path and enters at the documented step. Project promotion writes `discovery.md` for quick/spec-driven, `plan.md` for lite, and a `references/research/` note for brief — never `design.md` — and does not auto-chain into the next phase.
826
850
  - ✅ Doc-to-path validation handles all four cases: path-is-directory, parent-missing (with explicit out-of-repo confirmation), file-already-exists (overwrite or rename), unwritable (surface OS error).
827
851
  - ✅ Fold-back persistence safety contract honored: preflight `git status --porcelain -- "$ARTIFACT_PATH"` runs before any artifact mutation; clean → append + exact-path branch commit for shared/local or validated `oat project push --json` for synced; dirty → three-option picker (persist-prior-first / mix / abort-to-reference-file); handoff prompt prints only after the scope-appropriate receipt succeeds.
828
- - ✅ Handoff target for fold-back resolves correctly per `oat_workflow_mode` + `oat_pr_status`: `oat-project-plan` (spec-driven, no/closed PR) / `oat-project-quick-start` (quick, no/closed PR) / `oat-project-lite` (lite, no/closed PR) / `oat-project-revise` (any mode, open PR).
852
+ - ✅ Handoff target for fold-back resolves correctly per `oat_workflow_mode` + `oat_pr_status`: `oat-project-plan` (spec-driven, no/closed PR) / `oat-project-quick-start` (quick, no/closed PR) / `oat-project-lite` (lite, no/closed PR) / `oat-project-import-plan` (import, no/closed PR) / `oat-project-brief` or `oat-project-implement` (brief, no/closed PR, by phase) / `oat-project-revise` (any mode, open PR).
829
853
  - ✅ Active-project 3-way router (related / independent / supplementary) fires before the standard pack-filtered picker when both `WORKFLOWS_INSTALLED == "true"` and `ACTIVE_PROJECT_VALID == "true"`.
830
854
  - ✅ Skill validates cleanly under `pnpm oat:validate-skills` (frontmatter contract, allowed-tools, mode-assertion structure).
@@ -122,8 +122,8 @@ Confirm to write this to a new backlog item file, or tell me what to change.
122
122
  **Required template fields:** `title`, `summary` (Initial Request), `approachesConsidered` (Solution Space), `chosenDirection` (Chosen Direction), key decisions, `openQuestions`. Template: `.oat/templates/discovery.md` (consumed via `oat project new`).
123
123
  **Optional template fields:** `motivation`, `vision`, `nextSteps`.
124
124
  **Confirmation pattern:** `minimal` (slug + workflow mode)
125
- Skill proposes `quick` vs `spec-driven` mode based on `chosenDirection` and scope signals from the conversation. User picks; skill confirms slug.
126
- **Handoff target:** Run `oat project new <slug> --mode <mode>` to scaffold. Write field-filled `discovery.md` only (Initial Request, Solution Space with approaches, Chosen Direction, Key Decisions, Open Questions). Mark `oat_status: complete`, `oat_ready_for: oat-project-quick-start` (for quick mode) or `oat-project-design` (for spec-driven). Update project `state.md` (phase=discovery, status=complete). Print pointer to next skill. **Stop — do NOT inline-execute the next phase.** Project promotion writes `discovery.md` only, never `design.md`.
125
+ Skill proposes `lite`, `brief`, `quick`, or `spec-driven` mode based on `chosenDirection` and scope signals from the conversation. User picks; skill confirms slug.
126
+ **Handoff target:** Run `oat project new <slug> --mode <mode>` to scaffold. Write field-filled `discovery.md` only (Initial Request, Solution Space with approaches, Chosen Direction, Key Decisions, Open Questions). Mark `oat_status: complete`, `oat_ready_for: oat-project-quick-start` (for quick mode) or `oat-project-design` (for spec-driven). Update project `state.md` (phase=discovery, status=complete). Print pointer to next skill. **Stop — do NOT inline-execute the next phase.** Project promotion writes `discovery.md` only, never `design.md`. For `brief` mode there is no `discovery.md`: write the synthesized payload to `references/research/brainstorm-YYYY-MM-DD.md`, leave the scaffolded `plan.md` (the Project Brief) for `oat-project-brief` to author through its interview, keep state at plan/in-progress, and point to `oat-project-brief`. For `lite` mode, fill `plan.md` as `oat-brainstorm` step 9g describes and point to `oat-project-lite`.
127
127
  **If user wants to keep brainstorming after this is offered:** return to flow with destination = promote-to-new-project. Skill probes for missing chosen direction, key decisions, and explicit open questions — these become artifact fields that read poorly when shallow.
128
128
 
129
129
  ---
@@ -132,7 +132,7 @@ Skill proposes `quick` vs `spec-driven` mode based on `chosenDirection` and scop
132
132
 
133
133
  **Pack required:** `workflows` AND an active project pointer is set (`oat config get activeProject`) AND its `state.md` is readable.
134
134
  **Trigger phrases:** "fold this into the active project", "this is feedback for the active project", "integrate this into design", "add this to discovery", explicit "for the active project" mention. Also offered as the first option when the active-project 3-way router fires after convergence (related → fold-back).
135
- **Required template fields:** which artifact (`design.md` if exists, else `discovery.md`; user signal can override), the synthesized payload's `chosenDirection`, key decisions, `transcriptSessionNote` (transcript appendix). Template: appended in-place using `## Brainstorming Update: YYYY-MM-DD — <topic>` heading.
135
+ **Required template fields:** which artifact (`plan.md` for lite and brief; for import `design.md` or `discovery.md` when present, else `plan.md`; otherwise `design.md` if exists, else `discovery.md`; user signal can override), the synthesized payload's `chosenDirection`, key decisions, `transcriptSessionNote` (transcript appendix). Template: appended in-place using `## Brainstorming Update: YYYY-MM-DD — <topic>` heading.
136
136
  **Optional template fields:** `openQuestions`, `nextSteps` — appended if surfaced during convergence.
137
137
  **Confirmation pattern:** `minimal` (which artifact + dirty-tree handling)
138
138
 
@@ -164,7 +164,12 @@ Skill name resolved per workflow mode + PR status (read from `state.md` frontmat
164
164
  | ----------- | ---------------------------- | ------------------------- |
165
165
  | spec-driven | none / closed | `oat-project-plan` |
166
166
  | quick | none / closed | `oat-project-quick-start` |
167
- | either | open (`oat_pr_status: open`) | `oat-project-revise` |
167
+ | lite | none / closed | `oat-project-lite` |
168
+ | import | none / closed | `oat-project-import-plan` |
169
+ | brief | none / closed | `oat-project-brief` |
170
+ | any mode | open (`oat_pr_status: open`) | `oat-project-revise` |
171
+
172
+ For brief, `oat-project-brief` is the target while the brief is still in planning (`oat_phase: plan`) and `oat-project-implement` once implementation has started; the handoff prompt asks for new or amended phases instead of tasks.
168
173
 
169
174
  After printing the prompt, the skill stops. The user runs the plan-authoring skill at their own pace. The brainstorming skill never auto-chains into plan authoring — the deliberate transition is the point.
170
175
 
@@ -6,7 +6,7 @@ disable-model-invocation: false
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Glob, Grep, AskUserQuestion
8
8
  metadata:
9
- version: 1.0.4
9
+ version: 1.0.5
10
10
  ---
11
11
 
12
12
  # OAT Docs
@@ -146,7 +146,7 @@ Based on the docs, here's how OAT project workflows work: [answer]
146
146
  You can read more in `workflows/projects/lifecycle.md`.
147
147
 
148
148
  Would you like me to:
149
- - Start a new project? (I'd invoke oat-project-lite for single-sitting work, or oat-project-quick-start for a larger quick workflow)
149
+ - Start a new project? (I'd invoke oat-project-lite for single-sitting work, oat-project-brief for one delivery planned as a Project Brief, or oat-project-quick-start for a larger quick workflow)
150
150
  - Check your current project status? (I'd read your active project's state.md)
151
151
  ```
152
152
 
@@ -170,9 +170,14 @@ To create a new OAT project, you have three main approaches:
170
170
  3. **Spec-driven mode** (for complex features):
171
171
  oat-project-new <project-name>
172
172
 
173
+ Brief mode is a fourth option for one delivery whose design you can agree in
174
+ conversation:
175
+ oat-project-brief <project-name> "project description"
176
+
173
177
  Lite combines the interview and requirements contract in one plan for a
174
- single sitting. Quick mode goes straight from discovery to plan. Spec-driven
175
- mode adds formal spec and design phases. If you invoke quick mode with only a
178
+ single sitting. Brief writes one reviewed Project Brief whose phases carry
179
+ intent and exit evidence instead of tasks. Quick mode goes straight from
180
+ discovery to plan. Spec-driven mode adds formal spec and design phases. If you invoke quick mode with only a
176
181
  project name, it should ask you for the missing project description
177
182
  before discovery starts.
178
183
 
@@ -6,7 +6,7 @@ disable-model-invocation: true
6
6
  allowed-tools: Read, Write, Glob, Grep, Bash(git:*), AskUserQuestion, Task
7
7
  user-invocable: true
8
8
  metadata:
9
- version: 1.6.3
9
+ version: 1.6.4
10
10
  ---
11
11
 
12
12
  # Review Backlog
@@ -256,7 +256,7 @@ This step mirrors the **Project Kickoff Handoffs** section of the pjm instructio
256
256
  **For each item in the agreed kickoff stack**, write or refresh `.oat/repo/pjm/handoffs/<BL-id>.md` with:
257
257
 
258
258
  - the backlog item reference — its ID **and** human-readable title **and** path (never a bare ID);
259
- - the recommended project mode (`oat-project-lite` for single-sitting work, `oat-project-quick-start` for quick work, or `oat-project-new` for spec-driven work), including which artifacts (spec/design/plan) to pre-populate from existing research when it exists;
259
+ - the recommended project mode (`oat-project-lite` for single-sitting work, `oat-project-brief` for one delivery planned as a Project Brief, `oat-project-quick-start` for quick work, or `oat-project-new` for spec-driven work), including which artifacts (spec/design/plan) to pre-populate from existing research when it exists;
260
260
  - authoritative input pointers (research directories, decision records, code paths);
261
261
  - repo conventions and verification gates the item file does not restate;
262
262
  - a close-out section requiring (a) the **Backlog Lifecycle** — `oat backlog archive <id> --summary "outcome" --json` — in the same PR that ships the item, and (b) filesystem deletion of its owned handoff. Consume the complete returned `affectedPaths`, append the tracked handoff deletion, format existing text with the repository command, and commit the exact list via `oat internal commit-paths` with a unique retained identity and enabled hooks; stop if unavailable or blocked/failed. Include both old/new item names, ledger, index and rewritten references; preserve unrelated staged/unstaged work.
@@ -6,7 +6,7 @@ disable-model-invocation: true
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, Task
8
8
  metadata:
9
- version: 1.0.19
9
+ version: 1.0.20
10
10
  ---
11
11
 
12
12
  # Autonomous OAT Project
@@ -74,7 +74,7 @@ waits.
74
74
 
75
75
  - Setting the two autonomy environment variables for the current process tree.
76
76
  - Resolving project home and persisted entry state.
77
- - Selecting lite, quick, or spec-driven mode from the review-density rule.
77
+ - Selecting lite, brief, quick, or spec-driven mode from the review-density rule.
78
78
  - Invoking existing OAT lifecycle and dispatch skills in their required order.
79
79
  - Auto-resolving only the gates authorized by the autonomy contract.
80
80
  - Selecting the first existing compatible dispatch-ladder config scope through
@@ -170,8 +170,9 @@ fi
170
170
  ```
171
171
 
172
172
  For a new goal, derive a safe project slug but do not hand-create the project.
173
- Mode selection in Step 2 chooses `oat-project-lite`, `oat-project-new`, or
174
- `oat-project-quick-start`, which owns scaffolding and pointer persistence. If
173
+ Mode selection in Step 2 chooses `oat-project-brief`,
174
+ `oat-project-lite`, `oat-project-new`, or `oat-project-quick-start`, which owns
175
+ scaffolding and pointer persistence. If
175
176
  the input is empty, ambiguous, collides with another project, or resolves
176
177
  outside the target repository, stop at the applicable product-judgment or
177
178
  repository-policy boundary.
@@ -225,6 +226,7 @@ Select the earliest incomplete lifecycle owner:
225
226
  | --------------------------------------------------------- | ----------------------------------------------------------- |
226
227
  | No project yet | Continue to Step 2, then invoke the selected creation skill |
227
228
  | Lite plan incomplete | `oat-project-lite` |
229
+ | Brief not yet reviewed and approved | `oat-project-brief` |
228
230
  | Quick-mode discovery, optional design, or plan incomplete | `oat-project-quick-start` |
229
231
  | Spec-driven discovery incomplete | `oat-project-discover` |
230
232
  | Spec-driven design/spec incomplete | `oat-project-design` |
@@ -299,6 +301,10 @@ For a new goal, choose mode as a rigor selector:
299
301
  - **Lite:** use when the goal is a clear, single-sitting change whose interview,
300
302
  decisions, assumptions, and validation criteria fit one combined plan and one
301
303
  sequential implementation phase.
304
+ - **Brief:** use when the goal is one delivery whose outcome and design can be
305
+ settled from evidence and recorded in one reviewed Project Brief, with
306
+ phases of intent and exit evidence instead of a pre-approved task plan. Goal
307
+ mode is excluded until it is registered.
302
308
 
303
309
  Base the choice on uncertainty, integration risk, architecture decisions,
304
310
  reversibility, and review needs—not task count. Record the chosen mode and
@@ -306,8 +312,8 @@ evidence-based review-density rationale in the first owned project artifact.
306
312
  If evidence cannot support the choice without changing product intent, stop at
307
313
  a product-judgment boundary.
308
314
 
309
- Invoke `oat-project-new` for spec-driven mode, `oat-project-quick-start` for quick, or `oat-project-lite` for lite;
310
- these three entry routes own new-project setup. Load the selected creation
315
+ Invoke `oat-project-new` for spec-driven mode, `oat-project-quick-start` for quick, `oat-project-lite` for lite, or `oat-project-brief` for brief;
316
+ these four entry routes own new-project setup. Load the selected creation
311
317
  skill's current `SKILL.md` and follow it, or dispatch a child that carries it,
312
318
  never a remembered outcome. Existing projects retain their persisted workflow
313
319
  mode.
@@ -507,7 +513,7 @@ On success, report:
507
513
  ```text
508
514
  Autonomous run: complete
509
515
  Project: {path}
510
- Workflow mode: {lite | quick | spec-driven}
516
+ Workflow mode: {lite | brief | quick | spec-driven}
511
517
  Entry state: {phase}
512
518
  Phases executed: {list}
513
519
  Reviews: {scope → route, target, independence, record}
@@ -585,7 +591,7 @@ reconciliation path. Do not guess or overwrite the tracker.
585
591
  - ✅ Both autonomy signals were active only for the current process tree.
586
592
  - ✅ The entry phase came from persisted OAT state and completed work was not
587
593
  replayed.
588
- - ✅ Lite/quick/spec-driven selection, when needed, recorded a review-density
594
+ - ✅ Lite/brief/quick/spec-driven selection, when needed, recorded a review-density
589
595
  rationale.
590
596
  - ✅ External-integration research and evidence gaps were recorded.
591
597
  - ✅ Every required review has dispatch provenance and no accepted launch fell
@@ -165,6 +165,17 @@ remains.
165
165
  | LITE-08 | `oat-project-lite` | Plan artifact-review findings | Accept offered Medium/Low fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and lite disposition |
166
166
  | LITE-09 | `oat-project-lite` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition |
167
167
  | LITE-10 | `oat-project-lite` | Configured lifecycle gate posture | Keep or disable each configured lifecycle gate | Preserve an existing override map; otherwise preserve configured gates and write no override in non-interactive planning | `auto-resolve` / `boundary:repository-policy-approval` | `state.md` override map or recorded non-interactive preservation |
168
+ | BRIEF-01 | `oat-project-brief` | Inherited dirty tree | Commit, proceed, or abort | Proceed without staging unrelated files; a required destructive cleanup stops | `auto-resolve` / `boundary:destructive-change-risk` | Brief preflight note |
169
+ | BRIEF-02 | `oat-project-brief` | Missing name or description | Ask for required startup input | Derive a slug from the explicit goal and use the goal as the description; stop if the goal is not substantive | `auto-resolve` / `boundary:product-judgment` | Brief Goal and project path |
170
+ | BRIEF-03 | `oat-project-brief` | Alignment interview | Ask readiness rounds until the user accepts the design | Settle facts from repository evidence, adopt the supported recommendation for each decision, and record it; material product or design ambiguity stops | `auto-resolve` / `boundary:product-judgment` | `plan.md` Approach, Decisions, and Known Unknowns |
171
+ | BRIEF-04 | `oat-project-brief` | Workflow fit | Continue brief, promote to quick, or split the work | Apply the documented content heuristic; when an implementation-affecting design question cannot be settled from evidence, promote through `oat project promote --to quick` only after the Step 3 brief is validated and committed, and before that abandon the scaffold and start `oat-project-quick-start`; several independent deliveries stop; otherwise record why brief fits | `auto-resolve` / `boundary:product-judgment` | `plan.md` Decisions and promotion result |
172
+ | BRIEF-05 | `oat-project-brief` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
173
+ | BRIEF-06 | `oat-project-brief` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
174
+ | BRIEF-07 | `oat-project-brief` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
175
+ | BRIEF-08 | `oat-project-brief` | Configured lifecycle gate posture | Keep or disable each configured lifecycle gate | Preserve an existing override map; otherwise preserve configured gates and write no override in non-interactive planning | `auto-resolve` / `boundary:repository-policy-approval` | `state.md` override map or recorded non-interactive preservation |
176
+ | BRIEF-09 | `oat-project-brief` | Brief artifact-review findings | Fold minor fixes; take material findings to the user | Apply only unambiguous artifact-local fixes and re-review; never rewrite agreed intent; unresolved Critical findings or material ambiguity stop | `auto-resolve` / `boundary:unresolved-critical-findings` | Brief review row and residual-finding disposition |
177
+ | BRIEF-10 | `oat-project-brief` | Configured exit gate | `block`, `prompt`, or `warn` after failure | Apply the configured failure semantics; `prompt` becomes a reported boundary; persist the outcome as `oat_brief_gate` | `auto-resolve` / `boundary:repository-policy-approval` | Structured gate result and disposition, and `oat_brief_gate` |
178
+ | BRIEF-11 | `oat-project-brief` | Brief approval | Approve, revise, or promote | Approve the reviewed brief and record the approval line; contradictory or materially incomplete outcomes stop | `auto-resolve` / `boundary:product-judgment` | Approval line in `plan.md` |
168
179
  | DISC-01 | `oat-project-discover` | Active-project confirmation or switch | Confirm the active project or choose another | Use only an explicitly supplied or valid active project; otherwise stop without guessing | `boundary:product-judgment` | Resolved project path |
169
180
  | DISC-02 | `oat-project-discover` | Stale knowledge | Continue or refresh | Refresh through the canonical knowledge workflow when available; otherwise record staleness and continue only when it does not create material ambiguity | `auto-resolve` / `boundary:product-judgment` | Discovery evidence note |
170
181
  | DISC-03 | `oat-project-discover` | Gray areas and clarifying questions | Select areas and answer questions | Select risk-relevant areas from evidence and record supported answers/assumptions; material ambiguity stops | `auto-resolve` / `boundary:product-judgment` | `discovery.md` Q&A and assumptions |
@@ -269,7 +280,7 @@ assertions, vendored copies, and other unreachable occurrences to `NG`. Add a
269
280
  new inventory row when no existing gate ID describes the behavior.
270
281
 
271
282
  `packages/cli/src/validation/autonomy-gate-inventory.test.ts` is the CI
272
- backstop. It derives the fifteen scan roots from the inventory, scans Markdown
283
+ backstop. It derives the seventeen scan roots from the inventory, scans Markdown
273
284
  recursively, and matches each site by file plus a stable semantic key derived
274
285
  from its normalized heading and text, never by line number. Its failure output
275
286
  provides the key to add or replace. The committed line-number comparison below
@@ -301,7 +312,7 @@ remains immutable baseline evidence for the original p01-t01 verification.
301
312
  | `oat-project-pr-final/SKILL.md` | `601ac2b890f2 -> NG`; `c264a64398f0 -> NG`; `9efcbcee42ea -> NG`; `655d61df0a8f -> NG`; `cf317c17c586 -> PRFINAL-01`; `2de348a391c0 -> PRFINAL-03` |
302
313
  | `oat-project-pr-final/references/docs/autonomy-contract.md` | `* -> NG` |
303
314
  | `oat-project-complete/SKILL.md` | `6ed459f9e462 -> NG`; `a167d03559fa -> NG`; `79c2eeed668c -> COMPLETE-01`; `2c1514b9d9af -> COMPLETE-01`; `31c750b4fea7 -> COMPLETE-01`; `cfba413b1293 -> COMPLETE-01`; `7fcfce0423ac -> COMPLETE-01`; `7bcbf58b54e9 -> NG`; `4c7f88a7f942 -> COMPLETE-02`; `6a1a95acc8cc -> COMPLETE-02`; `3b559956b3eb -> COMPLETE-03`; `14d161cdf99b -> COMPLETE-03`; `fffe5eea5ebd -> NG`; `e7dc6fdc4eb3 -> COMPLETE-01`; `e5460e437299 -> NG`; `882b61c9096c -> NG`; `9ffa1c752505 -> NG`; `8c5e599f6bac -> NG` |
304
- | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
315
+ | `oat-project-review-provide/SKILL.md` | `1f4b981cac8b -> NG`; `adaeca152bb2 -> NG`; `2f7c201c3c06 -> NG`; `88f79700afdc -> NG`; `655d61df0a8f -> NG`; `efafde9ef5a0 -> NG`; `d2a3861d6323 -> REVIEWPROVIDE-02`; `65f5b9cf49cd -> REVIEWPROVIDE-04`; `962cb38d246a -> REVIEWPROVIDE-04`; `1a568483ba0b -> REVIEWPROVIDE-04`; `610e27edfe85 -> REVIEWPROVIDE-04`; `bb0096e95c47 -> REVIEWPROVIDE-06`; `55f6357a987d -> REVIEWPROVIDE-06`; `e3c08ecdab17 -> REVIEWPROVIDE-06`; `1bee61f8531c -> REVIEWPROVIDE-07`; `3d35091607a1 -> REVIEWPROVIDE-08`; `fb40c4341c4c -> NG`; `b22d16885150 -> NG`; `d2b25906242e -> REVIEWPROVIDE-08`; `fd8ebf72b3c4 -> NG`; `79c8103e8656 -> NG`; `4fbd78337e33 -> NG`; `c3d50ea7cf69 -> NG`; `09b1b8dd445c -> NG`; `7acc8f3718d2 -> REVIEWPROVIDE-09`; `b2fa883fc4a2 -> NG`; `fe4421531b4c -> NG` |
305
316
  | `oat-project-review-receive/SKILL.md` | `9b8a3743d626 -> NG`; `49ed2780983b -> NG`; `4ee8730382d3 -> NG`; `655d61df0a8f -> NG`; `765f897d67ac -> NG`; `53b58d16dd32 -> NG`; `fb8755a3bdf4 -> NG`; `1d710fb4cc66 -> NG`; `1f7dd98dff2f -> NG`; `56f78c6740e6 -> NG`; `76f5fb5a88cd -> NG`; `085abfa3599f -> REVIEWRECEIVE-01`; `92578f7df686 -> NG`; `a7d114059bb6 -> NG`; `ac88cfaa83d9 -> NG`; `594bbf70346c -> REVIEWRECEIVE-08`; `f31f07284718 -> REVIEWRECEIVE-02`; `e4c0625439f8 -> REVIEWRECEIVE-04`; `505ad8389c0a -> REVIEWRECEIVE-05`; `20e05e1a4381 -> REVIEWRECEIVE-06`; `e30e06f39281 -> REVIEWRECEIVE-07`; `f8fd58180ecf -> NG`; `c3abcdc02d9f -> NG`; `f2ebdd6abb9b -> NG` |
306
317
  | `oat-project-review-provide/SKILL.md` | `2e794bf4fc4a -> REVIEWPROVIDE-08`; `5441ab977b46 -> REVIEWPROVIDE-08` |
307
318
  | `oat-project-review-provide/SKILL.md` | `f4238ebb1887 -> NG`; `0360fa2db9a5 -> NG` |
@@ -317,6 +328,10 @@ remains immutable baseline evidence for the original p01-t01 verification.
317
328
  | `oat-project-plan/SKILL.md` | `f99e44b39932 -> PLAN-12`; `7e6a9854504b -> NG` |
318
329
  | `oat-project-complete/SKILL.md` | `0177956707aa -> NG`; `1234c29d1999 -> NG`; `3c0b26f0ff1c -> NG`; `8cc1fa5aab1e -> COMPLETE-01`; `4c209fbb4716 -> COMPLETE-01`; `02e4175e1171 -> COMPLETE-01`; `d698d4f98e76 -> COMPLETE-01`; `9f86a7218d93 -> COMPLETE-01`; `024713698d9a -> COMPLETE-01`; `c327995053fa -> COMPLETE-01`; `61f81d4ec7c1 -> COMPLETE-01`; `14fb2e56809f -> COMPLETE-01`; `7d4ff668744d -> COMPLETE-01`; `502a6c141784 -> COMPLETE-01`; `fb7e2db356af -> COMPLETE-01`; `f73f8476360a -> NG`; `1e15f420039f -> NG`; `cc234032ddd7 -> NG`; `1dd54687229b -> NG`; `fc05c8303cd2 -> NG`; `24be721d635e -> NG` |
319
330
  | `oat-project-lite/references/docs/autonomy-contract.md` | `* -> NG` |
331
+ | `oat-project-brief/references/docs/autonomy-contract.md` | `* -> NG` |
332
+ | `oat-project-brief/references/docs/gate-approval-record.md` | `* -> NG` |
333
+ | `oat-project-brief/SKILL.md` | `3d101cb200b3 -> NG`; `494f08a25a22 -> NG`; `ae6d9bdd3cc0 -> NG`; `beeb946393dc -> NG`; `83b5e9396197 -> NG`; `709dd744d813 -> NG`; `4e1222d879f2 -> BRIEF-03`; `a9dd42731b88 -> BRIEF-04`; `7bff55da6726 -> NG`; `c5fb9ce4b27d -> NG`; `e2e809154403 -> BRIEF-10`; `93d6f62c5dac -> BRIEF-10`; `92da21e87ab4 -> NG`; `304c39a13de5 -> BRIEF-10`; `06490315c2f9 -> BRIEF-10`; `0b85a5738ca5 -> BRIEF-11`; `f34dfb297a83 -> NG`; `06179c668e16 -> BRIEF-11`; `5ef3a708eed9 -> BRIEF-11`; `1c798da87f49 -> BRIEF-11`; `f73421b4937f -> NG`; `6e3e97f9cbcf -> NG`; `9b3abe616c5d -> BRIEF-08` |
334
+ | `oat-project-brief/references/brief-contract.md` | `5359cae29ca8 -> NG`; `b417d06e35b4 -> BRIEF-03`; `964e9fc49596 -> NG`; `02270b5b835d -> BRIEF-11`; `e1cb9cbbd308 -> NG` |
320
335
  | `oat-project-implement/references/completion-and-closeout.md` | `87f1424a8692 -> NG`; `6b1ec05182f0 -> IMPLEMENT-11`; `e6d696a27c91 -> NG`; `c77f8ccb52ad -> NG`; `48de2614c0ba -> IMPLEMENT-11`; `32d53f5212e5 -> IMPLEMENT-11`; `7cdb4a9c57b7 -> IMPLEMENT-11`; `16ffc0aa099b -> IMPLEMENT-11`; `d6868ea10b3f -> IMPLEMENT-11`; `4f05ff5567be -> IMPLEMENT-11`; `c70b47ae7a6d -> IMPLEMENT-11`; `5fafd093b58e -> NG`; `21ceaf7e658a -> NG`; `249427a9f475 -> NG`; `8a7ec13a9b7c -> NG`; `9aeb7fce2012 -> IMPLEMENT-18`; `f11a7cdda220 -> IMPLEMENT-18`; `4523ac029152 -> NG`; `6e87b08c4046 -> NG`; `baa6052c7f0a -> IMPLEMENT-18`; `27d3fad116b1 -> IMPLEMENT-18`; `2cfbeb4388a5 -> IMPLEMENT-18`; `c56ea56a56db -> NG`; `43e2e3c1380d -> IMPLEMENT-17`; `b49690277fb5 -> NG`; `df12304d6a36 -> NG`; `52eacac11fef -> IMPLEMENT-17`; `60092df6b17b -> IMPLEMENT-17`; `361872c6b00e -> IMPLEMENT-17`; `d2bc711a75fb -> IMPLEMENT-17` |
321
336
  | `oat-project-quick-start/SKILL.md` | `aa560418765a -> QS-13`; `40ddcac880ef -> NG` |
322
337
  | `oat-project-plan/SKILL.md` | `2b32bc5e9fea -> NG`; `58cc6b0adf97 -> PLAN-13`; `9fba3b40b522 -> NG` |