@unbrained/pm-cli 2026.9.26 → 2026.9.27
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.
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +16 -0
- package/dist/cli/commander-usage.js +2 -2
- package/dist/cli/error-guidance.js +1 -1
- package/dist/cli/main.js +2 -2
- package/dist/cli/register-setup.js +1 -1
- package/dist/cli/runtime/selection.d.ts +3 -1
- package/dist/cli/runtime/selection.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +160 -152
- package/dist/cli-bundle/chunks/{chunk-IYN4MJ2C.js → chunk-3BTJ66CB.js} +56 -56
- package/dist/cli-bundle/chunks/{chunk-FOTXRNY6.js → chunk-4SLLCDFL.js} +39 -39
- package/dist/cli-bundle/chunks/{chunk-GRWPZR7F.js → chunk-4UPZLUT2.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-U55RYT3I.js → chunk-6OJVQ7SW.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TYJXMT3Q.js → chunk-7TAGYNFP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QQD3VRMZ.js → chunk-AUS6USO4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4ODHIX7N.js → chunk-IEP3VAT5.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HTHTX6E6.js → chunk-JX6WCCHL.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-LC6WEA5U.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-VMO4P5MX.js → chunk-LKGQUZ5M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TC74K7SS.js → chunk-OKVDVERQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SZQCHJI4.js → chunk-TSF2LPIH.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MJWKR7YA.js → chunk-V5UGBYHN.js} +3 -3
- package/dist/cli-bundle/chunks/{register-list-query-426QTRET.js → register-list-query-6PAJ4PBU.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-FLI3HHMP.js → register-mutation-RZCXZXYS.js} +2 -2
- package/dist/cli-bundle/chunks/{register-operations-TP7ZG4MK.js → register-operations-GK6VU2H2.js} +2 -2
- package/dist/cli-bundle/chunks/register-setup-ASEMNMBF.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-H3BI4EDO.js → chunk-6J2YCGSN.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-XKH2FC5D.js → chunk-6UNKK3UH.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-NRHTXBTI.js → chunk-DQ3MB7BO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-PMPFLA6X.js → chunk-E7LYK7V5.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-25BBHWMH.js → chunk-GZD4ZYIB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-KMPKKSA6.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-TLF6N56J.js → chunk-LBDWUHQD.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-UIFVIE5F.js → chunk-MILJCOFJ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-MK5AKKHK.js → chunk-NETVXIH5.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-Q355NPLH.js → chunk-NWRVNHAD.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-XVBWZTU2.js → chunk-NZAG7OKB.js} +12 -12
- package/dist/cli-bundle/focused-chunks/{chunk-OY3VHCTX.js → chunk-OJKJFDIG.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-OJRX6G22.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-NVVB2HJC.js → chunk-PDVL7QYU.js} +16 -16
- package/dist/cli-bundle/focused-chunks/{chunk-O7MIBEMK.js → chunk-QO4MTAEA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ABA3KRPY.js → chunk-SMADBUPL.js} +2 -2
- package/dist/cli-bundle/main.js +21 -21
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +1 -1
- package/dist/cli-bundle/sdk-core.js +2 -2
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +23 -23
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +8 -8
- package/dist/sdk/agent-capability-contracts.js +1 -1
- package/dist/sdk/cli-contracts/command-aliases.js +1 -1
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
- package/dist/sdk/completion/shared.d.ts +1 -1
- package/dist/sdk/completion/shared.js +1 -1
- package/dist/sdk/extension/static-inventory.d.ts +54 -0
- package/dist/sdk/extension/static-inventory.js +2 -0
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
- package/dist/sdk/guide-topics.js +1 -1
- package/dist/sdk/index.d.ts +1 -0
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/complete-list.js +1 -1
- package/dist/sdk/read-output/provenance.d.ts +20 -0
- package/dist/sdk/read-output/provenance.js +2 -0
- package/dist/sdk/read-output-contracts.js +1 -1
- package/dist/sdk/runtime-input.js +1 -1
- package/docs/CLI_GRAMMAR.md +31 -0
- package/docs/CODEX_PLUGIN.md +8 -0
- package/docs/EXTENSION_LIFECYCLE.md +18 -0
- package/docs/RELEASING.md +46 -1
- package/docs/agent-task-token-baseline.json +4 -4
- package/docs/generated/AGENT_CAPABILITY_ROUTING.md +1 -1
- package/docs/generated/AGENT_COMMAND_SURFACE.md +5 -1
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +4 -0
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +14 -7
- package/marketplace.json +2 -2
- package/package.json +2 -2
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/README.md +5 -1
- package/plugins/pm-claude/package.json +2 -2
- package/plugins/pm-claude/skills/pm-audit/SKILL.md +14 -103
- package/plugins/pm-claude/skills/pm-audit/agents/openai.yaml +4 -0
- package/plugins/pm-claude/skills/pm-developer/SKILL.md +20 -143
- package/plugins/pm-claude/skills/pm-developer/agents/openai.yaml +4 -0
- package/plugins/pm-claude/skills/pm-planner/SKILL.md +16 -167
- package/plugins/pm-claude/skills/pm-planner/agents/openai.yaml +4 -0
- package/plugins/pm-claude/skills/pm-release/SKILL.md +18 -102
- package/plugins/pm-claude/skills/pm-release/agents/openai.yaml +4 -0
- package/plugins/pm-claude/skills/pm-workflow/SKILL.md +25 -156
- package/plugins/pm-claude/skills/pm-workflow/agents/openai.yaml +4 -0
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/README.md +10 -2
- package/plugins/pm-codex/mcp.json +11 -0
- package/plugins/pm-codex/package.json +2 -2
- package/plugins/pm-codex/plugin.json +45 -0
- package/plugins/pm-codex/skills/pm-audit/SKILL.md +21 -0
- package/plugins/pm-codex/skills/pm-audit/agents/openai.yaml +4 -0
- package/plugins/pm-codex/skills/pm-auditor/SKILL.md +5 -40
- package/plugins/pm-codex/skills/pm-auditor/agents/openai.yaml +3 -5
- package/plugins/pm-codex/skills/pm-developer/SKILL.md +26 -0
- package/plugins/pm-codex/skills/pm-developer/agents/openai.yaml +4 -0
- package/plugins/pm-codex/skills/pm-native/SKILL.md +7 -87
- package/plugins/pm-codex/skills/pm-native/agents/openai.yaml +3 -5
- package/plugins/pm-codex/skills/pm-planner/SKILL.md +22 -0
- package/plugins/pm-codex/skills/pm-planner/agents/openai.yaml +4 -0
- package/plugins/pm-codex/skills/pm-release/SKILL.md +17 -38
- package/plugins/pm-codex/skills/pm-release/agents/openai.yaml +2 -4
- package/plugins/pm-codex/skills/pm-workflow/SKILL.md +39 -0
- package/plugins/pm-codex/skills/pm-workflow/agents/openai.yaml +4 -0
- package/dist/cli-bundle/chunks/register-setup-574SIVQZ.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-HNHMK5JI.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-HQPTDJLF.js +0 -2
|
@@ -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:
|
|
7
|
+
- Catalog error codes: 385
|
|
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:
|
|
12
|
-
- Coverage fraction: 0.
|
|
11
|
+
- Uncovered error codes: 366
|
|
12
|
+
- Coverage fraction: 0.049351
|
|
13
13
|
- Closed-domain probes: 19
|
|
14
|
-
- Grammar probes:
|
|
14
|
+
- Grammar probes: 117
|
|
15
15
|
|
|
16
16
|
| Error code | Canonical code | Disposition | Evidence kinds | Probe count |
|
|
17
17
|
| --- | --- | --- | --- | --- |
|
|
@@ -96,6 +96,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
96
96
|
| `extension_mutation_guard_invalid_denial` | `extension_mutation_guard_invalid_denial` | uncovered | none | 0 |
|
|
97
97
|
| `extension_mutation_guard_timed_out` | `extension_mutation_guard_timed_out` | uncovered | none | 0 |
|
|
98
98
|
| `extension_update_health_partial_coverage` | `extension_update_health_partial_coverage` | uncovered | none | 0 |
|
|
99
|
+
| `extensions_unreadable` | `extensions_unreadable` | uncovered | none | 0 |
|
|
99
100
|
| `field_duplicate` | `field_duplicate` | uncovered | none | 0 |
|
|
100
101
|
| `field_invalid` | `field_invalid` | uncovered | none | 0 |
|
|
101
102
|
| `field_mcp_input_collision` | `field_mcp_input_collision` | uncovered | none | 0 |
|
|
@@ -189,8 +190,12 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
189
190
|
| `locks_stale_count` | `locks_stale_count` | uncovered | none | 0 |
|
|
190
191
|
| `locks_unreadable` | `locks_unreadable` | uncovered | none | 0 |
|
|
191
192
|
| `malformed_plan_step_evidence` | `malformed_plan_step_evidence` | uncovered | none | 0 |
|
|
193
|
+
| `managed_state_invalid` | `managed_state_invalid` | uncovered | none | 0 |
|
|
194
|
+
| `managed_state_unreadable` | `managed_state_unreadable` | uncovered | none | 0 |
|
|
192
195
|
| `manifest_capabilities_absent` | `manifest_capabilities_absent` | uncovered | none | 0 |
|
|
196
|
+
| `manifest_invalid` | `manifest_invalid` | uncovered | none | 0 |
|
|
193
197
|
| `manifest_unknown_key` | `manifest_unknown_key` | executable | owned_state | 1 |
|
|
198
|
+
| `manifest_unreadable` | `manifest_unreadable` | uncovered | none | 0 |
|
|
194
199
|
| `mcp_annotation_file_unavailable` | `mcp_annotation_file_unavailable` | uncovered | none | 0 |
|
|
195
200
|
| `mcp_stdin_unavailable` | `mcp_stdin_unavailable` | uncovered | none | 0 |
|
|
196
201
|
| `mcp_task_not_found_or_not_authorized` | `mcp_task_not_found_or_not_authorized` | uncovered | none | 0 |
|
|
@@ -216,7 +221,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
216
221
|
| `missing_parameter_alias` | `missing_parameter_alias` | uncovered | none | 0 |
|
|
217
222
|
| `missing_positive_execution_receipt` | `missing_positive_execution_receipt` | uncovered | none | 0 |
|
|
218
223
|
| `missing_probe` | `missing_probe` | uncovered | none | 0 |
|
|
219
|
-
| `missing_required_argument` | `missing_required_argument` | executable | grammar |
|
|
224
|
+
| `missing_required_argument` | `missing_required_argument` | executable | grammar | 77 |
|
|
220
225
|
| `missing_required_option` | `missing_required_option` | uncovered | none | 0 |
|
|
221
226
|
| `missing_suggested_retry` | `missing_suggested_retry` | uncovered | none | 0 |
|
|
222
227
|
| `missing_suggested_retry_args` | `missing_suggested_retry_args` | uncovered | none | 0 |
|
|
@@ -274,10 +279,12 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
274
279
|
| `retry_failed` | `retry_failed` | uncovered | none | 0 |
|
|
275
280
|
| `schema_migration_input_required` | `schema_migration_input_required` | uncovered | none | 0 |
|
|
276
281
|
| `semantic_spelling_collision` | `semantic_spelling_collision` | uncovered | none | 0 |
|
|
282
|
+
| `settings_invalid` | `settings_invalid` | uncovered | none | 0 |
|
|
277
283
|
| `settings_read_fs_error` | `settings_read_fs_error` | uncovered | none | 0 |
|
|
278
284
|
| `settings_read_invalid_json` | `settings_read_invalid_json` | uncovered | none | 0 |
|
|
279
285
|
| `settings_read_invalid_schema` | `settings_read_invalid_schema` | uncovered | none | 0 |
|
|
280
286
|
| `settings_read_merge_failed` | `settings_read_merge_failed` | uncovered | none | 0 |
|
|
287
|
+
| `settings_unreadable` | `settings_unreadable` | uncovered | none | 0 |
|
|
281
288
|
| `stale_budget` | `stale_budget` | uncovered | none | 0 |
|
|
282
289
|
| `stale_destination` | `stale_destination` | uncovered | none | 0 |
|
|
283
290
|
| `stale_observed_signature` | `stale_observed_signature` | uncovered | none | 0 |
|
|
@@ -318,13 +325,13 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
318
325
|
| `unknown_field` | `unknown_field` | uncovered | none | 0 |
|
|
319
326
|
| `unknown_field_projection` | `unknown_field_projection` | executable | closed_domain | 10 |
|
|
320
327
|
| `unknown_item_type` | `unknown_item_type` | uncovered | none | 0 |
|
|
321
|
-
| `unknown_lifecycle_action` | `unknown_subcommand` | executable | grammar, owned_state |
|
|
328
|
+
| `unknown_lifecycle_action` | `unknown_subcommand` | executable | grammar, owned_state | 14 |
|
|
322
329
|
| `unknown_noun` | `unknown_noun` | uncovered | none | 0 |
|
|
323
330
|
| `unknown_option` | `unknown_option` | executable | owned_state | 1 |
|
|
324
331
|
| `unknown_plan_template` | `unknown_plan_template` | uncovered | none | 0 |
|
|
325
332
|
| `unknown_provenance_dimension` | `unknown_provenance_dimension` | uncovered | none | 0 |
|
|
326
333
|
| `unknown_status` | `unknown_status` | uncovered | none | 0 |
|
|
327
|
-
| `unknown_subcommand` | `unknown_subcommand` | executable | grammar, owned_state |
|
|
334
|
+
| `unknown_subcommand` | `unknown_subcommand` | executable | grammar, owned_state | 14 |
|
|
328
335
|
| `unsafe_init_recovery` | `unsafe_init_recovery` | uncovered | none | 0 |
|
|
329
336
|
| `unsupported_update_option` | `unsupported_update_option` | uncovered | none | 0 |
|
|
330
337
|
| `validate_command_references_stale_pm_ids` | `validate_command_references_stale_pm_ids` | uncovered | none | 0 |
|
package/marketplace.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
|
|
9
|
-
"version": "2026.9.
|
|
9
|
+
"version": "2026.9.27"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "pm-claude",
|
|
14
14
|
"source": "./plugins/pm-claude",
|
|
15
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.
|
|
16
|
+
"version": "2026.9.27",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "unbrained",
|
|
19
19
|
"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.
|
|
3
|
+
"version": "2026.9.27",
|
|
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",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-digital-twin",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.27",
|
|
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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-claude",
|
|
3
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.
|
|
4
|
+
"version": "2026.9.27",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "unbrained",
|
|
7
7
|
"url": "https://github.com/unbraind/pm-cli"
|
|
@@ -13,6 +13,10 @@ Native pm CLI integration for Claude Code. Use pm project management tools direc
|
|
|
13
13
|
| **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
14
|
| **Session hook** | Injects active pm item summary at session start using the same pinned pm-cli runtime as the MCP server |
|
|
15
15
|
|
|
16
|
+
The five skills are generated from the shared portable source in
|
|
17
|
+
`templates/agent-skills/`. Both plugin packages carry identical workflow
|
|
18
|
+
guidance; the Claude task panel mapping is conditional on its tools.
|
|
19
|
+
|
|
16
20
|
## Installation
|
|
17
21
|
|
|
18
22
|
### Option A: Plugin marketplace — canonical install (recommended)
|
|
@@ -177,7 +181,7 @@ Spawn pm-triage-agent to set up the pm item for: add OAuth2 login support
|
|
|
177
181
|
|
|
178
182
|
## Hybrid TUI Sync Pattern
|
|
179
183
|
|
|
180
|
-
|
|
184
|
+
Claude commands can mirror claimed items with this pattern:
|
|
181
185
|
|
|
182
186
|
```
|
|
183
187
|
1. pm_claim → [pm stores claim]
|
|
@@ -1,110 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pm-audit
|
|
3
|
-
description:
|
|
3
|
+
description: Use when asked to inspect pm tracker health, duplicate work, graph quality, privacy, or release readiness. Report verified findings and reuse existing lineage.
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
|
-
# pm
|
|
7
|
+
# pm Review
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
Read the requested scope and the full live records behind any status claim.
|
|
10
|
+
Use pm_health, pm_validate, pm_search, pm_graph, and pm_contracts as needed.
|
|
11
|
+
Use pm_run for duplicate checks when no narrow tool covers them. Check omission
|
|
12
|
+
receipts and follow cursors before reporting totals.
|
|
9
13
|
|
|
10
|
-
|
|
14
|
+
Classify each finding by its observable impact. Search all statuses before
|
|
15
|
+
filing it and link it to its source with a meaningful typed relationship.
|
|
16
|
+
Record exact commands and results on the canonical item. Keep credentials,
|
|
17
|
+
private operational data, and raw meeting content out of public records.
|
|
11
18
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
4. **Health check** — `pm_health` for tracker diagnostics.
|
|
16
|
-
5. **Validation suite** — `pm_validate` with all checks enabled.
|
|
17
|
-
6. **Aggregate** — `pm_run` with `action: "aggregate"` for governance view.
|
|
18
|
-
8. **Calendar** — `pm_run` with `action: "calendar"` for deadline view.
|
|
19
|
-
9. **Convert findings** — create pm items for each actionable finding.
|
|
20
|
-
10. **Evidence** — `pm_comments` with verification summaries.
|
|
21
|
-
11. **Close audit item** then `TaskUpdate(completed)`.
|
|
22
|
-
|
|
23
|
-
## Hybrid TUI Sync
|
|
24
|
-
|
|
25
|
-
After creating/claiming the audit tracking item:
|
|
26
|
-
```
|
|
27
|
-
TaskCreate:
|
|
28
|
-
subject: "[pm-xxxx] Audit: pm tracker health"
|
|
29
|
-
description: "Tracking full audit run — pm-xxxx"
|
|
30
|
-
activeForm: "Running pm audit"
|
|
31
|
-
```
|
|
32
|
-
Save the `taskId`. Call `TaskUpdate(in_progress)`.
|
|
33
|
-
When closing: `TaskUpdate(completed)`.
|
|
34
|
-
|
|
35
|
-
For each **finding item** created during the audit, also create a matching `TaskCreate` if you plan to work on it this session.
|
|
36
|
-
|
|
37
|
-
## MCP Calls
|
|
38
|
-
|
|
39
|
-
### Full Audit Suite
|
|
40
|
-
```json
|
|
41
|
-
{ "tool": "pm_context", "args": { "options": { "depth": "standard", "limit": "20" } } }
|
|
42
|
-
{ "tool": "pm_health", "args": {} }
|
|
43
|
-
{ "tool": "pm_validate", "args": { "options": { "checkResolution": true, "checkHistoryDrift": true, "checkFiles": true, "scanMode": "tracked-all" } } }
|
|
44
|
-
{ "tool": "pm_run", "args": { "action": "aggregate", "options": { "groupBy": "status,type" } } }
|
|
45
|
-
{ "tool": "pm_run", "args": { "action": "calendar", "options": { "view": "week", "format": "markdown", "include": "deadlines,reminders" } } }
|
|
46
|
-
{ "tool": "pm_run", "args": { "action": "stats" } }
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### Activity Review
|
|
50
|
-
```json
|
|
51
|
-
{ "tool": "pm_run", "args": { "action": "activity", "options": { "limit": "50" } } }
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Contracts and Schema Check
|
|
55
|
-
```json
|
|
56
|
-
{ "tool": "pm_contracts", "args": {} }
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Finding Classification
|
|
60
|
-
|
|
61
|
-
| Severity | Action |
|
|
62
|
-
|----------|--------|
|
|
63
|
-
| Blocker | Create pm item with priority 0, status open |
|
|
64
|
-
| Warning | Create pm item with priority 1 |
|
|
65
|
-
| Info | Append to existing audit item comments |
|
|
66
|
-
| No issue | Log as evidence in audit comments |
|
|
67
|
-
|
|
68
|
-
## Evidence Format
|
|
69
|
-
|
|
70
|
-
```json
|
|
71
|
-
{
|
|
72
|
-
"tool": "pm_comments",
|
|
73
|
-
"args": {
|
|
74
|
-
"id": "pm-xxxx",
|
|
75
|
-
"options": {
|
|
76
|
-
"add": "Audit evidence: health=ok, validate=ok (2 warnings), dedupe=5 candidates, items=681, tests=1087 passing."
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Privacy
|
|
83
|
-
|
|
84
|
-
Keep sensitive operational data (telemetry credentials, user PII, internal endpoints) out of public docs and tracked comments. Use `pm notes` for sensitive context instead of `pm comments`.
|
|
85
|
-
|
|
86
|
-
## Progressive Disclosure and Token Discipline
|
|
87
|
-
|
|
88
|
-
Load the smallest thing that answers the question. Costs are measured.
|
|
89
|
-
|
|
90
|
-
| Need | Call | Cost |
|
|
91
|
-
|------|------|------|
|
|
92
|
-
| Pick or resume work | `pm_next`, or `pm_context` with `limit: 10` | ~2.1-2.5k tok |
|
|
93
|
-
| Exact flags for one command | `pm_contracts` with `command: "<name>", flagsOnly: true` | ~1-3.4k tok |
|
|
94
|
-
| The whole command surface with per-command ceilings | `pm_contracts` with `summary: true` | ~2.6k tok |
|
|
95
|
-
| An unfamiliar capability family | `pm_run` with `action: "guide", topic: "<topic>", depth: "brief"` | ~0.6-1k tok |
|
|
96
|
-
|
|
97
|
-
Guide topics are declared at runtime: `pm guide` prints the current index and
|
|
98
|
-
`pm guide <topic> --depth brief` expands one topic. Do not copy the list.
|
|
99
|
-
|
|
100
|
-
Never load `docs/COMMANDS.md` (~29k tok) or `docs/SDK.md` (~45k tok) whole.
|
|
101
|
-
|
|
102
|
-
Bound every read in this order: projection (`outputInclude`), then row limit
|
|
103
|
-
(`outputLimit` or `limit`), then `outputBudget`, then `outputCursor` to resume.
|
|
104
|
-
Read the `omission_receipt` before treating a result as complete — a
|
|
105
|
-
budget-truncated read is a claim about the part it withheld, and a truncated
|
|
106
|
-
list must never be summarized as if it were the whole population.
|
|
107
|
-
|
|
108
|
-
Author identity is detected automatically. Never pass `author` and never set
|
|
109
|
-
`PM_AUTHOR`; the harness, model, effort, role, and topic are probed and recorded
|
|
110
|
-
on every history entry.
|
|
19
|
+
An inspection does not imply permission to rewrite history or fabricate
|
|
20
|
+
relationships. When asked to fix findings, claim only the work being changed
|
|
21
|
+
and follow the pm-developer skill.
|
|
@@ -1,149 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pm-developer
|
|
3
|
-
description:
|
|
3
|
+
description: Use when implementing, debugging, refactoring, or shipping code, tests, or docs tracked by pm. Keep SDK behavior and verification linked to the active item.
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# pm Developer
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
TaskCreate:
|
|
29
|
-
subject: "[pm-xxxx] <item title>"
|
|
30
|
-
description: "Tracking pm item pm-xxxx. AC: <acceptance_criteria>"
|
|
31
|
-
activeForm: "Implementing pm-xxxx"
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Save the returned `taskId`. Then:
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
TaskUpdate: { taskId: <saved>, status: "in_progress" }
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### After pm_close + pm_release
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
TaskUpdate: { taskId: <saved>, status: "completed" }
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Step-by-Step MCP Calls
|
|
47
|
-
|
|
48
|
-
### 1. Orient
|
|
49
|
-
|
|
50
|
-
```json
|
|
51
|
-
{ "tool": "pm_context", "args": { "options": { "limit": "10" } } }
|
|
52
|
-
{ "tool": "pm_search", "args": { "query": "task keywords", "options": { "limit": "10" } } }
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### 2. Claim
|
|
56
|
-
|
|
57
|
-
```json
|
|
58
|
-
{ "tool": "pm_claim", "args": { "id": "pm-xxxx" } }
|
|
59
|
-
{ "tool": "pm_update", "args": { "id": "pm-xxxx", "options": { "status": "in_progress" } } }
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Then immediately: `TaskCreate` → `TaskUpdate(in_progress)` as shown above.
|
|
63
|
-
|
|
64
|
-
### 3. Link Evidence (during implementation)
|
|
65
|
-
|
|
66
|
-
```json
|
|
67
|
-
{ "tool": "pm_files", "args": { "id": "pm-xxxx", "options": { "add": ["path=src/file.ts,scope=project,note=implementation"] } } }
|
|
68
|
-
{ "tool": "pm_docs", "args": { "id": "pm-xxxx", "options": { "add": ["path=docs/GUIDE.md,scope=project,note=updated"] } } }
|
|
69
|
-
{ "tool": "pm_test", "args": { "id": "pm-xxxx", "options": { "add": ["command=node scripts/run-tests.mjs test -- tests/unit/foo.spec.ts,scope=project,timeout_seconds=240"] } } }
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### 4. Validate
|
|
73
|
-
|
|
74
|
-
```json
|
|
75
|
-
{ "tool": "pm_validate", "args": { "options": { "checkResolution": true, "checkHistoryDrift": true } } }
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 5. Add Evidence Comment
|
|
79
|
-
|
|
80
|
-
```json
|
|
81
|
-
{ "tool": "pm_comments", "args": { "id": "pm-xxxx", "options": { "add": "Evidence: changed src/foo.ts. All tests pass. pm validate ok." } } }
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### 6. Close
|
|
85
|
-
|
|
86
|
-
```json
|
|
87
|
-
{ "tool": "pm_close", "args": { "id": "pm-xxxx", "reason": "Implementation complete. Acceptance criteria met." } }
|
|
88
|
-
{ "tool": "pm_release", "args": { "id": "pm-xxxx" } }
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
Then: `TaskUpdate: { taskId: <saved>, status: "completed" }`
|
|
92
|
-
|
|
93
|
-
## Verification Defaults
|
|
94
|
-
|
|
95
|
-
Run these before closing any implementation item:
|
|
96
|
-
|
|
97
|
-
- `pnpm build` (or project build command)
|
|
98
|
-
- `node scripts/run-tests.mjs test -- <target>` (targeted test)
|
|
99
|
-
- `node scripts/run-tests.mjs coverage` (coverage gate)
|
|
100
|
-
- `pm_validate` with `checkResolution: true`
|
|
101
|
-
|
|
102
|
-
## Create When Needed
|
|
103
|
-
|
|
104
|
-
When no existing item matches:
|
|
105
|
-
|
|
106
|
-
```json
|
|
107
|
-
{
|
|
108
|
-
"tool": "pm_create",
|
|
109
|
-
"args": {
|
|
110
|
-
"options": {
|
|
111
|
-
"title": "Fix: concise description of the problem",
|
|
112
|
-
"description": "Root cause and approach.",
|
|
113
|
-
"type": "Task",
|
|
114
|
-
"status": "open",
|
|
115
|
-
"priority": "1",
|
|
116
|
-
"tags": "relevant,tags",
|
|
117
|
-
"createMode": "progressive"
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Then call `TaskCreate` + `TaskUpdate(in_progress)` after claiming.
|
|
124
|
-
|
|
125
|
-
## Progressive Disclosure and Token Discipline
|
|
126
|
-
|
|
127
|
-
Load the smallest thing that answers the question. Costs are measured.
|
|
128
|
-
|
|
129
|
-
| Need | Call | Cost |
|
|
130
|
-
|------|------|------|
|
|
131
|
-
| Pick or resume work | `pm_next`, or `pm_context` with `limit: 10` | ~2.1-2.5k tok |
|
|
132
|
-
| Exact flags for one command | `pm_contracts` with `command: "<name>", flagsOnly: true` | ~1-3.4k tok |
|
|
133
|
-
| The whole command surface with per-command ceilings | `pm_contracts` with `summary: true` | ~2.6k tok |
|
|
134
|
-
| An unfamiliar capability family | `pm_run` with `action: "guide", topic: "<topic>", depth: "brief"` | ~0.6-1k tok |
|
|
135
|
-
|
|
136
|
-
Guide topics are declared at runtime: `pm guide` prints the current index and
|
|
137
|
-
`pm guide <topic> --depth brief` expands one topic. Do not copy the list.
|
|
138
|
-
|
|
139
|
-
Never load `docs/COMMANDS.md` (~29k tok) or `docs/SDK.md` (~45k tok) whole.
|
|
140
|
-
|
|
141
|
-
Bound every read in this order: projection (`outputInclude`), then row limit
|
|
142
|
-
(`outputLimit` or `limit`), then `outputBudget`, then `outputCursor` to resume.
|
|
143
|
-
Read the `omission_receipt` before treating a result as complete — a
|
|
144
|
-
budget-truncated read is a claim about the part it withheld, and a truncated
|
|
145
|
-
list must never be summarized as if it were the whole population.
|
|
146
|
-
|
|
147
|
-
Author identity is detected automatically. Never pass `author` and never set
|
|
148
|
-
`PM_AUTHOR`; the harness, model, effort, role, and topic are probed and recorded
|
|
149
|
-
on every history entry.
|
|
9
|
+
Orient with pm-workflow before editing. Claim the canonical item and keep its
|
|
10
|
+
scope aligned with the change.
|
|
11
|
+
|
|
12
|
+
1. Read the complete source owner and relevant tests before editing. For a
|
|
13
|
+
regression, identify the observable contract and the change that would
|
|
14
|
+
make its test fail.
|
|
15
|
+
2. Put domain behavior in the public pm SDK. Keep CLI and MCP adapters thin,
|
|
16
|
+
with transport-specific tests only where those boundaries add risk.
|
|
17
|
+
3. Link changed files, docs, and isolated runnable tests through pm_files,
|
|
18
|
+
pm_docs, and pm_test.
|
|
19
|
+
4. Run the focused test, build, full coverage, static quality, and installed
|
|
20
|
+
consumer checks required by the affected contract. Keep tracker test roots
|
|
21
|
+
separate from the real repository.
|
|
22
|
+
5. Record exact results in pm_comments. Close with structured resolution,
|
|
23
|
+
expected, and actual fields only when the criteria are actually met.
|
|
24
|
+
|
|
25
|
+
Prefer pm_contracts for flags and the SDK public surface for integration APIs.
|
|
26
|
+
An unknown review provider or missing check is not approval.
|