@unbrained/pm-cli 2026.9.26 → 2026.9.28

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 (181) hide show
  1. package/.claude-plugin/marketplace.json +4 -6
  2. package/CHANGELOG.md +42 -0
  3. package/dist/cli/commander-usage.js +2 -2
  4. package/dist/cli/error-guidance.js +1 -1
  5. package/dist/cli/help-json-payload.js +1 -1
  6. package/dist/cli/main.js +2 -2
  7. package/dist/cli/register-operations.js +1 -1
  8. package/dist/cli/register-setup.js +1 -1
  9. package/dist/cli/runtime/selection.d.ts +3 -1
  10. package/dist/cli/runtime/selection.js +1 -1
  11. package/dist/cli-bundle/bundle-manifest.json +156 -148
  12. package/dist/cli-bundle/chunks/{chunk-TC74K7SS.js → chunk-35DME35A.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-QQD3VRMZ.js → chunk-A2G5OG6W.js} +2 -2
  14. package/dist/cli-bundle/chunks/chunk-CPOWTIIS.js +2 -0
  15. package/dist/cli-bundle/chunks/{chunk-TYJXMT3Q.js → chunk-GLH2LNRH.js} +2 -2
  16. package/dist/cli-bundle/chunks/{chunk-IYN4MJ2C.js → chunk-NBDB3SRC.js} +57 -57
  17. package/dist/cli-bundle/chunks/{chunk-HTHTX6E6.js → chunk-NEUIVBFO.js} +2 -2
  18. package/dist/cli-bundle/chunks/{chunk-U55RYT3I.js → chunk-OYCCWPBM.js} +2 -2
  19. package/dist/cli-bundle/chunks/{chunk-VMO4P5MX.js → chunk-PLNNUAFZ.js} +2 -2
  20. package/dist/cli-bundle/chunks/{chunk-FOTXRNY6.js → chunk-PR4UAMI5.js} +44 -44
  21. package/dist/cli-bundle/chunks/{chunk-SZQCHJI4.js → chunk-UT7GRGHY.js} +2 -2
  22. package/dist/cli-bundle/chunks/{chunk-MJWKR7YA.js → chunk-VMJLM7P2.js} +62 -62
  23. package/dist/cli-bundle/chunks/{chunk-4ODHIX7N.js → chunk-YERBAGQD.js} +2 -2
  24. package/dist/cli-bundle/chunks/chunk-ZFHJP7YD.js +29 -0
  25. package/dist/cli-bundle/chunks/{register-list-query-426QTRET.js → register-list-query-N6RP6PSP.js} +2 -2
  26. package/dist/cli-bundle/chunks/{register-mutation-FLI3HHMP.js → register-mutation-CY7JGQE6.js} +2 -2
  27. package/dist/cli-bundle/chunks/{register-operations-TP7ZG4MK.js → register-operations-53HAD3QP.js} +2 -2
  28. package/dist/cli-bundle/chunks/register-setup-NVX6374E.js +2 -0
  29. package/dist/cli-bundle/focused-chunks/chunk-5KJXX2TZ.js +2 -0
  30. package/dist/cli-bundle/focused-chunks/{chunk-UIFVIE5F.js → chunk-6IVQPNYN.js} +2 -2
  31. package/dist/cli-bundle/focused-chunks/{chunk-MK5AKKHK.js → chunk-A5O3VYWV.js} +2 -2
  32. package/dist/cli-bundle/focused-chunks/chunk-AZA4AEOR.js +75 -0
  33. package/dist/cli-bundle/focused-chunks/chunk-BGWF6CMP.js +2 -0
  34. package/dist/cli-bundle/focused-chunks/{chunk-NVVB2HJC.js → chunk-BRLXKRI2.js} +17 -17
  35. package/dist/cli-bundle/focused-chunks/{chunk-ABA3KRPY.js → chunk-DTLRXY77.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-XKH2FC5D.js → chunk-IJXZQE3D.js} +2 -2
  37. package/dist/cli-bundle/focused-chunks/{chunk-Q355NPLH.js → chunk-IWLMQLBO.js} +6 -6
  38. package/dist/cli-bundle/focused-chunks/chunk-K7GSZ7YZ.js +2 -0
  39. package/dist/cli-bundle/focused-chunks/{chunk-OY3VHCTX.js → chunk-ONDNR3VU.js} +2 -2
  40. package/dist/cli-bundle/focused-chunks/{chunk-XVBWZTU2.js → chunk-OVVCXTIE.js} +12 -12
  41. package/dist/cli-bundle/focused-chunks/{chunk-25BBHWMH.js → chunk-V7OPZRL6.js} +2 -2
  42. package/dist/cli-bundle/focused-chunks/{chunk-TLF6N56J.js → chunk-Y5Z3XNGY.js} +2 -2
  43. package/dist/cli-bundle/focused-chunks/{chunk-O7MIBEMK.js → chunk-YZB7IPR6.js} +2 -2
  44. package/dist/cli-bundle/focused-chunks/{chunk-NRHTXBTI.js → chunk-ZMQTIS3L.js} +2 -2
  45. package/dist/cli-bundle/main.js +22 -22
  46. package/dist/cli-bundle/sdk-authoring.js +1 -1
  47. package/dist/cli-bundle/sdk-contracts.js +1 -1
  48. package/dist/cli-bundle/sdk-core.js +18 -18
  49. package/dist/cli-bundle/sdk-governance.js +1 -1
  50. package/dist/cli-bundle/sdk-graph.js +1 -1
  51. package/dist/cli-bundle/sdk-merge.js +51 -51
  52. package/dist/cli-bundle/sdk-query.js +1 -1
  53. package/dist/cli-bundle/sdk-runtime.js +1 -1
  54. package/dist/cli-bundle/sdk-testing.js +1 -1
  55. package/dist/cli-bundle/sdk.js +8 -8
  56. package/dist/core/diagnostics/remediation.js +1 -1
  57. package/dist/core/item/item-format.js +1 -1
  58. package/dist/core/store/settings.js +3 -3
  59. package/dist/sdk/agent-capability-contracts.js +1 -1
  60. package/dist/sdk/cli-contracts/command-aliases.js +1 -1
  61. package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1
  62. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
  63. package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
  64. package/dist/sdk/completion/fish.js +3 -3
  65. package/dist/sdk/completion/shared.d.ts +1 -1
  66. package/dist/sdk/completion/shared.js +1 -1
  67. package/dist/sdk/completion/zsh.js +3 -3
  68. package/dist/sdk/extension/copy-scope.d.ts +2 -2
  69. package/dist/sdk/extension/copy-scope.js +1 -1
  70. package/dist/sdk/extension/install-plan.js +1 -1
  71. package/dist/sdk/extension/install-runtime.js +2 -2
  72. package/dist/sdk/extension/static-inventory.d.ts +54 -0
  73. package/dist/sdk/extension/static-inventory.js +2 -0
  74. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  75. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  76. package/dist/sdk/governance/health-merge-evidence.d.ts +18 -0
  77. package/dist/sdk/governance/health-merge-evidence.js +2 -0
  78. package/dist/sdk/governance/health.js +1 -1
  79. package/dist/sdk/guide-topics.js +1 -1
  80. package/dist/sdk/index.d.ts +1 -0
  81. package/dist/sdk/index.js +1 -1
  82. package/dist/sdk/merge/install.js +2 -2
  83. package/dist/sdk/output-projection.d.ts +1 -1
  84. package/dist/sdk/output-projection.js +1 -1
  85. package/dist/sdk/public-surface.json +1 -1
  86. package/dist/sdk/query/complete-list.js +1 -1
  87. package/dist/sdk/read-output/provenance.d.ts +20 -0
  88. package/dist/sdk/read-output/provenance.js +2 -0
  89. package/dist/sdk/read-output-budget.d.ts +1 -1
  90. package/dist/sdk/read-output-budget.js +1 -1
  91. package/dist/sdk/read-output-contracts.js +1 -1
  92. package/dist/sdk/runtime-input.js +1 -1
  93. package/dist/sdk/test/execution.d.ts +11 -0
  94. package/dist/sdk/test/execution.js +2 -2
  95. package/dist/sdk/test/parsers.d.ts +1 -1
  96. package/dist/sdk/test/parsers.js +1 -1
  97. package/dist/types.d.ts +3 -3
  98. package/dist/types.js +1 -1
  99. package/docs/AGENT_READ_AND_TEST_RECEIPTS.md +21 -0
  100. package/docs/CLAUDE_CODE_PLUGIN.md +12 -7
  101. package/docs/CLI_GRAMMAR.md +31 -0
  102. package/docs/CODEX_PLUGIN.md +8 -0
  103. package/docs/CONFIGURATION.md +2 -0
  104. package/docs/EXTENSION_LIFECYCLE.md +18 -0
  105. package/docs/PACKAGE_EVIDENCE.md +18 -7
  106. package/docs/README.md +1 -0
  107. package/docs/RELEASING.md +46 -1
  108. package/docs/TESTING.md +14 -3
  109. package/docs/agent-task-token-baseline.json +4 -4
  110. package/docs/generated/AGENT_CAPABILITY_ROUTING.md +1 -1
  111. package/docs/generated/AGENT_COMMAND_SURFACE.md +5 -1
  112. package/docs/generated/FLAG_LEXICON_BUDGETS.md +4 -0
  113. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +18 -7
  114. package/marketplace.json +4 -6
  115. package/package.json +6 -6
  116. package/packages/pm-beads/package.json +1 -1
  117. package/packages/pm-calendar/package.json +1 -1
  118. package/packages/pm-command-kit/package.json +1 -1
  119. package/packages/pm-digital-twin/package.json +1 -1
  120. package/packages/pm-governance-audit/package.json +1 -1
  121. package/packages/pm-guide-shell/package.json +1 -1
  122. package/packages/pm-kanban/package.json +1 -1
  123. package/packages/pm-lifecycle-hooks/package.json +1 -1
  124. package/packages/pm-linked-test-adapters/package.json +1 -1
  125. package/packages/pm-search-advanced/package.json +1 -1
  126. package/packages/pm-templates/package.json +1 -1
  127. package/packages/pm-todos/package.json +1 -1
  128. package/packages/pm-vcs/package.json +1 -1
  129. package/plugins/pm-claude/.claude-plugin/plugin.json +4 -2
  130. package/plugins/pm-claude/.mcp.json +1 -2
  131. package/plugins/pm-claude/README.md +11 -7
  132. package/plugins/pm-claude/package.json +2 -2
  133. package/plugins/pm-claude/skills/pm-audit/SKILL.md +14 -103
  134. package/plugins/pm-claude/skills/pm-audit/agents/openai.yaml +4 -0
  135. package/plugins/pm-claude/{commands/pm-calendar.md → skills/pm-calendar/SKILL.md} +1 -0
  136. package/plugins/pm-claude/{commands/pm-close-task.md → skills/pm-close-task/SKILL.md} +1 -0
  137. package/plugins/pm-claude/skills/pm-developer/SKILL.md +20 -143
  138. package/plugins/pm-claude/skills/pm-developer/agents/openai.yaml +4 -0
  139. package/plugins/pm-claude/{commands/pm-init.md → skills/pm-init/SKILL.md} +2 -1
  140. package/plugins/pm-claude/{commands/pm-list.md → skills/pm-list/SKILL.md} +2 -1
  141. package/plugins/pm-claude/{commands/pm-new.md → skills/pm-new/SKILL.md} +1 -0
  142. package/plugins/pm-claude/skills/pm-planner/SKILL.md +16 -167
  143. package/plugins/pm-claude/skills/pm-planner/agents/openai.yaml +4 -0
  144. package/plugins/pm-claude/skills/pm-release/SKILL.md +18 -102
  145. package/plugins/pm-claude/skills/pm-release/agents/openai.yaml +4 -0
  146. package/plugins/pm-claude/{commands/pm-search.md → skills/pm-search/SKILL.md} +1 -0
  147. package/plugins/pm-claude/{commands/pm-start-task.md → skills/pm-start-task/SKILL.md} +1 -0
  148. package/plugins/pm-claude/{commands/pm-status.md → skills/pm-status/SKILL.md} +1 -0
  149. package/plugins/pm-claude/{commands/pm-triage.md → skills/pm-triage/SKILL.md} +1 -0
  150. package/plugins/pm-claude/skills/pm-workflow/SKILL.md +25 -156
  151. package/plugins/pm-claude/skills/pm-workflow/agents/openai.yaml +4 -0
  152. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  153. package/plugins/pm-codex/README.md +10 -2
  154. package/plugins/pm-codex/mcp.json +11 -0
  155. package/plugins/pm-codex/package.json +2 -2
  156. package/plugins/pm-codex/plugin.json +45 -0
  157. package/plugins/pm-codex/skills/pm-audit/SKILL.md +21 -0
  158. package/plugins/pm-codex/skills/pm-audit/agents/openai.yaml +4 -0
  159. package/plugins/pm-codex/skills/pm-auditor/SKILL.md +5 -40
  160. package/plugins/pm-codex/skills/pm-auditor/agents/openai.yaml +3 -5
  161. package/plugins/pm-codex/skills/pm-developer/SKILL.md +26 -0
  162. package/plugins/pm-codex/skills/pm-developer/agents/openai.yaml +4 -0
  163. package/plugins/pm-codex/skills/pm-native/SKILL.md +7 -87
  164. package/plugins/pm-codex/skills/pm-native/agents/openai.yaml +3 -5
  165. package/plugins/pm-codex/skills/pm-planner/SKILL.md +22 -0
  166. package/plugins/pm-codex/skills/pm-planner/agents/openai.yaml +4 -0
  167. package/plugins/pm-codex/skills/pm-release/SKILL.md +17 -38
  168. package/plugins/pm-codex/skills/pm-release/agents/openai.yaml +2 -4
  169. package/plugins/pm-codex/skills/pm-workflow/SKILL.md +39 -0
  170. package/plugins/pm-codex/skills/pm-workflow/agents/openai.yaml +4 -0
  171. package/dist/cli-bundle/chunks/chunk-GRWPZR7F.js +0 -29
  172. package/dist/cli-bundle/chunks/register-setup-574SIVQZ.js +0 -2
  173. package/dist/cli-bundle/focused-chunks/chunk-H3BI4EDO.js +0 -75
  174. package/dist/cli-bundle/focused-chunks/chunk-HNHMK5JI.js +0 -2
  175. package/dist/cli-bundle/focused-chunks/chunk-HQPTDJLF.js +0 -2
  176. package/dist/cli-bundle/focused-chunks/chunk-PMPFLA6X.js +0 -2
  177. package/plugins/pm-claude/commands/pm-audit.md +0 -38
  178. package/plugins/pm-claude/commands/pm-developer.md +0 -38
  179. package/plugins/pm-claude/commands/pm-planner.md +0 -54
  180. package/plugins/pm-claude/commands/pm-release.md +0 -41
  181. package/plugins/pm-claude/commands/pm-workflow.md +0 -49
@@ -67,6 +67,8 @@ Precedence:
67
67
 
68
68
  When `settings.json` cannot be loaded, `pm` falls back to built-in defaults and prints a one-time `settings_read_fs_error`, `settings_read_invalid_json`, or `settings_read_invalid_schema` warning to stderr (stdout output is unchanged); run `pm health` for remediation.
69
69
 
70
+ If the existing project `settings.json` has invalid JSON, a configuration write refuses with `settings_write_invalid_existing_json`. It leaves the file and workspace history untouched. Repair the syntax in `.agents/pm/settings.json`, run `pm health`, then retry the configuration command. The read fallback to defaults does not authorize replacing malformed settings.
71
+
70
72
  ## Common Settings
71
73
 
72
74
  | Setting | Purpose |
@@ -3,6 +3,24 @@
3
3
  Tracked by [pm-ig5cfe](../.agents/pm/issues/pm-ig5cfe.toon),
4
4
  [pm-495lkc](../.agents/pm/issues/pm-495lkc.toon), and
5
5
  [pm-miy5k6](../.agents/pm/issues/pm-miy5k6.toon).
6
+ Static inventory is tracked by [pm-lhhnx9](../.agents/pm/issues/pm-lhhnx9.toon).
7
+
8
+ ## Read-only configured inventory
9
+
10
+ Use `pm package inventory --project --json` (or `--global`) for a host GET route
11
+ or agent read. Pass a name to receive an explicit `absent` row. The public SDK
12
+ equivalent is `inspectStaticExtensionInventory({ pmRoot, scope, name })` from
13
+ `@unbrained/pm-cli/sdk`. Both read settings, managed metadata, and manifests
14
+ without importing package entrypoints, running hooks, checking for updates,
15
+ adopting installs, or writing workspace files. An absent managed-state file is
16
+ reported separately from an invalid one. `complete: false` and `errors` mean
17
+ the list must not be treated as authoritative; the CLI also exits nonzero.
18
+
19
+ `configured_enabled` is the effective saved enablement setting, while
20
+ `runtime_active` is always `null`. The static read does not prove that a package
21
+ will activate successfully. `pm package explore`, `manage`, `doctor`, and
22
+ `describe` probe runtime state and may execute installed package code. Run
23
+ those commands only when an activation probe is intended.
6
24
 
7
25
  ## Explicit Install-Source Identity
8
26
 
@@ -1,8 +1,10 @@
1
1
  # Install Plans and Update Evidence
2
2
 
3
- Tracked by [pm-5bsofk](../.agents/pm/issues/pm-5bsofk.toon) and
3
+ Tracked by [pm-erogk1](../.agents/pm/issues/pm-erogk1.toon),
4
+ [pm-5bsofk](../.agents/pm/issues/pm-5bsofk.toon) and
4
5
  [pm-gf5zw8](../.agents/pm/issues/pm-gf5zw8.toon), with claim controls tracked by
5
- [pm-eqdo85](../.agents/pm/issues/pm-eqdo85.toon).
6
+ [pm-eqdo85](../.agents/pm/issues/pm-eqdo85.toon) and Git metadata exclusion by
7
+ [pm-k7nxaz](../.agents/pm/issues/pm-k7nxaz.toon).
6
8
 
7
9
  ## Install planning
8
10
 
@@ -10,17 +12,26 @@ Preview an install with `pm package install ./local-package --project --dry-run`
10
12
  The `details.install_plan` receipt distinguishes directory, archive, npm, and
11
13
  GitHub sources and reports logical file bytes, file/directory/link counts, and
12
14
  the copy policy. External local directories are directory snapshots, including
13
- development artifacts; nested destinations exclude `.agents`, `node_modules`,
14
- and installer backup directories at every depth using the installer's filter.
15
- Counts are lower bounds when `complete` is false, with `stop_reason`
16
- identifying the entry or depth limit. A source-directory alias resolves to its
15
+ development artifacts other than `.git`. All copied directory sources exclude
16
+ `.git` entries at every depth, including worktree files and symlinks, and count
17
+ those entries in `excluded_entries`. Nested destinations also exclude `.agents`,
18
+ `node_modules`, and installer backup directories at every depth using the
19
+ installer's filter.
20
+ The bounded planner can return lower-bound counts with `complete: false` and a
21
+ `stop_reason` when called directly. Installing a local directory now refuses
22
+ that incomplete scan in both dry-run and real modes before writing or
23
+ activating. SDK callers receive
24
+ `extension_install_incomplete_source_scan`; the CLI exits nonzero with the
25
+ entry or depth limit and a packed-archive recovery step. That recovery keeps
26
+ the requested `--project` or `--global` installation scope. A source-directory
27
+ alias resolves to its
17
28
  directory before copying; symlink entries inside the source remain links and
18
29
  their targets are never traversed.
19
30
  Planning writes no destination files, managed state, or activation settings;
20
31
  archive and remote source resolution can still prepare temporary source files
21
32
  and perform network or dependency-resolution work.
22
33
 
23
- For development-heavy or incomplete local snapshots, `packed_alternative`
34
+ For development-heavy local snapshots, `packed_alternative`
24
35
  provides argument vectors for `npm pack --ignore-scripts --json` and archive
25
36
  installation. Run packing in its reported `cwd`, substitute the returned
26
37
  `pack_result[0].filename`, and install the resulting archive. Normal local
package/docs/README.md CHANGED
@@ -34,6 +34,7 @@ pm guide release --json
34
34
  - [Quickstart](QUICKSTART.md) - install, initialize, create, claim, link, test, close.
35
35
  - [Onboarding](ONBOARDING.md) - first-two-hours maintainer and contributor setup.
36
36
  - [Agent Guide](AGENT_GUIDE.md) - canonical agent loop, tracker linking, and token-minimal command choices.
37
+ - [Agent Read and Test Receipts](AGENT_READ_AND_TEST_RECEIPTS.md) - JSON help provenance, linked-test persistence, and history diff continuation.
37
38
  - [Command Reference](COMMANDS.md) - command families with examples and when to use each family.
38
39
  - [Context and Operations Namespaces](COMMAND_NAMESPACES.md) - native navigation, diagnostics, event streams, and compatibility aliases.
39
40
  - [CLI Scripting Contract](SCRIPTING.md) - exit codes, flat mutation receipts versus read envelopes, stdout/stderr boundaries, stable JSON fields, uniform OR filters, and shell composition recipes.
package/docs/RELEASING.md CHANGED
@@ -76,7 +76,52 @@ pnpm version:check
76
76
 
77
77
  `.github/workflows/auto-release.yml` runs once per day and can also be dispatched manually.
78
78
 
79
- Policy:
79
+ ### Independent morning dispatch
80
+
81
+ Tracked by [pm-9url9h](../.agents/pm/tasks/pm-9url9h.toon). An independent
82
+ operator-managed timer can invoke `scripts/release/dispatch-daily-release.mjs`
83
+ at **04:45 Europe/Vienna** (02:45 UTC in summer, 03:45 UTC in winter).
84
+ The aim is completion before 06:30–07:00 local time; host availability, GitHub
85
+ runner capacity and release gates can prevent that target. The host must be
86
+ awake, online and able to authenticate with `gh` unattended.
87
+
88
+ The existing **02:35 UTC GitHub cron remains enabled as a fallback**. Either
89
+ clock can arrive first. The dispatcher checks both release workflows for active
90
+ runs and skips an existing exact UTC-day tag. Tag existence is explicitly not
91
+ publication proof: incomplete publication still requires the normal immutable-tag
92
+ recovery procedure. Hosted concurrency and the one-release-per-UTC-day guard
93
+ remain the final protection if a native run races the external request.
94
+
95
+ The standalone dispatcher requires an absolute private state directory:
96
+
97
+ ```bash
98
+ node scripts/release/dispatch-daily-release.mjs --state-dir /absolute/private/state --check
99
+ ```
100
+
101
+ `--check` reads prerequisites without dispatching or writing state, including
102
+ outside the morning window. Without it, the dispatcher accepts only
103
+ 04:45–05:15 Vienna time and sends `workflow_dispatch` to `auto-release.yml` on
104
+ `main` with explicit `push=true`, `dry_run=false`, and `telemetry_mode=off`,
105
+ matching scheduled production policy. It never builds from the operator's
106
+ working branch, changes release secrets or bypasses hosted gates.
107
+
108
+ An exclusive daily intent file is written **before** sending the request. A
109
+ timeout can mean GitHub accepted the request, so an uncertain attempt is retained
110
+ and never automatically resent that UTC day. Inspect hosted run history before
111
+ any manual recovery. Pre-dispatch read failures leave no intent; a timer may
112
+ try again within the morning window. Late persistent-timer catch-up is a no-op.
113
+ Install a reviewed copy outside development checkouts so branch edits cannot
114
+ silently change an unattended service.
115
+
116
+ Keep dispatcher output in the service journal: `dispatch_accepted` proves only
117
+ API acceptance. Verify the hosted run, GitHub Release and exact npm version
118
+ separately. These runs remain `workflow_dispatch`; they do not improve or erase
119
+ the native `schedule` denominator in [Release Reliability](RELEASE_RELIABILITY.md).
120
+ Disable the independent timer to roll back; the original hosted schedule and
121
+ publication path continue unchanged. Host-specific unit files and authentication
122
+ configuration belong in private operator documentation.
123
+
124
+ ### Hosted release policy
80
125
 
81
126
  - release only when commits exist after the latest release tag
82
127
  - ignore tracker-governance-only commits for publish eligibility: `.agents/pm/**` and the mechanically generated `CHANGELOG.md` projection do not create a package release by themselves, while any product, test, documentation, workflow, or other changed path remains release-relevant
package/docs/TESTING.md CHANGED
@@ -2,17 +2,22 @@
2
2
 
3
3
  This page describes safe local tests, linked tests, coverage, and release-readiness checks.
4
4
 
5
+ Current linked-test and merge-fence work: [pm-t05d8d](../.agents/pm/issues/pm-t05d8d.toon), [pm-kynkl8](../.agents/pm/issues/pm-kynkl8.toon).
6
+
5
7
  Tracked implementation updates: [pm-52eh](../.agents/pm/features/pm-52eh.toon), [pm-mcxr](../.agents/pm/issues/pm-mcxr.toon), [pm-u42x](../.agents/pm/issues/pm-u42x.toon), [pm-atfm](../.agents/pm/features/pm-atfm.toon), [pm-xmp5](../.agents/pm/tasks/pm-xmp5.toon), [pm-39cqqx](../.agents/pm/tasks/pm-39cqqx.toon), [pm-5cgm2z](../.agents/pm/chores/pm-5cgm2z.toon), [pm-avv3wx](../.agents/pm/issues/pm-avv3wx.toon), [pm-rizqb6](../.agents/pm/issues/pm-rizqb6.toon), [pm-95h7pg](../.agents/pm/issues/pm-95h7pg.toon), [pm-giks4s](../.agents/pm/issues/pm-giks4s.toon), [pm-xa3t0o](../.agents/pm/issues/pm-xa3t0o.toon), [pm-e97jyf](../.agents/pm/issues/pm-e97jyf.toon), [pm-efkvdy](../.agents/pm/issues/pm-efkvdy.toon), [pm-ed28wi](../.agents/pm/issues/pm-ed28wi.toon), and [pm-5ug5xq](../.agents/pm/issues/pm-5ug5xq.toon).
6
8
 
7
9
  ## Agent Quick Context
8
10
 
9
11
  - Unit and integration tests must not read or write real `.agents/pm` data.
10
12
  - Prefer `node scripts/run-tests.mjs ...` because it creates sandboxed `PM_PATH` and `PM_GLOBAL_PATH`.
11
- - Linked-test execution injects isolated `PM_PATH` and `PM_GLOBAL_PATH` for
12
- every command and applies stored-command provenance checks before process
13
+ - Linked-test execution injects isolated `PM_GLOBAL_PATH` and normally
14
+ `PM_PATH`; `pm_context_mode=none` omits `PM_PATH` for self-isolating SDK tests
15
+ in disposable workspaces. It applies stored-command provenance checks before process
13
16
  creation. Direct runners are accepted; prefer
14
17
  `node scripts/run-tests.mjs ...` when the repository provides it because the
15
- wrapper also reproduces build, coverage, and cleanup policy.
18
+ wrapper also reproduces build, coverage, and cleanup policy. Use a direct
19
+ runner when a `none`-mode test must observe an unset `PM_PATH`; the wrapper
20
+ creates its own sandboxed `PM_PATH`.
16
21
  - Run linked tests before closing the item that owns the work.
17
22
 
18
23
  Tracked documentation work: [pm-u9d0](../.agents/pm/epics/pm-u9d0.toon).
@@ -510,6 +515,11 @@ only their schema roots; a non-PM command explicitly configured with
510
515
  data are materialized only when at least one selected command requires tracker
511
516
  context. This preserves source isolation without copying an unrelated tracker
512
517
  into constrained temporary storage.
518
+ For SDK tests that create independent temporary PM roots, use
519
+ `pm_context_mode: "none"` with `workspace_context_mode: "isolated"` or
520
+ `"snapshot"`. The runner omits `PM_PATH` so each SDK client can resolve its
521
+ explicit workspace independently; `PM_GLOBAL_PATH` remains sandboxed. Source
522
+ workspace execution and direct PM commands refuse this mode before execution.
513
523
  Capacity, permission, and resource failures while seeding a required tracker
514
524
  surface as typed, path-redacted host-environment refusals with recovery steps.
515
525
  When a legacy source tracker has settings but no `_workspace` history, tracker
@@ -593,6 +603,7 @@ Use explicit modes when needed:
593
603
  pm test <item-id> --run --pm-context schema
594
604
  pm test <item-id> --run --pm-context tracker
595
605
  pm test <item-id> --run --pm-context auto --check-context --auto-pm-context
606
+ pm test <item-id> --add-json '{"command":"pnpm exec vitest run tests/integration/linked-test-context-trust.integration.spec.ts","pm_context_mode":"none","workspace_context_mode":"snapshot"}'
596
607
  ```
597
608
 
598
609
  For complex linked-test commands, prefer JSON input so shell syntax survives unchanged:
@@ -77,7 +77,7 @@
77
77
  {
78
78
  "task_id": "orientation-contracts-next",
79
79
  "command_count": 2,
80
- "estimated_tokens": 5180,
80
+ "estimated_tokens": 5203,
81
81
  "capabilities": [
82
82
  "actionable_work",
83
83
  "active_ownership",
@@ -120,11 +120,11 @@
120
120
  },
121
121
  {
122
122
  "id": "orientation-contracts-next",
123
- "max_estimated_tokens": 5180,
123
+ "max_estimated_tokens": 5203,
124
124
  "steps": [
125
125
  {
126
126
  "id": "contracts",
127
- "max_estimated_tokens": 4458,
127
+ "max_estimated_tokens": 4481,
128
128
  "accounting_mode": "self_reported"
129
129
  },
130
130
  {
@@ -261,5 +261,5 @@
261
261
  ]
262
262
  }
263
263
  ],
264
- "composite_max_estimated_tokens": 13011
264
+ "composite_max_estimated_tokens": 13034
265
265
  }
@@ -6,7 +6,7 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
6
6
 
7
7
  | Capability family | Commands |
8
8
  | --- | --- |
9
- | workspace | `init`, `config`, `workspace merge`, `schema`, `profile`, `ops telemetry`, `ops health`, `ops gc`, `workspace` |
9
+ | workspace | `workspace init`, `workspace config`, `workspace merge`, `workspace schema`, `workspace profile`, `ops telemetry`, `ops health`, `ops gc`, `workspace` |
10
10
  | intake | `create`, `item`, `item copy`, `context focus`, `history restore` |
11
11
  | context | `list`, `aggregate`, `context`, `get`, `search`, `item duplicates`, `ops eval`, `context next`, `history activity`, `ops stats`, `help` |
12
12
  | lifecycle | `update`, `update many`, `close`, `close many`, `close delete`, `claim`, `release` |
@@ -5,7 +5,9 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
5
5
  | Command | Minimum visibility tier | Capability family |
6
6
  | --- | --- | --- |
7
7
  | `init` | core | workspace |
8
+ | `workspace init` | core | workspace |
8
9
  | `config` | standard | workspace |
10
+ | `workspace config` | standard | workspace |
9
11
  | `extension` | full | extensions |
10
12
  | `package` | full | extensions |
11
13
  | `packages` | full | extensions |
@@ -54,7 +56,9 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
54
56
  | `merge` | full | workspace |
55
57
  | `workspace merge` | full | workspace |
56
58
  | `schema` | standard | workspace |
59
+ | `workspace schema` | standard | workspace |
57
60
  | `profile` | standard | workspace |
61
+ | `workspace profile` | standard | workspace |
58
62
  | `activity` | full | context |
59
63
  | `history activity` | full | context |
60
64
  | `restore` | full | intake |
@@ -97,7 +101,7 @@ This file is generated from `PM_COMMAND_CAPABILITY_CONTRACTS`. Do not edit it ma
97
101
  | `assurance` | full | quality |
98
102
  | `gc` | full | workspace |
99
103
  | `ops gc` | full | workspace |
100
- | `workspace` | full | workspace |
104
+ | `workspace` | core | workspace |
101
105
  | `contracts` | standard | quality |
102
106
  | `claim` | core | lifecycle |
103
107
  | `release` | core | lifecycle |
@@ -95,6 +95,10 @@ This file is generated by `listPmFlagLexicon()`. Compatibility aliases do not co
95
95
  | `update many` | lifecycle | 146 | 146 |
96
96
  | `close many` | lifecycle | 72 | 72 |
97
97
  | `close delete` | lifecycle | 24 | 24 |
98
+ | `workspace init` | workspace | 30 | 30 |
99
+ | `workspace config` | workspace | 36 | 36 |
100
+ | `workspace schema` | workspace | 43 | 43 |
101
+ | `workspace profile` | workspace | 22 | 22 |
98
102
  | `item comments` | evidence | 31 | 31 |
99
103
  | `item notes` | evidence | 35 | 35 |
100
104
  | `item learnings` | evidence | 31 | 31 |
@@ -4,14 +4,14 @@ Tracker: `pm-f05lsg`.
4
4
 
5
5
  Every catalog code is listed. An `uncovered` row is an explicit closure obligation, never an omission or implied approval.
6
6
 
7
- - Catalog error codes: 378
7
+ - Catalog error codes: 389
8
8
  - Executable error codes: 19
9
9
  - Executable-code ratchet floor: 18
10
10
  - Required executable canonical codes: `bulk_ids_input_empty`, `bulk_ids_input_missing_path`, `bulk_ids_input_unreadable`, `invalid_argument_value`, `manifest_unknown_key`, `missing_lifecycle_target`, `missing_required_argument`, `no_version_bounds_declared`, `projection_options_mutually_exclusive`, `tracker_not_initialized`, `tracker_root_missing`, `tracker_root_not_directory`, `tracker_root_unreadable`, `unknown_context_intent`, `unknown_field_projection`, `unknown_option`, `unknown_subcommand`
11
- - Uncovered error codes: 359
12
- - Coverage fraction: 0.050265
11
+ - Uncovered error codes: 370
12
+ - Coverage fraction: 0.048843
13
13
  - Closed-domain probes: 19
14
- - Grammar probes: 113
14
+ - Grammar probes: 117
15
15
 
16
16
  | Error code | Canonical code | Disposition | Evidence kinds | Probe count |
17
17
  | --- | --- | --- | --- | --- |
@@ -86,6 +86,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
86
86
  | `extension_dependency_name_unsafe` | `extension_dependency_name_unsafe` | uncovered | none | 0 |
87
87
  | `extension_dependency_spec_invalid` | `extension_dependency_spec_invalid` | uncovered | none | 0 |
88
88
  | `extension_dependency_version_unsafe` | `extension_dependency_version_unsafe` | uncovered | none | 0 |
89
+ | `extension_install_incomplete_source_scan` | `extension_install_incomplete_source_scan` | uncovered | none | 0 |
89
90
  | `extension_install_soft_failed` | `extension_install_soft_failed` | uncovered | none | 0 |
90
91
  | `extension_install_source_contains_destination` | `extension_install_source_contains_destination` | uncovered | none | 0 |
91
92
  | `extension_item_field_reserved` | `extension_item_field_reserved` | uncovered | none | 0 |
@@ -96,6 +97,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
96
97
  | `extension_mutation_guard_invalid_denial` | `extension_mutation_guard_invalid_denial` | uncovered | none | 0 |
97
98
  | `extension_mutation_guard_timed_out` | `extension_mutation_guard_timed_out` | uncovered | none | 0 |
98
99
  | `extension_update_health_partial_coverage` | `extension_update_health_partial_coverage` | uncovered | none | 0 |
100
+ | `extensions_unreadable` | `extensions_unreadable` | uncovered | none | 0 |
99
101
  | `field_duplicate` | `field_duplicate` | uncovered | none | 0 |
100
102
  | `field_invalid` | `field_invalid` | uncovered | none | 0 |
101
103
  | `field_mcp_input_collision` | `field_mcp_input_collision` | uncovered | none | 0 |
@@ -189,8 +191,12 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
189
191
  | `locks_stale_count` | `locks_stale_count` | uncovered | none | 0 |
190
192
  | `locks_unreadable` | `locks_unreadable` | uncovered | none | 0 |
191
193
  | `malformed_plan_step_evidence` | `malformed_plan_step_evidence` | uncovered | none | 0 |
194
+ | `managed_state_invalid` | `managed_state_invalid` | uncovered | none | 0 |
195
+ | `managed_state_unreadable` | `managed_state_unreadable` | uncovered | none | 0 |
192
196
  | `manifest_capabilities_absent` | `manifest_capabilities_absent` | uncovered | none | 0 |
197
+ | `manifest_invalid` | `manifest_invalid` | uncovered | none | 0 |
193
198
  | `manifest_unknown_key` | `manifest_unknown_key` | executable | owned_state | 1 |
199
+ | `manifest_unreadable` | `manifest_unreadable` | uncovered | none | 0 |
194
200
  | `mcp_annotation_file_unavailable` | `mcp_annotation_file_unavailable` | uncovered | none | 0 |
195
201
  | `mcp_stdin_unavailable` | `mcp_stdin_unavailable` | uncovered | none | 0 |
196
202
  | `mcp_task_not_found_or_not_authorized` | `mcp_task_not_found_or_not_authorized` | uncovered | none | 0 |
@@ -198,6 +204,8 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
198
204
  | `merge_decisions_unreviewed` | `merge_decisions_unreviewed` | uncovered | none | 0 |
199
205
  | `merge_driver_configuration_drift` | `merge_driver_configuration_drift` | uncovered | none | 0 |
200
206
  | `merge_driver_configuration_missing` | `merge_driver_configuration_missing` | uncovered | none | 0 |
207
+ | `merge_fence_drift` | `merge_fence_drift` | uncovered | none | 0 |
208
+ | `merge_fence_missing` | `merge_fence_missing` | uncovered | none | 0 |
201
209
  | `merge_git_config_unwritable` | `merge_git_config_unwritable` | uncovered | none | 0 |
202
210
  | `merge_receipt_evidence_invalid` | `merge_receipt_evidence_invalid` | uncovered | none | 0 |
203
211
  | `merge_receipt_history_reference_missing` | `merge_receipt_history_reference_missing` | uncovered | none | 0 |
@@ -216,7 +224,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
216
224
  | `missing_parameter_alias` | `missing_parameter_alias` | uncovered | none | 0 |
217
225
  | `missing_positive_execution_receipt` | `missing_positive_execution_receipt` | uncovered | none | 0 |
218
226
  | `missing_probe` | `missing_probe` | uncovered | none | 0 |
219
- | `missing_required_argument` | `missing_required_argument` | executable | grammar | 75 |
227
+ | `missing_required_argument` | `missing_required_argument` | executable | grammar | 77 |
220
228
  | `missing_required_option` | `missing_required_option` | uncovered | none | 0 |
221
229
  | `missing_suggested_retry` | `missing_suggested_retry` | uncovered | none | 0 |
222
230
  | `missing_suggested_retry_args` | `missing_suggested_retry_args` | uncovered | none | 0 |
@@ -274,10 +282,13 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
274
282
  | `retry_failed` | `retry_failed` | uncovered | none | 0 |
275
283
  | `schema_migration_input_required` | `schema_migration_input_required` | uncovered | none | 0 |
276
284
  | `semantic_spelling_collision` | `semantic_spelling_collision` | uncovered | none | 0 |
285
+ | `settings_invalid` | `settings_invalid` | uncovered | none | 0 |
277
286
  | `settings_read_fs_error` | `settings_read_fs_error` | uncovered | none | 0 |
278
287
  | `settings_read_invalid_json` | `settings_read_invalid_json` | uncovered | none | 0 |
279
288
  | `settings_read_invalid_schema` | `settings_read_invalid_schema` | uncovered | none | 0 |
280
289
  | `settings_read_merge_failed` | `settings_read_merge_failed` | uncovered | none | 0 |
290
+ | `settings_unreadable` | `settings_unreadable` | uncovered | none | 0 |
291
+ | `settings_write_invalid_existing_json` | `settings_write_invalid_existing_json` | uncovered | none | 0 |
281
292
  | `stale_budget` | `stale_budget` | uncovered | none | 0 |
282
293
  | `stale_destination` | `stale_destination` | uncovered | none | 0 |
283
294
  | `stale_observed_signature` | `stale_observed_signature` | uncovered | none | 0 |
@@ -318,13 +329,13 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
318
329
  | `unknown_field` | `unknown_field` | uncovered | none | 0 |
319
330
  | `unknown_field_projection` | `unknown_field_projection` | executable | closed_domain | 10 |
320
331
  | `unknown_item_type` | `unknown_item_type` | uncovered | none | 0 |
321
- | `unknown_lifecycle_action` | `unknown_subcommand` | executable | grammar, owned_state | 12 |
332
+ | `unknown_lifecycle_action` | `unknown_subcommand` | executable | grammar, owned_state | 14 |
322
333
  | `unknown_noun` | `unknown_noun` | uncovered | none | 0 |
323
334
  | `unknown_option` | `unknown_option` | executable | owned_state | 1 |
324
335
  | `unknown_plan_template` | `unknown_plan_template` | uncovered | none | 0 |
325
336
  | `unknown_provenance_dimension` | `unknown_provenance_dimension` | uncovered | none | 0 |
326
337
  | `unknown_status` | `unknown_status` | uncovered | none | 0 |
327
- | `unknown_subcommand` | `unknown_subcommand` | executable | grammar, owned_state | 12 |
338
+ | `unknown_subcommand` | `unknown_subcommand` | executable | grammar, owned_state | 14 |
328
339
  | `unsafe_init_recovery` | `unsafe_init_recovery` | uncovered | none | 0 |
329
340
  | `unsupported_update_option` | `unsupported_update_option` | uncovered | none | 0 |
330
341
  | `validate_command_references_stale_pm_ids` | `validate_command_references_stale_pm_ids` | uncovered | none | 0 |
package/marketplace.json CHANGED
@@ -4,16 +4,14 @@
4
4
  "name": "unbrained",
5
5
  "url": "https://github.com/unbraind/pm-cli"
6
6
  },
7
- "metadata": {
8
- "description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
9
- "version": "2026.9.26"
10
- },
7
+ "description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
8
+ "version": "2026.9.28",
11
9
  "plugins": [
12
10
  {
13
11
  "name": "pm-claude",
14
12
  "source": "./plugins/pm-claude",
15
- "description": "Native pm CLI integration for Claude Code — 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
16
- "version": "2026.9.26",
13
+ "description": "Native pm CLI integration for Claude Code — 32 MCP tools, 14 workflow skills with slash invocations, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
14
+ "version": "2026.9.28",
17
15
  "author": {
18
16
  "name": "unbrained",
19
17
  "url": "https://github.com/unbraind/pm-cli"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-cli",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.10.0",
@@ -123,7 +123,7 @@
123
123
  "lint:complexity:baseline": "eslint . --suppress-rule complexity --suppress-rule sonarjs/cognitive-complexity",
124
124
  "lint:duplicates": "jscpd --config .jscpd.json && jscpd --config .jscpd.source.json && jscpd --config .jscpd.tables.json",
125
125
  "lint:codefactor": "pnpm quality:static",
126
- "quality:static": "pnpm quality:docstrings && pnpm quality:exports && pnpm lint:eslint && pnpm lint:duplicates && node scripts/check-workflow-permissions.mjs && node scripts/check-dependency-cooldown.mjs && node scripts/gen-plugin-mcp-wrappers.mjs --check && pnpm build && node scripts/contracts-snapshot.mjs --check && node scripts/generate-agent-capability-surfaces.mjs --check && node scripts/generate-error-code-catalog.mjs --check && node scripts/release/repository-assurance.mjs repository-static-quality --trigger ci --json && node scripts/release/audit-package-boundary.mjs && node scripts/release/package-sdk-contract-parity.mjs && node scripts/release/surface-replication-gate.mjs && node scripts/release/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs && node scripts/release/refusal-closure-gate.mjs && node scripts/release/agent-task-token-gate.mjs && pnpm quality:mcp-deprecations && node dist/cli.js assurance run tracker-context-quality --trigger ci --dry-run --json --output-budget unbounded && node scripts/release/gate-registry.mjs && node scripts/sdk-surface-snapshot.mjs --check && node scripts/bench/sdk-entrypoint-costs.mjs --check && node scripts/bench/cli-transport-floor.mjs --check && node dist/cli.js assurance run graph-composition --trigger ci --dry-run --json --output-budget unbounded && node dist/cli.js assurance run record-integrity --trigger ci --dry-run --json --output-budget unbounded && pnpm quality:mutation -- --prebuilt",
126
+ "quality:static": "pnpm quality:docstrings && pnpm quality:exports && pnpm lint:eslint && pnpm lint:duplicates && node scripts/check-workflow-permissions.mjs && node scripts/check-dependency-cooldown.mjs && node scripts/gen-plugin-mcp-wrappers.mjs --check && node scripts/gen-agent-plugin-skills.mjs --check && pnpm build && node scripts/contracts-snapshot.mjs --check && node scripts/generate-agent-capability-surfaces.mjs --check && node scripts/generate-error-code-catalog.mjs --check && node scripts/release/repository-assurance.mjs repository-static-quality --trigger ci --json && node scripts/release/audit-package-boundary.mjs && node scripts/release/package-sdk-contract-parity.mjs && node scripts/release/surface-replication-gate.mjs && node scripts/release/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs && node scripts/release/refusal-closure-gate.mjs && node scripts/release/agent-task-token-gate.mjs && pnpm quality:mcp-deprecations && node dist/cli.js assurance run tracker-context-quality --trigger ci --dry-run --json --output-budget unbounded && node scripts/release/gate-registry.mjs && node scripts/sdk-surface-snapshot.mjs --check && node scripts/bench/sdk-entrypoint-costs.mjs --check && node scripts/bench/cli-transport-floor.mjs --check && node dist/cli.js assurance run graph-composition --trigger ci --dry-run --json --output-budget unbounded && node dist/cli.js assurance run record-integrity --trigger ci --dry-run --json --output-budget unbounded && pnpm quality:mutation -- --prebuilt",
127
127
  "quality:exports": "knip --no-config-hints && node scripts/run-tests.mjs test -- tests/unit/scripts/release/dead-exports.spec.ts",
128
128
  "quality:command-grammar": "pnpm build && node scripts/release/command-grammar-gate.mjs && node scripts/release/flag-invocation-parity.mjs && node scripts/release/flag-lexicon-gate.mjs",
129
129
  "quality:recovery-closure": "pnpm build && node scripts/release/refusal-closure-gate.mjs",
@@ -238,10 +238,10 @@
238
238
  "eslint-plugin-unicorn": "76.0.0",
239
239
  "fast-check": "^4.10.2",
240
240
  "github-slugger": "2.0.0",
241
- "greptile": "^3.5.3",
242
- "jscpd": "^5.3.1",
243
- "knip": "^6.37.0",
244
- "marked": "18.0.13",
241
+ "greptile": "^3.6.0",
242
+ "jscpd": "^5.3.2",
243
+ "knip": "^6.38.0",
244
+ "marked": "18.0.14",
245
245
  "parse5": "8.0.1",
246
246
  "tsx": "^4.23.15",
247
247
  "typescript": "^6.0.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-beads",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for importing Beads JSONL records.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-calendar",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for calendar and agenda views.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-command-kit",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm exemplar package for the commands capability: registerCommand, registerFlags, and registerParser.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-digital-twin",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-governance-audit",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for governance audit and normalization workflows.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-guide-shell",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for guide and shell completion workflows.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-kanban",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm archetype package: a complete Kanban continuous-flow profile built on public SDK primitives.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-lifecycle-hooks",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package demonstrating safe lifecycle hook registration.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-linked-test-adapters",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for optional linked-test run management adapters and reporters.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-search-advanced",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for semantic, hybrid, and reindex search workflows.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-templates",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for reusable create templates.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-todos",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "First-party pm package for Todo markdown import and export.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-vcs-sdk-exemplar",
3
- "version": "2026.9.26",
3
+ "version": "2026.9.28",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "Beyond-PM exemplar: a VCS-style changeset workflow built entirely on public pm SDK and extension primitives.",
@@ -1,7 +1,9 @@
1
1
  {
2
+ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
2
3
  "name": "pm-claude",
3
- "description": "Native pm CLI integration for Claude Code — 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents (coordinator, delivery-chain, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.",
4
- "version": "2026.9.26",
4
+ "displayName": "pm CLI",
5
+ "description": "Native pm CLI integration for Claude Code — 32 MCP tools, 14 skills with slash invocations, 4 subagents (coordinator, delivery-chain, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.",
6
+ "version": "2026.9.28",
5
7
  "author": {
6
8
  "name": "unbrained",
7
9
  "url": "https://github.com/unbraind/pm-cli"
@@ -2,8 +2,7 @@
2
2
  "mcpServers": {
3
3
  "pm-mcp": {
4
4
  "command": "node",
5
- "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/pm-mcp-server.mjs"],
6
- "note": "Native pm-cli MCP server with automatic client/harness identity. Imports pm command modules directly — no pm shell invocation needed."
5
+ "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/pm-mcp-server.mjs"]
7
6
  }
8
7
  }
9
8
  }