@open-agent-toolkit/cli 0.0.66 → 0.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/docs/contributing/skills.md +17 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/create-agnostic-skill/SKILL.md +56 -2
- package/assets/skills/create-agnostic-skill/references/skill-template.md +24 -5
- package/assets/skills/oat-project-complete/SKILL.md +77 -3
- package/assets/skills/oat-project-next/SKILL.md +7 -5
- package/assets/skills/oat-project-progress/SKILL.md +6 -6
- package/dist/commands/project/new/scaffold.js +3 -3
- package/dist/commands/state/generate.d.ts.map +1 -1
- package/dist/commands/state/generate.js +12 -5
- package/package.json +2 -2
|
@@ -21,6 +21,7 @@ Skill behavior is defined by frontmatter plus the process contract in each `SKIL
|
|
|
21
21
|
- Keep prerequisites and expected artifacts concrete.
|
|
22
22
|
- Spell out blocked vs allowed activities for state-advancing skills.
|
|
23
23
|
- Define user-facing progress indicators for longer workflows.
|
|
24
|
+
- Define a pre-work capability and authorization gate for skills that delegate to subagents, workers, or reviewers.
|
|
24
25
|
- Keep output obligations explicit so downstream skills and users know what changed.
|
|
25
26
|
|
|
26
27
|
## Contract components
|
|
@@ -28,6 +29,7 @@ Skill behavior is defined by frontmatter plus the process contract in each `SKIL
|
|
|
28
29
|
- Mode assertion (purpose, blocked/allowed activities)
|
|
29
30
|
- Preconditions and required artifacts
|
|
30
31
|
- User-facing progress indicator expectations
|
|
32
|
+
- Delegation capability detection and fallback behavior, when the skill dispatches helper agents
|
|
31
33
|
- Output obligations
|
|
32
34
|
- Escalation/guardrail behavior
|
|
33
35
|
|
|
@@ -59,6 +61,21 @@ Skill behavior is defined by frontmatter plus the process contract in each `SKIL
|
|
|
59
61
|
- Use `create-agnostic-skill` when you want a reusable workflow skill that is not OAT-specific.
|
|
60
62
|
- Use existing lifecycle skills as examples for progress banners, prerequisites, and artifact updates.
|
|
61
63
|
|
|
64
|
+
## Delegation-Capable Skills
|
|
65
|
+
|
|
66
|
+
Skills that dispatch subagents, workers, reviewers, or fresh-context helper sessions need a capability model before work starts. Do not assume delegation is available, and do not silently downgrade just because the runtime needs user authorization.
|
|
67
|
+
|
|
68
|
+
At minimum, the skill contract should:
|
|
69
|
+
|
|
70
|
+
- Probe whether the host can dispatch the required helper role(s).
|
|
71
|
+
- Distinguish `available`, `authorization required`, and `not resolved`.
|
|
72
|
+
- Ask once at skill start when authorization is required, with the approval scope stated clearly.
|
|
73
|
+
- Lock the selected tier for the run unless the user explicitly changes execution mode.
|
|
74
|
+
- Stop before side effects if delegation is required for correctness and authorization remains unresolved.
|
|
75
|
+
- Document the fallback path and any quality or independence tradeoff.
|
|
76
|
+
|
|
77
|
+
Use `create-agnostic-skill` or `create-oat-skill` as the starting point; both include the current delegation guidance and optional capability-detection template.
|
|
78
|
+
|
|
62
79
|
## Reading project state
|
|
63
80
|
|
|
64
81
|
Skills that need fields from the active project's `state.md` (e.g. `phase`, `phaseStatus`, `workflowMode`, `docsUpdated`, `lastCommit`) MUST query the CLI instead of hand-parsing YAML with `grep`/`awk`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: create-agnostic-skill
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.3.0
|
|
4
4
|
description: Use when adding a reusable workflow skill for AI coding agents. Scaffolds a new .agents/skills skill using the Agent Skills open standard.
|
|
5
5
|
argument-hint: '[skill-name]'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -60,6 +60,7 @@ If not provided in arguments, ask for:
|
|
|
60
60
|
- **Model invocation**: Should the agent be able to invoke this automatically? (default: no)
|
|
61
61
|
- **User invocable**: (Claude Code only) Should this appear in the `/` menu? (default: yes)
|
|
62
62
|
- **Tool restrictions**: (Claude Code only) Which tools should the skill be allowed to use?
|
|
63
|
+
- **Delegation**: Will the skill dispatch subagents or require a fresh-context worker/reviewer? If yes, define the capability probe, authorization gate, fallback tier, and approval scope.
|
|
63
64
|
- **Supporting files**: Does the skill need templates, scripts, or reference files?
|
|
64
65
|
|
|
65
66
|
### Step 2: Apply Progressive Disclosure
|
|
@@ -295,9 +296,62 @@ Do **not** hard-code a specific Codex question tool name in skill prose unless t
|
|
|
295
296
|
|
|
296
297
|
**When NOT to:**
|
|
297
298
|
|
|
298
|
-
-
|
|
299
|
+
- Long-running autonomous skills after work has started — resolve required decisions in a pre-work gate, then lock the choice for the run
|
|
299
300
|
- Questions with open-ended answers — just ask conversationally in the skill prose
|
|
300
301
|
|
|
302
|
+
### Delegation and Subagent Capability
|
|
303
|
+
|
|
304
|
+
Skills that dispatch subagents, reviewers, workers, or fresh-context helper sessions must define a pre-work capability model. Do not let generated skills assume delegation is available, silently downgrade because authorization is required, or ask repeated approval questions mid-run.
|
|
305
|
+
|
|
306
|
+
**When to include this section:**
|
|
307
|
+
|
|
308
|
+
- The skill uses provider subagents, task workers, reviewers, or multi-agent execution
|
|
309
|
+
- The skill's quality depends on fresh context or isolated review/implementation
|
|
310
|
+
- The skill has a fallback mode when delegation is unavailable
|
|
311
|
+
|
|
312
|
+
**Required guidance for delegation-capable skills:**
|
|
313
|
+
|
|
314
|
+
1. **Probe before work starts.** Check whether the host can dispatch the needed worker/reviewer and whether dispatch requires user authorization.
|
|
315
|
+
2. **Separate capability states.** Report `available`, `authorization required`, or `not resolved`; do not treat authorization-required as unavailable.
|
|
316
|
+
3. **Ask once when authorization is required.** Use a concise question that names the delegation scope for the run. Approval should cover the stated worker roles and phases; a decline should select the documented fallback.
|
|
317
|
+
4. **Lock the tier.** Once selected, keep the execution mode for the run unless the user explicitly changes it.
|
|
318
|
+
5. **Fail closed before side effects.** If delegation is required for correctness and authorization is unresolved, stop before edits, writes, external side effects, or long-running work.
|
|
319
|
+
6. **Document fallback behavior.** If inline or single-agent execution is acceptable, explain when it applies. If it changes quality, artifact freshness, or review independence, say so.
|
|
320
|
+
|
|
321
|
+
**Portable provider wording:**
|
|
322
|
+
|
|
323
|
+
- Claude Code: use Task/subagent dispatch when available; if the skill benefits from structured prompts, include `AskUserQuestion` in `allowed-tools`.
|
|
324
|
+
- Cursor: use the provider's explicit agent invocation or natural-language agent handoff when supported.
|
|
325
|
+
- Codex: use multi-agent spawning when available; if the host requires explicit user authorization before spawning, ask before falling back.
|
|
326
|
+
- Fallback: use inline/single-agent execution only when the user declines delegation or the runtime truly cannot dispatch the required agent.
|
|
327
|
+
|
|
328
|
+
**Good pre-work pattern:**
|
|
329
|
+
|
|
330
|
+
```markdown
|
|
331
|
+
### Step 0.5: Capability Detection
|
|
332
|
+
|
|
333
|
+
Before edits, writes, external side effects, or long-running work, detect whether the required helper agents are available.
|
|
334
|
+
|
|
335
|
+
- Available without authorization → Tier 1: delegated execution.
|
|
336
|
+
- Authorization required → ask once: "Authorize `{worker/reviewer}` delegation for this run?"
|
|
337
|
+
- Approved → Tier 1.
|
|
338
|
+
- Declined → Tier 2: documented fallback.
|
|
339
|
+
- Not resolved / unsupported → Tier 2: documented fallback.
|
|
340
|
+
|
|
341
|
+
Report:
|
|
342
|
+
|
|
343
|
+
`Selected: Tier {1|2} — {Delegated|Fallback}; Reason: {available|authorized|user declined delegation|dispatch unavailable|required role unresolved}`
|
|
344
|
+
|
|
345
|
+
Lock the selected tier for the run.
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**Anti-patterns:**
|
|
349
|
+
|
|
350
|
+
- Selecting inline fallback just because the user did not pre-mention subagents, when the skill itself requires delegation and authorization can be requested
|
|
351
|
+
- Asking for authorization after implementation or review has already started
|
|
352
|
+
- Re-asking for each phase when the first approval explicitly covered the run
|
|
353
|
+
- Hiding fallback quality differences from the user
|
|
354
|
+
|
|
301
355
|
### Progress Feedback
|
|
302
356
|
|
|
303
357
|
For multi-step skills, print brief progress updates so the user knows what's happening:
|
|
@@ -13,11 +13,12 @@ Adjust based on complexity—not all sections are required:
|
|
|
13
13
|
5. **Arguments** - Parameters parsed from `$ARGUMENTS`
|
|
14
14
|
6. **Prerequisites** - Required setup or context (if applicable)
|
|
15
15
|
7. **Workflow/Steps** - Numbered steps using "Step 1, 2, 3..." naming
|
|
16
|
-
8. **
|
|
17
|
-
9. **
|
|
18
|
-
10. **
|
|
19
|
-
11. **
|
|
20
|
-
12. **
|
|
16
|
+
8. **Capability Detection** - Required before work starts if the skill dispatches subagents/workers/reviewers
|
|
17
|
+
9. **Quality Standards** - Checklist format for docs skills (if applicable)
|
|
18
|
+
10. **Examples** - Both "Basic Usage" and "Conversational" styles
|
|
19
|
+
11. **Reference** - Links to relevant documentation
|
|
20
|
+
12. **Troubleshooting** - Common issues and solutions
|
|
21
|
+
13. **Success Criteria** - Checklist of completion conditions
|
|
21
22
|
|
|
22
23
|
## Annotated Template
|
|
23
24
|
|
|
@@ -87,6 +88,24 @@ Parse from `$ARGUMENTS`:
|
|
|
87
88
|
|
|
88
89
|
## Workflow
|
|
89
90
|
|
|
91
|
+
<!-- Include this Step 0.5 only if the skill dispatches subagents, workers, reviewers, or fresh-context helpers. -->
|
|
92
|
+
|
|
93
|
+
### Step 0.5: Capability Detection
|
|
94
|
+
|
|
95
|
+
Before edits, writes, external side effects, or long-running work, detect whether required helper agents are available.
|
|
96
|
+
|
|
97
|
+
- Available without authorization → Tier 1: delegated execution.
|
|
98
|
+
- Authorization required → ask once: "Authorize `{worker/reviewer}` delegation for this run?"
|
|
99
|
+
- Approved → Tier 1.
|
|
100
|
+
- Declined → Tier 2: documented fallback.
|
|
101
|
+
- Not resolved / unsupported → Tier 2: documented fallback.
|
|
102
|
+
|
|
103
|
+
Report the selected tier and reason before starting work:
|
|
104
|
+
|
|
105
|
+
`Selected: Tier {1|2} — {Delegated|Fallback}; Reason: {available|authorized|user declined delegation|dispatch unavailable|required role unresolved}`
|
|
106
|
+
|
|
107
|
+
Lock the selected tier for the run unless the user explicitly changes it.
|
|
108
|
+
|
|
90
109
|
### Step 1: First Step Title
|
|
91
110
|
|
|
92
111
|
Clear instructions in imperative form. Tell the agent what to do.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-complete
|
|
3
|
-
version: 1.4.
|
|
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
|
|
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-next
|
|
3
|
-
version: 1.0.
|
|
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-
|
|
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-
|
|
200
|
-
| discovery | complete | tier 1 | `oat-project-
|
|
201
|
-
| spec | in_progress | tier 3 | `oat-project-
|
|
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
|
+
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-
|
|
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 |
|
|
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-
|
|
286
|
-
oat-project-
|
|
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', '
|
|
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 —
|
|
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
|
|
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;
|
|
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-
|
|
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-
|
|
231
|
-
reason: '
|
|
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-
|
|
235
|
-
reason: 'Continue
|
|
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.
|
|
3
|
+
"version": "0.0.69",
|
|
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.
|
|
36
|
+
"@open-agent-toolkit/control-plane": "0.0.69"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "^22.10.0",
|