@open-agent-toolkit/cli 0.2.36 → 0.2.38

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 (183) hide show
  1. package/assets/bundle-metadata.json +1 -1
  2. package/assets/docs/cli-utilities/backlog-lifecycle.md +18 -0
  3. package/assets/docs/cli-utilities/bootstrap.md +6 -3
  4. package/assets/docs/cli-utilities/config-and-local-state.md +26 -12
  5. package/assets/docs/cli-utilities/configuration.md +36 -13
  6. package/assets/docs/cli-utilities/tool-packs.md +423 -51
  7. package/assets/docs/provider-sync/scope-and-surface.md +4 -1
  8. package/assets/docs/reference/cli-reference.md +5 -3
  9. package/assets/docs/reference/file-locations.md +28 -4
  10. package/assets/docs/reference/troubleshooting.md +132 -2
  11. package/assets/docs/workflows/projects/lifecycle.md +21 -2
  12. package/assets/public-package-versions.json +4 -4
  13. package/assets/scripts/generate-oat-state.sh +441 -0
  14. package/assets/scripts/generate-thin-index.sh +200 -0
  15. package/assets/skills/oat-agent-instructions-analyze/SKILL.md +10 -5
  16. package/assets/skills/oat-agent-instructions-apply/SKILL.md +30 -5
  17. package/assets/skills/oat-brainstorm/SKILL.md +34 -8
  18. package/assets/skills/oat-brainstorm/references/destinations.md +6 -1
  19. package/assets/skills/oat-docs-analyze/SKILL.md +9 -4
  20. package/assets/skills/oat-docs-apply/SKILL.md +6 -3
  21. package/assets/skills/oat-pjm-add-backlog-item/SKILL.md +14 -1
  22. package/assets/skills/oat-pjm-decision/SKILL.md +22 -10
  23. package/assets/skills/oat-pjm-review-backlog/SKILL.md +20 -3
  24. package/assets/skills/oat-pjm-update-repo-reference/SKILL.md +20 -10
  25. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +1 -1
  26. package/assets/skills/oat-project-document/SKILL.md +21 -3
  27. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +1 -1
  28. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +1 -1
  29. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +1 -1
  30. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +1 -1
  31. package/assets/skills/oat-project-summary/SKILL.md +23 -11
  32. package/assets/skills/oat-repo-knowledge-index/SKILL.md +6 -3
  33. package/dist/commands/backlog/index.d.ts +2 -0
  34. package/dist/commands/backlog/index.d.ts.map +1 -1
  35. package/dist/commands/backlog/index.js +67 -23
  36. package/dist/commands/backlog/new.d.ts +3 -0
  37. package/dist/commands/backlog/new.d.ts.map +1 -1
  38. package/dist/commands/backlog/new.js +8 -21
  39. package/dist/commands/decision/agents-guidance.d.ts.map +1 -1
  40. package/dist/commands/decision/agents-guidance.js +2 -1
  41. package/dist/commands/decision/index.d.ts +2 -0
  42. package/dist/commands/decision/index.d.ts.map +1 -1
  43. package/dist/commands/decision/index.js +19 -3
  44. package/dist/commands/decision/new.d.ts +4 -0
  45. package/dist/commands/decision/new.d.ts.map +1 -1
  46. package/dist/commands/decision/new.js +11 -30
  47. package/dist/commands/doctor/index.d.ts +4 -0
  48. package/dist/commands/doctor/index.d.ts.map +1 -1
  49. package/dist/commands/doctor/index.js +254 -9
  50. package/dist/commands/init/tools/brainstorm/index.d.ts.map +1 -1
  51. package/dist/commands/init/tools/brainstorm/index.js +20 -6
  52. package/dist/commands/init/tools/docs/index.d.ts.map +1 -1
  53. package/dist/commands/init/tools/docs/index.js +4 -1
  54. package/dist/commands/init/tools/ideas/index.d.ts.map +1 -1
  55. package/dist/commands/init/tools/ideas/index.js +4 -1
  56. package/dist/commands/init/tools/index.d.ts +11 -2
  57. package/dist/commands/init/tools/index.d.ts.map +1 -1
  58. package/dist/commands/init/tools/index.js +459 -351
  59. package/dist/commands/init/tools/install-state.d.ts +2 -0
  60. package/dist/commands/init/tools/install-state.d.ts.map +1 -1
  61. package/dist/commands/init/tools/install-state.js +11 -0
  62. package/dist/commands/init/tools/project-management/agents-guidance.d.ts.map +1 -1
  63. package/dist/commands/init/tools/project-management/agents-guidance.js +3 -1
  64. package/dist/commands/init/tools/project-management/index.d.ts +1 -0
  65. package/dist/commands/init/tools/project-management/index.d.ts.map +1 -1
  66. package/dist/commands/init/tools/project-management/index.js +24 -55
  67. package/dist/commands/init/tools/project-management/install-project-management.d.ts +4 -0
  68. package/dist/commands/init/tools/project-management/install-project-management.d.ts.map +1 -1
  69. package/dist/commands/init/tools/project-management/install-project-management.js +4 -1
  70. package/dist/commands/init/tools/research/index.d.ts.map +1 -1
  71. package/dist/commands/init/tools/research/index.js +4 -1
  72. package/dist/commands/init/tools/shared/copy-helpers.d.ts.map +1 -1
  73. package/dist/commands/init/tools/shared/copy-helpers.js +10 -0
  74. package/dist/commands/init/tools/shared/skill-manifest.d.ts +15 -15
  75. package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
  76. package/dist/commands/init/tools/shared/skill-manifest.js +17 -122
  77. package/dist/commands/init/tools/utility/index.d.ts.map +1 -1
  78. package/dist/commands/init/tools/utility/index.js +4 -1
  79. package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
  80. package/dist/commands/init/tools/workflows/index.js +4 -1
  81. package/dist/commands/init/tools/workflows/install-workflows.d.ts.map +1 -1
  82. package/dist/commands/init/tools/workflows/install-workflows.js +2 -4
  83. package/dist/commands/pjm/adoption.d.ts +12 -0
  84. package/dist/commands/pjm/adoption.d.ts.map +1 -0
  85. package/dist/commands/pjm/adoption.js +47 -0
  86. package/dist/commands/pjm/doctor.d.ts +3 -2
  87. package/dist/commands/pjm/doctor.d.ts.map +1 -1
  88. package/dist/commands/pjm/doctor.js +28 -13
  89. package/dist/commands/pjm/index.d.ts +2 -0
  90. package/dist/commands/pjm/index.d.ts.map +1 -1
  91. package/dist/commands/pjm/index.js +11 -3
  92. package/dist/commands/pjm/init.d.ts +3 -0
  93. package/dist/commands/pjm/init.d.ts.map +1 -1
  94. package/dist/commands/pjm/init.js +37 -32
  95. package/dist/commands/pjm/migrate.d.ts +1 -0
  96. package/dist/commands/pjm/migrate.d.ts.map +1 -1
  97. package/dist/commands/pjm/migrate.js +1 -0
  98. package/dist/commands/pjm/template-source.d.ts +14 -0
  99. package/dist/commands/pjm/template-source.d.ts.map +1 -0
  100. package/dist/commands/pjm/template-source.js +56 -0
  101. package/dist/commands/remove/skills/remove-skills.d.ts.map +1 -1
  102. package/dist/commands/remove/skills/remove-skills.js +10 -19
  103. package/dist/commands/status/index.d.ts +5 -0
  104. package/dist/commands/status/index.d.ts.map +1 -1
  105. package/dist/commands/status/index.js +203 -2
  106. package/dist/commands/sync/index.d.ts.map +1 -1
  107. package/dist/commands/sync/index.js +40 -7
  108. package/dist/commands/sync/sync.types.d.ts +4 -0
  109. package/dist/commands/sync/sync.types.d.ts.map +1 -1
  110. package/dist/commands/tools/has/has-pack.d.ts +11 -2
  111. package/dist/commands/tools/has/has-pack.d.ts.map +1 -1
  112. package/dist/commands/tools/has/has-pack.js +33 -20
  113. package/dist/commands/tools/index.d.ts.map +1 -1
  114. package/dist/commands/tools/index.js +3 -1
  115. package/dist/commands/tools/info/info-tool.d.ts +3 -0
  116. package/dist/commands/tools/info/info-tool.d.ts.map +1 -1
  117. package/dist/commands/tools/info/info-tool.js +29 -4
  118. package/dist/commands/tools/list/list-tools.d.ts +3 -0
  119. package/dist/commands/tools/list/list-tools.d.ts.map +1 -1
  120. package/dist/commands/tools/list/list-tools.js +31 -4
  121. package/dist/commands/tools/migrate/index.d.ts +26 -0
  122. package/dist/commands/tools/migrate/index.d.ts.map +1 -0
  123. package/dist/commands/tools/migrate/index.js +312 -0
  124. package/dist/commands/tools/migrate/migrate-pack.d.ts +81 -0
  125. package/dist/commands/tools/migrate/migrate-pack.d.ts.map +1 -0
  126. package/dist/commands/tools/migrate/migrate-pack.js +324 -0
  127. package/dist/commands/tools/outdated/outdated-tools.d.ts +11 -0
  128. package/dist/commands/tools/outdated/outdated-tools.d.ts.map +1 -1
  129. package/dist/commands/tools/outdated/outdated-tools.js +33 -5
  130. package/dist/commands/tools/remove/index.d.ts.map +1 -1
  131. package/dist/commands/tools/remove/index.js +73 -20
  132. package/dist/commands/tools/remove/remove-tools.d.ts +28 -0
  133. package/dist/commands/tools/remove/remove-tools.d.ts.map +1 -1
  134. package/dist/commands/tools/remove/remove-tools.js +156 -26
  135. package/dist/commands/tools/shared/apply-pack-reconcile.d.ts +41 -0
  136. package/dist/commands/tools/shared/apply-pack-reconcile.d.ts.map +1 -0
  137. package/dist/commands/tools/shared/apply-pack-reconcile.js +126 -0
  138. package/dist/commands/tools/shared/auto-sync.d.ts +5 -2
  139. package/dist/commands/tools/shared/auto-sync.d.ts.map +1 -1
  140. package/dist/commands/tools/shared/auto-sync.js +1 -0
  141. package/dist/commands/tools/shared/content-digest.d.ts +3 -0
  142. package/dist/commands/tools/shared/content-digest.d.ts.map +1 -0
  143. package/dist/commands/tools/shared/content-digest.js +57 -0
  144. package/dist/commands/tools/shared/format-pack-inventory.d.ts +3 -0
  145. package/dist/commands/tools/shared/format-pack-inventory.d.ts.map +1 -0
  146. package/dist/commands/tools/shared/format-pack-inventory.js +21 -0
  147. package/dist/commands/tools/shared/install-sync-context.d.ts.map +1 -1
  148. package/dist/commands/tools/shared/install-sync-context.js +2 -25
  149. package/dist/commands/tools/shared/pack-inventory.d.ts +46 -0
  150. package/dist/commands/tools/shared/pack-inventory.d.ts.map +1 -0
  151. package/dist/commands/tools/shared/pack-inventory.js +207 -0
  152. package/dist/commands/tools/shared/pack-lifecycle.d.ts +34 -0
  153. package/dist/commands/tools/shared/pack-lifecycle.d.ts.map +1 -0
  154. package/dist/commands/tools/shared/pack-lifecycle.js +67 -0
  155. package/dist/commands/tools/shared/pack-manifest.d.ts +11 -0
  156. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -0
  157. package/dist/commands/tools/shared/pack-manifest.js +384 -0
  158. package/dist/commands/tools/shared/pack-paths.d.ts +21 -0
  159. package/dist/commands/tools/shared/pack-paths.d.ts.map +1 -0
  160. package/dist/commands/tools/shared/pack-paths.js +35 -0
  161. package/dist/commands/tools/shared/pack-reconcile.d.ts +64 -0
  162. package/dist/commands/tools/shared/pack-reconcile.d.ts.map +1 -0
  163. package/dist/commands/tools/shared/pack-reconcile.js +158 -0
  164. package/dist/commands/tools/shared/project-tools-config.d.ts.map +1 -1
  165. package/dist/commands/tools/shared/project-tools-config.js +12 -38
  166. package/dist/commands/tools/shared/scan-tools.js +2 -2
  167. package/dist/commands/tools/shared/scoped-pack-intent.d.ts +34 -0
  168. package/dist/commands/tools/shared/scoped-pack-intent.d.ts.map +1 -0
  169. package/dist/commands/tools/shared/scoped-pack-intent.js +116 -0
  170. package/dist/commands/tools/shared/types.d.ts +22 -0
  171. package/dist/commands/tools/shared/types.d.ts.map +1 -1
  172. package/dist/commands/tools/update/index.d.ts.map +1 -1
  173. package/dist/commands/tools/update/index.js +30 -5
  174. package/dist/commands/tools/update/update-tools.d.ts +9 -1
  175. package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
  176. package/dist/commands/tools/update/update-tools.js +176 -64
  177. package/dist/config/oat-config.d.ts +6 -0
  178. package/dist/config/oat-config.d.ts.map +1 -1
  179. package/dist/config/oat-config.js +49 -20
  180. package/dist/fs/paths.d.ts +12 -0
  181. package/dist/fs/paths.d.ts.map +1 -1
  182. package/dist/fs/paths.js +87 -1
  183. package/package.json +2 -2
@@ -17,6 +17,7 @@ This capability is intentionally independent from OAT workflow artifacts. Teams
17
17
  - Cursor's `.cursor/skills` and `~/.cursor/skills` directories are provider-local extension and adoption surfaces, not managed output directories.
18
18
  - Copilot's legacy `.github/skills` and `~/.copilot/skills` directories are adoption sources, not managed output directories. Copilot agents and project rules still use `.github/agents`, `~/.copilot/agents`, and `.github/instructions` provider views.
19
19
  - Manifest tracking: `.oat/sync/manifest.json` (project) and `~/.oat/sync/manifest.json` (user)
20
+ - Canonical skills and agents installed by OAT tool packs exist at both scopes: `.agents/skills`, `.agents/agents` for project scope, and `~/.agents/skills`, `~/.agents/agents` for user scope. Every reusable pack defaults to user scope on a fresh install, so user-scope canonical content is the common case rather than the exception.
20
21
 
21
22
  Rules are currently project-scoped canonical content. Unlike skills and agents, synced rule files for Claude, Cursor, and Copilot are rendered copies with provider-specific frontmatter and filename extensions.
22
23
 
@@ -30,6 +31,8 @@ Rules are currently project-scoped canonical content. Unlike skills and agents,
30
31
  - Obsolete managed mappings are deleted only when their provider paths are verified clean; changed or unverified paths are preserved and detached from manifest ownership
31
32
  - Canonical `.agents/agents` is source of truth for subagents; provider views are derived
32
33
  - Canonical `.agents/rules` is source of truth for rules; provider rule files are derived rendered copies
34
+ - Each scope syncs independently. When the same canonical asset exists at both project and user scope, OAT reports the duplication with both paths and versions and does **not** infer which copy a provider executes; resolve it explicitly with `oat tools migrate`
35
+ - Pack removal and migration drive a symmetric removal sync: the exact canonical paths that were removed are pruned from provider views in that scope only, and only after the canonical source is confirmed absent
33
36
 
34
37
  ## Implemented command surface
35
38
 
@@ -43,7 +46,7 @@ Rules are currently project-scoped canonical content. Unlike skills and agents,
43
46
  ## Adjacent CLI commands (commonly used with provider interop)
44
47
 
45
48
  - `oat init` (bootstrap canonical structure and sync config) — see `../cli-utilities/bootstrap.md`
46
- - `oat tools ...` (install/update/remove/list/inspect tools) — see `../cli-utilities/tool-packs.md`
49
+ - `oat tools ...` (install/update/remove/migrate/list/inspect tools) — see `../cli-utilities/tool-packs.md`
47
50
  - `oat doctor` (environment + skill-version diagnostics) — see `../reference/cli-reference.md`
48
51
 
49
52
  ## Provider enablement model
@@ -12,7 +12,7 @@ The CLI is also a standalone value path. You can use `oat init`, `oat sync`, `oa
12
12
  ## Contents
13
13
 
14
14
  - [CLI Bootstrap](../cli-utilities/bootstrap.md) - Bootstrap a repo with `oat init`, guided setup, and initial provider adoption.
15
- - [Tool Packs](../cli-utilities/tool-packs.md) - Install, update, inspect, and remove bundled OAT skills and agents.
15
+ - [Tool Packs](../cli-utilities/tool-packs.md) - Install, update, inspect, migrate, and remove bundled OAT skills and agents at project or user scope.
16
16
  - [Config and Local State](../cli-utilities/config-and-local-state.md) - Config, backlog, local paths, diagnostics, and related utility commands.
17
17
  - [Workflow Gates](../cli-utilities/workflow-gates.md) - Per-skill final commands, review gates, and cross-runtime prompt dispatch.
18
18
  - [Docs Tooling Commands](../docs-tooling/commands.md) - Docs app scaffolding, migration, index generation, and nav sync.
@@ -41,8 +41,8 @@ The first practical expansion path is to keep improving the existing owners: [Do
41
41
  | Command group | What it covers | Go deeper |
42
42
  | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
43
43
  | `oat init` | Bootstrap canonical OAT directories, sync config, optional hooks, and guided setup. | [CLI Bootstrap](../cli-utilities/bootstrap.md) |
44
- | `oat tools ...` | Install, inspect, update, and remove bundled OAT tool packs and assets. | [Tool Packs](../cli-utilities/tool-packs.md) |
45
- | `oat pjm ...` | Initialize the two-layer repo-reference surface (`init`), run enabled-pack reference diagnostics (`doctor`), and migrate legacy layouts to `pjm/` + `reference/` (`migrate`) after installing the project-management pack. | [Install vs. initialize](../cli-utilities/tool-packs.md#install-vs-initialize) |
44
+ | `oat tools ...` | Install, inspect, update, remove, and migrate bundled OAT tool packs and assets across project and user scope. | [Tool Packs](../cli-utilities/tool-packs.md) |
45
+ | `oat pjm ...` | Adopt PJM for a repository and record it (`init`), run read-only adoption and reference diagnostics (`doctor`), and migrate legacy layouts to `pjm/` + `reference/` (`migrate`). Adoption is separate from pack placement. | [Install vs. initialize](../cli-utilities/tool-packs.md#install-vs-initialize) |
46
46
  | `oat decision ...` | Create, index, and migrate file-per-record repo decisions under `reference/decisions/` (`init`, `new`, `regenerate-index`, `migrate`). | [Config and Local State](../cli-utilities/config-and-local-state.md#oat-decision-) |
47
47
  | `oat backlog ...` / `oat local ...` | File-backed backlog helpers, local path sync, and local-only operational support. | [Config and Local State](../cli-utilities/config-and-local-state.md) |
48
48
  | `oat config ...` / `oat instructions ...` | Config discovery, source-aware config dumps, supported mutations, and instruction-integrity helpers. | [Config and Local State](../cli-utilities/config-and-local-state.md) |
@@ -56,6 +56,8 @@ The first practical expansion path is to keep improving the existing owners: [Do
56
56
 
57
57
  Notable commands introduced in the current CLI surface:
58
58
 
59
+ - `oat tools migrate --pack <pack> --from <scope> --to <scope>` - move one installed pack between project and user scope. Always previews first, installs and re-inventories the destination before touching the source, and offers source removal only after the destination is verified complete. Declining or running non-interactively leaves the pack installed at both scopes rather than failing. `--dry-run` stops after the preview; there is no force flag. See [Tool Packs](../cli-utilities/tool-packs.md#oat-tools-migrate).
60
+ - `oat pjm doctor --json` - read-only repository PJM diagnostics whose result carries an additive `adoption` object (`state` of `declared` | `inferred-legacy` | `partial-initialization` | `none`, `repoRoot`, and `recovery`). This, not `oat tools has project-management`, is the check that answers whether _this repository_ adopted PJM.
59
61
  - `oat config dump --json` - merged config with source attribution
60
62
  - `oat project status --json` - full parsed state for the active tracked project. **Stable contract for skills:** the JSON output is a typed read interface for OAT skills; the field set consumed by migrated skills is locked by `MIGRATED_FIELDS` in `packages/cli/src/commands/project/status.test.ts`. Removing or renaming any of `project.{name, path, phase, phaseStatus, workflowMode, docsUpdated, lastCommit, prStatus, prUrl}` is a breaking change and will fail the contract test.
61
63
  - `oat project status --field <path>` - print one arbitrary dot-path field from the same status payload, e.g. `project.workflowMode` or `project.timestamps.stateUpdated`. Missing/null fields print `null`; object and array fields print compact JSON.
@@ -11,9 +11,9 @@ For detailed `.oat/` tree semantics, see:
11
11
 
12
12
  ## Canonical agent assets
13
13
 
14
- - Skills: `.agents/skills/`
15
- - Agents/subagents: `.agents/agents/`
16
- - Rules: `.agents/rules/`
14
+ - Skills: `.agents/skills/` (project) and `~/.agents/skills/` (user)
15
+ - Agents/subagents: `.agents/agents/` (project) and `~/.agents/agents/` (user)
16
+ - Rules: `.agents/rules/` (project only)
17
17
  - Cursor reads project skills directly from `.agents/skills/` and user skills
18
18
  directly from `~/.agents/skills/`. `.cursor/skills/` remains a Cursor-only
19
19
  extension and adoption surface, not generated output.
@@ -23,6 +23,29 @@ For detailed `.oat/` tree semantics, see:
23
23
  still sync to `.github/agents/` and `~/.copilot/agents/`, and project rules
24
24
  still sync to `.github/instructions/`.
25
25
 
26
+ ## Managed tool-pack assets by scope
27
+
28
+ Every reusable tool pack defaults to user scope on a fresh install, so both
29
+ columns are ordinary states.
30
+
31
+ | Asset kind | Project scope | User scope |
32
+ | ----------------- | -------------------------- | ---------------------------- |
33
+ | Pack skills | `.agents/skills/<name>/` | `~/.agents/skills/<name>/` |
34
+ | Pack agents | `.agents/agents/<name>.md` | `~/.agents/agents/<name>.md` |
35
+ | Pack templates | `.oat/templates/<name>` | `~/.oat/templates/<name>` |
36
+ | Pack scripts | `.oat/scripts/<name>` | `~/.oat/scripts/<name>` |
37
+ | Bundled docs tree | not applicable | `~/.oat/docs/` |
38
+
39
+ Project-scope templates under `.oat/templates/` are owner overrides that OAT
40
+ seeds once and never rewrites; the managed default lives at user scope and in
41
+ the bundle. PJM templates resolve repository → user → bundle.
42
+
43
+ Pack intent is stored per scope:
44
+
45
+ - Project intent: `tools.<pack>: true` in `.oat/config.json`
46
+ - User intent: `tools.<pack>: true` in `~/.oat/config.json`
47
+ - Repository PJM adoption: `pjm.initialized` and `pjm.schemaVersion` in `.oat/config.json`
48
+
26
49
  ## OAT runtime/state
27
50
 
28
51
  - Repo runtime config (non-sync settings): `.oat/config.json`
@@ -52,7 +75,8 @@ Config ownership note:
52
75
 
53
76
  ## OAT workflow
54
77
 
55
- - Templates: `.oat/templates/`
78
+ - Templates: `.oat/templates/` (repo overrides) and `~/.oat/templates/` (managed defaults)
79
+ - Shared scripts: `.oat/scripts/` and `~/.oat/scripts/`
56
80
  - Runtime sync state: `.oat/sync/`
57
81
  - Repo knowledge: `.oat/repo/knowledge/`
58
82
  - Active PJM operational layer: `.oat/repo/pjm/` (`current-state.md`, `roadmap.md`, `backlog/`)
@@ -78,6 +78,7 @@ Use [Instruction Sync](../provider-sync/instruction-sync.md) for the full strate
78
78
  - Run `oat init tools` to install/update bundled OAT tool packs.
79
79
  - In TTY mode, select which outdated skills to update when prompted.
80
80
  - In non-interactive mode, rerun the relevant pack subcommand with `--force` if you want to overwrite outdated installed skills.
81
+ - For pack-level drift rather than a single skill, prefer the scoped command doctor prints: `oat tools update --pack <pack> --scope <scope>`.
81
82
 
82
83
  ## `sync` reports an unsafe provider parent
83
84
 
@@ -106,8 +107,11 @@ OAT intentionally does not automate this recovery.
106
107
 
107
108
  ## A user-installed pack is missing from shared `tools.*`
108
109
 
109
- This is expected. `.oat/config.json#tools` records project installation state,
110
- so a user-only install does not set `tools.<pack>` in shared repo config.
110
+ This is expected. `.oat/config.json#tools` records **project-scope** intent
111
+ only. A user install writes `tools.<pack>: true` to `~/.oat/config.json`
112
+ instead, and never touches repository config. Since every reusable pack now
113
+ defaults to user scope on a fresh install, an empty repository `tools` map is
114
+ normal.
111
115
 
112
116
  Check effective project-plus-user availability with:
113
117
 
@@ -121,6 +125,130 @@ To confirm specifically that the user copy is present, run:
121
125
  oat tools has <pack> --scope user
122
126
  ```
123
127
 
128
+ ## `oat tools has <pack>` reports `false` for a pack I installed
129
+
130
+ Availability is complete-only: a scope counts only when every managed asset the
131
+ current release declares for it is present. A partially installed pack — for
132
+ example one missing a skill added in a newer release — reports `false`.
133
+
134
+ Read the reason from the JSON result and repair the named scope:
135
+
136
+ ```bash
137
+ oat --json tools has <pack>
138
+ oat tools update --pack <pack> --scope <project|user>
139
+ ```
140
+
141
+ `completeness` shows `complete`, `partial`, or `absent` per scope, and `missing`
142
+ lists the exact managed assets and paths behind a `false`.
143
+
144
+ ## `status` or `doctor` reports a partial or stale pack
145
+
146
+ Both commands report managed pack state with a scoped recovery command:
147
+
148
+ - `partial` — some managed assets are missing, or intent is declared with none
149
+ installed. Fix with `oat tools update --pack <pack> --scope <scope>`.
150
+ - `stale` — installed assets are behind the bundled release. Same fix.
151
+ - `newer` — installed assets are ahead of the bundle. This is informational and
152
+ usually means the CLI is older than the assets; update the CLI rather than
153
+ downgrading the pack.
154
+ - `retained-override` — an owner-owned seeded asset exists at the scope, so the
155
+ managed default is intentionally not applied there. This covers repository
156
+ templates under `.oat/templates/` **and** seeded content such as
157
+ `.oat/ideas/backlog.md` and `.oat/ideas/scratchpad.md`. Deleting the file is
158
+ the right move only for a **template** you want OAT to manage again; never
159
+ delete seeded content you have edited, because the next install or update
160
+ reseeds the bundled default in its place and your edits are gone. The finding
161
+ is informational and carries no recovery command for exactly that reason.
162
+ - `user-agent-unmaterialized` — the pack installed canonical agents into
163
+ `~/.agents/agents/`, but user scope materializes no provider view for them
164
+ beyond the bundled managed role files. `oat tools update` cannot fix this.
165
+ Install the pack at project scope (`oat tools install <pack> --scope project`)
166
+ when you need its agents. See
167
+ [Tool packs](../cli-utilities/tool-packs.md) for the full limitation.
168
+
169
+ ## `status` or `doctor` reports `legacy-false-conflict`
170
+
171
+ An older repository left `tools.<pack>: false` in shared config while managed
172
+ assets for that pack are present. The `false` is never honored as an opt-out.
173
+ Choose one:
174
+
175
+ ```bash
176
+ # adopt the existing install and rewrite intent as true
177
+ oat tools update --pack <pack> --scope <project|user>
178
+
179
+ # or remove the pack and delete the intent key entirely
180
+ oat tools remove --pack <pack> --scope <project|user>
181
+ ```
182
+
183
+ ## `status` or `doctor` reports `duplicate-scope`
184
+
185
+ The pack is installed at both project and user scope. This is a legitimate
186
+ state, and OAT deliberately does **not** infer which copy a provider executes.
187
+ Resolve it explicitly when you want one owner:
188
+
189
+ ```bash
190
+ oat tools migrate --pack <pack> --from project --to user --dry-run
191
+ oat tools migrate --pack <pack> --from project --to user
192
+ ```
193
+
194
+ The destination is installed and verified before source removal is offered, so
195
+ declining the confirmation leaves you exactly where you started — installed at
196
+ both scopes — rather than in a broken half-state.
197
+
198
+ ## `oat tools migrate` leaves the pack at both scopes
199
+
200
+ That is the safe outcome, not a failure. Migration verifies the destination
201
+ first and removes the source only after an explicit confirmation. Declining, or
202
+ running non-interactively, reports status `retained-both`. Rerun the command
203
+ interactively to finish the move; the destination work is already done.
204
+
205
+ If source removal or its sync failed partway, the command prints structured
206
+ recovery instructions and retains source intent. Rerun the same command to
207
+ complete it. Never delete the source by hand while the recovery instructions are
208
+ outstanding.
209
+
210
+ ## A PJM command refuses to write and asks for `oat pjm init`
211
+
212
+ Installing the `project-management` pack installs the **capability**. It does
213
+ not adopt PJM for a repository, and `oat backlog init` / `oat decision init` are
214
+ not alternate adoption paths. `oat pjm`, `oat backlog`, and `oat decision`
215
+ mutations fail closed until adoption is recorded.
216
+
217
+ Inspect the state, then adopt:
218
+
219
+ ```bash
220
+ oat pjm doctor --json # read adoption.state
221
+ oat pjm init
222
+ ```
223
+
224
+ `adoption.state` is `declared` (explicit marker present), `inferred-legacy`
225
+ (complete legacy scaffold, no marker), `partial-initialization` (incomplete
226
+ scaffold — rerun `oat pjm init`), or `none`. `oat pjm init` records
227
+ `pjm.initialized` in `.oat/config.json` after verifying the canonical scaffold.
228
+
229
+ ## A PJM template change is not taking effect
230
+
231
+ PJM templates resolve repository → user → bundle, first match wins. A
232
+ repository template under `.oat/templates/` is an owner override that pack
233
+ updates never rewrite, so it shadows the managed user default.
234
+
235
+ Delete the repository copy to fall back to the managed default, or update the
236
+ managed default itself:
237
+
238
+ ```bash
239
+ oat tools update --pack project-management --scope user
240
+ ```
241
+
242
+ ## `--scope all` fails outside a Git repository
243
+
244
+ It should not. `oat status --scope all` and `oat doctor --scope all` complete
245
+ the user-scope work and report project scope as unavailable.
246
+ `oat tools update --scope all` also completes the user-scope work, but it skips
247
+ project scope silently rather than naming it in the result, so an empty project
248
+ section there means "no repository here", not "nothing to update". An
249
+ explicitly requested `--scope project` outside a repository is still a hard
250
+ failure, which is intentional — you asked for a scope that does not exist here.
251
+
124
252
  ## Manifest not found or invalid
125
253
 
126
254
  - Missing manifest: run `sync` or `init`
@@ -183,4 +311,6 @@ be upgraded in place; restart them to receive an authenticated `ekrt2` token.
183
311
  - `.oat/projects/<scope>/<project>/reviews/`
184
312
  - `.oat/projects/<scope>/<project>/explainers/<slug>/qa/`
185
313
  - `packages/cli/src/commands/doctor/index.ts`
314
+ - `packages/cli/src/commands/status/index.ts`
315
+ - `packages/cli/src/commands/tools/shared/pack-inventory.ts`
186
316
  - `packages/cli/src/commands/instructions/`
@@ -18,7 +18,7 @@ OAT lifecycle order:
18
18
  7. Summary (`oat-project-summary`) — generates `summary.md` as institutional memory; `oat-project-pr-final` and `oat-project-complete` auto-refresh it when missing or stale
19
19
  8. PR (`oat-project-pr-progress` / `oat-project-pr-final`) — sets `pr_open` status
20
20
  9. Revision loop (`oat-project-revise`) — optional; accepts post-PR feedback
21
- 10. Documentation sync (`oat-project-document`) — optional; reads project artifacts and code evidence to identify docs needing updates, checks for missing coverage of newly shipped capability areas, checks effective project-management availability with `oat tools has project-management`, and auto-runs `oat-pjm-update-repo-reference` before scanning docs when the pack is available
21
+ 10. Documentation sync (`oat-project-document`) — optional; reads project artifacts and code evidence to identify docs needing updates, checks for missing coverage of newly shipped capability areas, and auto-runs `oat-pjm-update-repo-reference` before scanning docs only when the PJM capability is available **and** this repository has adopted PJM
22
22
  11. Complete (`oat-project-complete`)
23
23
 
24
24
  **Shortcut:** `oat-project-next` reads project state and invokes the correct next skill automatically — use it instead of remembering which skill comes next. Complements `oat-project-progress` (which is read-only diagnostic).
@@ -63,7 +63,7 @@ from missing state.
63
63
  After implementation closeout finishes:
64
64
 
65
65
  1. **Summary** (`oat-project-summary`) — generates `summary.md` as institutional memory from project artifacts; PR-final and completion will auto-refresh it if you have not already run it or if it is stale
66
- 2. **Documentation** (`oat-project-document`) — optional sync of project docs; checks effective project-management availability with `oat tools has project-management` to decide whether repo-reference refresh should run before docs analysis, and should recommend new docs pages/directories when the shipped work introduces a capability area that the docs app does not already cover
66
+ 2. **Documentation** (`oat-project-document`) — optional sync of project docs; decides whether repo-reference refresh should run before docs analysis using two independent checks, and should recommend new docs pages/directories when the shipped work introduces a capability area that the docs app does not already cover
67
67
  3. **PR** (`oat-project-pr-final`) — creates PR description (auto-refreshes `summary.md` first when needed, then uses it as source), sets `oat_phase_status: pr_open`, and tracks actual PR existence with `oat_pr_status` / `oat_pr_url`
68
68
  4. **Revision loop** (`oat-project-revise`) — accepts post-PR feedback:
69
69
  - Inline feedback creates `p-revN` revision phases with `prevN-tNN` task IDs
@@ -308,6 +308,25 @@ See the [Workflow preferences section in the Configuration guide](../../cli-util
308
308
  - Projects root is stored in `.oat/config.json` (`projects.root`) and can be read via `oat config get projects.root`.
309
309
  - Workflow skills prefer `oat config get activeProject` / `oat config get projects.root` rather than reading pointer files directly.
310
310
 
311
+ ## Capability availability versus repository adoption
312
+
313
+ Lifecycle skills that touch repository project-management state make two
314
+ separate checks, and both must hold before any PJM write:
315
+
316
+ 1. **Capability availability** — `oat tools has project-management` answers
317
+ whether the PJM skills and templates are installed and complete at project or
318
+ user scope. Since packs default to user scope, this is usually satisfied by a
319
+ user-scope install with no repository footprint.
320
+ 2. **Repository adoption** — `oat pjm doctor --json` answers whether _this_
321
+ repository adopted PJM. Branch on its `adoption.state` field: `declared` and
322
+ `inferred-legacy` allow repository PJM writes; `partial-initialization` and
323
+ `none` stop with `oat pjm init` as the recovery.
324
+
325
+ Pack presence is never treated as evidence of repository adoption. A skill that
326
+ finds the capability available but the repository unadopted reports the
327
+ actionable `oat pjm init` stop instead of scaffolding implicitly. See
328
+ [Install vs. initialize](../../cli-utilities/tool-packs.md#install-vs-initialize).
329
+
311
330
  ## Brainstorming integration with the project lifecycle
312
331
 
313
332
  `oat-brainstorm` (in the `brainstorm` tool pack) interacts with the project lifecycle in two distinct ways: it can **seed a brand new project** from a brainstorming conversation when no project is active, or **fold back into an active project** when one is.
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.2.36",
3
- "docs-config": "0.2.36",
4
- "docs-theme": "0.2.36",
5
- "docs-transforms": "0.2.36"
2
+ "cli": "0.2.38",
3
+ "docs-config": "0.2.38",
4
+ "docs-theme": "0.2.38",
5
+ "docs-transforms": "0.2.38"
6
6
  }