@unbrained/pm-cli 2026.9.27 → 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 (127) hide show
  1. package/.claude-plugin/marketplace.json +4 -6
  2. package/CHANGELOG.md +26 -0
  3. package/dist/cli/help-json-payload.js +1 -1
  4. package/dist/cli/register-operations.js +1 -1
  5. package/dist/cli-bundle/bundle-manifest.json +154 -154
  6. package/dist/cli-bundle/chunks/{chunk-OKVDVERQ.js → chunk-35DME35A.js} +2 -2
  7. package/dist/cli-bundle/chunks/{chunk-AUS6USO4.js → chunk-A2G5OG6W.js} +2 -2
  8. package/dist/cli-bundle/chunks/chunk-CPOWTIIS.js +2 -0
  9. package/dist/cli-bundle/chunks/{chunk-7TAGYNFP.js → chunk-GLH2LNRH.js} +2 -2
  10. package/dist/cli-bundle/chunks/{chunk-3BTJ66CB.js → chunk-NBDB3SRC.js} +48 -48
  11. package/dist/cli-bundle/chunks/{chunk-JX6WCCHL.js → chunk-NEUIVBFO.js} +2 -2
  12. package/dist/cli-bundle/chunks/{chunk-6OJVQ7SW.js → chunk-OYCCWPBM.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-LKGQUZ5M.js → chunk-PLNNUAFZ.js} +2 -2
  14. package/dist/cli-bundle/chunks/{chunk-4SLLCDFL.js → chunk-PR4UAMI5.js} +8 -8
  15. package/dist/cli-bundle/chunks/{chunk-TSF2LPIH.js → chunk-UT7GRGHY.js} +2 -2
  16. package/dist/cli-bundle/chunks/{chunk-V5UGBYHN.js → chunk-VMJLM7P2.js} +62 -62
  17. package/dist/cli-bundle/chunks/{chunk-IEP3VAT5.js → chunk-YERBAGQD.js} +2 -2
  18. package/dist/cli-bundle/chunks/chunk-ZFHJP7YD.js +29 -0
  19. package/dist/cli-bundle/chunks/{register-list-query-6PAJ4PBU.js → register-list-query-N6RP6PSP.js} +2 -2
  20. package/dist/cli-bundle/chunks/{register-mutation-RZCXZXYS.js → register-mutation-CY7JGQE6.js} +2 -2
  21. package/dist/cli-bundle/chunks/{register-operations-GK6VU2H2.js → register-operations-53HAD3QP.js} +2 -2
  22. package/dist/cli-bundle/chunks/{register-setup-ASEMNMBF.js → register-setup-NVX6374E.js} +2 -2
  23. package/dist/cli-bundle/focused-chunks/{chunk-OJRX6G22.js → chunk-5KJXX2TZ.js} +2 -2
  24. package/dist/cli-bundle/focused-chunks/{chunk-MILJCOFJ.js → chunk-6IVQPNYN.js} +2 -2
  25. package/dist/cli-bundle/focused-chunks/{chunk-NETVXIH5.js → chunk-A5O3VYWV.js} +2 -2
  26. package/dist/cli-bundle/focused-chunks/chunk-AZA4AEOR.js +75 -0
  27. package/dist/cli-bundle/focused-chunks/chunk-BGWF6CMP.js +2 -0
  28. package/dist/cli-bundle/focused-chunks/{chunk-PDVL7QYU.js → chunk-BRLXKRI2.js} +15 -15
  29. package/dist/cli-bundle/focused-chunks/{chunk-SMADBUPL.js → chunk-DTLRXY77.js} +2 -2
  30. package/dist/cli-bundle/focused-chunks/{chunk-6UNKK3UH.js → chunk-IJXZQE3D.js} +2 -2
  31. package/dist/cli-bundle/focused-chunks/{chunk-NWRVNHAD.js → chunk-IWLMQLBO.js} +6 -6
  32. package/dist/cli-bundle/focused-chunks/chunk-K7GSZ7YZ.js +2 -0
  33. package/dist/cli-bundle/focused-chunks/{chunk-OJKJFDIG.js → chunk-ONDNR3VU.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-NZAG7OKB.js → chunk-OVVCXTIE.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/{chunk-GZD4ZYIB.js → chunk-V7OPZRL6.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-LBDWUHQD.js → chunk-Y5Z3XNGY.js} +2 -2
  37. package/dist/cli-bundle/focused-chunks/{chunk-QO4MTAEA.js → chunk-YZB7IPR6.js} +2 -2
  38. package/dist/cli-bundle/focused-chunks/{chunk-DQ3MB7BO.js → chunk-ZMQTIS3L.js} +2 -2
  39. package/dist/cli-bundle/main.js +21 -21
  40. package/dist/cli-bundle/sdk-authoring.js +1 -1
  41. package/dist/cli-bundle/sdk-contracts.js +1 -1
  42. package/dist/cli-bundle/sdk-core.js +18 -18
  43. package/dist/cli-bundle/sdk-governance.js +1 -1
  44. package/dist/cli-bundle/sdk-graph.js +1 -1
  45. package/dist/cli-bundle/sdk-merge.js +51 -51
  46. package/dist/cli-bundle/sdk-query.js +1 -1
  47. package/dist/cli-bundle/sdk-runtime.js +1 -1
  48. package/dist/cli-bundle/sdk-testing.js +1 -1
  49. package/dist/cli-bundle/sdk.js +1 -1
  50. package/dist/core/diagnostics/remediation.js +1 -1
  51. package/dist/core/item/item-format.js +1 -1
  52. package/dist/core/store/settings.js +3 -3
  53. package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1
  54. package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
  55. package/dist/sdk/completion/fish.js +3 -3
  56. package/dist/sdk/completion/zsh.js +3 -3
  57. package/dist/sdk/extension/copy-scope.d.ts +2 -2
  58. package/dist/sdk/extension/copy-scope.js +1 -1
  59. package/dist/sdk/extension/install-plan.js +1 -1
  60. package/dist/sdk/extension/install-runtime.js +2 -2
  61. package/dist/sdk/extension/static-inventory.js +1 -1
  62. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  63. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  64. package/dist/sdk/governance/health-merge-evidence.d.ts +18 -0
  65. package/dist/sdk/governance/health-merge-evidence.js +2 -0
  66. package/dist/sdk/governance/health.js +1 -1
  67. package/dist/sdk/merge/install.js +2 -2
  68. package/dist/sdk/output-projection.d.ts +1 -1
  69. package/dist/sdk/output-projection.js +1 -1
  70. package/dist/sdk/public-surface.json +1 -1
  71. package/dist/sdk/read-output-budget.d.ts +1 -1
  72. package/dist/sdk/read-output-budget.js +1 -1
  73. package/dist/sdk/read-output-contracts.js +1 -1
  74. package/dist/sdk/test/execution.d.ts +11 -0
  75. package/dist/sdk/test/execution.js +2 -2
  76. package/dist/sdk/test/parsers.d.ts +1 -1
  77. package/dist/sdk/test/parsers.js +1 -1
  78. package/dist/types.d.ts +3 -3
  79. package/dist/types.js +1 -1
  80. package/docs/AGENT_READ_AND_TEST_RECEIPTS.md +21 -0
  81. package/docs/CLAUDE_CODE_PLUGIN.md +12 -7
  82. package/docs/CONFIGURATION.md +2 -0
  83. package/docs/PACKAGE_EVIDENCE.md +18 -7
  84. package/docs/README.md +1 -0
  85. package/docs/TESTING.md +14 -3
  86. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +7 -3
  87. package/marketplace.json +4 -6
  88. package/package.json +5 -5
  89. package/packages/pm-beads/package.json +1 -1
  90. package/packages/pm-calendar/package.json +1 -1
  91. package/packages/pm-command-kit/package.json +1 -1
  92. package/packages/pm-digital-twin/package.json +1 -1
  93. package/packages/pm-governance-audit/package.json +1 -1
  94. package/packages/pm-guide-shell/package.json +1 -1
  95. package/packages/pm-kanban/package.json +1 -1
  96. package/packages/pm-lifecycle-hooks/package.json +1 -1
  97. package/packages/pm-linked-test-adapters/package.json +1 -1
  98. package/packages/pm-search-advanced/package.json +1 -1
  99. package/packages/pm-templates/package.json +1 -1
  100. package/packages/pm-todos/package.json +1 -1
  101. package/packages/pm-vcs/package.json +1 -1
  102. package/plugins/pm-claude/.claude-plugin/plugin.json +4 -2
  103. package/plugins/pm-claude/.mcp.json +1 -2
  104. package/plugins/pm-claude/README.md +7 -7
  105. package/plugins/pm-claude/package.json +2 -2
  106. package/plugins/pm-claude/{commands/pm-calendar.md → skills/pm-calendar/SKILL.md} +1 -0
  107. package/plugins/pm-claude/{commands/pm-close-task.md → skills/pm-close-task/SKILL.md} +1 -0
  108. package/plugins/pm-claude/{commands/pm-init.md → skills/pm-init/SKILL.md} +2 -1
  109. package/plugins/pm-claude/{commands/pm-list.md → skills/pm-list/SKILL.md} +2 -1
  110. package/plugins/pm-claude/{commands/pm-new.md → skills/pm-new/SKILL.md} +1 -0
  111. package/plugins/pm-claude/{commands/pm-search.md → skills/pm-search/SKILL.md} +1 -0
  112. package/plugins/pm-claude/{commands/pm-start-task.md → skills/pm-start-task/SKILL.md} +1 -0
  113. package/plugins/pm-claude/{commands/pm-status.md → skills/pm-status/SKILL.md} +1 -0
  114. package/plugins/pm-claude/{commands/pm-triage.md → skills/pm-triage/SKILL.md} +1 -0
  115. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  116. package/plugins/pm-codex/package.json +2 -2
  117. package/plugins/pm-codex/plugin.json +1 -1
  118. package/dist/cli-bundle/chunks/chunk-4UPZLUT2.js +0 -29
  119. package/dist/cli-bundle/chunks/chunk-LC6WEA5U.js +0 -2
  120. package/dist/cli-bundle/focused-chunks/chunk-6J2YCGSN.js +0 -75
  121. package/dist/cli-bundle/focused-chunks/chunk-E7LYK7V5.js +0 -2
  122. package/dist/cli-bundle/focused-chunks/chunk-KMPKKSA6.js +0 -2
  123. package/plugins/pm-claude/commands/pm-audit.md +0 -38
  124. package/plugins/pm-claude/commands/pm-developer.md +0 -38
  125. package/plugins/pm-claude/commands/pm-planner.md +0 -54
  126. package/plugins/pm-claude/commands/pm-release.md +0 -41
  127. package/plugins/pm-claude/commands/pm-workflow.md +0 -49
@@ -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/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:
@@ -4,12 +4,12 @@ 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: 385
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: 366
12
- - Coverage fraction: 0.049351
11
+ - Uncovered error codes: 370
12
+ - Coverage fraction: 0.048843
13
13
  - Closed-domain probes: 19
14
14
  - Grammar probes: 117
15
15
 
@@ -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 |
@@ -203,6 +204,8 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
203
204
  | `merge_decisions_unreviewed` | `merge_decisions_unreviewed` | uncovered | none | 0 |
204
205
  | `merge_driver_configuration_drift` | `merge_driver_configuration_drift` | uncovered | none | 0 |
205
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 |
206
209
  | `merge_git_config_unwritable` | `merge_git_config_unwritable` | uncovered | none | 0 |
207
210
  | `merge_receipt_evidence_invalid` | `merge_receipt_evidence_invalid` | uncovered | none | 0 |
208
211
  | `merge_receipt_history_reference_missing` | `merge_receipt_history_reference_missing` | uncovered | none | 0 |
@@ -285,6 +288,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
285
288
  | `settings_read_invalid_schema` | `settings_read_invalid_schema` | uncovered | none | 0 |
286
289
  | `settings_read_merge_failed` | `settings_read_merge_failed` | uncovered | none | 0 |
287
290
  | `settings_unreadable` | `settings_unreadable` | uncovered | none | 0 |
291
+ | `settings_write_invalid_existing_json` | `settings_write_invalid_existing_json` | uncovered | none | 0 |
288
292
  | `stale_budget` | `stale_budget` | uncovered | none | 0 |
289
293
  | `stale_destination` | `stale_destination` | uncovered | none | 0 |
290
294
  | `stale_observed_signature` | `stale_observed_signature` | 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.27"
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.27",
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.27",
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",
@@ -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.27",
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.27",
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.27",
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.27",
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.27",
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.27",
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.27",
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.27",
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.27",
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.27",
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.27",
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.27",
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.27",
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.27",
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
  }
@@ -7,15 +7,15 @@ Native pm CLI integration for Claude Code. Use pm project management tools direc
7
7
  | Component | What it provides |
8
8
  |-----------|----------------|
9
9
  | **32 MCP tools** | Full pm surface: discover, next, context, search, events, list, get, create, atomic mutate, copy, focus, update, claim, release, close, comments, files, docs, notes, learnings, deps, graph, test, validate, health, contracts, plan, append, schema, config, profile + `pm_run` for everything else |
10
- | **5 skills** | `pm-workflow`, `pm-developer`, `pm-release`, `pm-audit`, `pm-planner` — auto-loaded as Claude Code skills |
11
- | **14 slash commands** | Full lifecycle coverage — status, start, close, triage, audit, search, new, list, calendar, developer, planner, release, workflow, init |
10
+ | **14 skills and slash invocations** | Full lifecycle coverage — status, start, close, triage, audit, search, new, list, calendar, developer, planner, release, workflow, init |
12
11
  | **4 subagents** | `pm-coordinator` (batch/multi-item), `pm-triage-agent` (duplicate-safe item creation), `pm-verification-agent` (evidence + close readiness), and `pm-delivery-chain` (orchestrated delivery) |
13
12
  | **Hybrid TUI tracking** | pm items sync to Claude Code's task panel — pm is the persistent store, the task panel is the live session view |
14
13
  | **Session hook** | Injects active pm item summary at session start using the same pinned pm-cli runtime as the MCP server |
15
14
 
16
- The five skills are generated from the shared portable source in
15
+ Five core workflow skills are generated from the shared portable source in
17
16
  `templates/agent-skills/`. Both plugin packages carry identical workflow
18
17
  guidance; the Claude task panel mapping is conditional on its tools.
18
+ The other nine skills provide Claude-specific, directly invocable workflows.
19
19
 
20
20
  ## Installation
21
21
 
@@ -33,7 +33,7 @@ claude plugin marketplace add /path/to/pm-cli
33
33
  # claude plugin marketplace add unbraind/pm-cli
34
34
  ```
35
35
 
36
- This installs all 32 MCP tools, 5 skills, 14 slash commands, 4 subagents, hybrid TUI tracking, and the session hook in one step. (`pm-claude` is the plugin name; `pm` is the marketplace name from `marketplace.json`.)
36
+ This installs all 32 MCP tools, 14 skills available through `/pm-*`, 4 subagents, hybrid TUI tracking, and the session hook in one step. (`pm-claude` is the plugin name; `pm` is the marketplace name from `.claude-plugin/marketplace.json`.)
37
37
 
38
38
  ### Option B: Global MCP server via Claude Code CLI (MCP tools only)
39
39
 
@@ -41,7 +41,7 @@ This installs all 32 MCP tools, 5 skills, 14 slash commands, 4 subagents, hybrid
41
41
  claude mcp add --transport stdio pm-mcp -- npx -y --package=@unbrained/pm-cli@latest pm-mcp
42
42
  ```
43
43
 
44
- This gives you the 32 MCP tools but not the skills, slash commands, or session hook.
44
+ This gives you the 32 MCP tools but not the skills or session hook.
45
45
 
46
46
  ### Option C: Direct `.mcp.json` (project-scoped MCP only)
47
47
 
@@ -91,7 +91,7 @@ When you `/pm-start-task` or `/pm-developer`:
91
91
 
92
92
  This means you get full history in pm (survives restarts, visible in `pm list`) and live visual feedback in the Claude Code session.
93
93
 
94
- ## Slash Commands
94
+ ## Skill Invocations
95
95
 
96
96
  | Command | What it does |
97
97
  |---------|-------------|
@@ -110,7 +110,7 @@ This means you get full history in pm (survives restarts, visible in `pm list`)
110
110
  | `/pm-workflow [id or description]` | General pm workflow loop with TUI tracking |
111
111
  | `/pm-init [project name]` | Initialize pm in the current project |
112
112
 
113
- ## Skills
113
+ ## Core Skills
114
114
 
115
115
  | Skill | When Claude uses it |
116
116
  |-------|-------------------|
@@ -2,8 +2,8 @@
2
2
  "name": "pm-claude-runtime",
3
3
  "private": true,
4
4
  "type": "module",
5
- "version": "2026.9.27",
5
+ "version": "2026.9.28",
6
6
  "dependencies": {
7
- "@unbrained/pm-cli": "2026.9.27"
7
+ "@unbrained/pm-cli": "2026.9.28"
8
8
  }
9
9
  }
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: pm-calendar
2
3
  description: Show the pm calendar — upcoming deadlines, reminders, and scheduled events. Optionally pass a view like "week", "month", or a date range.
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: pm-close-task
2
3
  description: Close a pm-tracked task with evidence — verify tests pass, link changed files, add closing comment, close and release in pm, then mark the Claude Code task panel entry as completed. Accepts an optional item ID as argument.
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: pm-init
2
3
  description: Initialize pm in the current project — creates the .agents/pm/ tracker directory, sets up default settings, and shows a quick-start summary. Accepts an optional project name as argument.
3
4
  ---
4
5
 
@@ -46,7 +47,7 @@ Initialize pm project tracking using native MCP tools. Argument: `$ARGUMENTS` (o
46
47
  - pm initialized at `.agents/pm/`
47
48
  - guidance mode defaults to `ask` (TTY prompt only); use `agentGuidance=add|skip|status` in `pm_run` options for deterministic behavior
48
49
  - Available slash commands: `/pm-status`, `/pm-new`, `/pm-start-task`, `/pm-close-task`, `/pm-list`, `/pm-search`, `/pm-triage`, `/pm-calendar`, `/pm-developer`, `/pm-planner`, `/pm-release`, `/pm-audit`, `/pm-workflow`
49
- - All 30 MCP tools available: `pm_next`, `pm_context`, `pm_search`, `pm_list`, `pm_get`, `pm_create`, `pm_mutate`, `pm_copy`, `pm_focus`, `pm_update`, `pm_append`, `pm_claim`, `pm_release`, `pm_close`, `pm_comments`, `pm_files`, `pm_docs`, `pm_notes`, `pm_learnings`, `pm_deps`, `pm_graph`, `pm_test`, `pm_validate`, `pm_health`, `pm_contracts`, `pm_schema`, `pm_config`, `pm_profile`, `pm_plan`, `pm_run`
50
+ - Use `pm_discover` to inspect the current MCP tool catalog and `pm_contracts` for exact command flags. The catalog is currently 32 tools.
50
51
  - Next: use `/pm-new <title>` to create your first item, or `/pm-status` to see the tracker state
51
52
 
52
53
  If initialization fails, report the error and suggest running `pm init` manually in the terminal.
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: pm-list
2
3
  description: List pm items with optional status or type filter. Pass a filter like "open", "in_progress", "blocked", "bugs", or leave empty for active items.
3
4
  ---
4
5
 
@@ -23,7 +24,7 @@ List pm items using native MCP tools. Filter: `$ARGUMENTS`
23
24
  }
24
25
  }
25
26
  ```
26
- For `all`, use `pm_list` with no status filter.
27
+ For `all`, use `pm_list` with `status: "all"` so closed and canceled items are included.
27
28
 
28
29
  3. **If filter is empty** (active items) — also call `pm_context` for a richer summary:
29
30
  ```json
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: pm-new
2
3
  description: Quickly create a new pm item — duplicate-checks first, then creates with sensible defaults. Pass a title (or title + description) as argument.
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: pm-search
2
3
  description: Search pm items by keywords, tags, status, or type — returns ranked results with context. Pass the search query as argument.
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: pm-start-task
2
3
  description: Start a pm-tracked task — orient, find or create the right item, claim it, sync to TUI, and link initial scope. Accepts an optional item ID or keywords as argument.
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: pm-status
2
3
  description: Show a compact pm project status snapshot — active items, blocked work, and upcoming deadlines.
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: pm-triage
2
3
  description: Triage a new request through pm — check for duplicates, create canonical parent lineage if needed, and produce a scoped child item with acceptance criteria. Pass the request description as argument.
3
4
  ---
4
5
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pm-codex",
3
- "version": "2026.9.27",
3
+ "version": "2026.9.28",
4
4
  "description": "Native Codex integration for pm-cli with bundled MCP tools, skills, commands, and agent workflows.",
5
5
  "author": {
6
6
  "name": "unbrained",
@@ -2,8 +2,8 @@
2
2
  "name": "pm-codex-runtime",
3
3
  "private": true,
4
4
  "type": "module",
5
- "version": "2026.9.27",
5
+ "version": "2026.9.28",
6
6
  "dependencies": {
7
- "@unbrained/pm-cli": "2026.9.27"
7
+ "@unbrained/pm-cli": "2026.9.28"
8
8
  }
9
9
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "pm-codex",
4
- "version": "2026.9.27",
4
+ "version": "2026.9.28",
5
5
  "description": "Repository-native project context workflows and a version-pinned pm MCP server for Codex.",
6
6
  "author": {
7
7
  "name": "unbrained",