@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.
- package/.claude-plugin/marketplace.json +4 -6
- package/CHANGELOG.md +42 -0
- package/dist/cli/commander-usage.js +2 -2
- package/dist/cli/error-guidance.js +1 -1
- package/dist/cli/help-json-payload.js +1 -1
- package/dist/cli/main.js +2 -2
- package/dist/cli/register-operations.js +1 -1
- 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 +156 -148
- package/dist/cli-bundle/chunks/{chunk-TC74K7SS.js → chunk-35DME35A.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QQD3VRMZ.js → chunk-A2G5OG6W.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-CPOWTIIS.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-TYJXMT3Q.js → chunk-GLH2LNRH.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IYN4MJ2C.js → chunk-NBDB3SRC.js} +57 -57
- package/dist/cli-bundle/chunks/{chunk-HTHTX6E6.js → chunk-NEUIVBFO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-U55RYT3I.js → chunk-OYCCWPBM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VMO4P5MX.js → chunk-PLNNUAFZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FOTXRNY6.js → chunk-PR4UAMI5.js} +44 -44
- package/dist/cli-bundle/chunks/{chunk-SZQCHJI4.js → chunk-UT7GRGHY.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MJWKR7YA.js → chunk-VMJLM7P2.js} +62 -62
- package/dist/cli-bundle/chunks/{chunk-4ODHIX7N.js → chunk-YERBAGQD.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-ZFHJP7YD.js +29 -0
- package/dist/cli-bundle/chunks/{register-list-query-426QTRET.js → register-list-query-N6RP6PSP.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-FLI3HHMP.js → register-mutation-CY7JGQE6.js} +2 -2
- package/dist/cli-bundle/chunks/{register-operations-TP7ZG4MK.js → register-operations-53HAD3QP.js} +2 -2
- package/dist/cli-bundle/chunks/register-setup-NVX6374E.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-5KJXX2TZ.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-UIFVIE5F.js → chunk-6IVQPNYN.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-MK5AKKHK.js → chunk-A5O3VYWV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-AZA4AEOR.js +75 -0
- package/dist/cli-bundle/focused-chunks/chunk-BGWF6CMP.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-NVVB2HJC.js → chunk-BRLXKRI2.js} +17 -17
- package/dist/cli-bundle/focused-chunks/{chunk-ABA3KRPY.js → chunk-DTLRXY77.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-XKH2FC5D.js → chunk-IJXZQE3D.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-Q355NPLH.js → chunk-IWLMQLBO.js} +6 -6
- package/dist/cli-bundle/focused-chunks/chunk-K7GSZ7YZ.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-OY3VHCTX.js → chunk-ONDNR3VU.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-XVBWZTU2.js → chunk-OVVCXTIE.js} +12 -12
- package/dist/cli-bundle/focused-chunks/{chunk-25BBHWMH.js → chunk-V7OPZRL6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-TLF6N56J.js → chunk-Y5Z3XNGY.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-O7MIBEMK.js → chunk-YZB7IPR6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-NRHTXBTI.js → chunk-ZMQTIS3L.js} +2 -2
- package/dist/cli-bundle/main.js +22 -22
- 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 +18 -18
- 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 +51 -51
- 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/core/diagnostics/remediation.js +1 -1
- package/dist/core/item/item-format.js +1 -1
- package/dist/core/store/settings.js +3 -3
- package/dist/sdk/agent-capability-contracts.js +1 -1
- package/dist/sdk/cli-contracts/command-aliases.js +1 -1
- package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
- package/dist/sdk/completion/fish.js +3 -3
- package/dist/sdk/completion/shared.d.ts +1 -1
- package/dist/sdk/completion/shared.js +1 -1
- package/dist/sdk/completion/zsh.js +3 -3
- package/dist/sdk/extension/copy-scope.d.ts +2 -2
- package/dist/sdk/extension/copy-scope.js +1 -1
- package/dist/sdk/extension/install-plan.js +1 -1
- package/dist/sdk/extension/install-runtime.js +2 -2
- 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/governance/health-merge-evidence.d.ts +18 -0
- package/dist/sdk/governance/health-merge-evidence.js +2 -0
- package/dist/sdk/governance/health.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/merge/install.js +2 -2
- package/dist/sdk/output-projection.d.ts +1 -1
- package/dist/sdk/output-projection.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-budget.d.ts +1 -1
- package/dist/sdk/read-output-budget.js +1 -1
- package/dist/sdk/read-output-contracts.js +1 -1
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/test/execution.d.ts +11 -0
- package/dist/sdk/test/execution.js +2 -2
- package/dist/sdk/test/parsers.d.ts +1 -1
- package/dist/sdk/test/parsers.js +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.js +1 -1
- package/docs/AGENT_READ_AND_TEST_RECEIPTS.md +21 -0
- package/docs/CLAUDE_CODE_PLUGIN.md +12 -7
- package/docs/CLI_GRAMMAR.md +31 -0
- package/docs/CODEX_PLUGIN.md +8 -0
- package/docs/CONFIGURATION.md +2 -0
- package/docs/EXTENSION_LIFECYCLE.md +18 -0
- package/docs/PACKAGE_EVIDENCE.md +18 -7
- package/docs/README.md +1 -0
- package/docs/RELEASING.md +46 -1
- package/docs/TESTING.md +14 -3
- 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 +18 -7
- package/marketplace.json +4 -6
- package/package.json +6 -6
- 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 +4 -2
- package/plugins/pm-claude/.mcp.json +1 -2
- package/plugins/pm-claude/README.md +11 -7
- 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/{commands/pm-calendar.md → skills/pm-calendar/SKILL.md} +1 -0
- package/plugins/pm-claude/{commands/pm-close-task.md → skills/pm-close-task/SKILL.md} +1 -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/{commands/pm-init.md → skills/pm-init/SKILL.md} +2 -1
- package/plugins/pm-claude/{commands/pm-list.md → skills/pm-list/SKILL.md} +2 -1
- package/plugins/pm-claude/{commands/pm-new.md → skills/pm-new/SKILL.md} +1 -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/{commands/pm-search.md → skills/pm-search/SKILL.md} +1 -0
- package/plugins/pm-claude/{commands/pm-start-task.md → skills/pm-start-task/SKILL.md} +1 -0
- package/plugins/pm-claude/{commands/pm-status.md → skills/pm-status/SKILL.md} +1 -0
- package/plugins/pm-claude/{commands/pm-triage.md → skills/pm-triage/SKILL.md} +1 -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/chunk-GRWPZR7F.js +0 -29
- package/dist/cli-bundle/chunks/register-setup-574SIVQZ.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-H3BI4EDO.js +0 -75
- package/dist/cli-bundle/focused-chunks/chunk-HNHMK5JI.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-HQPTDJLF.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-PMPFLA6X.js +0 -2
- package/plugins/pm-claude/commands/pm-audit.md +0 -38
- package/plugins/pm-claude/commands/pm-developer.md +0 -38
- package/plugins/pm-claude/commands/pm-planner.md +0 -54
- package/plugins/pm-claude/commands/pm-release.md +0 -41
- package/plugins/pm-claude/commands/pm-workflow.md +0 -49
|
@@ -7,12 +7,16 @@ 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
|
-
| **
|
|
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
|
|
|
15
|
+
Five core workflow skills are generated from the shared portable source in
|
|
16
|
+
`templates/agent-skills/`. Both plugin packages carry identical workflow
|
|
17
|
+
guidance; the Claude task panel mapping is conditional on its tools.
|
|
18
|
+
The other nine skills provide Claude-specific, directly invocable workflows.
|
|
19
|
+
|
|
16
20
|
## Installation
|
|
17
21
|
|
|
18
22
|
### Option A: Plugin marketplace — canonical install (recommended)
|
|
@@ -29,7 +33,7 @@ claude plugin marketplace add /path/to/pm-cli
|
|
|
29
33
|
# claude plugin marketplace add unbraind/pm-cli
|
|
30
34
|
```
|
|
31
35
|
|
|
32
|
-
This installs all 32 MCP tools,
|
|
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`.)
|
|
33
37
|
|
|
34
38
|
### Option B: Global MCP server via Claude Code CLI (MCP tools only)
|
|
35
39
|
|
|
@@ -37,7 +41,7 @@ This installs all 32 MCP tools, 5 skills, 14 slash commands, 4 subagents, hybrid
|
|
|
37
41
|
claude mcp add --transport stdio pm-mcp -- npx -y --package=@unbrained/pm-cli@latest pm-mcp
|
|
38
42
|
```
|
|
39
43
|
|
|
40
|
-
This gives you the 32 MCP tools but not the skills
|
|
44
|
+
This gives you the 32 MCP tools but not the skills or session hook.
|
|
41
45
|
|
|
42
46
|
### Option C: Direct `.mcp.json` (project-scoped MCP only)
|
|
43
47
|
|
|
@@ -87,7 +91,7 @@ When you `/pm-start-task` or `/pm-developer`:
|
|
|
87
91
|
|
|
88
92
|
This means you get full history in pm (survives restarts, visible in `pm list`) and live visual feedback in the Claude Code session.
|
|
89
93
|
|
|
90
|
-
##
|
|
94
|
+
## Skill Invocations
|
|
91
95
|
|
|
92
96
|
| Command | What it does |
|
|
93
97
|
|---------|-------------|
|
|
@@ -106,7 +110,7 @@ This means you get full history in pm (survives restarts, visible in `pm list`)
|
|
|
106
110
|
| `/pm-workflow [id or description]` | General pm workflow loop with TUI tracking |
|
|
107
111
|
| `/pm-init [project name]` | Initialize pm in the current project |
|
|
108
112
|
|
|
109
|
-
## Skills
|
|
113
|
+
## Core Skills
|
|
110
114
|
|
|
111
115
|
| Skill | When Claude uses it |
|
|
112
116
|
|-------|-------------------|
|
|
@@ -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.
|
|
@@ -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
|
-
-
|
|
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
|
|
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,173 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pm-planner
|
|
3
|
-
description:
|
|
3
|
+
description: Use when triaging requests, organizing a backlog, decomposing an epic, or making a durable pm plan. Search all statuses and build evidence-backed typed relationships.
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# pm Planner
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
pm is the **persistent store**. Claude Code's task panel is the **live session view**.
|
|
23
|
-
|
|
24
|
-
When you claim a planning item or start active decomposition work:
|
|
25
|
-
```
|
|
26
|
-
TaskCreate:
|
|
27
|
-
subject: "[pm-xxxx] Plan: <epic/feature title>"
|
|
28
|
-
description: "Planning pm-xxxx — decomposing into child items"
|
|
29
|
-
activeForm: "Planning pm-xxxx"
|
|
30
|
-
```
|
|
31
|
-
Save the `taskId`. Call `TaskUpdate(in_progress)` when active.
|
|
32
|
-
Call `TaskUpdate(completed)` when the planning item is closed.
|
|
33
|
-
|
|
34
|
-
## MCP Call Patterns
|
|
35
|
-
|
|
36
|
-
### Survey the Backlog
|
|
37
|
-
```json
|
|
38
|
-
{ "tool": "pm_context", "args": { "options": { "depth": "standard", "limit": "20" } } }
|
|
39
|
-
{ "tool": "pm_list", "args": { "options": { "limit": "50" } } }
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Deduplicate Before Creating
|
|
43
|
-
```json
|
|
44
|
-
{ "tool": "pm_search", "args": { "query": "feature keywords", "options": { "limit": "10" } } }
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### Create Epic → Feature → Task Hierarchy
|
|
48
|
-
```json
|
|
49
|
-
{
|
|
50
|
-
"tool": "pm_create",
|
|
51
|
-
"args": {
|
|
52
|
-
"options": {
|
|
53
|
-
"title": "Epic: Authentication system overhaul",
|
|
54
|
-
"type": "Epic",
|
|
55
|
-
"status": "open",
|
|
56
|
-
"priority": "1",
|
|
57
|
-
"description": "High-level initiative description.",
|
|
58
|
-
"createMode": "progressive"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
Then for each child feature/task, set `parent: "pm-xxxx"` via `pm_update`.
|
|
64
|
-
|
|
65
|
-
### Prioritize the Backlog
|
|
66
|
-
|
|
67
|
-
```json
|
|
68
|
-
{ "tool": "pm_list", "args": { "options": { "status": "open", "limit": "30" } } }
|
|
69
|
-
{ "tool": "pm_update", "args": { "id": "pm-xxxx", "options": { "priority": "0" } } }
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Link Parent
|
|
73
|
-
|
|
74
|
-
```json
|
|
75
|
-
{ "tool": "pm_update", "args": { "id": "pm-child", "options": { "parent": "pm-epic" } } }
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Run Dedupe Audit After Batch Work
|
|
79
|
-
|
|
80
|
-
```json
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Validate After Batch Creates
|
|
84
|
-
|
|
85
|
-
```json
|
|
86
|
-
{ "tool": "pm_validate", "args": { "options": { "checkResolution": true } } }
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Item Type Guide
|
|
90
|
-
|
|
91
|
-
| Type | When to use |
|
|
92
|
-
|------|------------|
|
|
93
|
-
| `Epic` | Large initiative spanning multiple features (weeks/months) |
|
|
94
|
-
| `Feature` | Distinct capability under an epic (days) |
|
|
95
|
-
| `Task` | Atomic unit of implementation work (hours) |
|
|
96
|
-
| `Bug` | Defect with reproduce steps |
|
|
97
|
-
| `Story` | User-facing narrative unit |
|
|
98
|
-
|
|
99
|
-
## Priority Reference
|
|
100
|
-
|
|
101
|
-
- `0` = critical — blocking release or other work
|
|
102
|
-
- `1` = high — important, should be done soon
|
|
103
|
-
- `2` = normal — standard priority (default)
|
|
104
|
-
- `3` = low — nice to have
|
|
105
|
-
- `4` = minimal — defer unless time allows
|
|
106
|
-
|
|
107
|
-
## Acceptance Criteria Best Practice
|
|
108
|
-
|
|
109
|
-
Write AC as numbered, testable assertions:
|
|
110
|
-
1. Given [precondition], when [action], then [result].
|
|
111
|
-
2. All existing tests pass.
|
|
112
|
-
3. Coverage gate maintained.
|
|
113
|
-
|
|
114
|
-
Set via `pm_create` with `acceptanceCriteria` field or `pm_update` with `options.acceptanceCriteria`.
|
|
115
|
-
|
|
116
|
-
## Built-in Plan workflow (`pm_plan` / `pm plan`)
|
|
117
|
-
|
|
118
|
-
For durable Codex-style ExecPlans, Claude-style Plan Mode, and Cursor-style editable checklists, pm exposes a first-class `Plan` item type plus a `pm plan` command family. Use [Command Reference: Plan Workflow](../../../../docs/COMMANDS.md#plan-workflow) as the canonical lifecycle recipe; this skill keeps only Claude-specific routing notes.
|
|
119
|
-
|
|
120
|
-
### When to use `pm plan` vs. `pm_create` + tasks
|
|
121
|
-
|
|
122
|
-
- `pm plan` — when you need a **living, resumable plan** with ordered steps, evidence, decisions, discoveries, validation, and the option to later materialize selected steps as real Tasks. Best for plan-then-execute workflows.
|
|
123
|
-
- `pm_create` (Epic/Feature/Task) — when the work is already decomposed and you just need persistent backlog items.
|
|
124
|
-
|
|
125
|
-
### Claude MCP routing
|
|
126
|
-
|
|
127
|
-
Call the same lifecycle through the `pm_plan` MCP tool. Use `harness: "claude-code"` on creation, `subcommand: "show"` with `depth: "brief"` for low-token reads, and `subcommand: "resume"` after compaction or handoff.
|
|
128
|
-
|
|
129
|
-
### Harness mapping cheatsheet
|
|
130
|
-
|
|
131
|
-
| Harness signal | pm_plan equivalent |
|
|
132
|
-
|----------------|--------------------|
|
|
133
|
-
| Codex `update_plan` step status | `subcommand=update-step` with `stepStatus` |
|
|
134
|
-
| Claude `TaskCreate` | `subcommand=add-step` |
|
|
135
|
-
| Claude `TaskUpdate(in_progress)` | `subcommand=update-step` with `stepStatus=in_progress` |
|
|
136
|
-
| Cursor edit a plan step | `subcommand=update-step` |
|
|
137
|
-
| Resume after compaction | `subcommand=resume` with `resumeContext` then `subcommand=show --depth deep` |
|
|
138
|
-
| Approve before edits | `subcommand=approve` |
|
|
139
|
-
| Convert checklist into real items | `subcommand=materialize` |
|
|
140
|
-
|
|
141
|
-
## Safety
|
|
142
|
-
|
|
143
|
-
- Never pass `path` during real repository tracking.
|
|
144
|
-
- Always `pm_search` before `pm_create`/`pm plan create` — avoid duplicates.
|
|
145
|
-
- Run `pm_validate` after batch changes.
|
|
146
|
-
- Set exactly one step `in_progress` per plan; pass `allowMultipleActive: true` only for explicit parallel branches.
|
|
147
|
-
- Use `pm_plan` `subcommand=resume` after long-running sessions so the next agent can pick up with a deterministic context.
|
|
148
|
-
|
|
149
|
-
## Progressive Disclosure and Token Discipline
|
|
150
|
-
|
|
151
|
-
Load the smallest thing that answers the question. Costs are measured.
|
|
152
|
-
|
|
153
|
-
| Need | Call | Cost |
|
|
154
|
-
|------|------|------|
|
|
155
|
-
| Pick or resume work | `pm_next`, or `pm_context` with `limit: 10` | ~2.1-2.5k tok |
|
|
156
|
-
| Exact flags for one command | `pm_contracts` with `command: "<name>", flagsOnly: true` | ~1-3.4k tok |
|
|
157
|
-
| The whole command surface with per-command ceilings | `pm_contracts` with `summary: true` | ~2.6k tok |
|
|
158
|
-
| An unfamiliar capability family | `pm_run` with `action: "guide", topic: "<topic>", depth: "brief"` | ~0.6-1k tok |
|
|
159
|
-
|
|
160
|
-
Guide topics are declared at runtime: `pm guide` prints the current index and
|
|
161
|
-
`pm guide <topic> --depth brief` expands one topic. Do not copy the list.
|
|
162
|
-
|
|
163
|
-
Never load `docs/COMMANDS.md` (~29k tok) or `docs/SDK.md` (~45k tok) whole.
|
|
164
|
-
|
|
165
|
-
Bound every read in this order: projection (`outputInclude`), then row limit
|
|
166
|
-
(`outputLimit` or `limit`), then `outputBudget`, then `outputCursor` to resume.
|
|
167
|
-
Read the `omission_receipt` before treating a result as complete — a
|
|
168
|
-
budget-truncated read is a claim about the part it withheld, and a truncated
|
|
169
|
-
list must never be summarized as if it were the whole population.
|
|
170
|
-
|
|
171
|
-
Author identity is detected automatically. Never pass `author` and never set
|
|
172
|
-
`PM_AUTHOR`; the harness, model, effort, role, and topic are probed and recorded
|
|
173
|
-
on every history entry.
|
|
9
|
+
1. Read pm_context and the relevant parent or outcome milestone.
|
|
10
|
+
2. Search all statuses and inspect nearest matches before creating anything.
|
|
11
|
+
3. Use a Plan when ordered steps, decisions, discoveries, and handoff must
|
|
12
|
+
remain resumable. Use Epic, Feature, Task, Issue, and Decision items for
|
|
13
|
+
durable backlog work with different ownership.
|
|
14
|
+
4. Give new work a parent, testable acceptance criteria, expected result, and
|
|
15
|
+
a create-time duplicate-check explanation.
|
|
16
|
+
5. Add typed edges only when evidence supports their meaning. Use dependency
|
|
17
|
+
edges for ordering and verification edges for proof; do not invent graph
|
|
18
|
+
depth or fill the graph with related edges.
|
|
19
|
+
6. Validate the resulting tracker and summarize the next actionable items.
|
|
20
|
+
|
|
21
|
+
Use pm_plan for a living plan and pm_contracts to discover exact options.
|
|
22
|
+
Keep one plan step in progress unless parallel work is explicitly intended.
|