@open-agent-toolkit/cli 0.0.65 → 0.0.68

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.
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.0.65",
3
- "docs-config": "0.0.65",
4
- "docs-theme": "0.0.65",
5
- "docs-transforms": "0.0.65"
2
+ "cli": "0.0.68",
3
+ "docs-config": "0.0.68",
4
+ "docs-theme": "0.0.68",
5
+ "docs-transforms": "0.0.68"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-complete
3
- version: 1.4.5
3
+ version: 1.4.7
4
4
  description: Use when all implementation work is finished and the project is ready to close. Marks the OAT project lifecycle as complete.
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
@@ -27,7 +27,7 @@ When executing this skill, provide lightweight progress feedback so the user can
27
27
  - `[3/6] Completing lifecycle…`
28
28
  - `[4/6] Generating PR description + archiving…`
29
29
  - `[5/6] Refreshing dashboard + committing…`
30
- - `[6/6] Opening PR…`
30
+ - `[6/6] Opening PR or syncing description…`
31
31
 
32
32
  ## Process
33
33
 
@@ -64,6 +64,17 @@ Ask all user questions at once so the user can answer them in a single interacti
64
64
 
65
65
  Before asking the batched questions, read `oat_pr_status` and `oat_pr_url` from `state.md` frontmatter.
66
66
 
67
+ **Capture pre-mutation PR state for later steps.** The skill mutates `state.md` (Step 5) and the project tree (Step 8) before Step 11.5 needs to know whether the PR was already open at the start. Persist that decision in a shell variable now:
68
+
69
+ ```bash
70
+ WAS_PR_OPEN_AT_START="false"
71
+ if [[ "${oat_pr_status:-}" == "open" ]]; then
72
+ WAS_PR_OPEN_AT_START="true"
73
+ fi
74
+ ```
75
+
76
+ Use the same `state.md` read you already perform for `oat_pr_status`/`oat_pr_url` — do not re-read after Step 5. Step 11.5 (Sync Open-PR Description on GitHub) consumes this value.
77
+
67
78
  **Workflow preference checks (before asking questions):**
68
79
 
69
80
  Some questions can be answered automatically from workflow preferences. Read each preference before deciding whether to include its question in the batched prompt:
@@ -299,7 +310,29 @@ fi
299
310
 
300
311
  5. **Write PR description artifact** — write to `{PROJECT_PATH}/pr/project-pr-YYYY-MM-DD.md` following the template and policies from `oat-project-pr-final` Step 4 (frontmatter policy, reference links policy, local path exclusion).
301
312
 
302
- If a PR description artifact already exists at `{PROJECT_PATH}/pr/project-pr-*.md`, skip generation and use the existing one instead.
313
+ If a PR description artifact already exists at `{PROJECT_PATH}/pr/project-pr-*.md`:
314
+
315
+ - When `SHOULD_ARCHIVE` is `true`, regenerate it (overwrite). The existing artifact was authored by `oat-project-pr-final` before any archive intent existed and links to artifact paths that will be local-only after Step 8. Regenerating ensures Step 11 / Step 11.5 push a body whose links still resolve on the remote.
316
+ - When `SHOULD_ARCHIVE` is `false`, skip generation and use the existing artifact as-is. No archive means the existing blob links remain valid.
317
+
318
+ **Archive-aware References (required when `SHOULD_ARCHIVE` is `true`):**
319
+
320
+ When archiving, the project artifacts at `{PROJECT_PATH}/{plan,implementation,discovery,spec,design,summary}.md` will move to a gitignored archive location in Step 8. After commit + push (Step 10), those paths no longer exist on the branch and any blob link to them returns 404 on GitHub. The PR description must anticipate this:
321
+
322
+ - **Drop References bullets** that point to artifacts about to become local-only:
323
+ - `plan.md`, `implementation.md`, `discovery.md`, `spec.md`, `design.md`, `summary.md`, `references/imported-plan.md`
324
+ - Active `reviews/` (the active project tree, including `reviews/`, moves with the archive)
325
+ - **Add a canonical project-record bullet** when `archive.summaryExportPath` is configured and `summary.md` exists:
326
+ - Resolve the export filename: `${SUMMARY_EXPORT_PATH}/$(date +%Y%m%d)-${PROJECT_NAME}.md` (matches `archive-utils.ts` naming).
327
+ - Reference it as a tracked, post-archive blob link, e.g.:
328
+ `- Project record: [${SUMMARY_EXPORT_PATH}/${YYYYMMDD}-${PROJECT_NAME}.md]({REPO_WEB}/blob/{BRANCH}/${SUMMARY_EXPORT_PATH}/${YYYYMMDD}-${PROJECT_NAME}.md)`
329
+ - Use the **current/head branch** for the blob link (the same `{BRANCH}` value used by `oat-project-pr-final` Step 4 for every other reference). Step 8 creates the export on the current checkout and Step 10 commits + pushes it on the feature branch, so the link resolves immediately while the PR is open and continues to resolve after merge once the file lands on the base branch.
330
+ - Anti-pattern: do **not** point this link at the base branch (`main` / resolved default branch). The export does not exist on the base branch until the PR merges, so a `blob/main/...` link 404s for the entire window the PR is open — the same class of broken link this whole step exists to prevent.
331
+ - When `archive.summaryExportPath` is unset or `summary.md` is missing, omit this bullet rather than emit a broken link.
332
+ - **Keep References bullets** that resolve independently of the archive: backlog item links under `.oat/repo/reference/backlog/`, decision-record links under `.oat/repo/reference/decisions/`, repo-reference docs, ticket URLs, and anything else under tracked paths outside the project directory.
333
+ - Apply the existing `localPaths`-based exclusion rule from `oat-project-pr-final` Step 4 on top of these rules — it already covers `.oat/**/pr` and `.oat/**/reviews/archived` and may catch additional patterns configured per repo.
334
+
335
+ Anti-pattern: do not "rescue" a dropped artifact by linking to its archived path under `.oat/projects/archived/<name>/...`. That path is gitignored on every checkout and never reaches the remote.
303
336
 
304
337
  ### Step 8: Archive Project (Conditional)
305
338
 
@@ -528,6 +561,46 @@ gh pr create --base main --title "{title}" --body-file "$TMP_BODY"
528
561
 
529
562
  Do not assume `gh` is installed; if missing, instruct manual PR creation using the file contents.
530
563
 
564
+ ### Step 11.5: Sync Open-PR Description on GitHub (Conditional)
565
+
566
+ **Run only when `WAS_PR_OPEN_AT_START="true"` AND `SHOULD_ARCHIVE="true"`.**
567
+
568
+ When the PR was already open at the start of this skill (typically because `oat-project-pr-final` ran earlier in the lifecycle) AND we just archived, the GitHub PR description authored by `oat-project-pr-final` still points to the active artifact paths. Step 8 moved those artifacts to a gitignored archive location and Step 10 pushed the move, so any blob link in the open PR body now 404s. Push the regenerated archive-aware body to the existing PR.
569
+
570
+ Skip this step when:
571
+
572
+ - The PR was not yet open at the start (`WAS_PR_OPEN_AT_START="false"`) — Step 11 already created the PR with the archive-aware body.
573
+ - No archive happened (`SHOULD_ARCHIVE="false"`) — the original blob links still resolve.
574
+ - `IS_SHARED_PROJECT="false"` — non-shared projects are not archived in this skill, so no link breakage.
575
+
576
+ Steps:
577
+
578
+ 1. Locate the PR description artifact at `{PROJECT_PATH}/pr/project-pr-*.md`. After Step 8, `PROJECT_PATH` points at the archived location, so the artifact lives at `{ARCHIVE_PATH}/pr/project-pr-*.md`.
579
+ 2. Strip YAML frontmatter (everything from the opening `---` through and including the closing `---`) and write the result to a temporary file. Verify the temp file does not start with YAML frontmatter keys.
580
+ 3. Resolve the open PR. Prefer the tracked URL captured in Step 2:
581
+
582
+ ```bash
583
+ PR_REF="${oat_pr_url:-}"
584
+ if [[ -z "$PR_REF" ]]; then
585
+ # Fall back to the head branch — gh auto-resolves to the open PR for the current branch.
586
+ PR_REF=$(git rev-parse --abbrev-ref HEAD)
587
+ fi
588
+ ```
589
+
590
+ 4. Push the updated body:
591
+
592
+ ```bash
593
+ gh pr edit "$PR_REF" --body-file "$TMP_BODY"
594
+ ```
595
+
596
+ 5. Clean up the temp file.
597
+
598
+ Failure handling:
599
+
600
+ - If `gh` is missing, warn and print the path to the regenerated artifact body so the user can paste it into the PR manually. Do not fail the skill.
601
+ - If `gh pr edit` fails (e.g. PR was merged between Step 2 and now, or the auth token lacks edit permission), warn and continue. Step 12's completion summary should call out that the PR body was not updated and surface the artifact path so the user can update it manually.
602
+ - Never re-archive or re-commit on failure here — the lifecycle bookkeeping in Step 10 already shipped.
603
+
531
604
  ### Step 12: Confirm to User
532
605
 
533
606
  Show user:
@@ -538,3 +611,4 @@ Show user:
538
611
  - Include commit hash and push result for the bookkeeping changes.
539
612
  - If PR was opened: include the PR URL.
540
613
  - If `oat_pr_url` is present, show it in the completion summary even when PR creation was skipped because the project already tracked an open PR.
614
+ - If Step 11.5 ran, report whether the PR description was synced (e.g. `PR description synced: <PR URL>`) or warn that the sync failed and surface the artifact path so the user can update it manually.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-implement
3
- version: 2.0.6
3
+ version: 2.0.7
4
4
  description: Use when plan.md is ready for execution. Dispatches phase-level subagents with bounded fix loops; supports plan-declared parallel phase groups with worktree-isolated execution and ordered fan-in.
5
5
  argument-hint: '[--retry-limit <N>] [--dry-run]'
6
6
  disable-model-invocation: true
@@ -23,7 +23,7 @@ Execute the implementation plan task-by-task with full state tracking.
23
23
  **Purpose:** Execute plan tasks with TDD discipline, track progress, handle blockers.
24
24
 
25
25
  **CRITICAL — Bookkeeping commits are mandatory, not optional.**
26
- After every code commit and after every phase/review-fix completion, you MUST commit the OAT tracking files (`implementation.md`, `state.md`, `plan.md`) as a separate bookkeeping commit. Do not defer, batch, or skip these commits under the reasoning that they "aren't related to the implementation." Skipping a bookkeeping commit is the primary cause of cross-session state drift and will cause the next implementation run to fail bookkeeping cross-checks. If bookkeeping commits feel frequent, that is the intended design — they are cheap and they prevent drift.
26
+ After every code commit and after every phase/review-fix completion, you MUST commit the OAT tracking files (project: `implementation.md`, `state.md`, `plan.md`; repo dashboard: `.oat/state.md`) as a separate bookkeeping commit. Refresh the repo dashboard with `oat state refresh` immediately before staging so `.oat/state.md` reflects the just-completed phase/task. Do not defer, batch, or skip these commits under the reasoning that they "aren't related to the implementation." Skipping a bookkeeping commit (or skipping the dashboard refresh) is the primary cause of cross-session state drift and will cause the next implementation run to fail bookkeeping cross-checks. If bookkeeping commits feel frequent, that is the intended design — they are cheap and they prevent drift.
27
27
 
28
28
  **CRITICAL — Review boundaries require a committed artifact baseline.**
29
29
  Do not enter checkpoint review, final review, revise, or PR-final handoff with dirty core project artifacts (`discovery.md`, `spec.md`, `design.md`, `plan.md`, `implementation.md`, `state.md`, plus `.oat/state.md` when refreshed). If one of those boundaries is next and artifact bookkeeping is still uncommitted, stop and create the bookkeeping commit first.
@@ -646,7 +646,8 @@ For each phase that completed:
646
646
  **Bookkeeping commit (mandatory):**
647
647
 
648
648
  ```bash
649
- git add {PROJECT_PATH}/implementation.md {PROJECT_PATH}/state.md {PROJECT_PATH}/plan.md
649
+ oat state refresh
650
+ git add {PROJECT_PATH}/implementation.md {PROJECT_PATH}/state.md {PROJECT_PATH}/plan.md .oat/state.md
650
651
  git commit -m "chore(oat): bookkeeping after {pNN} {pass|fail}"
651
652
  ```
652
653
 
@@ -719,14 +720,15 @@ When pausing:
719
720
 
720
721
  **DO NOT SKIP.** This commit prevents state drift across sessions.
721
722
 
722
- After phase summary and task pointer advancement, commit all modified OAT tracking files:
723
+ After phase summary and task pointer advancement, refresh the repo dashboard and commit all modified OAT tracking files:
723
724
 
724
725
  ```bash
725
- git add "$PROJECT_PATH/implementation.md" "$PROJECT_PATH/state.md" "$PROJECT_PATH/plan.md"
726
+ oat state refresh
727
+ git add "$PROJECT_PATH/implementation.md" "$PROJECT_PATH/state.md" "$PROJECT_PATH/plan.md" .oat/state.md
726
728
  git diff --cached --quiet || git commit -m "chore(oat): update tracking artifacts for {phase} completion"
727
729
  ```
728
730
 
729
- Do not use `git add -A` or glob patterns. Only commit the three OAT project files listed above.
731
+ Do not use `git add -A` or glob patterns. Only commit the four files listed above (three project artifacts plus the regenerated repo dashboard).
730
732
 
731
733
  **Note on HiLL types:**
732
734
 
@@ -852,14 +854,15 @@ Implementation - Tasks complete; awaiting final review.
852
854
 
853
855
  **DO NOT SKIP.** This commit prevents state drift across sessions.
854
856
 
855
- After updating state.md to reflect implementation completion, commit all modified OAT tracking files:
857
+ After updating state.md to reflect implementation completion, refresh the repo dashboard and commit all modified OAT tracking files:
856
858
 
857
859
  ```bash
858
- git add "$PROJECT_PATH/implementation.md" "$PROJECT_PATH/state.md" "$PROJECT_PATH/plan.md"
860
+ oat state refresh
861
+ git add "$PROJECT_PATH/implementation.md" "$PROJECT_PATH/state.md" "$PROJECT_PATH/plan.md" .oat/state.md
859
862
  git diff --cached --quiet || git commit -m "chore(oat): update tracking artifacts for implementation complete"
860
863
  ```
861
864
 
862
- Do not use `git add -A` or glob patterns. Only commit the three OAT project files listed above.
865
+ Do not use `git add -A` or glob patterns. Only commit the four files listed above (three project artifacts plus the regenerated repo dashboard).
863
866
 
864
867
  ### Step 13: Final Verification
865
868
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-next
3
- version: 1.0.3
3
+ version: 1.0.4
4
4
  description: Use when continuing work on the active OAT project. Reads project state, determines the next lifecycle action, and invokes the appropriate skill automatically.
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
@@ -178,10 +178,12 @@ Phase-to-skill mapping for HiLL override:
178
178
  | Phase | Skill |
179
179
  | --------- | ---------------------- |
180
180
  | discovery | `oat-project-discover` |
181
- | spec | `oat-project-spec` |
181
+ | spec | `oat-project-design` |
182
182
  | design | `oat-project-design` |
183
183
  | plan | `oat-project-plan` |
184
184
 
185
+ 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.
186
+
185
187
  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.
186
188
 
187
189
  #### Step 3b: Phase Routing Tables
@@ -196,9 +198,9 @@ Otherwise, look up the target skill from the routing table for the current `oat_
196
198
  | Current Phase | Phase Status | Boundary Tier | Target Skill |
197
199
  | ------------- | ------------ | -------------------- | -------------------------- |
198
200
  | discovery | in_progress | tier 3 (template) | `oat-project-discover` |
199
- | discovery | in_progress | tier 2 (substantive) | `oat-project-spec` |
200
- | discovery | complete | tier 1 | `oat-project-spec` |
201
- | spec | in_progress | tier 3 | `oat-project-spec` |
201
+ | discovery | in_progress | tier 2 (substantive) | `oat-project-design` |
202
+ | discovery | complete | tier 1 | `oat-project-design` |
203
+ | spec | in_progress | tier 3 | `oat-project-design` |
202
204
  | spec | in_progress | tier 2 | `oat-project-design` |
203
205
  | spec | complete | tier 1 | `oat-project-design` |
204
206
  | design | in_progress | tier 3 | `oat-project-design` |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-progress
3
- version: 1.2.3
3
+ version: 1.2.4
4
4
  description: Use when resuming work, checking status, or unsure which OAT skill to run next. Evaluates project progress and routes to the appropriate next step.
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
@@ -186,7 +186,7 @@ Read `oat_workflow_mode` from `state.md` frontmatter:
186
186
  - In that case, do **not** advance to the next phase even if `oat_phase_status: complete`.
187
187
  - Recommend continuing the current phase skill to capture explicit approval:
188
188
  - discovery gate pending -> `oat-project-discover`
189
- - spec gate pending -> `oat-project-spec`
189
+ - spec gate pending (legacy projects only — newly scaffolded projects no longer use a spec HiLL gate) -> `oat-project-design`
190
190
  - design gate pending -> `oat-project-design`
191
191
 
192
192
  **Drift detection (apply before routing `implement | in_progress`):**
@@ -226,8 +226,8 @@ Routing matrix by mode:
226
226
  | oat_phase | oat_phase_status | Next Skill |
227
227
  | --------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
228
228
  | discovery | in_progress | Continue `oat-project-discover` |
229
- | discovery | complete | `oat-project-spec` |
230
- | spec | in_progress | Continue `oat-project-spec` |
229
+ | discovery | complete | `oat-project-design` (folds requirements confirmation in; standalone `oat-project-spec` remains an opt-in alternative) |
230
+ | spec | in_progress | `oat-project-design` (legacy phase — design reuses any existing `spec.md`) |
231
231
  | spec | complete | `oat-project-design` |
232
232
  | design | in_progress | Continue `oat-project-design` |
233
233
  | design | complete | `oat-project-plan` |
@@ -282,8 +282,8 @@ Workflow:
282
282
  oat-project-import-plan - Import an external markdown plan and normalize plan.md
283
283
  oat-project-promote-spec-driven - Promote quick/import project to spec-driven lifecycle
284
284
  oat-project-discover - Start discovery phase (requirements gathering)
285
- oat-project-spec - Create specification from discovery
286
- oat-project-design - Create technical design from spec
285
+ oat-project-design - Confirm requirements + create technical design (folds spec authoring inline)
286
+ oat-project-spec - Optional standalone specification (most projects skip this — design handles it)
287
287
  oat-project-plan - Create implementation plan from design (spec-driven mode)
288
288
  oat-project-implement - Execute implementation plan (sequential or parallel)
289
289
  oat-project-reconcile - Reconcile manual/human commits with plan tasks
@@ -18,13 +18,13 @@ const TEMPLATES_BY_MODE = {
18
18
  };
19
19
  const STATE_TEMPLATE_BY_MODE = {
20
20
  'spec-driven': {
21
- hillCheckpoints: "['discovery', 'spec', 'design']",
21
+ hillCheckpoints: "['discovery', 'design']",
22
22
  phase: 'discovery',
23
23
  status: 'Discovery',
24
24
  currentPhase: 'Discovery - Gathering requirements and understanding the problem space',
25
25
  artifacts: [
26
26
  '- **Discovery:** `discovery.md` (in_progress)',
27
- '- **Spec:** `spec.md` (scaffolded template — not started)',
27
+ '- **Spec:** `spec.md` (scaffolded template — authored inline by `oat-project-design`)',
28
28
  '- **Design:** `design.md` (scaffolded template — not started)',
29
29
  '- **Plan:** `plan.md` (scaffolded template — not started)',
30
30
  '- **Implementation:** `implementation.md` (scaffolded template — not started)',
@@ -34,7 +34,7 @@ const STATE_TEMPLATE_BY_MODE = {
34
34
  '- ✓ Downstream lifecycle files scaffolded',
35
35
  '- ⧗ Awaiting user input',
36
36
  ],
37
- nextMilestone: 'Complete discovery and move to specification phase',
37
+ nextMilestone: 'Complete discovery and move to design phase',
38
38
  },
39
39
  quick: {
40
40
  hillCheckpoints: '[]',
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/commands/state/generate.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CAClD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AA4GD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvE;AAqaD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA2C9B"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/commands/state/generate.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CAClD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AA4GD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvE;AA8aD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA2C9B"}
@@ -207,9 +207,14 @@ function computeNextStep(project, hasProjects, state) {
207
207
  if (state.phaseStatus === 'complete' &&
208
208
  phaseInHillList(state.phase, state.hillCheckpoints) &&
209
209
  !phaseInHillList(state.phase, state.hillCompleted)) {
210
+ // Spec is no longer a discrete HiLL checkpoint in newly-scaffolded projects —
211
+ // requirements confirmation is folded into oat-project-design. Legacy
212
+ // projects whose state.md still lists `spec` in oat_hill_checkpoints route
213
+ // to oat-project-design here so they finish through the consolidated flow
214
+ // rather than being pushed back at the deprecated standalone skill.
210
215
  const phaseSkillMap = {
211
216
  discovery: 'oat-project-discover',
212
- spec: 'oat-project-spec',
217
+ spec: 'oat-project-design',
213
218
  design: 'oat-project-design',
214
219
  plan: 'oat-project-plan',
215
220
  implement: 'oat-project-implement',
@@ -227,12 +232,14 @@ function computeNextStep(project, hasProjects, state) {
227
232
  reason: 'Continue discovery phase',
228
233
  },
229
234
  'spec-driven:discovery:complete': {
230
- step: 'oat-project-spec',
231
- reason: 'Create specification from discovery',
235
+ step: 'oat-project-design',
236
+ reason: 'Confirm requirements and produce design (spec is folded into design)',
232
237
  },
238
+ // Legacy projects whose phase still reads `spec` route to design — the
239
+ // consolidated oat-project-design skill handles existing spec.md gracefully.
233
240
  'spec-driven:spec:in_progress': {
234
- step: 'oat-project-spec',
235
- reason: 'Continue specification phase',
241
+ step: 'oat-project-design',
242
+ reason: 'Continue into design (spec is folded into design — legacy phase)',
236
243
  },
237
244
  'spec-driven:spec:complete': {
238
245
  step: 'oat-project-design',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-agent-toolkit/cli",
3
- "version": "0.0.65",
3
+ "version": "0.0.68",
4
4
  "private": false,
5
5
  "description": "Open Agent Toolkit CLI",
6
6
  "homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
@@ -33,7 +33,7 @@
33
33
  "ora": "^9.0.0",
34
34
  "yaml": "2.8.2",
35
35
  "zod": "^3.25.76",
36
- "@open-agent-toolkit/control-plane": "0.0.65"
36
+ "@open-agent-toolkit/control-plane": "0.0.68"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/node": "^22.10.0",