@open-agent-toolkit/cli 0.2.38 → 0.2.39

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,4 +1,4 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "oatVersion": "0.2.38"
3
+ "oatVersion": "0.2.39"
4
4
  }
@@ -71,6 +71,19 @@ oat tools install utility
71
71
  oat tools install workflows
72
72
  ```
73
73
 
74
+ The two packs do not need to share a scope. For example, a repository can keep
75
+ the lifecycle adapter at project scope while reusing the utility contracts from
76
+ user scope:
77
+
78
+ ```bash
79
+ oat tools install workflows --scope project
80
+ oat tools install utility --scope user
81
+ ```
82
+
83
+ Lifecycle skills resolve each required sibling independently from the loaded
84
+ scope, then user scope, then project scope. This makes mixed-scope placement a
85
+ supported execution path rather than relying on one frozen skills root.
86
+
74
87
  The packs remain independently installable. If the workflows adapter is
75
88
  present without the utility contracts, it fails closed and reports the missing
76
89
  dependency instead of inventing a fallback route. Non-project analytical
@@ -24,6 +24,33 @@ Skill behavior is defined by frontmatter plus the process contract in each `SKIL
24
24
  - Define a pre-work capability and authorization gate for skills that delegate to subagents, workers, or reviewers.
25
25
  - Keep output obligations explicit so downstream skills and users know what changed.
26
26
 
27
+ ## Portable sibling-skill reads
28
+
29
+ Executable instructions must not assume the skill is running from a repository
30
+ checkout. Before a skill or one of its operational reference files reads a
31
+ sibling `SKILL.md`, resolve a `${SKILLS_ROOT}` in this order:
32
+
33
+ 1. Derive `${SKILL_DIR}/..` from the directory containing the currently loaded
34
+ `SKILL.md`, when the provider exposes that path.
35
+ 2. Try the user-scope root at `${HOME}/.agents/skills`.
36
+ 3. Fall back to the project-scope root at `<repo-root>/.agents/skills`.
37
+
38
+ Probe each candidate for `<sibling>/SKILL.md` and use the first match. If none
39
+ exists, name the missing sibling, give an actionable install or update command,
40
+ and stop that workflow branch instead of improvising the sibling's process.
41
+
42
+ When a caller needs multiple sibling skills, resolve and bind each sibling
43
+ independently. Do not freeze one `${SKILLS_ROOT}` and assume every dependency is
44
+ installed there: a workflows adapter may be at project scope while its utility
45
+ contracts are at user scope. A missing-sibling recovery must name the owning
46
+ pack and intended scope, using `oat tools install <pack> --scope <user|project>`
47
+ or `oat tools update --pack <pack> --scope <user|project>` as appropriate.
48
+
49
+ Do not use a bare `.agents/skills/<sibling>/SKILL.md`, `./.agents/...`, or
50
+ `../.agents/...` path for an executable read. Historical examples may retain
51
+ those spellings only when they are non-executable and explicitly baselined by
52
+ the bundled-docs contract test.
53
+
27
54
  ## Contract components
28
55
 
29
56
  - Mode assertion (purpose, blocked/allowed activities)
@@ -120,6 +147,8 @@ dispatch contract owns capability and authorization checks, live catalog
120
147
  evidence, authorized routes, launch acceptance, recovery, and the neutral
121
148
  dispatch record. Keep model/effort/reasoning/service-tier axes explicit and do
122
149
  not collapse the selection and mechanics references into one provider matrix.
150
+ Before each launch, disclose the resolved dependency sources and effective
151
+ runtime target; never present a bundled recommendation as the selected target.
123
152
 
124
153
  Keep project lifecycle policy out of that general layer. A lifecycle caller
125
154
  loads `oat-project-dispatch-subagents` to resolve project, phase/task, gate,
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.2.38",
3
- "docs-config": "0.2.38",
4
- "docs-theme": "0.2.38",
5
- "docs-transforms": "0.2.38"
2
+ "cli": "0.2.39",
3
+ "docs-config": "0.2.39",
4
+ "docs-theme": "0.2.39",
5
+ "docs-transforms": "0.2.39"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-brainstorm
3
- version: 1.3.0
3
+ version: 1.3.1
4
4
  description: Use when the user explicitly invokes the `brainstorm` verb, including `/oat-brainstorm`, "let's brainstorm", "brainstorm this", "can we brainstorm X", or "help me brainstorm X". For ambiguous exploratory phrasing ("I've been thinking", "what if", "help me think through"), do NOT auto-enter; respond conversationally and offer mode only after ≥2 sustained exploratory turns. Do NOT use for review, debug, PR, status, implementation, or active-workflow questions.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -411,7 +411,14 @@ read, in order:
411
411
 
412
412
  Probe each candidate for `<name>/SKILL.md` and treat the first match as
413
413
  `${SKILLS_ROOT}`. If no candidate resolves, tell the user the chained skill is
414
- not installed and stop that branch instead of improvising its process.
414
+ not installed and name its pack: `ideas` for `oat-idea-*`,
415
+ `project-management` for `oat-pjm-*`, and `workflows` for `oat-project-*`.
416
+ At the intended scope, run `oat tools install <pack> --scope <user|project>` or
417
+ `oat tools update --pack <pack> --scope <user|project>`, then stop that branch
418
+ instead of improvising its process.
419
+ Operational handoffs in `references/destinations.md` inherit this resolver;
420
+ resolve `${SKILLS_ROOT}` with this contract before executing any sibling read
421
+ specified there.
415
422
 
416
423
  #### 9a — Inline only
417
424
 
@@ -76,7 +76,7 @@ Always honor an explicit user-supplied path over the suggestion. Brainstorm docs
76
76
  **Required template fields:** same set as "Capture as new idea" (capture-as-new-idea path runs silently first), then summary input is whatever was synthesized. Template: `.oat/templates/ideas/idea-summary.md` (consumed via `oat-idea-summarize`).
77
77
  **Optional template fields:** none — the summary is rendered from the synthesized payload.
78
78
  **Confirmation pattern:** `none` at this layer (the downstream `oat-idea-summarize` surfaces the summary for accept/refine review).
79
- **Handoff target:** capture-as-new-idea path silently (skill reads `.agents/skills/oat-idea-new/SKILL.md` and runs Steps 3-7), then immediately reads `.agents/skills/oat-idea-summarize/SKILL.md` and runs it end-to-end. The `oat-idea-summarize` skill's own accept/refine review serves as the user gate.
79
+ **Handoff target:** capture-as-new-idea path silently (skill reads `${SKILLS_ROOT}/oat-idea-new/SKILL.md`, resolving `${SKILLS_ROOT}` through the owning `oat-brainstorm` contract, and runs Steps 3-7), then immediately resolves `${SKILLS_ROOT}` again, reads `${SKILLS_ROOT}/oat-idea-summarize/SKILL.md`, and runs it end-to-end. The `oat-idea-summarize` skill's own accept/refine review serves as the user gate.
80
80
  **If user wants to keep brainstorming after this is offered:** return to flow with destination = summarize-idea-directly. Skill may probe for chosen direction since the summary will read better with one.
81
81
 
82
82
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-idea-ideate
3
- version: 1.2.1
3
+ version: 1.2.2
4
4
  description: Use when continuing an existing tracked idea or expanding an explicit scratchpad seed from {IDEAS_ROOT}/scratchpad.md. Do NOT use to start a brand-new, destinationless brainstorm; use oat-brainstorm for that.
5
5
  argument-hint: '[--global]'
6
6
  disable-model-invocation: true
@@ -67,6 +67,23 @@ If you catch yourself:
67
67
 
68
68
  ## Process
69
69
 
70
+ ### Resolve `${SKILLS_ROOT}` for chained idea skills
71
+
72
+ Before reading a sibling skill, resolve the skills root in this order:
73
+
74
+ 1. Derive it from the directory containing this loaded `SKILL.md`:
75
+ `${SKILL_DIR}/..`. If the provider exposes the loaded skill path, treat its
76
+ directory as `${SKILL_DIR}`.
77
+ 2. Otherwise try the user-scope root first: `${HOME}/.agents/skills`.
78
+ 3. Fall back to the project-scope root: `<repo-root>/.agents/skills`.
79
+
80
+ Probe each candidate for `<name>/SKILL.md` and treat the first match as
81
+ `${SKILLS_ROOT}`. If no candidate resolves, tell the user that the required
82
+ sibling skill `<name>` is not installed. At the scope containing this loaded
83
+ skill, run `oat tools install ideas --scope <user|project>` or, when the pack is
84
+ already installed there, `oat tools update --pack ideas --scope <user|project>`.
85
+ Then stop the current branch instead of improvising its process.
86
+
70
87
  ### Step 0: Resolve Ideas Level
71
88
 
72
89
  Determine whether to operate at project level or user (global) level.
@@ -117,7 +134,7 @@ IDEA_PATH=$(oat config get activeIdea 2>/dev/null || true)
117
134
  - Existing ideas (with state: brainstorming/summarized)
118
135
  - Scratchpad entries marked as "not yet started"
119
136
  - If user picks an existing idea → run `oat config set activeIdea "{idea-path}"` and proceed to Step 2
120
- - If user picks a scratchpad entry → scaffold the idea inline by reading the **`oat-idea-new`** skill (`.agents/skills/oat-idea-new/SKILL.md`) and executing its Steps 3-7 (Initialize Ideas Directory, Scaffold Discovery Document, Update Backlog, Check Scratchpad, Set Active Idea Pointer). Then proceed to Step 2 with the new idea.
137
+ - If user picks a scratchpad entry → scaffold the idea inline by reading the **`oat-idea-new`** skill at `${SKILLS_ROOT}/oat-idea-new/SKILL.md` (resolve `${SKILLS_ROOT}` as above) and executing its Steps 3-7 (Initialize Ideas Directory, Scaffold Discovery Document, Update Backlog, Check Scratchpad, Set Active Idea Pointer). Then proceed to Step 2 with the new idea.
121
138
  - If no ideas and no scratchpad entries exist → tell the user: "No ideas found. Run the `oat-idea-new` skill to create one, or run the `oat-idea-scratchpad` skill to capture a quick idea seed." Then stop.
122
139
 
123
140
  ### Step 2: Load Discovery Document
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-idea-new
3
- version: 1.2.0
3
+ version: 1.2.1
4
4
  description: Use when starting ideation for a new concept or problem. Creates an idea directory for lightweight capture and handoff to ongoing ideation.
5
5
  argument-hint: '<idea-name> [--global]'
6
6
  disable-model-invocation: true
@@ -30,6 +30,23 @@ Create a new idea directory, scaffold a discovery document, verify setup, and ha
30
30
 
31
31
  ## Process
32
32
 
33
+ ### Resolve `${SKILLS_ROOT}` for chained idea skills
34
+
35
+ Before reading a sibling skill, resolve the skills root in this order:
36
+
37
+ 1. Derive it from the directory containing this loaded `SKILL.md`:
38
+ `${SKILL_DIR}/..`. If the provider exposes the loaded skill path, treat its
39
+ directory as `${SKILL_DIR}`.
40
+ 2. Otherwise try the user-scope root first: `${HOME}/.agents/skills`.
41
+ 3. Fall back to the project-scope root: `<repo-root>/.agents/skills`.
42
+
43
+ Probe each candidate for `<name>/SKILL.md` and treat the first match as
44
+ `${SKILLS_ROOT}`. If no candidate resolves, tell the user that the required
45
+ sibling skill `<name>` is not installed. At the scope containing this loaded
46
+ skill, run `oat tools install ideas --scope <user|project>` or, when the pack is
47
+ already installed there, `oat tools update --pack ideas --scope <user|project>`.
48
+ Then stop the current branch instead of improvising its process.
49
+
33
50
  ### Step 0: Resolve Ideas Level
34
51
 
35
52
  Determine whether to operate at project level or user (global) level.
@@ -140,7 +157,7 @@ Active: config activeIdea (set)
140
157
  Starting brainstorming...
141
158
  ```
142
159
 
143
- Then immediately invoke the **`oat-idea-ideate`** skill (located at `.agents/skills/oat-idea-ideate/SKILL.md`) to begin the first brainstorming session. Read that skill file and follow its process from Step 1. The ideate skill owns all conversational brainstorming behavior — do not duplicate it here.
160
+ Then immediately invoke the **`oat-idea-ideate`** skill by reading `${SKILLS_ROOT}/oat-idea-ideate/SKILL.md` (resolve `${SKILLS_ROOT}` as above) to begin the first brainstorming session. Follow its process from Step 1. The ideate skill owns all conversational brainstorming behavior — do not duplicate it here.
144
161
 
145
162
  ## Success Criteria
146
163
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-idea-summarize
3
- version: 1.2.0
3
+ version: 1.2.1
4
4
  description: Use when an idea is mature enough to move from brainstorming into the backlog. Generates a summary document and adds the idea to the backlog.
5
5
  argument-hint: '[--global]'
6
6
  disable-model-invocation: true
@@ -34,6 +34,23 @@ Read the brainstorming discovery document, synthesize a clean summary, and updat
34
34
 
35
35
  ## Process
36
36
 
37
+ ### Resolve `${SKILLS_ROOT}` for chained idea skills
38
+
39
+ Before reading a sibling skill, resolve the skills root in this order:
40
+
41
+ 1. Derive it from the directory containing this loaded `SKILL.md`:
42
+ `${SKILL_DIR}/..`. If the provider exposes the loaded skill path, treat its
43
+ directory as `${SKILL_DIR}`.
44
+ 2. Otherwise try the user-scope root first: `${HOME}/.agents/skills`.
45
+ 3. Fall back to the project-scope root: `<repo-root>/.agents/skills`.
46
+
47
+ Probe each candidate for `<name>/SKILL.md` and treat the first match as
48
+ `${SKILLS_ROOT}`. If no candidate resolves, tell the user that the required
49
+ sibling skill `<name>` is not installed. At the scope containing this loaded
50
+ skill, run `oat tools install ideas --scope <user|project>` or, when the pack is
51
+ already installed there, `oat tools update --pack ideas --scope <user|project>`.
52
+ Then stop the current branch instead of improvising its process.
53
+
37
54
  ### Step 0: Resolve Ideas Level
38
55
 
39
56
  Determine whether to operate at project level or user (global) level.
@@ -81,7 +98,7 @@ Read `{IDEAS_ROOT}/$IDEA_NAME/discovery.md`.
81
98
  **If mostly empty:**
82
99
 
83
100
  - Warn: "This idea hasn't been explored much yet. Consider running the `oat-idea-ideate` skill first to flesh it out."
84
- - Ask: continue with summarization anyway, or brainstorm more? If user chooses to brainstorm, read the **`oat-idea-ideate`** skill (`.agents/skills/oat-idea-ideate/SKILL.md`) and follow its process from Step 4.
101
+ - Ask: continue with summarization anyway, or brainstorm more? If user chooses to brainstorm, read the **`oat-idea-ideate`** skill at `${SKILLS_ROOT}/oat-idea-ideate/SKILL.md` (resolve `${SKILLS_ROOT}` as above) and follow its process from Step 4.
85
102
 
86
103
  ### Step 3: Generate Summary
87
104
 
@@ -114,7 +131,7 @@ Display the generated summary to the user. Ask:
114
131
  - **Refine** — edit the summary (make changes, then re-confirm)
115
132
  - **Continue brainstorming** — discard summary and resume brainstorming
116
133
 
117
- If user chooses to continue brainstorming, do not update state or backlog. Read the **`oat-idea-ideate`** skill (`.agents/skills/oat-idea-ideate/SKILL.md`) and follow its process from Step 4 (Start New Session) to resume the conversation.
134
+ If user chooses to continue brainstorming, do not update state or backlog. Read the **`oat-idea-ideate`** skill at `${SKILLS_ROOT}/oat-idea-ideate/SKILL.md` (resolve `${SKILLS_ROOT}` as above) and follow its process from Step 4 (Start New Session) to resume the conversation.
118
135
 
119
136
  ### Step 5: Update Discovery State
120
137
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-implement
3
- version: 2.2.5
3
+ version: 2.2.6
4
4
  description: Use when plan.md is ready for execution. Dispatches one phase implementer per phase, owns independent phase review and bounded fix routing, and supports plan-declared worktree-isolated parallel phases.
5
5
  oat_gateable: true
6
6
  argument-hint: '[--retry-limit <N>] [--dry-run]'
@@ -19,23 +19,24 @@ Execute the implementation plan task-by-task with full state tracking.
19
19
 
20
20
  ## Shared Subagent Dispatch Contract
21
21
 
22
- Before resolving or launching a phase implementer, optional child, fix, or
23
- reviewer, read `.agents/skills/oat-project-dispatch-subagents/SKILL.md`, then
24
- `.agents/skills/oat-dispatch-subagents/SKILL.md`. The former resolves lifecycle
25
- scope; the latter owns provider-neutral selection, recovery, and evidence.
26
- Display structured resolver notices before every implementation, fix, or
27
- reviewer launch. Runtime disclosure uses the effective resolved target, never
28
- the bundled recommendation version. This explicit load is mandatory, and
29
- correctness must not require a provider restart or hot reload.
30
-
31
- Read
32
- `.agents/skills/subagent-orchestration/references/model-selection-principles.md`.
22
+ Before launch, independently probe each required `<name>/SKILL.md` in order:
23
+ `${SKILL_DIR}/..` from this loaded skill, `${HOME}/.agents/skills`, then
24
+ `<repo-root>/.agents/skills`. Bind each first match to its own root:
25
+ `${PROJECT_DISPATCH_SKILLS_ROOT}` for `oat-project-dispatch-subagents`,
26
+ `${DISPATCH_SKILLS_ROOT}` for `oat-dispatch-subagents`, and
27
+ `${ORCHESTRATION_SKILLS_ROOT}` for `subagent-orchestration`; never ambient
28
+ discovery. On a miss, name it, stop every implementation, fix, or reviewer
29
+ dispatch, and give its intended-scope recovery command:
30
+
31
+ - `oat-project-dispatch-subagents`: `oat tools install workflows --scope <user|project>` or `oat tools update --pack workflows --scope <user|project>`.
32
+ - `oat-dispatch-subagents` or `subagent-orchestration`: `oat tools install utility --scope <user|project>` or `oat tools update --pack utility --scope <user|project>`.
33
+
34
+ Read `${PROJECT_DISPATCH_SKILLS_ROOT}/oat-project-dispatch-subagents/SKILL.md`, then `${DISPATCH_SKILLS_ROOT}/oat-dispatch-subagents/SKILL.md`; both are mandatory in order. Display structured resolver notices before every implementation, fix, or reviewer launch. Runtime disclosure uses the effective resolved target, never the bundled recommendation version. Correctness must not require restart or hot reload.
35
+ Read `${ORCHESTRATION_SKILLS_ROOT}/subagent-orchestration/references/model-selection-principles.md`.
33
36
  After resolving `ACTIVE_PROVIDER`, read exactly one active-provider selection
34
- reference from `.agents/skills/subagent-orchestration/references/` and the
35
- matching mechanics reference from
36
- `.agents/skills/oat-dispatch-subagents/references/` (`provider-cursor.md`,
37
- `provider-codex.md`, or `provider-claude.md`). Do not merge provider guidance
38
- or mechanics.
37
+ reference there: the named `provider-cursor.md`, `provider-codex.md`, or
38
+ `provider-claude.md` match. Then read the matching mechanics reference from
39
+ `${DISPATCH_SKILLS_ROOT}/oat-dispatch-subagents/references/`. Do not merge them.
39
40
 
40
41
  ## Project Log Append Points
41
42
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-plan-writing
3
- version: 1.2.18
3
+ version: 1.2.19
4
4
  description: Use when authoring or mutating plan.md in any OAT workflow. Defines canonical format invariants — stable task IDs, required sections, review table rules, and resume guardrails.
5
5
  disable-model-invocation: true
6
6
  user-invocable: false
@@ -25,20 +25,41 @@ This is a sub-phase indicator; the calling skill owns the top-level banner.
25
25
 
26
26
  ## Shared Subagent Dispatch Contract
27
27
 
28
- Before every artifact self-review dispatch, read and follow
29
- `.agents/skills/oat-project-dispatch-subagents/SKILL.md`, which then requires
30
- `.agents/skills/oat-dispatch-subagents/SKILL.md`. This explicit two-skill load
31
- is mandatory; do not rely on ambient skill discovery. Planning self-review
28
+ Before every artifact self-review dispatch, resolve `${SKILLS_ROOT}` for each
29
+ required sibling skill in this order:
30
+
31
+ 1. Derive it from the directory containing this loaded `SKILL.md`:
32
+ `${SKILL_DIR}/..`. If the provider exposes the loaded skill path, treat its
33
+ directory as `${SKILL_DIR}`.
34
+ 2. Otherwise try the user-scope root first: `${HOME}/.agents/skills`.
35
+ 3. Fall back to the project-scope root: `<repo-root>/.agents/skills`.
36
+
37
+ Probe each candidate for `<name>/SKILL.md` and treat the first match as
38
+ `${SKILLS_ROOT}`. If no candidate resolves, tell the user which required
39
+ dispatch skill is not installed. For `oat-project-dispatch-subagents`, run
40
+ `oat tools install workflows --scope <user|project>` or
41
+ `oat tools update --pack workflows --scope <user|project>` at its intended
42
+ scope. For `oat-dispatch-subagents` or `subagent-orchestration`, run
43
+ `oat tools install utility --scope <user|project>` or
44
+ `oat tools update --pack utility --scope <user|project>` at its intended scope.
45
+ Stop before the artifact self-review dispatch. Do not fall back to ambient skill
46
+ discovery.
47
+
48
+ Resolve, read, and follow
49
+ `${SKILLS_ROOT}/oat-project-dispatch-subagents/SKILL.md`, then resolve and read
50
+ `${SKILLS_ROOT}/oat-dispatch-subagents/SKILL.md`. Both reads are mandatory and
51
+ must remain in this order. Planning self-review
32
52
  inherits the planning parent by default. The shared contracts own any
33
53
  catalog-aware exception, launch acceptance boundary, and dispatch record; this
34
54
  skill continues to own plan readiness and review disposition.
35
55
 
36
56
  Read
37
- `.agents/skills/subagent-orchestration/references/model-selection-principles.md`.
57
+ `${SKILLS_ROOT}/subagent-orchestration/references/model-selection-principles.md`
58
+ (resolve `${SKILLS_ROOT}` for `subagent-orchestration` first).
38
59
  After resolving the review provider, read exactly one active-provider selection
39
- reference from `.agents/skills/subagent-orchestration/references/` and the
60
+ reference from `${SKILLS_ROOT}/subagent-orchestration/references/` and the
40
61
  matching mechanics reference from
41
- `.agents/skills/oat-dispatch-subagents/references/` (`provider-cursor.md`,
62
+ `${SKILLS_ROOT}/oat-dispatch-subagents/references/` (`provider-cursor.md`,
42
63
  `provider-codex.md`, or `provider-claude.md`). Do not merge provider guidance
43
64
  or mechanics.
44
65
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-agent-toolkit/cli",
3
- "version": "0.2.38",
3
+ "version": "0.2.39",
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",
@@ -34,7 +34,7 @@
34
34
  "ora": "^9.0.0",
35
35
  "yaml": "2.8.2",
36
36
  "zod": "^3.25.76",
37
- "@open-agent-toolkit/control-plane": "0.2.38"
37
+ "@open-agent-toolkit/control-plane": "0.2.39"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^22.10.0",