@open-agent-toolkit/cli 0.2.63 → 0.2.65

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 (165) hide show
  1. package/assets/bundle-metadata.json +1 -1
  2. package/assets/docs/cli-utilities/tool-packs.md +83 -0
  3. package/assets/docs/contributing/skills.md +52 -7
  4. package/assets/docs/provider-sync/manifest-and-drift.md +105 -0
  5. package/assets/public-package-versions.json +4 -4
  6. package/assets/skills/analyze/SKILL.md +2 -1
  7. package/assets/skills/authoring-docs/SKILL.md +2 -1
  8. package/assets/skills/compare/SKILL.md +2 -1
  9. package/assets/skills/create-agnostic-skill/SKILL.md +10 -7
  10. package/assets/skills/create-agnostic-skill/references/skill-template.md +9 -7
  11. package/assets/skills/deep-research/SKILL.md +2 -1
  12. package/assets/skills/explainer-kit/SKILL.md +2 -1
  13. package/assets/skills/oat-agent-instructions-analyze/SKILL.md +2 -1
  14. package/assets/skills/oat-agent-instructions-apply/SKILL.md +2 -1
  15. package/assets/skills/oat-brainstorm/SKILL.md +2 -1
  16. package/assets/skills/oat-cursor-cloud-projects/SKILL.md +2 -1
  17. package/assets/skills/oat-dispatch-subagents/SKILL.md +2 -1
  18. package/assets/skills/oat-docs/SKILL.md +2 -1
  19. package/assets/skills/oat-docs-analyze/SKILL.md +2 -1
  20. package/assets/skills/oat-docs-apply/SKILL.md +2 -1
  21. package/assets/skills/oat-docs-authoring/SKILL.md +2 -1
  22. package/assets/skills/oat-docs-bootstrap/SKILL.md +2 -1
  23. package/assets/skills/oat-doctor/SKILL.md +2 -1
  24. package/assets/skills/oat-explainer-kit/SKILL.md +2 -1
  25. package/assets/skills/oat-explainer-kit/scripts/check-core.mjs +322 -2
  26. package/assets/skills/oat-idea-ideate/SKILL.md +2 -1
  27. package/assets/skills/oat-idea-new/SKILL.md +2 -1
  28. package/assets/skills/oat-idea-scratchpad/SKILL.md +2 -1
  29. package/assets/skills/oat-idea-summarize/SKILL.md +2 -1
  30. package/assets/skills/oat-pjm-add-backlog-item/SKILL.md +2 -1
  31. package/assets/skills/oat-pjm-decision/SKILL.md +2 -1
  32. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -1
  33. package/assets/skills/oat-pjm-update-repo-reference/SKILL.md +2 -1
  34. package/assets/skills/oat-project-autonomous/SKILL.md +2 -1
  35. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +1 -0
  36. package/assets/skills/oat-project-capture/SKILL.md +2 -1
  37. package/assets/skills/oat-project-clear-active/SKILL.md +2 -1
  38. package/assets/skills/oat-project-complete/SKILL.md +2 -1
  39. package/assets/skills/oat-project-design/SKILL.md +2 -1
  40. package/assets/skills/oat-project-discover/SKILL.md +2 -1
  41. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +2 -1
  42. package/assets/skills/oat-project-document/SKILL.md +2 -1
  43. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +1 -0
  44. package/assets/skills/oat-project-implement/SKILL.md +2 -1
  45. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +1 -0
  46. package/assets/skills/oat-project-import-plan/SKILL.md +2 -1
  47. package/assets/skills/oat-project-lite/SKILL.md +2 -1
  48. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +1 -0
  49. package/assets/skills/oat-project-new/SKILL.md +2 -1
  50. package/assets/skills/oat-project-next/SKILL.md +2 -1
  51. package/assets/skills/oat-project-open/SKILL.md +2 -1
  52. package/assets/skills/oat-project-plan/SKILL.md +2 -1
  53. package/assets/skills/oat-project-plan-writing/SKILL.md +2 -1
  54. package/assets/skills/oat-project-pr-final/SKILL.md +282 -6
  55. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +1 -0
  56. package/assets/skills/oat-project-pr-progress/SKILL.md +2 -1
  57. package/assets/skills/oat-project-progress/SKILL.md +2 -1
  58. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +2 -1
  59. package/assets/skills/oat-project-quick-start/SKILL.md +2 -1
  60. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +1 -0
  61. package/assets/skills/oat-project-reconcile/SKILL.md +2 -1
  62. package/assets/skills/oat-project-retro/SKILL.md +2 -1
  63. package/assets/skills/oat-project-retro-file/SKILL.md +2 -1
  64. package/assets/skills/oat-project-review-provide/SKILL.md +2 -1
  65. package/assets/skills/oat-project-review-provide-remote/SKILL.md +2 -1
  66. package/assets/skills/oat-project-review-receive/SKILL.md +2 -1
  67. package/assets/skills/oat-project-review-receive-remote/SKILL.md +2 -1
  68. package/assets/skills/oat-project-revise/SKILL.md +2 -1
  69. package/assets/skills/oat-project-spec/SKILL.md +2 -1
  70. package/assets/skills/oat-project-split/SKILL.md +2 -1
  71. package/assets/skills/oat-project-summary/SKILL.md +2 -1
  72. package/assets/skills/oat-repo-improve/SKILL.md +1 -1
  73. package/assets/skills/oat-repo-knowledge-index/SKILL.md +2 -1
  74. package/assets/skills/oat-repo-maintainability-review/SKILL.md +2 -1
  75. package/assets/skills/oat-review-provide/SKILL.md +2 -1
  76. package/assets/skills/oat-review-provide-remote/SKILL.md +2 -1
  77. package/assets/skills/oat-review-receive/SKILL.md +2 -1
  78. package/assets/skills/oat-review-receive-remote/SKILL.md +2 -1
  79. package/assets/skills/oat-wave-execute/SKILL.md +2 -1
  80. package/assets/skills/oat-wave-program/SKILL.md +2 -1
  81. package/assets/skills/oat-worktree-bootstrap/SKILL.md +2 -1
  82. package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +2 -1
  83. package/assets/skills/oat-wrap-up/SKILL.md +2 -1
  84. package/assets/skills/recon/SKILL.md +2 -1
  85. package/assets/skills/skeptic/SKILL.md +2 -1
  86. package/assets/skills/subagent-orchestration/SKILL.md +2 -1
  87. package/assets/skills/synthesize/SKILL.md +2 -1
  88. package/dist/agents/canonical/resolve.d.ts.map +1 -1
  89. package/dist/agents/canonical/resolve.js +25 -4
  90. package/dist/commands/doctor/index.d.ts +7 -0
  91. package/dist/commands/doctor/index.d.ts.map +1 -1
  92. package/dist/commands/doctor/index.js +10 -2
  93. package/dist/commands/init/tools/index.d.ts.map +1 -1
  94. package/dist/commands/init/tools/index.js +68 -36
  95. package/dist/commands/shared/frontmatter.d.ts +51 -0
  96. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  97. package/dist/commands/shared/frontmatter.js +118 -6
  98. package/dist/commands/status/index.d.ts.map +1 -1
  99. package/dist/commands/status/index.js +5 -3
  100. package/dist/commands/sync/index.d.ts +14 -0
  101. package/dist/commands/sync/index.d.ts.map +1 -1
  102. package/dist/commands/sync/index.js +21 -0
  103. package/dist/commands/tools/info/index.d.ts.map +1 -1
  104. package/dist/commands/tools/info/index.js +14 -1
  105. package/dist/commands/tools/info/info-tool.d.ts +12 -0
  106. package/dist/commands/tools/info/info-tool.d.ts.map +1 -1
  107. package/dist/commands/tools/info/info-tool.js +54 -6
  108. package/dist/commands/tools/info/skill-views.d.ts +86 -0
  109. package/dist/commands/tools/info/skill-views.d.ts.map +1 -0
  110. package/dist/commands/tools/info/skill-views.js +383 -0
  111. package/dist/commands/tools/install/index.d.ts.map +1 -1
  112. package/dist/commands/tools/install/index.js +3 -25
  113. package/dist/commands/tools/list/list-tools.d.ts +2 -0
  114. package/dist/commands/tools/list/list-tools.d.ts.map +1 -1
  115. package/dist/commands/tools/list/list-tools.js +23 -4
  116. package/dist/commands/tools/remove/index.d.ts.map +1 -1
  117. package/dist/commands/tools/remove/index.js +35 -42
  118. package/dist/commands/tools/remove/remove-tools.d.ts +3 -2
  119. package/dist/commands/tools/remove/remove-tools.d.ts.map +1 -1
  120. package/dist/commands/tools/remove/remove-tools.js +14 -4
  121. package/dist/commands/tools/shared/auto-sync.d.ts +12 -1
  122. package/dist/commands/tools/shared/auto-sync.d.ts.map +1 -1
  123. package/dist/commands/tools/shared/auto-sync.js +20 -4
  124. package/dist/commands/tools/shared/format-pack-inventory.d.ts +12 -1
  125. package/dist/commands/tools/shared/format-pack-inventory.d.ts.map +1 -1
  126. package/dist/commands/tools/shared/format-pack-inventory.js +48 -6
  127. package/dist/commands/tools/shared/in-process-sync.d.ts +11 -0
  128. package/dist/commands/tools/shared/in-process-sync.d.ts.map +1 -0
  129. package/dist/commands/tools/shared/in-process-sync.js +79 -0
  130. package/dist/commands/tools/shared/pack-evidence.d.ts +78 -2
  131. package/dist/commands/tools/shared/pack-evidence.d.ts.map +1 -1
  132. package/dist/commands/tools/shared/pack-evidence.js +96 -2
  133. package/dist/commands/tools/shared/pack-lifecycle-outcome.d.ts +11 -0
  134. package/dist/commands/tools/shared/pack-lifecycle-outcome.d.ts.map +1 -1
  135. package/dist/commands/tools/shared/pack-lifecycle-outcome.js +24 -3
  136. package/dist/commands/tools/shared/pack-provider-evidence.d.ts +73 -0
  137. package/dist/commands/tools/shared/pack-provider-evidence.d.ts.map +1 -0
  138. package/dist/commands/tools/shared/pack-provider-evidence.js +161 -0
  139. package/dist/commands/tools/shared/provider-context.d.ts +88 -0
  140. package/dist/commands/tools/shared/provider-context.d.ts.map +1 -0
  141. package/dist/commands/tools/shared/provider-context.js +77 -0
  142. package/dist/commands/tools/shared/provider-reachability.d.ts +93 -0
  143. package/dist/commands/tools/shared/provider-reachability.d.ts.map +1 -0
  144. package/dist/commands/tools/shared/provider-reachability.js +358 -0
  145. package/dist/commands/tools/shared/sync-evidence.d.ts +57 -0
  146. package/dist/commands/tools/shared/sync-evidence.d.ts.map +1 -0
  147. package/dist/commands/tools/shared/sync-evidence.js +147 -0
  148. package/dist/commands/tools/update/index.d.ts +0 -4
  149. package/dist/commands/tools/update/index.d.ts.map +1 -1
  150. package/dist/commands/tools/update/index.js +22 -40
  151. package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
  152. package/dist/commands/tools/update/update-tools.js +23 -8
  153. package/dist/config/json.d.ts +36 -0
  154. package/dist/config/json.d.ts.map +1 -1
  155. package/dist/config/json.js +135 -3
  156. package/dist/drift/index.d.ts +2 -0
  157. package/dist/drift/index.d.ts.map +1 -1
  158. package/dist/drift/index.js +1 -0
  159. package/dist/drift/skill-view-diagnostic.d.ts +197 -0
  160. package/dist/drift/skill-view-diagnostic.d.ts.map +1 -0
  161. package/dist/drift/skill-view-diagnostic.js +343 -0
  162. package/dist/validation/skills.d.ts +1 -0
  163. package/dist/validation/skills.d.ts.map +1 -1
  164. package/dist/validation/skills.js +181 -19
  165. package/package.json +2 -2
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: oat-project-spec
3
- version: 2.0.2
4
3
  description: Use when discovery is complete but you're not ready to design yet, and you want to formalize requirements into a structured spec.md as an optional standalone step. Independent of the design workflow — oat-project-design confirms requirements automatically and does not require this skill to be run first.
5
4
  disable-model-invocation: true
6
5
  user-invocable: true
7
6
  allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion
7
+ metadata:
8
+ version: 2.0.3
8
9
  ---
9
10
 
10
11
  # Specification Phase
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: oat-project-split
3
- version: 1.1.0
4
3
  description: Use when a discovery or brainstorm should split one broad scope into coordinated OAT child projects.
5
4
  argument-hint: '--plan-file <path>'
6
5
  disable-model-invocation: true
7
6
  user-invocable: true
8
7
  allowed-tools: Read, Write, Bash(oat:*), Bash(pnpm:*), Glob, Grep, AskUserQuestion
8
+ metadata:
9
+ version: 1.1.1
9
10
  ---
10
11
 
11
12
  # Split OAT Project
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: oat-project-summary
3
- version: 1.5.3
4
3
  description: Use when the user requests or confirms summarizing an active OAT project — e.g. "summarize the project", "generate the summary", "run oat-project-summary", or confirms a previously offered summary run. Do NOT auto-invoke when implementation completes. Generates summary.md from project artifacts as institutional memory.
5
4
  disable-model-invocation: false
6
5
  user-invocable: true
7
6
  allowed-tools: Read, Write, Bash(git:*), Bash(jq:*), Bash(oat config:*), Bash(oat decision:*), Bash(oat pjm:*), Bash(oat project log:*), Bash(oat project push:*), Bash(oat project scope:*), Bash(oat tools:*), Glob, Grep, AskUserQuestion
7
+ metadata:
8
+ version: 1.5.4
8
9
  ---
9
10
 
10
11
  # Project Summary
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  name: oat-repo-improve
3
- version: 2.1.3
4
3
  description: Use when auditing a repository or turning maintainability reviews, backlog reviews, backlog directories, or backlog items into self-contained external implementation plans.
5
4
  argument-hint: '[repo-audit|maintainability-review|backlog-review|backlog-directory|backlog-item] [path-or-id] [quick|standard|deep] [focus] [--backlog-items] [--issues]'
6
5
  disable-model-invocation: false
@@ -9,6 +8,7 @@ allowed-tools: Read, Write, Glob, Grep, Bash, AskUserQuestion
9
8
  license: MIT
10
9
  metadata:
11
10
  author: shadcn
11
+ version: 2.1.4
12
12
  ---
13
13
 
14
14
  # OAT Repo Improve
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: oat-repo-knowledge-index
3
- version: 1.3.0
4
3
  description: Use when onboarding OAT to a repository or when knowledge artifacts are stale. Generates or refreshes the codebase knowledge index using parallel mapper agents.
5
4
  disable-model-invocation: true
6
5
  user-invocable: true
7
6
  allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion, Task
7
+ metadata:
8
+ version: 1.3.1
8
9
  ---
9
10
 
10
11
  # Knowledge Base Generation
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: oat-repo-maintainability-review
3
- version: 1.3.0
4
3
  description: Use when you need a structured maintainability analysis for a repository or directory target with actionable findings and an optional external-plan handoff.
5
4
  argument-hint: '[--scope repo|directory] [--target <path>] [--mode auto|tracked|local|inline] [--output <path>] [--focus <areas>] [--analysis-mode full] [--fan-out]'
6
5
  disable-model-invocation: true
7
6
  user-invocable: true
8
7
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
8
+ metadata:
9
+ version: 1.3.1
9
10
  ---
10
11
 
11
12
  # Repo Maintainability Review
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: oat-review-provide
3
- version: 1.2.3
4
3
  description: Use when you need an ad-hoc review outside an active OAT project lifecycle. Reviews code or artifacts without project phase state, unlike oat-project-review-provide.
5
4
  argument-hint: '[unstaged|staged|base_branch=<branch>|base_sha=<sha>|<sha1>..<sha2>|--files <path1,path2,...>] [--output <path>] [--mode auto|local|tracked|inline]'
6
5
  disable-model-invocation: true
7
6
  user-invocable: true
8
7
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
8
+ metadata:
9
+ version: 1.2.4
9
10
  ---
10
11
 
11
12
  # Ad-Hoc Review
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: oat-review-provide-remote
3
- version: 1.1.1
4
3
  description: Use when reviewing a GitHub PR opened on another machine and posting findings back as a single PR review, outside any OAT project context. Fetches the PR via gh, reviews it, and posts via gh api.
5
4
  disable-model-invocation: true
6
5
  user-invocable: true
7
6
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
7
+ metadata:
8
+ version: 1.1.2
8
9
  ---
9
10
 
10
11
  # Remote Review Provide (Ad-hoc GitHub PR)
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: oat-review-receive
3
- version: 1.4.0
4
3
  description: Use when processing review findings outside project context. Converts local review artifacts into actionable task lists.
5
4
  disable-model-invocation: true
6
5
  user-invocable: true
7
6
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
7
+ metadata:
8
+ version: 1.4.1
8
9
  ---
9
10
 
10
11
  # Review Receive (Ad-hoc Local)
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: oat-review-receive-remote
3
- version: 1.3.0
4
3
  description: Use when processing GitHub PR review comments outside project context. Fetches PR comments via agent-reviews and converts them into actionable task lists.
5
4
  disable-model-invocation: true
6
5
  user-invocable: true
7
6
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
7
+ metadata:
8
+ version: 1.3.1
8
9
  ---
9
10
 
10
11
  # Remote Review Receive (Ad-hoc GitHub PR)
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: oat-wave-execute
3
- version: 1.9.0
4
3
  description: Use when executing a wave of external implementation plans as a wrapper OAT project — scaffolding, drift refresh, parallel worktree groups, briefs, gates, merge choreography, and closeout.
5
4
  argument-hint: '<wave-id> [plan-names...] (e.g. wave-2 http-listener-before-indexing ...)'
6
5
  disable-model-invocation: false
7
6
  user-invocable: true
8
7
  allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Task
8
+ metadata:
9
+ version: 1.9.1
9
10
  ---
10
11
 
11
12
  # Execute a Wave of External Plans
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: oat-wave-program
3
- version: 1.5.0
4
3
  description: Use when decomposing a corpus of external implementation plans into an ordered wave program — coverage inventory, dependency mapping, wave composition, and the durable execution-program artifact that oat-wave-execute consumes and updates.
5
4
  argument-hint: '[new|refresh|wave-close <wave-id>] (default: refresh against the current artifact)'
6
5
  disable-model-invocation: false
7
6
  user-invocable: true
8
7
  allowed-tools: Read, Write, Edit, Bash, Grep, Glob, Task
8
+ metadata:
9
+ version: 1.5.1
9
10
  ---
10
11
 
11
12
  # Program a Corpus of External Plans into Waves
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: oat-worktree-bootstrap
3
- version: 1.3.1
4
3
  description: Use when creating or resuming a git worktree for OAT implementation. Creates or validates a worktree and runs OAT bootstrap checks.
5
4
  argument-hint: '<branch-name> [--base <ref>] [--path <root>] [--existing]'
6
5
  disable-model-invocation: true
7
6
  user-invocable: true
8
7
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
8
+ metadata:
9
+ version: 1.3.2
9
10
  ---
10
11
 
11
12
  # Worktree Bootstrap
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: oat-worktree-bootstrap-auto
3
- version: 1.6.1
4
3
  description: Use when an orchestrator/subagent needs autonomous worktree bootstrap. Non-interactive companion to oat-worktree-bootstrap.
5
4
  argument-hint: '<branch-name> [--base <ref>] [--path <root>] [--baseline-policy <strict|allow-failing>]'
6
5
  disable-model-invocation: false
7
6
  user-invocable: false
8
7
  allowed-tools: Read, Write, Bash, Glob, Grep
8
+ metadata:
9
+ version: 1.6.2
9
10
  ---
10
11
 
11
12
  # Autonomous Worktree Bootstrap
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: oat-wrap-up
3
- version: 1.0.2
4
3
  description: Use when preparing a shipping digest or weekly/biweekly wrap-up summarizing OAT projects and merged PRs over a time window. Reads local summary files and GitHub PR metadata; writes a version-controlled markdown report.
5
4
  argument-hint: '[--since YYYY-MM-DD] [--until YYYY-MM-DD] [--past-week|--past-2-weeks|--past-month] [--output <path>] [--dry-run]'
6
5
  disable-model-invocation: false
7
6
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
8
7
  user-invocable: true
8
+ metadata:
9
+ version: 1.0.3
9
10
  ---
10
11
 
11
12
  # Wrap-Up
@@ -1,11 +1,12 @@
1
1
  ---
2
2
  name: recon
3
- version: 1.1.0
4
3
  description: Use when a bounded investigation needs source-grounded evidence before analysis or implementation. Produces a validated evidence-packet directory through approved provider-neutral worker waves.
5
4
  argument-hint: '<question-or-target> [--profile quick|standard|thorough] [--scope description] [--context path] [--output directory] [--strict]'
6
5
  disable-model-invocation: true
7
6
  user-invocable: true
8
7
  allowed-tools: Read, Write, Glob, Grep, Bash, AskUserQuestion, Agent, mcp__*
8
+ metadata:
9
+ version: 1.1.1
9
10
  ---
10
11
 
11
12
  # Recon
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: skeptic
3
- version: 0.2.0
4
3
  description: Use when the user questions or suspects an agent claim is wrong. Adversarially gathers evidence to verify or refute the claim using the best sources available in the current environment.
5
4
  argument-hint: '[claim to question — optional, defaults to most recent agent assertion]'
6
5
  user-invocable: true
7
6
  allowed-tools: Read, Glob, Grep, Bash, WebSearch, WebFetch, AskUserQuestion, Agent, mcp__*
7
+ metadata:
8
+ version: 0.2.1
8
9
  ---
9
10
 
10
11
  # /skeptic
@@ -1,9 +1,10 @@
1
1
  ---
2
2
  name: subagent-orchestration
3
- version: 1.0.2
4
3
  description: Use when delegating work to subagents or choosing a model for a task — routing by task class, selecting provider-specific models and effort, and verifying subagent claims. Covers OpenAI/Codex, Anthropic/Claude, and Cursor.
5
4
  compatibility: Self-contained; no OAT installation required.
6
5
  user-invocable: true
6
+ metadata:
7
+ version: 1.0.3
7
8
  ---
8
9
 
9
10
  # Subagent Orchestration
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: synthesize
3
- version: 0.1.0
4
3
  description: Merge multiple analysis artifacts into a single coherent report with provenance tracking. Reads existing artifacts from /deep-research, /analyze, and /compare.
5
4
  argument-hint: '[directory | file1 file2 ...] [--inline]'
6
5
  user-invocable: true
7
6
  allowed-tools: Read, Glob, Grep, Bash, AskUserQuestion
7
+ metadata:
8
+ version: 0.1.1
8
9
  ---
9
10
 
10
11
  # /synthesize
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/agents/canonical/resolve.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAC9D,MAAM,MAAM,uBAAuB,GAC/B,kBAAkB,GAClB,yBAAyB,CAAC;AAC9B,MAAM,MAAM,6BAA6B,GACrC,SAAS,GACT,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,6BAA6B,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,uBAAuB,CAAC;IACpC,aAAa,EAAE,YAAY,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC,CAAC;AAEN,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AA2JD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,yBAAyB,GAC/B,qBAAqB,CA0DvB"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/agents/canonical/resolve.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAC9D,MAAM,MAAM,uBAAuB,GAC/B,kBAAkB,GAClB,yBAAyB,CAAC;AAC9B,MAAM,MAAM,6BAA6B,GACrC,SAAS,GACT,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,6BAA6B,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,uBAAuB,CAAC;IACpC,aAAa,EAAE,YAAY,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC,CAAC;AAEN,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAgLD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,yBAAyB,GAC/B,qBAAqB,CA0DvB"}
@@ -1,6 +1,7 @@
1
1
  import { createHash } from 'node:crypto';
2
2
  import { lstatSync, readFileSync, realpathSync } from 'node:fs';
3
3
  import { basename, dirname, join, resolve } from 'node:path';
4
+ import { getFrontmatterBlock, parseSkillFrontmatter, resolveSkillVersion, } from '../../commands/shared/frontmatter.js';
4
5
  import { parseCanonicalAgentMarkdown } from './parse.js';
5
6
  function redactedCandidate(tier, role) {
6
7
  return `<${tier}>/agents/${role}.md`;
@@ -88,12 +89,32 @@ function resolveRoleIdentity(resolved, candidate, input, candidateMisses) {
88
89
  try {
89
90
  const content = readFileSync(resolved.canonicalFile, 'utf8');
90
91
  const document = parseCanonicalAgentMarkdown(content, '<canonical-role>');
91
- const version = document.frontmatter.version;
92
+ // Resolve the version from the raw frontmatter block, the same input
93
+ // `getAgentVersion` reads, so the two readers of this very file cannot
94
+ // disagree. An already-parsed object no longer carries YAML node
95
+ // information, so it cannot tell a tagged, anchored, or aliased scalar
96
+ // (`!!str 1.2.3`, `&pin 1.2.3`, `*pin`) from a plain string and would
97
+ // accept a value every other reader rejects. Folded and literal block
98
+ // scalars are none of those and resolve normally. This is one parser over
99
+ // one input shape, not a second parser.
100
+ const block = getFrontmatterBlock(content);
101
+ const parsed = block === null ? null : parseSkillFrontmatter(block);
102
+ const resolvedVersion = parsed === null ? null : resolveSkillVersion(parsed);
103
+ // An identity needs one unambiguous version. A conflict, unreadable
104
+ // frontmatter, or a declaration the resolver cannot read (empty, a
105
+ // non-string scalar, or a tagged, anchored, or aliased value) disqualify it
106
+ // even when another position still resolves: otherwise a decorated
107
+ // `version:` beside a usable `metadata.version` would be accepted here
108
+ // while both validators reject the same file.
92
109
  if (document.name !== input.canonicalRole ||
93
- typeof version !== 'string' ||
94
- version.trim() === '') {
110
+ parsed === null ||
111
+ parsed.malformed ||
112
+ parsed.unusableVersionDeclaration ||
113
+ resolvedVersion === null ||
114
+ resolvedVersion.conflict !== undefined) {
95
115
  throw new Error('Canonical role identity is invalid');
96
116
  }
117
+ const version = resolvedVersion.version;
97
118
  const canonicalPath = redactedCandidate(canonicalTier(candidate, input.userCanonicalRoot, input.projectCanonicalRoot), input.canonicalRole);
98
119
  return {
99
120
  status: 'resolved',
@@ -103,7 +124,7 @@ function resolveRoleIdentity(resolved, candidate, input, candidateMisses) {
103
124
  validation: resolved.validation,
104
125
  canonicalPath,
105
126
  selectedPath: redactedCandidate(candidate.tier, input.canonicalRole),
106
- roleVersion: version.trim(),
127
+ roleVersion: version,
107
128
  contentDigest: `sha256:${createHash('sha256').update(content).digest('hex')}`,
108
129
  candidateMisses,
109
130
  };
@@ -61,6 +61,13 @@ interface SkillVersionReport {
61
61
  skippedMissingBundledCount: number;
62
62
  outdatedSkills: OutdatedSkillVersion[];
63
63
  }
64
+ /**
65
+ * Exported so the installed-versus-bundled comparison can be exercised
66
+ * directly against a real filesystem: the doctor command's own tests stub the
67
+ * `checkSkillVersions` dependency, which would leave this consumer of the
68
+ * shared version resolver unproven.
69
+ */
70
+ export declare function checkSkillVersionsDefault(scopeRoot: string, assetsRoot: string, pathExists: (path: string) => Promise<boolean>): Promise<SkillVersionReport>;
64
71
  export declare function createDoctorCommand(overrides?: Partial<DoctorDependencies>): Command;
65
72
  export {};
66
73
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"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"}
@@ -97,7 +97,13 @@ async function checkProvidersDefault(scopeRoot) {
97
97
  version: adapter.detectVersion ? await adapter.detectVersion() : null,
98
98
  })));
99
99
  }
100
- async function checkSkillVersionsDefault(scopeRoot, assetsRoot, pathExists) {
100
+ /**
101
+ * Exported so the installed-versus-bundled comparison can be exercised
102
+ * directly against a real filesystem: the doctor command's own tests stub the
103
+ * `checkSkillVersions` dependency, which would leave this consumer of the
104
+ * shared version resolver unproven.
105
+ */
106
+ export async function checkSkillVersionsDefault(scopeRoot, assetsRoot, pathExists) {
101
107
  const installedSkillsRoot = join(scopeRoot, '.agents', 'skills');
102
108
  const entries = await readdir(installedSkillsRoot, {
103
109
  withFileTypes: true,
@@ -769,7 +775,9 @@ async function createPackStateChecks(scopeRoots, providerContexts, dependencies)
769
775
  }
770
776
  return {
771
777
  checks,
772
- evidence: packEvidenceBlock(inventories.map((canonical) => projectRenderablePackEvidence(canonical, roots))),
778
+ evidence: packEvidenceBlock(inventories.map((canonical) => projectRenderablePackEvidence(canonical, roots, [
779
+ ...providerContexts.values(),
780
+ ]))),
773
781
  };
774
782
  }
775
783
  function createScopeUnavailableCheck(scope, error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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"}
@@ -11,9 +11,11 @@ import { canonicalPathsForPacks, getInstalledCanonicalPaths, setInstalledCanonic
11
11
  import { packScopeFactsFromInventory, projectPackEvidence, } from '../../tools/shared/pack-evidence.js';
12
12
  import { inventoryPack, } from '../../tools/shared/pack-inventory.js';
13
13
  import { reconcilePackLifecycles, } from '../../tools/shared/pack-lifecycle.js';
14
- import { evaluatePackLifecycleOutcome, resolveAdditivePackScopeSelection, } from '../../tools/shared/pack-lifecycle-outcome.js';
14
+ import { evaluatePackLifecycleOutcome, notRunProviderSyncOutcome, providerSyncOutcomeFromAutoSync, resolveAdditivePackScopeSelection, } from '../../tools/shared/pack-lifecycle-outcome.js';
15
15
  import { getPackDefinition } from '../../tools/shared/pack-manifest.js';
16
+ import { lifecycleProviderEvidence, withLifecycleProviderEvidence, } from '../../tools/shared/pack-provider-evidence.js';
16
17
  import { reconcileProjectToolsConfig } from '../../tools/shared/project-tools-config.js';
18
+ import { resolveProviderScopeContexts } from '../../tools/shared/provider-context.js';
17
19
  import { scanTools } from '../../tools/shared/scan-tools.js';
18
20
  import { readOatConfig, resolveLocalPaths, writeOatConfig, } from '../../../config/oat-config.js';
19
21
  import { resolveAssetsRoot } from '../../../fs/assets.js';
@@ -620,6 +622,10 @@ export async function runInitTools(context, dependencies, explicitProjectGuidanc
620
622
  let attemptedPacks = [];
621
623
  let attemptedSelections = [];
622
624
  let lifecycleOutcomes = [];
625
+ // Resolved once and reused by every outcome in this run, including the
626
+ // failure path: activation and capability are knowable even when the
627
+ // canonical apply failed.
628
+ let providerContexts = [];
623
629
  try {
624
630
  const userRoot = dependencies.resolveScopeRoot('user', context.cwd, context.home);
625
631
  const assetsRoot = await dependencies.resolveAssetsRoot();
@@ -631,6 +637,12 @@ export async function runInitTools(context, dependencies, explicitProjectGuidanc
631
637
  if (context.scope === 'project')
632
638
  throw error;
633
639
  }
640
+ providerContexts = await resolveProviderScopeContexts({
641
+ scopeRoots: {
642
+ ...(projectRoot ? { project: projectRoot } : {}),
643
+ user: userRoot,
644
+ },
645
+ });
634
646
  const initialPackStates = await loadInstalledPackStates(projectRoot, userRoot, assetsRoot, dependencies);
635
647
  const selectedPacks = context.interactive
636
648
  ? ((await dependencies.selectManyWithAbort('Select tool packs to install', buildPackChoices(initialPackStates), { interactive: context.interactive })) ?? [])
@@ -706,11 +718,17 @@ export async function runInitTools(context, dependencies, explicitProjectGuidanc
706
718
  lifecycleOutcomes = finalEvidence.map((evidence) => {
707
719
  const packResults = lifecycle.filter(({ request }) => request.pack === evidence.pack);
708
720
  const selection = attemptedSelections.find(({ pack }) => pack === evidence.pack);
721
+ const providers = lifecycleProviderEvidence({
722
+ pack: evidence.pack,
723
+ scopedInventories: evidence.canonical?.scopes ?? [],
724
+ providerContexts,
725
+ scopes: selection.targetScopes,
726
+ });
709
727
  return evaluatePackLifecycleOutcome({
710
728
  selection,
711
729
  lifecycle: packResults,
712
- sync: { scopes: [], status: 'not-run', providers: [] },
713
- finalEvidence: evidence,
730
+ sync: notRunProviderSyncOutcome(providers, 'Auto-sync has not run for this operation'),
731
+ finalEvidence: withLifecycleProviderEvidence(evidence, providers),
714
732
  });
715
733
  });
716
734
  for (const evidence of finalEvidence) {
@@ -1011,21 +1029,24 @@ export async function runInitTools(context, dependencies, explicitProjectGuidanc
1011
1029
  const guidancePlan = await applyProjectGuidance(plannedGuidance, dependencies);
1012
1030
  if (dependencies.syncAfterInstall) {
1013
1031
  const sync = await dependencies.syncAfterInstall(affectedScopesList, context, canonicalPathsForPacks(selectedPacks));
1014
- lifecycleOutcomes = lifecycleOutcomes.map((outcome) => evaluatePackLifecycleOutcome({
1015
- selection: outcome.selection,
1016
- lifecycle: outcome.canonical.results,
1017
- sync: {
1018
- scopes: sync.scopes.filter((scope) => outcome.selection.targetScopes.includes(scope)),
1019
- status: sync.scopes.length === 0
1020
- ? 'not-run'
1021
- : sync.synced
1022
- ? 'complete'
1023
- : 'failed',
1024
- providers: [],
1025
- ...(sync.error ? { error: sync.error } : {}),
1026
- },
1027
- finalEvidence: outcome.finalEvidence,
1028
- }));
1032
+ lifecycleOutcomes = lifecycleOutcomes.map((outcome) => {
1033
+ const providers = lifecycleProviderEvidence({
1034
+ pack: outcome.selection.pack,
1035
+ scopedInventories: outcome.finalEvidence?.canonical?.scopes ?? [],
1036
+ providerContexts,
1037
+ scopes: outcome.selection.targetScopes,
1038
+ sync,
1039
+ });
1040
+ return evaluatePackLifecycleOutcome({
1041
+ selection: outcome.selection,
1042
+ lifecycle: outcome.canonical.results,
1043
+ sync: providerSyncOutcomeFromAutoSync({
1044
+ ...sync,
1045
+ scopes: sync.scopes.filter((scope) => outcome.selection.targetScopes.includes(scope)),
1046
+ }, providers),
1047
+ finalEvidence: withLifecycleProviderEvidence(outcome.finalEvidence, providers),
1048
+ });
1049
+ });
1029
1050
  }
1030
1051
  lastRunInitToolsMetadata = {
1031
1052
  affectedScopes: affectedScopesList,
@@ -1062,11 +1083,11 @@ export async function runInitTools(context, dependencies, explicitProjectGuidanc
1062
1083
  targetScopes: [],
1063
1084
  },
1064
1085
  canonical: { status: 'failed', results: [] },
1065
- sync: {
1066
- scopes: [],
1067
- status: 'not-run',
1068
- providers: [],
1069
- },
1086
+ sync: notRunProviderSyncOutcome(lifecycleProviderEvidence({
1087
+ pack,
1088
+ scopedInventories: [],
1089
+ providerContexts,
1090
+ }), 'Canonical apply failed before auto-sync'),
1070
1091
  finalEvidence: null,
1071
1092
  status: 'failed',
1072
1093
  recovery: [{ code: 'canonical-apply-failed', message }],
@@ -1159,6 +1180,7 @@ function createReconciledPackCommand(pack, dependencies) {
1159
1180
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
1160
1181
  let lifecycleOutcome = null;
1161
1182
  let selection = null;
1183
+ let providerContexts = [];
1162
1184
  try {
1163
1185
  const explicitProjectGuidance = pack === 'workflows'
1164
1186
  ? commandProjectGuidanceChoice(command)
@@ -1189,6 +1211,9 @@ function createReconciledPackCommand(pack, dependencies) {
1189
1211
  action: 'install',
1190
1212
  })));
1191
1213
  const results = await dependencies.reconcilePacks(requests);
1214
+ providerContexts = await resolveProviderScopeContexts({
1215
+ scopeRoots: Object.fromEntries(requests.map(({ scope, scopeRoot }) => [scope, scopeRoot])),
1216
+ });
1192
1217
  let finalEvidence = null;
1193
1218
  if (dependencies.inventoryPack) {
1194
1219
  finalEvidence = await loadPackEvidence(pack, requests.some(({ scope }) => scope === 'project')
@@ -1198,7 +1223,12 @@ function createReconciledPackCommand(pack, dependencies) {
1198
1223
  lifecycleOutcome = evaluatePackLifecycleOutcome({
1199
1224
  selection,
1200
1225
  lifecycle: results,
1201
- sync: { scopes: [], status: 'not-run', providers: [] },
1226
+ sync: notRunProviderSyncOutcome(lifecycleProviderEvidence({
1227
+ pack,
1228
+ scopedInventories: finalEvidence?.canonical?.scopes ?? [],
1229
+ providerContexts,
1230
+ scopes,
1231
+ }), 'Auto-sync has not run for this operation'),
1202
1232
  finalEvidence,
1203
1233
  });
1204
1234
  if (finalEvidence)
@@ -1213,20 +1243,18 @@ function createReconciledPackCommand(pack, dependencies) {
1213
1243
  .filter(({ plan }) => plan.operations.length > 0)
1214
1244
  .map(({ request }) => request.scope);
1215
1245
  const sync = await dependencies.syncAfterInstall(changedScopes, context, canonicalPathsForPacks([pack]));
1246
+ const providers = lifecycleProviderEvidence({
1247
+ pack,
1248
+ scopedInventories: finalEvidence?.canonical?.scopes ?? [],
1249
+ providerContexts,
1250
+ scopes,
1251
+ sync,
1252
+ });
1216
1253
  lifecycleOutcome = evaluatePackLifecycleOutcome({
1217
1254
  selection,
1218
1255
  lifecycle: results,
1219
- sync: {
1220
- scopes: sync.scopes,
1221
- status: sync.scopes.length === 0
1222
- ? 'not-run'
1223
- : sync.synced
1224
- ? 'complete'
1225
- : 'failed',
1226
- providers: [],
1227
- ...(sync.error ? { error: sync.error } : {}),
1228
- },
1229
- finalEvidence,
1256
+ sync: providerSyncOutcomeFromAutoSync(sync, providers),
1257
+ finalEvidence: withLifecycleProviderEvidence(finalEvidence, providers),
1230
1258
  });
1231
1259
  }
1232
1260
  // Project-scope placement installs capability only. The
@@ -1316,7 +1344,11 @@ function createReconciledPackCommand(pack, dependencies) {
1316
1344
  targetScopes: [],
1317
1345
  },
1318
1346
  canonical: { status: 'failed', results: [] },
1319
- sync: { scopes: [], status: 'not-run', providers: [] },
1347
+ sync: notRunProviderSyncOutcome(lifecycleProviderEvidence({
1348
+ pack,
1349
+ scopedInventories: [],
1350
+ providerContexts,
1351
+ }), 'Canonical apply failed before auto-sync'),
1320
1352
  finalEvidence: null,
1321
1353
  status: 'failed',
1322
1354
  recovery: [{ code: 'canonical-apply-failed', message }],