@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
|
@@ -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.
|
|
@@ -1,108 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pm-release
|
|
3
|
-
description:
|
|
3
|
+
description: Use when preparing a pm release, reviewing its gates, publishing, or verifying the released artifact. Keep source, reviewed head, main, tag, registry, and telemetry evidence distinct.
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# pm Release
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
2.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
## Hybrid TUI Sync
|
|
25
|
-
|
|
26
|
-
### After claiming the release item
|
|
27
|
-
```
|
|
28
|
-
TaskCreate:
|
|
29
|
-
subject: "[pm-xxxx] Release: <version>"
|
|
30
|
-
description: "Release gate tracking for pm-xxxx"
|
|
31
|
-
activeForm: "Running release gates"
|
|
32
|
-
```
|
|
33
|
-
Save the `taskId`. Then `TaskUpdate(in_progress)`.
|
|
34
|
-
|
|
35
|
-
### After pm_close + pm_release
|
|
36
|
-
```
|
|
37
|
-
TaskUpdate: { taskId: <saved>, status: "completed" }
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## MCP Calls
|
|
41
|
-
|
|
42
|
-
### Pre-Release Validation
|
|
43
|
-
```json
|
|
44
|
-
{ "tool": "pm_validate", "args": { "options": { "checkResolution": true, "checkHistoryDrift": true, "checkFiles": true } } }
|
|
45
|
-
{ "tool": "pm_health", "args": {} }
|
|
46
|
-
{ "tool": "pm_context", "args": { "options": { "depth": "standard" } } }
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### Link Release Artifacts
|
|
50
|
-
```json
|
|
51
|
-
{ "tool": "pm_docs", "args": { "id": "pm-xxxx", "options": { "add": ["path=CHANGELOG.md,scope=project,note=release-notes"] } } }
|
|
52
|
-
{ "tool": "pm_files", "args": { "id": "pm-xxxx", "options": { "add": ["path=package.json,scope=project,note=version"] } } }
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Record Evidence
|
|
56
|
-
```json
|
|
57
|
-
{
|
|
58
|
-
"tool": "pm_comments",
|
|
59
|
-
"args": {
|
|
60
|
-
"id": "pm-xxxx",
|
|
61
|
-
"options": {
|
|
62
|
-
"add": "Release evidence: build ok. Tests pass. 100% coverage. pm validate ok. GitHub CI green. npm publish ok."
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Gate Script Reference
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
pnpm build # TypeScript build
|
|
72
|
-
node scripts/run-tests.mjs coverage # Full test + coverage
|
|
73
|
-
node scripts/release/run-gates.mjs # All release gates
|
|
74
|
-
gh run list --limit 5 # GitHub CI status
|
|
75
|
-
gh run view <run-id> # Detailed run status
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Safety
|
|
79
|
-
|
|
80
|
-
- Never set `path` for real repository tracking — only for sandbox tests.
|
|
81
|
-
- Run coverage gate before any `npm publish` or version tag.
|
|
82
|
-
- Confirm GitHub CI green before closing the release item.
|
|
83
|
-
|
|
84
|
-
## Progressive Disclosure and Token Discipline
|
|
85
|
-
|
|
86
|
-
Load the smallest thing that answers the question. Costs are measured.
|
|
87
|
-
|
|
88
|
-
| Need | Call | Cost |
|
|
89
|
-
|------|------|------|
|
|
90
|
-
| Pick or resume work | `pm_next`, or `pm_context` with `limit: 10` | ~2.1-2.5k tok |
|
|
91
|
-
| Exact flags for one command | `pm_contracts` with `command: "<name>", flagsOnly: true` | ~1-3.4k tok |
|
|
92
|
-
| The whole command surface with per-command ceilings | `pm_contracts` with `summary: true` | ~2.6k tok |
|
|
93
|
-
| An unfamiliar capability family | `pm_run` with `action: "guide", topic: "<topic>", depth: "brief"` | ~0.6-1k tok |
|
|
94
|
-
|
|
95
|
-
Guide topics are declared at runtime: `pm guide` prints the current index and
|
|
96
|
-
`pm guide <topic> --depth brief` expands one topic. Do not copy the list.
|
|
97
|
-
|
|
98
|
-
Never load `docs/COMMANDS.md` (~29k tok) or `docs/SDK.md` (~45k tok) whole.
|
|
99
|
-
|
|
100
|
-
Bound every read in this order: projection (`outputInclude`), then row limit
|
|
101
|
-
(`outputLimit` or `limit`), then `outputBudget`, then `outputCursor` to resume.
|
|
102
|
-
Read the `omission_receipt` before treating a result as complete — a
|
|
103
|
-
budget-truncated read is a claim about the part it withheld, and a truncated
|
|
104
|
-
list must never be summarized as if it were the whole population.
|
|
105
|
-
|
|
106
|
-
Author identity is detected automatically. Never pass `author` and never set
|
|
107
|
-
`PM_AUTHOR`; the harness, model, effort, role, and topic are probed and recorded
|
|
108
|
-
on every history entry.
|
|
9
|
+
Inspect the release item and current release position before mutation. Search
|
|
10
|
+
for an existing release or incident lineage and reuse it.
|
|
11
|
+
|
|
12
|
+
1. Link the changed files, changelog, compatibility evidence, and release
|
|
13
|
+
tests to the item that owns them.
|
|
14
|
+
2. Run the build, full coverage, static quality, security, docs, package,
|
|
15
|
+
version, and hosted analysis gates required by the repository.
|
|
16
|
+
3. Verify the exact reviewed PR head and resolve actionable feedback before
|
|
17
|
+
merging. A silent or quota-limited provider is unavailable evidence.
|
|
18
|
+
4. After publishing, verify the main commit, tag, GitHub Release, npm
|
|
19
|
+
package, installed npm and Bun consumers, Sentry, and telemetry separately.
|
|
20
|
+
5. Record immutable close evidence and release the claim.
|
|
21
|
+
|
|
22
|
+
Use the repository release pipeline and pm_contracts rather than a remembered
|
|
23
|
+
flag spelling. Never assume a successful API request proves a scheduled
|
|
24
|
+
release or physical telemetry delivery.
|
|
@@ -1,170 +1,39 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pm-workflow
|
|
3
|
-
description: Use
|
|
3
|
+
description: Use when starting, resuming, or handing off work in a repository managed by pm. Orient from live context, reuse existing items, and leave evidence for the next agent.
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# pm Workflow
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
Project management is context management. Read the live tracker before describing
|
|
10
|
+
work as open, blocked, or done. Use the bundled pm MCP tools when available;
|
|
11
|
+
use the pm CLI with the same contracts when they are not.
|
|
9
12
|
|
|
10
|
-
##
|
|
13
|
+
## Orient
|
|
11
14
|
|
|
12
|
-
|
|
15
|
+
1. Read pm_context with a bounded limit, then pm_list for open and in-progress work.
|
|
16
|
+
2. Search all statuses before creating an item. Inspect the candidate's full
|
|
17
|
+
metadata, comments, notes, learnings, dependencies, and history.
|
|
18
|
+
3. Follow omission receipts and cursors before making a completeness claim.
|
|
19
|
+
4. Cross-check release, CI, package, or infrastructure claims against the live
|
|
20
|
+
system that owns them.
|
|
13
21
|
|
|
14
|
-
|
|
15
|
-
|---------|------|
|
|
16
|
-
| Orient / read state | `pm_context`, `pm_search`, `pm_list`, `pm_get` |
|
|
17
|
-
| Create / update | `pm_create`, `pm_update`, `pm_claim`, `pm_release`, `pm_close` |
|
|
18
|
-
| Evidence | `pm_comments`, `pm_notes`, `pm_learnings`, `pm_files`, `pm_docs`, `pm_test` |
|
|
19
|
-
| Verify | `pm_validate`, `pm_health`, `pm_contracts` |
|
|
20
|
-
| Everything else | `pm_run` with an explicit `action` |
|
|
22
|
+
## Work and hand off
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
Claim only an item being actively edited. Link files, docs, tests, and typed
|
|
25
|
+
relationships that express a real dependency or outcome. Record concise
|
|
26
|
+
evidence, then close with resolution, expected, and actual results when the
|
|
27
|
+
acceptance criteria are met. Release the claim when stopping.
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
3. **Claim** — call `pm_claim` before substantial edits.
|
|
27
|
-
4. **Sync TUI** — after claiming, call `TaskCreate` to mirror the item in Claude Code's task panel (see Hybrid TUI Sync below).
|
|
28
|
-
5. **Link evidence** — call `pm_files`, `pm_docs`, `pm_test` as work progresses.
|
|
29
|
-
6. **Add comments** — `pm_comments` for progress notes and verification results.
|
|
30
|
-
7. **Verify** — run `pm_validate` and project tests before closing.
|
|
31
|
-
8. **Close** — `pm_close` with reason, then `pm_release`, then `TaskUpdate(completed)`.
|
|
29
|
+
For handoff, report the item IDs, exact current status, last verified result,
|
|
30
|
+
remaining work, and the next read command. Do not copy the entire tracker.
|
|
32
31
|
|
|
33
|
-
##
|
|
32
|
+
## Host adapters
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
In Claude Code, mirror a claimed item in the task panel when TaskCreate and
|
|
35
|
+
TaskUpdate are available. Keep pm as the durable source of truth. In Codex,
|
|
36
|
+
use the native MCP tools and the same claim, evidence, close, and release loop.
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Call `TaskCreate` immediately after `pm_claim` (or after `pm_create` if starting fresh):
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
TaskCreate:
|
|
43
|
-
subject: "[pm-xxxx] <item title>"
|
|
44
|
-
description: "Tracking pm item pm-xxxx. AC: <acceptance_criteria if set>"
|
|
45
|
-
activeForm: "Implementing pm-xxxx"
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Save the returned `taskId` — you'll need it for `TaskUpdate` calls later in this session.
|
|
49
|
-
|
|
50
|
-
### When setting in_progress
|
|
51
|
-
|
|
52
|
-
Call `TaskUpdate` with `status: "in_progress"` using the `taskId` from above.
|
|
53
|
-
|
|
54
|
-
### When closing
|
|
55
|
-
|
|
56
|
-
Call `pm_close` then `pm_release`, then immediately call:
|
|
57
|
-
```
|
|
58
|
-
TaskUpdate:
|
|
59
|
-
taskId: <saved taskId>
|
|
60
|
-
status: "completed"
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Blocked items
|
|
64
|
-
|
|
65
|
-
If a pm item becomes blocked, call `TaskUpdate` with `status: "in_progress"` and add "(BLOCKED)" to the subject so it's visible in the panel.
|
|
66
|
-
|
|
67
|
-
## Tool Call Shape
|
|
68
|
-
|
|
69
|
-
Most tools accept `cwd`, `author`, and `options`:
|
|
70
|
-
|
|
71
|
-
```json
|
|
72
|
-
{
|
|
73
|
-
"cwd": "/path/to/repo",
|
|
74
|
-
"options": { "limit": "10" }
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
`pm_run` requires an `action` field:
|
|
79
|
-
|
|
80
|
-
```json
|
|
81
|
-
{
|
|
82
|
-
"action": "calendar",
|
|
83
|
-
"options": { "view": "week", "format": "markdown" }
|
|
84
|
-
}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## Common Patterns
|
|
88
|
-
|
|
89
|
-
**Get active work snapshot:**
|
|
90
|
-
```json
|
|
91
|
-
{ "tool": "pm_context", "args": { "options": { "limit": "10" } } }
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
**Search for existing work:**
|
|
95
|
-
```json
|
|
96
|
-
{ "tool": "pm_search", "args": { "query": "your keywords", "options": { "limit": "10" } } }
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**Create a new item:**
|
|
100
|
-
```json
|
|
101
|
-
{
|
|
102
|
-
"tool": "pm_create",
|
|
103
|
-
"args": {
|
|
104
|
-
"options": {
|
|
105
|
-
"title": "Item title",
|
|
106
|
-
"description": "What this item tracks.",
|
|
107
|
-
"type": "Task",
|
|
108
|
-
"status": "open",
|
|
109
|
-
"priority": "1",
|
|
110
|
-
"createMode": "progressive"
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
**Link changed files:**
|
|
117
|
-
```json
|
|
118
|
-
{
|
|
119
|
-
"tool": "pm_files",
|
|
120
|
-
"args": {
|
|
121
|
-
"id": "pm-xxxx",
|
|
122
|
-
"options": { "add": ["path=src/file.ts,scope=project,note=implementation"] }
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**Close with evidence:**
|
|
128
|
-
```json
|
|
129
|
-
{
|
|
130
|
-
"tool": "pm_close",
|
|
131
|
-
"args": {
|
|
132
|
-
"id": "pm-xxxx",
|
|
133
|
-
"reason": "All acceptance criteria met. Tests pass."
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
## Priority Reference
|
|
139
|
-
|
|
140
|
-
- `0` = critical, `1` = high, `2` = normal, `3` = low, `4` = minimal
|
|
141
|
-
|
|
142
|
-
## Safety
|
|
143
|
-
|
|
144
|
-
Do not pass `path` during real repository tracking. Only pass `path` for sandbox/test runs.
|
|
145
|
-
|
|
146
|
-
## Progressive Disclosure and Token Discipline
|
|
147
|
-
|
|
148
|
-
Load the smallest thing that answers the question. Costs are measured.
|
|
149
|
-
|
|
150
|
-
| Need | Call | Cost |
|
|
151
|
-
|------|------|------|
|
|
152
|
-
| Pick or resume work | `pm_next`, or `pm_context` with `limit: 10` | ~2.1-2.5k tok |
|
|
153
|
-
| Exact flags for one command | `pm_contracts` with `command: "<name>", flagsOnly: true` | ~1-3.4k tok |
|
|
154
|
-
| The whole command surface with per-command ceilings | `pm_contracts` with `summary: true` | ~2.6k tok |
|
|
155
|
-
| An unfamiliar capability family | `pm_run` with `action: "guide", topic: "<topic>", depth: "brief"` | ~0.6-1k tok |
|
|
156
|
-
|
|
157
|
-
Guide topics are declared at runtime: `pm guide` prints the current index and
|
|
158
|
-
`pm guide <topic> --depth brief` expands one topic. Do not copy the list.
|
|
159
|
-
|
|
160
|
-
Never load `docs/COMMANDS.md` (~29k tok) or `docs/SDK.md` (~45k tok) whole.
|
|
161
|
-
|
|
162
|
-
Bound every read in this order: projection (`outputInclude`), then row limit
|
|
163
|
-
(`outputLimit` or `limit`), then `outputBudget`, then `outputCursor` to resume.
|
|
164
|
-
Read the `omission_receipt` before treating a result as complete — a
|
|
165
|
-
budget-truncated read is a claim about the part it withheld, and a truncated
|
|
166
|
-
list must never be summarized as if it were the whole population.
|
|
167
|
-
|
|
168
|
-
Author identity is detected automatically. Never pass `author` and never set
|
|
169
|
-
`PM_AUTHOR`; the harness, model, effort, role, and topic are probed and recorded
|
|
170
|
-
on every history entry.
|
|
38
|
+
Use pm_contracts for exact active flags and pm_run for actions without a narrow
|
|
39
|
+
tool. Never set a static author; let the host identity be detected.
|
|
@@ -3,10 +3,18 @@
|
|
|
3
3
|
This plugin packages pm-cli for Codex with:
|
|
4
4
|
|
|
5
5
|
- a native stdio MCP server (`pm-mcp`) backed by pm command modules, not shell `pm` invocations
|
|
6
|
-
- skills for
|
|
6
|
+
- five portable skills for orientation, implementation, planning, review, and release
|
|
7
7
|
- command prompts for common planning and verification loops
|
|
8
8
|
- repo marketplace metadata for one-step local installation in Codex
|
|
9
9
|
|
|
10
|
+
The root `plugin.json` and typed `mcp.json` are the portable package entrypoints.
|
|
11
|
+
The `.codex-plugin/plugin.json` and `.mcp.json` files support existing hosts.
|
|
12
|
+
Both MCP configurations start the same pinned launcher. The five shared skills are generated with the Claude package from
|
|
13
|
+
`templates/agent-skills/`. The older `pm-native` and `pm-auditor` entrypoints
|
|
14
|
+
are generated compatibility skills that route to `pm-workflow`, `pm-planner`,
|
|
15
|
+
and `pm-audit`. `node scripts/gen-agent-plugin-skills.mjs --check` guards all
|
|
16
|
+
published copies against drift.
|
|
17
|
+
|
|
10
18
|
## Install
|
|
11
19
|
|
|
12
20
|
From this repository:
|
|
@@ -24,7 +32,7 @@ The launcher uses the local repo build when present. In a copied plugin cache it
|
|
|
24
32
|
Prefer the narrow tools when they match the task: `pm_context`, `pm_search`, `pm_list`, `pm_get`, `pm_create`, `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_test`, `pm_validate`, `pm_health`, `pm_contracts`, `pm_schema`, `pm_config`, and `pm_plan`.
|
|
25
33
|
|
|
26
34
|
|
|
27
|
-
`pm_plan` exposes Codex-style ExecPlans as a first-class `Plan` item type with ordered steps, evidence, decisions, discoveries, validation, and materialization. See the `pm-
|
|
35
|
+
`pm_plan` exposes Codex-style ExecPlans as a first-class `Plan` item type with ordered steps, evidence, decisions, discoveries, validation, and materialization. See the `pm-planner` skill for the planning workflow.
|
|
28
36
|
For `init` automation, pass `options.agentGuidance` (`ask|add|skip|status`) when you need deterministic AGENTS/CLAUDE guidance behavior in non-interactive runs.
|
|
29
37
|
|
|
30
38
|
## Safety
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
|
+
"name": "pm-codex",
|
|
4
|
+
"version": "2026.9.27",
|
|
5
|
+
"description": "Repository-native project context workflows and a version-pinned pm MCP server for Codex.",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "unbrained",
|
|
8
|
+
"url": "https://github.com/unbraind/pm-cli"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/unbraind/pm-cli/tree/main/plugins/pm-codex",
|
|
11
|
+
"repository": "https://github.com/unbraind/pm-cli",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"pm-cli",
|
|
15
|
+
"codex",
|
|
16
|
+
"mcp",
|
|
17
|
+
"project-management",
|
|
18
|
+
"agents"
|
|
19
|
+
],
|
|
20
|
+
"extensions": {
|
|
21
|
+
"com.openai": {
|
|
22
|
+
"interface": {
|
|
23
|
+
"displayName": "pm CLI",
|
|
24
|
+
"shortDescription": "Track project context with pm",
|
|
25
|
+
"longDescription": "Orient, plan, implement, verify, and hand off work with repository-native pm records and a bundled MCP server.",
|
|
26
|
+
"developerName": "unbrained",
|
|
27
|
+
"category": "Coding",
|
|
28
|
+
"capabilities": [
|
|
29
|
+
"Interactive",
|
|
30
|
+
"Read",
|
|
31
|
+
"Write"
|
|
32
|
+
],
|
|
33
|
+
"websiteURL": "https://github.com/unbraind/pm-cli",
|
|
34
|
+
"privacyPolicyURL": "https://github.com/unbraind/pm-cli/blob/main/SECURITY.md",
|
|
35
|
+
"termsOfServiceURL": "https://github.com/unbraind/pm-cli/blob/main/LICENSE",
|
|
36
|
+
"defaultPrompt": [
|
|
37
|
+
"Use pm to orient, track, verify, and hand off this repository task."
|
|
38
|
+
],
|
|
39
|
+
"composerIcon": "./assets/pm-cli-small.svg",
|
|
40
|
+
"logo": "./assets/pm-cli-small.svg",
|
|
41
|
+
"brandColor": "#2563EB"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|