@unbrained/pm-cli 2026.5.6 → 2026.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/.agents/pm/extensions/.managed-extensions.json +2 -2
  2. package/.agents/pm/extensions/beads/runtime.js +4 -4
  3. package/.agents/pm/extensions/beads/runtime.ts +5 -5
  4. package/.agents/pm/extensions/todos/runtime.js +7 -7
  5. package/.agents/pm/extensions/todos/runtime.ts +10 -10
  6. package/.agents/skills/HARNESS_COMPATIBILITY.md +45 -0
  7. package/.agents/skills/README.md +21 -0
  8. package/.agents/skills/pm-developer/SKILL.md +73 -0
  9. package/.agents/skills/pm-developer/references/COMMAND_PLAYBOOK.md +48 -0
  10. package/.agents/skills/pm-developer/references/PROMPTS.md +17 -0
  11. package/.agents/skills/pm-extensions/SKILL.md +57 -0
  12. package/.agents/skills/pm-extensions/references/LIFECYCLE.md +40 -0
  13. package/.agents/skills/pm-extensions/references/TROUBLESHOOTING.md +25 -0
  14. package/.agents/skills/pm-sdk/SKILL.md +50 -0
  15. package/.agents/skills/pm-sdk/references/INTEGRATION_CHECKLIST.md +31 -0
  16. package/.agents/skills/pm-sdk/references/PROMPTS.md +13 -0
  17. package/.agents/skills/pm-user/SKILL.md +59 -0
  18. package/.agents/skills/pm-user/references/PROMPTS.md +17 -0
  19. package/.agents/skills/pm-user/references/WORKFLOWS.md +35 -0
  20. package/.claude-plugin/marketplace.json +38 -0
  21. package/.pi/README.md +35 -0
  22. package/.pi/agents/pm-triage-agent.md +19 -0
  23. package/.pi/agents/pm-verification-agent.md +21 -0
  24. package/.pi/chains/pm-native-delivery.chain.md +11 -0
  25. package/.pi/extensions/pm-cli/index.js +387 -0
  26. package/.pi/prompts/pm-workflow.md +5 -0
  27. package/.pi/skills/pm-native/SKILL.md +44 -0
  28. package/.pi/skills/pm-release/SKILL.md +35 -0
  29. package/AGENTS.md +1 -1
  30. package/CHANGELOG.md +13 -0
  31. package/PRD.md +16 -16
  32. package/README.md +30 -4
  33. package/dist/cli/argv-utils.d.ts +5 -0
  34. package/dist/cli/argv-utils.js +34 -0
  35. package/dist/cli/argv-utils.js.map +1 -0
  36. package/dist/cli/bootstrap-args.d.ts +15 -0
  37. package/dist/cli/bootstrap-args.js +211 -0
  38. package/dist/cli/bootstrap-args.js.map +1 -1
  39. package/dist/cli/commander-usage.js +109 -3
  40. package/dist/cli/commander-usage.js.map +1 -1
  41. package/dist/cli/commands/claim.js +6 -6
  42. package/dist/cli/commands/claim.js.map +1 -1
  43. package/dist/cli/commands/close.js +9 -9
  44. package/dist/cli/commands/close.js.map +1 -1
  45. package/dist/cli/commands/comments.d.ts +2 -0
  46. package/dist/cli/commands/comments.js +57 -8
  47. package/dist/cli/commands/comments.js.map +1 -1
  48. package/dist/cli/commands/completion.js +40 -7
  49. package/dist/cli/commands/completion.js.map +1 -1
  50. package/dist/cli/commands/config.js +6 -3
  51. package/dist/cli/commands/config.js.map +1 -1
  52. package/dist/cli/commands/contracts.d.ts +19 -0
  53. package/dist/cli/commands/contracts.js +36 -1
  54. package/dist/cli/commands/contracts.js.map +1 -1
  55. package/dist/cli/commands/create.d.ts +2 -2
  56. package/dist/cli/commands/create.js +116 -55
  57. package/dist/cli/commands/create.js.map +1 -1
  58. package/dist/cli/commands/docs.js +13 -6
  59. package/dist/cli/commands/docs.js.map +1 -1
  60. package/dist/cli/commands/extension.d.ts +3 -1
  61. package/dist/cli/commands/extension.js +174 -2
  62. package/dist/cli/commands/extension.js.map +1 -1
  63. package/dist/cli/commands/files.js +19 -12
  64. package/dist/cli/commands/files.js.map +1 -1
  65. package/dist/cli/commands/get.js +5 -5
  66. package/dist/cli/commands/get.js.map +1 -1
  67. package/dist/cli/commands/guide.d.ts +55 -0
  68. package/dist/cli/commands/guide.js +260 -0
  69. package/dist/cli/commands/guide.js.map +1 -0
  70. package/dist/cli/commands/health.js +1 -1
  71. package/dist/cli/commands/health.js.map +1 -1
  72. package/dist/cli/commands/history.js +30 -10
  73. package/dist/cli/commands/history.js.map +1 -1
  74. package/dist/cli/commands/index.d.ts +1 -0
  75. package/dist/cli/commands/index.js +1 -0
  76. package/dist/cli/commands/index.js.map +1 -1
  77. package/dist/cli/commands/init.d.ts +2 -0
  78. package/dist/cli/commands/init.js +21 -1
  79. package/dist/cli/commands/init.js.map +1 -1
  80. package/dist/cli/commands/learnings.js +3 -3
  81. package/dist/cli/commands/learnings.js.map +1 -1
  82. package/dist/cli/commands/metadata-normalizers.d.ts +4 -0
  83. package/dist/cli/commands/metadata-normalizers.js +37 -0
  84. package/dist/cli/commands/metadata-normalizers.js.map +1 -0
  85. package/dist/cli/commands/notes.js +3 -3
  86. package/dist/cli/commands/notes.js.map +1 -1
  87. package/dist/cli/commands/reindex.js +180 -156
  88. package/dist/cli/commands/reindex.js.map +1 -1
  89. package/dist/cli/commands/restore.d.ts +2 -2
  90. package/dist/cli/commands/restore.js +44 -24
  91. package/dist/cli/commands/restore.js.map +1 -1
  92. package/dist/cli/commands/search.d.ts +2 -0
  93. package/dist/cli/commands/search.js +45 -26
  94. package/dist/cli/commands/search.js.map +1 -1
  95. package/dist/cli/commands/test-all.d.ts +2 -0
  96. package/dist/cli/commands/test-all.js +2 -0
  97. package/dist/cli/commands/test-all.js.map +1 -1
  98. package/dist/cli/commands/test.d.ts +1 -0
  99. package/dist/cli/commands/test.js +13 -5
  100. package/dist/cli/commands/test.js.map +1 -1
  101. package/dist/cli/commands/update.js +188 -157
  102. package/dist/cli/commands/update.js.map +1 -1
  103. package/dist/cli/commands/validate.js +1 -1
  104. package/dist/cli/commands/validate.js.map +1 -1
  105. package/dist/cli/error-guidance.d.ts +9 -1
  106. package/dist/cli/error-guidance.js +147 -6
  107. package/dist/cli/error-guidance.js.map +1 -1
  108. package/dist/cli/guide-topics.d.ts +25 -0
  109. package/dist/cli/guide-topics.js +283 -0
  110. package/dist/cli/guide-topics.js.map +1 -0
  111. package/dist/cli/help-content.js +25 -1
  112. package/dist/cli/help-content.js.map +1 -1
  113. package/dist/cli/help-json-payload.js +11 -1
  114. package/dist/cli/help-json-payload.js.map +1 -1
  115. package/dist/cli/main.js +69 -6
  116. package/dist/cli/main.js.map +1 -1
  117. package/dist/cli/register-list-query.js +38 -1
  118. package/dist/cli/register-list-query.js.map +1 -1
  119. package/dist/cli/register-mutation.js +17 -4
  120. package/dist/cli/register-mutation.js.map +1 -1
  121. package/dist/cli/register-setup.js +15 -1
  122. package/dist/cli/register-setup.js.map +1 -1
  123. package/dist/cli/telemetry-flush.d.ts +2 -0
  124. package/dist/cli/telemetry-flush.js +4 -0
  125. package/dist/cli/telemetry-flush.js.map +1 -0
  126. package/dist/cli.js +1 -2
  127. package/dist/cli.js.map +1 -1
  128. package/dist/core/extensions/extension-types.d.ts +72 -0
  129. package/dist/core/extensions/extension-types.js +24 -0
  130. package/dist/core/extensions/extension-types.js.map +1 -1
  131. package/dist/core/extensions/loader.d.ts +1 -0
  132. package/dist/core/extensions/loader.js +766 -7
  133. package/dist/core/extensions/loader.js.map +1 -1
  134. package/dist/core/history/history.js +32 -11
  135. package/dist/core/history/history.js.map +1 -1
  136. package/dist/core/item/item-format.d.ts +2 -2
  137. package/dist/core/item/item-format.js +16 -16
  138. package/dist/core/item/item-format.js.map +1 -1
  139. package/dist/core/lock/lock.js +2 -0
  140. package/dist/core/lock/lock.js.map +1 -1
  141. package/dist/core/schema/runtime-field-filters.js +1 -1
  142. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  143. package/dist/core/schema/runtime-field-values.js +2 -2
  144. package/dist/core/schema/runtime-field-values.js.map +1 -1
  145. package/dist/core/schema/runtime-schema.d.ts +1 -1
  146. package/dist/core/schema/runtime-schema.js +3 -3
  147. package/dist/core/schema/runtime-schema.js.map +1 -1
  148. package/dist/core/search/cache.js +7 -21
  149. package/dist/core/search/cache.js.map +1 -1
  150. package/dist/core/search/corpus.d.ts +13 -0
  151. package/dist/core/search/corpus.js +74 -0
  152. package/dist/core/search/corpus.js.map +1 -0
  153. package/dist/core/search/embedding-batches.js +90 -30
  154. package/dist/core/search/embedding-batches.js.map +1 -1
  155. package/dist/core/sentry/instrument.d.ts +18 -1
  156. package/dist/core/sentry/instrument.js +128 -12
  157. package/dist/core/sentry/instrument.js.map +1 -1
  158. package/dist/core/shared/constants.d.ts +1 -1
  159. package/dist/core/shared/constants.js +21 -1
  160. package/dist/core/shared/constants.js.map +1 -1
  161. package/dist/core/shared/errors.d.ts +8 -0
  162. package/dist/core/shared/errors.js.map +1 -1
  163. package/dist/core/shared/levenshtein.d.ts +1 -0
  164. package/dist/core/shared/levenshtein.js +37 -0
  165. package/dist/core/shared/levenshtein.js.map +1 -0
  166. package/dist/core/store/front-matter-cache.d.ts +1 -1
  167. package/dist/core/store/front-matter-cache.js +13 -13
  168. package/dist/core/store/front-matter-cache.js.map +1 -1
  169. package/dist/core/store/item-format-migration.js +5 -2
  170. package/dist/core/store/item-format-migration.js.map +1 -1
  171. package/dist/core/store/item-store.js +16 -15
  172. package/dist/core/store/item-store.js.map +1 -1
  173. package/dist/core/store/paths.js +35 -2
  174. package/dist/core/store/paths.js.map +1 -1
  175. package/dist/core/store/settings.js +216 -2
  176. package/dist/core/store/settings.js.map +1 -1
  177. package/dist/core/telemetry/runtime.d.ts +1 -0
  178. package/dist/core/telemetry/runtime.js +102 -3
  179. package/dist/core/telemetry/runtime.js.map +1 -1
  180. package/dist/core/test/item-test-run-tracking.js +2 -2
  181. package/dist/core/test/item-test-run-tracking.js.map +1 -1
  182. package/dist/mcp/server.d.ts +2 -0
  183. package/dist/mcp/server.js +407 -0
  184. package/dist/mcp/server.js.map +1 -0
  185. package/dist/pi/native.d.ts +5 -0
  186. package/dist/pi/native.js +236 -0
  187. package/dist/pi/native.js.map +1 -0
  188. package/dist/sdk/cli-contracts.d.ts +24 -2
  189. package/dist/sdk/cli-contracts.js +317 -2
  190. package/dist/sdk/cli-contracts.js.map +1 -1
  191. package/dist/sdk/index.d.ts +12 -1
  192. package/dist/sdk/index.js +8 -1
  193. package/dist/sdk/index.js.map +1 -1
  194. package/dist/types.d.ts +51 -2
  195. package/dist/types.js.map +1 -1
  196. package/docs/AGENT_GUIDE.md +15 -0
  197. package/docs/ARCHITECTURE.md +2 -2
  198. package/docs/CLAUDE_CODE_PLUGIN.md +225 -0
  199. package/docs/CODEX_PLUGIN.md +33 -0
  200. package/docs/COMMANDS.md +6 -2
  201. package/docs/CONFIGURATION.md +2 -8
  202. package/docs/EXTENSIONS.md +688 -0
  203. package/docs/MIGRATION_CLI_SIMPLIFICATION.md +64 -0
  204. package/docs/PI_PACKAGE.md +141 -0
  205. package/docs/QUICKSTART.md +1 -0
  206. package/docs/README.md +30 -1
  207. package/docs/RELEASING.md +4 -2
  208. package/docs/SDK.md +444 -2
  209. package/docs/examples/ci/github-actions-pm-extension-gate.yml +53 -0
  210. package/docs/examples/ci/gitlab-ci-pm-extension-gate.yml +41 -0
  211. package/docs/examples/ci/jenkins-pm-extension-gate.Jenkinsfile +45 -0
  212. package/docs/examples/policy-restricted-extension/README.md +74 -0
  213. package/docs/examples/policy-restricted-extension/index.js +21 -0
  214. package/docs/examples/policy-restricted-extension/manifest.json +21 -0
  215. package/docs/examples/policy-restricted-extension/package.json +8 -0
  216. package/docs/examples/sdk-app-embedding/README.md +39 -0
  217. package/docs/examples/sdk-app-embedding/package.json +9 -0
  218. package/docs/examples/sdk-app-embedding/run-embedded-pm.mjs +61 -0
  219. package/docs/examples/sdk-contract-consumer/README.md +57 -0
  220. package/docs/examples/sdk-contract-consumer/inspect-contracts.mjs +47 -0
  221. package/docs/examples/sdk-contract-consumer/package.json +10 -0
  222. package/docs/examples/starter-extension/README.md +57 -42
  223. package/docs/examples/starter-extension/manifest.json +15 -0
  224. package/marketplace.json +34 -0
  225. package/package.json +38 -4
  226. package/plugins/pm-cli-claude/.claude-plugin/plugin.json +23 -0
  227. package/plugins/pm-cli-claude/.mcp.json +12 -0
  228. package/plugins/pm-cli-claude/README.md +225 -0
  229. package/plugins/pm-cli-claude/agents/pm-coordinator.md +48 -0
  230. package/plugins/pm-cli-claude/agents/pm-delivery-chain.md +88 -0
  231. package/plugins/pm-cli-claude/agents/pm-triage-agent.md +83 -0
  232. package/plugins/pm-cli-claude/agents/pm-verification-agent.md +88 -0
  233. package/plugins/pm-cli-claude/commands/pm-audit.md +39 -0
  234. package/plugins/pm-cli-claude/commands/pm-calendar.md +41 -0
  235. package/plugins/pm-cli-claude/commands/pm-close-task.md +20 -0
  236. package/plugins/pm-cli-claude/commands/pm-developer.md +38 -0
  237. package/plugins/pm-cli-claude/commands/pm-init.md +44 -0
  238. package/plugins/pm-cli-claude/commands/pm-list.md +39 -0
  239. package/plugins/pm-cli-claude/commands/pm-new.md +36 -0
  240. package/plugins/pm-cli-claude/commands/pm-planner.md +51 -0
  241. package/plugins/pm-cli-claude/commands/pm-release.md +41 -0
  242. package/plugins/pm-cli-claude/commands/pm-search.md +21 -0
  243. package/plugins/pm-cli-claude/commands/pm-start-task.md +27 -0
  244. package/plugins/pm-cli-claude/commands/pm-status.md +15 -0
  245. package/plugins/pm-cli-claude/commands/pm-triage.md +35 -0
  246. package/plugins/pm-cli-claude/commands/pm-workflow.md +49 -0
  247. package/plugins/pm-cli-claude/hooks/hooks.json +17 -0
  248. package/plugins/pm-cli-claude/hooks/session-start.mjs +120 -0
  249. package/plugins/pm-cli-claude/scripts/pm-mcp-server.mjs +60 -0
  250. package/plugins/pm-cli-claude/skills/pm-audit/SKILL.md +88 -0
  251. package/plugins/pm-cli-claude/skills/pm-developer/SKILL.md +116 -0
  252. package/plugins/pm-cli-claude/skills/pm-planner/SKILL.md +118 -0
  253. package/plugins/pm-cli-claude/skills/pm-release/SKILL.md +83 -0
  254. package/plugins/pm-cli-claude/skills/pm-workflow/SKILL.md +148 -0
  255. package/plugins/pm-cli-codex/.codex-plugin/plugin.json +45 -0
  256. package/plugins/pm-cli-codex/.mcp.json +14 -0
  257. package/plugins/pm-cli-codex/README.md +30 -0
  258. package/plugins/pm-cli-codex/assets/pm-cli-small.svg +4 -0
  259. package/plugins/pm-cli-codex/commands/pm-audit.md +8 -0
  260. package/plugins/pm-cli-codex/commands/pm-close-task.md +9 -0
  261. package/plugins/pm-cli-codex/commands/pm-start-task.md +9 -0
  262. package/plugins/pm-cli-codex/scripts/pm-mcp-server.mjs +54 -0
  263. package/plugins/pm-cli-codex/skills/pm-auditor/SKILL.md +21 -0
  264. package/plugins/pm-cli-codex/skills/pm-auditor/agents/openai.yaml +6 -0
  265. package/plugins/pm-cli-codex/skills/pm-native/SKILL.md +57 -0
  266. package/plugins/pm-cli-codex/skills/pm-native/agents/openai.yaml +6 -0
  267. package/plugins/pm-cli-codex/skills/pm-release/SKILL.md +19 -0
  268. package/plugins/pm-cli-codex/skills/pm-release/agents/openai.yaml +6 -0
@@ -0,0 +1,225 @@
1
+ # pm CLI — Claude Code Plugin
2
+
3
+ Native pm CLI integration for Claude Code. Use pm project management tools directly through Claude Code's MCP protocol — no shell invocations, no context switching, no `pm` CLI required.
4
+
5
+ ## What's Included
6
+
7
+ | Component | What it provides |
8
+ |-----------|----------------|
9
+ | **18 MCP tools** | Full pm surface: context, search, list, get, create, update, claim, release, close, comments, files, docs, test, validate, health, contracts, guide + `pm_run` for everything else |
10
+ | **5 skills** | `pm-workflow`, `pm-developer`, `pm-release`, `pm-audit`, `pm-planner` — auto-loaded as Claude Code skills |
11
+ | **14 slash commands** | Full lifecycle coverage — status, start, close, triage, audit, search, new, list, calendar, developer, planner, release, workflow, init |
12
+ | **3 subagents** | `pm-coordinator` (batch/multi-item), `pm-triage-agent` (duplicate-safe item creation), `pm-verification-agent` (evidence + close readiness), and a `pm-delivery-chain` orchestrator |
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
+ | **Session hook** | Injects active pm item summary at session start when pm is initialized (uses native modules, no CLI required) |
15
+
16
+ ## Installation
17
+
18
+ ### Option A: Plugin marketplace — canonical install (recommended)
19
+
20
+ ```
21
+ /plugin install pm-cli@pm
22
+ ```
23
+
24
+ First time: add the marketplace if it's not configured yet:
25
+
26
+ ```bash
27
+ claude plugin marketplace add /path/to/pm-cli
28
+ # or after npm publish:
29
+ # claude plugin marketplace add unbraind/pm-cli
30
+ ```
31
+
32
+ This installs all 18 MCP tools, 5 skills, 14 slash commands, 3 subagents, hybrid TUI tracking, and the session hook in one step.
33
+
34
+ ### Option B: Legacy marketplace alias (also works)
35
+
36
+ ```
37
+ /plugin install pm-cli@pm-cli
38
+ ```
39
+
40
+ Both `pm` and `pm-cli` marketplace IDs resolve to the same plugin.
41
+
42
+ ### Option C: Global MCP server via Claude Code CLI (MCP tools only)
43
+
44
+ ```bash
45
+ claude mcp add --transport stdio pm-cli-native -- npx -y @unbrained/pm-cli pm-mcp
46
+ ```
47
+
48
+ This gives you the 18 MCP tools but not the skills, slash commands, or session hook.
49
+
50
+ ### Option D: Direct `.mcp.json` (project-scoped MCP only)
51
+
52
+ Add to your project's `.mcp.json`:
53
+
54
+ ```json
55
+ {
56
+ "mcpServers": {
57
+ "pm-cli-native": {
58
+ "command": "npx",
59
+ "args": ["-y", "@unbrained/pm-cli@latest", "pm-mcp"],
60
+ "env": {
61
+ "PM_AUTHOR": "claude-code-agent"
62
+ }
63
+ }
64
+ }
65
+ }
66
+ ```
67
+
68
+ ## Quick Start
69
+
70
+ After installation, restart Claude Code. All tools are available immediately:
71
+
72
+ ```
73
+ Can you show me the current pm project status?
74
+ → Claude uses pm_context + pm_run(calendar) automatically
75
+
76
+ Start working on the authentication bug.
77
+ → Claude searches pm, finds or creates an item, claims it, syncs to task panel
78
+
79
+ Close pm-xxxx — the fix is complete.
80
+ → Claude runs /pm-close-task pm-xxxx with evidence linking, closes pm item, marks task panel entry completed
81
+
82
+ Triage this request: add dark mode toggle to settings screen
83
+ → Claude spawns pm-triage-agent, checks duplicates, creates pm item with AC, hands off to /pm-developer
84
+ ```
85
+
86
+ ## Hybrid TUI Task Tracking
87
+
88
+ pm items automatically sync to Claude Code's task panel during active sessions:
89
+
90
+ - **pm** = persistent cross-session store (git-native, tracked in `.agents/pm/`)
91
+ - **Claude Code task panel** = live session view with spinners and status
92
+
93
+ When you `/pm-start-task` or `/pm-developer`:
94
+ 1. The pm item is claimed (`pm_claim`)
95
+ 2. A matching entry appears in Claude Code's task panel with a spinner (`TaskCreate`)
96
+ 3. Work progresses; evidence is linked in pm
97
+ 4. On `/pm-close-task`, pm is closed AND the task panel entry shows ✔ completed
98
+
99
+ This means you get full history in pm (survives restarts, visible in `pm list`) and live visual feedback in the Claude Code session.
100
+
101
+ ## Slash Commands
102
+
103
+ | Command | What it does |
104
+ |---------|-------------|
105
+ | `/pm-status` | Quick status snapshot — active items + calendar |
106
+ | `/pm-start-task [id or keywords]` | Find, claim, and start a pm item (with TUI sync) |
107
+ | `/pm-close-task [id]` | Verify, evidence, close, and release an item (marks TUI completed) |
108
+ | `/pm-triage <request>` | Triage a new request into pm tracking |
109
+ | `/pm-audit` | Full repository audit with findings (TUI tracked) |
110
+ | `/pm-search <query>` | Search pm items by keywords, tags, or status |
111
+ | `/pm-new <title>` | Quick-create a new pm item (with duplicate check) |
112
+ | `/pm-list [filter]` | List active or filtered pm items |
113
+ | `/pm-calendar [view]` | Show upcoming deadlines and calendar events |
114
+ | `/pm-developer [id or keywords]` | Full developer loop — claim, implement, verify, close |
115
+ | `/pm-planner [scope]` | Plan and decompose work — survey, create hierarchy, prioritize |
116
+ | `/pm-release [version or id]` | Release gates — build, tests, coverage, CI, publish |
117
+ | `/pm-workflow [id or description]` | General pm workflow loop with TUI tracking |
118
+ | `/pm-init [project name]` | Initialize pm in the current project |
119
+
120
+ ## Skills
121
+
122
+ | Skill | When Claude uses it |
123
+ |-------|-------------------|
124
+ | `pm-workflow` | Any pm-tracked work — orient, claim, implement, close |
125
+ | `pm-developer` | Implementation tasks — code, tests, docs changes |
126
+ | `pm-release` | Release preparation — gates, tagging, publish |
127
+ | `pm-audit` | Repository health audits — validate, dedupe, aggregate |
128
+ | `pm-planner` | Planning — decompose epics, prioritize backlog, triage |
129
+
130
+ ## Subagents
131
+
132
+ | Agent | Role |
133
+ |-------|------|
134
+ | `pm-coordinator` | Multi-item and batch coordination — batch updates, audit workflows, release gate sequences |
135
+ | `pm-triage-agent` | Duplicate-safe item creation — orient, search, establish lineage, produce implementation-ready item |
136
+ | `pm-verification-agent` | Closure evidence — read item, check AC, run tests, validate, produce structured close recommendation |
137
+ | `pm-delivery-chain` | End-to-end orchestrator — runs triage → implement → verify as a single tracked loop |
138
+
139
+ Use subagents via Claude Code's built-in `Agent` tool:
140
+ ```
141
+ Spawn pm-triage-agent to set up the pm item for: add OAuth2 login support
142
+ ```
143
+
144
+ ## MCP Tools Reference
145
+
146
+ ### Narrow tools (prefer these)
147
+
148
+ | Tool | Purpose |
149
+ |------|---------|
150
+ | `pm_context` | Active work snapshot |
151
+ | `pm_search` | Keyword/semantic/hybrid search |
152
+ | `pm_list` | Filtered item list |
153
+ | `pm_get` | Single item detail |
154
+ | `pm_create` | Create new item |
155
+ | `pm_update` | Update metadata |
156
+ | `pm_claim` | Claim for active work |
157
+ | `pm_release` | Release claim |
158
+ | `pm_close` | Close with reason |
159
+ | `pm_comments` | List or add comments |
160
+ | `pm_files` | Link/unlink files |
161
+ | `pm_docs` | Link/unlink docs |
162
+ | `pm_test` | Link or run tests |
163
+ | `pm_validate` | Run validation checks |
164
+ | `pm_health` | Run health diagnostics |
165
+ | `pm_contracts` | Inspect command contracts |
166
+ | `pm_guide` | Read guide topics |
167
+
168
+ ### General tool
169
+
170
+ | Tool | Purpose |
171
+ |------|---------|
172
+ | `pm_run` | Any pm action not covered above — pass `action` field |
173
+
174
+ **`pm_run` actions:** `init`, `calendar`, `activity`, `aggregate`, `dedupe-audit`, `normalize`, `reindex`, `extension`, `history`, `stats`, `append`, `notes`, `learnings`, `test-all`, `comments-audit`, `gc`, `templates-list`, `templates-save`, `templates-show`, `test-runs-list`, `test-runs-status`, `test-runs-logs`, `test-runs-stop`, `test-runs-resume`, `config`, `completion`
175
+
176
+ ## Hybrid TUI Sync Pattern
177
+
178
+ All skills and commands implement this pattern for every claimed item:
179
+
180
+ ```
181
+ 1. pm_claim → [pm stores claim]
182
+ 2. TaskCreate { subject: "[pm-xxxx] title", activeForm: "Working on pm-xxxx" }
183
+ → [spinner appears in Claude Code task panel]
184
+ 3. TaskUpdate { status: "in_progress" }
185
+ 4. ... do work, link evidence in pm ...
186
+ 5. pm_close → pm_release → [pm stores closure]
187
+ 6. TaskUpdate { status: "completed" }
188
+ → [✔ appears in Claude Code task panel]
189
+ ```
190
+
191
+ ## Session Context Injection
192
+
193
+ At session start, the hook runs natively (no `pm` CLI required):
194
+ - Walks up directories to find `dist/pi/native.js` in the repo checkout
195
+ - Falls back to `npx @unbrained/pm-cli` if no local dist is found
196
+ - Injects a compact summary of in-progress/open/blocked items
197
+
198
+ Example output:
199
+ ```
200
+ pm tracker: 2 in_progress, 1 open
201
+ • [pm-abc1] Add OAuth2 login (in_progress)
202
+ • [pm-abc2] Fix test flakiness (in_progress)
203
+ • [pm-abc3] Update docs (open)
204
+ Use pm_context tool or /pm-status for full details.
205
+ ```
206
+
207
+ ## Safety
208
+
209
+ - Never pass `path` during real repository tracking — only use it for sandbox/test runs.
210
+ - Set `author: "claude-code-agent"` on all mutations.
211
+ - Run `pm_validate` before closing items.
212
+ - For tests, pass a sandbox `cwd` and set `PM_GLOBAL_PATH` to an isolated path.
213
+
214
+ ## Requirements
215
+
216
+ - Node.js ≥ 20
217
+ - pm CLI resolved automatically via local dist (in repo) or `npx @unbrained/pm-cli` (no global install needed)
218
+ - Project initialized with `pm init` (or use `/pm-init`)
219
+
220
+ ## Links
221
+
222
+ - [pm CLI docs](https://github.com/unbraind/pm-cli/tree/main/docs)
223
+ - [Architecture guide](https://github.com/unbraind/pm-cli/blob/main/docs/ARCHITECTURE.md)
224
+ - [Extension guide](https://github.com/unbraind/pm-cli/blob/main/docs/EXTENSIONS.md)
225
+ - [CHANGELOG](https://github.com/unbraind/pm-cli/blob/main/CHANGELOG.md)
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: pm-coordinator
3
+ description: Subagent for coordinating multi-item pm CLI work. Use when orchestrating across multiple pm items, running batch updates, or performing broad audit/migration tasks that should be isolated from the main conversation context.
4
+ ---
5
+
6
+ # pm Coordinator
7
+
8
+ You are a pm CLI coordination subagent. You have access to all pm native MCP tools and should use them to coordinate project management tasks.
9
+
10
+ ## Your Role
11
+
12
+ - Coordinate across multiple pm items in a single focused session
13
+ - Run batch operations (update-many, validate, aggregate) without polluting the main context
14
+ - Perform audit workflows and return structured findings
15
+ - Execute release gate sequences and report results
16
+ - Mirror active items to Claude Code's task panel using the Hybrid TUI Sync pattern
17
+
18
+ ## Hybrid TUI Sync
19
+
20
+ pm is the **persistent store**. Claude Code's task panel is the **live session view**.
21
+
22
+ For each pm item you actively claim or work on:
23
+ 1. Call `TaskCreate` with `subject: "[pm-xxxx] <title>"` and `activeForm: "Working on pm-xxxx"`.
24
+ 2. Save the returned `taskId`.
25
+ 3. Call `TaskUpdate(in_progress)` once work begins.
26
+ 4. Call `TaskUpdate(completed)` after `pm_close` + `pm_release`.
27
+
28
+ For batch audits spanning many items, create one top-level `TaskCreate` for the coordination session itself, and update it at the end.
29
+
30
+ ## Tools Available
31
+
32
+ Use the `pm-cli-native` MCP server tools: `pm_context`, `pm_search`, `pm_list`, `pm_get`, `pm_create`, `pm_update`, `pm_claim`, `pm_release`, `pm_close`, `pm_comments`, `pm_files`, `pm_docs`, `pm_test`, `pm_validate`, `pm_health`, `pm_contracts`, `pm_guide`, and `pm_run` for all other operations.
33
+
34
+ Also use Claude Code's built-in `TaskCreate` and `TaskUpdate` tools for TUI panel display.
35
+
36
+ ## Always
37
+
38
+ 1. Call `pm_context` first for orientation.
39
+ 2. Call `pm_search` before creating new items to avoid duplicates.
40
+ 3. Set `author: "claude-code-agent"` on all mutations.
41
+ 4. Mirror claimed items to Claude Code's task panel with `TaskCreate`.
42
+ 5. Return a structured summary of what you did and what pm items were affected.
43
+
44
+ ## Never
45
+
46
+ - Pass `path` during real repository tracking.
47
+ - Close items without verifying acceptance criteria.
48
+ - Create duplicate items without checking `pm_search` first.
@@ -0,0 +1,88 @@
1
+ ---
2
+ name: pm-delivery-chain
3
+ description: Subagent that orchestrates the full pm delivery workflow — triage to establish or reuse a pm item, implement the scoped work, and verify before close. Use when you want a fully tracked, end-to-end delivery loop with pm integration.
4
+ ---
5
+
6
+ # pm Delivery Chain
7
+
8
+ You are a pm CLI delivery orchestration subagent. You coordinate triage, implementation, and verification into a single tracked delivery loop using native pm MCP tools.
9
+
10
+ ## Your Role
11
+
12
+ Run the full three-phase delivery loop for a work request:
13
+ 1. **Triage** — establish the canonical pm item (reuse or create)
14
+ 2. **Implement** — execute the scoped work with evidence linking
15
+ 3. **Verify** — confirm acceptance criteria before closing
16
+
17
+ ## Phase 1: Triage
18
+
19
+ Follow the pm triage workflow to produce an implementation-ready pm item:
20
+
21
+ 1. `pm_context` for orientation
22
+ 2. `pm_search` for duplicate detection
23
+ 3. `pm_list` to see active backlog
24
+ 4. Reuse an existing item if one matches, otherwise `pm_create` with full acceptance criteria
25
+ 5. Link parent if applicable via `pm_update`
26
+
27
+ Output: pm item ID + acceptance criteria for Phase 2.
28
+
29
+ ## Phase 2: Claim and Implement
30
+
31
+ 1. `pm_claim` with `author: "claude-code-agent"`
32
+ 2. `pm_update` to `status: "in_progress"`
33
+ 3. Sync Claude Code task panel:
34
+ ```
35
+ TaskCreate:
36
+ subject: "[pm-xxxx] <item title>"
37
+ description: "Tracking pm-xxxx delivery"
38
+ activeForm: "Implementing pm-xxxx"
39
+ ```
40
+ Then `TaskUpdate(in_progress)`. Save the taskId.
41
+ 4. Implement the work, linking evidence as you go:
42
+ - Changed files: `pm_files` with `add`
43
+ - Updated docs: `pm_docs` with `add`
44
+ - Test commands: `pm_test` with `add`
45
+ - Progress notes: `pm_comments`
46
+
47
+ ## Phase 3: Verify and Close
48
+
49
+ 1. Run linked tests with `pm_test { run: true }` or project test command
50
+ 2. `pm_validate` with `checkResolution: true, checkHistoryDrift: true`
51
+ 3. `pm_comments` with verification evidence
52
+ 4. If all acceptance criteria are met:
53
+ - `pm_close` with reason
54
+ - `pm_release`
55
+ - `TaskUpdate(completed)` using saved taskId
56
+ 5. If criteria are not met: report what's missing and stop — do NOT close
57
+
58
+ ## MCP Call Sequence
59
+
60
+ ```
61
+ # Phase 1 — Triage
62
+ pm_context → pm_search → pm_list → [pm_create if needed] → pm_update(parent)
63
+
64
+ # Phase 2 — Implement
65
+ pm_claim → pm_update(in_progress) → TaskCreate → TaskUpdate(in_progress)
66
+ → [implement] → pm_files → pm_docs → pm_test → pm_comments(progress)
67
+
68
+ # Phase 3 — Verify
69
+ pm_test(run:true) → pm_validate → pm_comments(evidence)
70
+ → pm_close → pm_release → TaskUpdate(completed)
71
+ ```
72
+
73
+ ## Output Format
74
+
75
+ At completion, report:
76
+ - Item ID and title
77
+ - What was implemented (summary)
78
+ - Verification result
79
+ - Final pm status (closed / needs-work)
80
+ - Any follow-up items created
81
+
82
+ ## Rules
83
+
84
+ - Always triage before implementing — never skip Phase 1
85
+ - Always verify before closing — never skip Phase 3
86
+ - Set `author: "claude-code-agent"` on all pm mutations
87
+ - Do not pass `path` during real repository tracking
88
+ - Create at most one pm item per delivery — decompose large requests first
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: pm-triage-agent
3
+ description: Subagent for triaging new requests through pm — inspects context, searches for duplicates, establishes parent lineage, and produces an implementation-ready pm item. Use when routing new work through pm before implementation begins.
4
+ ---
5
+
6
+ # pm Triage Agent
7
+
8
+ You are a pm CLI triage subagent. Use native pm MCP tools for all pm operations. Do not shell out to the `pm` CLI.
9
+
10
+ ## Your Role
11
+
12
+ - Inspect project context and active backlog
13
+ - Search for duplicate or related pm items before creating new ones
14
+ - Establish canonical parent lineage (Epic → Feature → Task hierarchy)
15
+ - Produce an implementation-ready pm item with clear acceptance criteria
16
+ - Hand off a clean pm item ID and rationale to the parent conversation
17
+
18
+ ## Workflow
19
+
20
+ 1. **Orient** — call `pm_context` with `options: { limit: "10" }` to understand active workload.
21
+
22
+ 2. **Search for duplicates** — call `pm_search` with the most distinctive keywords from the request. Check top 10 results carefully.
23
+
24
+ 3. **Survey open items** — call `pm_list` to see the full active backlog (status: open, in_progress).
25
+
26
+ 4. **Decision**:
27
+ - If a matching item exists: recommend reusing it. Do not create duplicates.
28
+ - If similar items exist: propose them as candidates, explain the difference.
29
+ - If no match: proceed to establish lineage and create.
30
+
31
+ 5. **Establish parent lineage** — check for existing Epic or Feature parents via `pm_search`. Create parent items first if the work warrants a hierarchy.
32
+
33
+ 6. **Create the item** (only if no duplicate found):
34
+ ```json
35
+ {
36
+ "tool": "pm_create",
37
+ "args": {
38
+ "author": "claude-code-agent",
39
+ "options": {
40
+ "title": "Concise, action-oriented title",
41
+ "description": "What and why. Root cause or motivation.",
42
+ "type": "Task",
43
+ "status": "open",
44
+ "priority": "1",
45
+ "tags": "relevant,tags",
46
+ "acceptanceCriteria": "Specific, testable, numbered assertions.",
47
+ "createMode": "progressive"
48
+ }
49
+ }
50
+ }
51
+ ```
52
+
53
+ 7. **Link parent** if one exists:
54
+ ```json
55
+ { "tool": "pm_update", "args": { "id": "pm-child", "author": "claude-code-agent", "options": { "parent": "pm-parent" } } }
56
+ ```
57
+
58
+ 8. **Output handoff** — return a structured summary with:
59
+ - Item ID and title
60
+ - Whether it's new or reused
61
+ - Acceptance criteria (numbered list)
62
+ - Recommended next action (claim + implement, or defer)
63
+ - Exact pm item ID for the parent conversation to use
64
+
65
+ ## Always
66
+
67
+ - Set `author: "claude-code-agent"` on all mutations.
68
+ - Check `pm_search` before every `pm_create` — no duplicates.
69
+ - Return the pm item ID so the parent conversation can claim it.
70
+
71
+ ## Never
72
+
73
+ - Pass `path` during real repository tracking — only for sandbox tests.
74
+ - Create an item if a duplicate exists — always recommend reuse.
75
+ - Skip acceptance criteria — every item must have testable assertions.
76
+
77
+ ## Priority Reference
78
+
79
+ - `0` = critical — blocking release or other work
80
+ - `1` = high — important, implement soon
81
+ - `2` = normal — standard priority (default)
82
+ - `3` = low — nice to have
83
+ - `4` = minimal — defer unless time allows
@@ -0,0 +1,88 @@
1
+ ---
2
+ name: pm-verification-agent
3
+ description: Subagent for verifying implementation readiness and producing pm closure evidence — reads linked files/tests/docs, validates acceptance criteria, runs linked tests, and produces a closure recommendation. Use before closing any pm item.
4
+ ---
5
+
6
+ # pm Verification Agent
7
+
8
+ You are a pm CLI verification subagent. Use native pm MCP tools for all pm operations. Use Bash only for non-pm project commands (build, test runner, GitHub CLI).
9
+
10
+ ## Your Role
11
+
12
+ - Read the target pm item and verify all acceptance criteria
13
+ - Check linked files, docs, and tests are present and correct
14
+ - Run linked tests or project test commands to confirm passing state
15
+ - Produce structured closure evidence
16
+ - Recommend close/release only when verification is clean
17
+
18
+ ## Workflow
19
+
20
+ 1. **Read the item** — `pm_get` with the target item ID. Examine:
21
+ - Title, description, acceptance criteria
22
+ - Linked files (`files`), docs (`docs`), tests (`tests`)
23
+ - Current status and claim owner
24
+
25
+ 2. **Review linked files** — `pm_files` to list all linked files. Verify key source files exist and are appropriate.
26
+
27
+ 3. **Check linked docs** — `pm_docs` to confirm documentation is updated.
28
+
29
+ 4. **Review linked tests** — `pm_test` to see linked test commands.
30
+
31
+ 5. **Run linked tests** — if tests are linked, run `pm_test` with `run: true`:
32
+ ```json
33
+ { "tool": "pm_test", "args": { "id": "pm-xxxx", "options": { "run": true } } }
34
+ ```
35
+ Or run the project test command via Bash if no linked tests:
36
+ ```bash
37
+ node scripts/run-tests.mjs test -- <target>
38
+ ```
39
+
40
+ 6. **Validate pm state** — `pm_validate`:
41
+ ```json
42
+ { "tool": "pm_validate", "args": { "options": { "checkResolution": true, "checkHistoryDrift": true } } }
43
+ ```
44
+
45
+ 7. **Add evidence comment** — `pm_comments` with structured verification summary:
46
+ ```json
47
+ {
48
+ "tool": "pm_comments",
49
+ "args": {
50
+ "id": "pm-xxxx",
51
+ "author": "claude-code-agent",
52
+ "options": {
53
+ "add": "Verification evidence: [list what was checked and results]. Tests: [pass/fail]. Validate: [ok/warn]. AC met: [yes/no]."
54
+ }
55
+ }
56
+ }
57
+ ```
58
+
59
+ 8. **Output closure recommendation** — return:
60
+ - Whether all acceptance criteria are met (yes/no, detail per criterion)
61
+ - Test results summary
62
+ - Validation result
63
+ - Any missing evidence (files/docs not linked, tests not passing)
64
+ - Final recommendation: CLOSE or NEEDS_WORK
65
+ - If CLOSE: exact pm item ID ready for `pm_close`
66
+ - If NEEDS_WORK: exact list of what must be fixed first
67
+
68
+ ## Failure Reporting
69
+
70
+ When verification fails, provide:
71
+ ```
72
+ NEEDS_WORK: pm-xxxx
73
+ Reason: <specific failure>
74
+ Fix required: <exact steps to resolve>
75
+ Evidence: <what was checked>
76
+ ```
77
+
78
+ ## Always
79
+
80
+ - Set `author: "claude-code-agent"` on all evidence mutations.
81
+ - Check EVERY acceptance criterion against actual state.
82
+ - Add a `pm_comments` entry before outputting the recommendation.
83
+
84
+ ## Never
85
+
86
+ - Recommend closing if any acceptance criterion is unmet.
87
+ - Skip running tests if any are linked.
88
+ - Pass `path` during real repository tracking.
@@ -0,0 +1,39 @@
1
+ ---
2
+ description: Run a comprehensive pm repository audit — health, validation, duplicates, aggregate counts, calendar, and activity. Produces a structured finding report with tracked pm items for actionable issues.
3
+ ---
4
+
5
+ Use native pm MCP tools to audit the repository's pm tracker state.
6
+
7
+ 1. **Check for existing audit items** — `pm_search` with query "audit" to avoid duplicate tracking.
8
+ 2. **Create an audit tracking item** if none exists (or reuse a recent one):
9
+ ```json
10
+ { "tool": "pm_create", "args": { "author": "claude-code-agent", "options": { "title": "pm tracker audit", "type": "Task", "status": "open", "priority": "1", "createMode": "progressive" } } }
11
+ ```
12
+ 3. **Claim** the audit item.
13
+ 4. **Sync to Claude Code task panel**:
14
+ ```
15
+ TaskCreate:
16
+ subject: "[pm-xxxx] Audit: pm tracker health"
17
+ description: "Full pm audit run — pm-xxxx"
18
+ activeForm: "Running pm audit"
19
+ ```
20
+ Call `TaskUpdate(in_progress)`. Save the taskId.
21
+ 5. **Run the audit suite** in order:
22
+ - `pm_health` — tracker diagnostics
23
+ - `pm_validate` with `checkResolution: true, checkHistoryDrift: true, checkFiles: true, scanMode: "tracked-all"`
24
+ - `pm_run` with `action: "aggregate", options: { groupBy: "status,type" }` — count breakdown
25
+ - `pm_run` with `action: "dedupe-audit", options: { mode: "parent_scope", limit: "20" }` — duplicates
26
+ - `pm_run` with `action: "stats"` — storage metrics
27
+ - `pm_run` with `action: "calendar", options: { view: "week", include: "deadlines,reminders" }` — upcoming
28
+ 6. **Classify findings** — create child pm items for any blocker or warning findings.
29
+ 7. **Record evidence** with `pm_comments`: summary of all checks and findings.
30
+ 8. **Close audit item** with `pm_close`, then `pm_release`, then `TaskUpdate(completed)`.
31
+ 9. **Report** a structured audit summary:
32
+ - Health status
33
+ - Validation results (pass/warn/fail per check)
34
+ - Item counts by status
35
+ - Duplicate candidates found
36
+ - Overdue or upcoming deadlines
37
+ - Any created finding items
38
+
39
+ Format the output as a markdown table for the validation results.
@@ -0,0 +1,41 @@
1
+ ---
2
+ description: Show the pm calendar — upcoming deadlines, reminders, and scheduled events. Optionally pass a view like "week", "month", or a date range.
3
+ ---
4
+
5
+ Show the pm project calendar using native MCP tools. View: `$ARGUMENTS`
6
+
7
+ 1. **Parse view** from `$ARGUMENTS`:
8
+ - `week` (default) — current and next 7 days
9
+ - `month` — current month
10
+ - `today` — just today's events
11
+ - Empty — defaults to `week`
12
+
13
+ 2. **Call `pm_run` with calendar action**:
14
+ ```json
15
+ {
16
+ "tool": "pm_run",
17
+ "args": {
18
+ "action": "calendar",
19
+ "options": {
20
+ "view": "<parsed view, default: week>",
21
+ "format": "markdown",
22
+ "include": "deadlines,reminders,scheduled"
23
+ }
24
+ }
25
+ }
26
+ ```
27
+
28
+ 3. **Also call `pm_context`** for active work context alongside the calendar:
29
+ ```json
30
+ { "tool": "pm_context", "args": { "options": { "limit": "5" } } }
31
+ ```
32
+
33
+ 4. **Present the calendar** — show:
34
+ - A header: "📅 pm Calendar — [view] — [date range]"
35
+ - Calendar events grouped by date
36
+ - A brief summary of overdue items at the top if any
37
+ - Active in-progress work below the calendar
38
+
39
+ 5. **Flag overdue** — if any deadlines are past today, highlight them prominently.
40
+
41
+ Keep the response concise — use a table or compact list for calendar entries.
@@ -0,0 +1,20 @@
1
+ ---
2
+ description: Close a pm-tracked task with evidence — verify tests pass, link changed files, add closing comment, close and release in pm, then mark the Claude Code task panel entry as completed. Accepts an optional item ID as argument.
3
+ ---
4
+
5
+ Use native pm MCP tools to close a tracked task with evidence. Argument: `$ARGUMENTS` (item ID like `pm-xxxx`, or empty to show in-progress items).
6
+
7
+ 1. **Find the item**:
8
+ - If `$ARGUMENTS` is an ID: call `pm_get` with that ID and confirm it's the right item.
9
+ - If empty: call `pm_list` filtered to in_progress and ask the user which to close.
10
+ 2. **Review acceptance criteria** from the item's `acceptance_criteria` field.
11
+ 3. **Verify** — run linked tests with `pm_test` (with `run: true`) if any are linked.
12
+ 4. **Validate** — call `pm_validate` with `options: { checkResolution: true }`.
13
+ 5. **Link any missing files** with `pm_files` for changed source files.
14
+ 6. **Add closing evidence** with `pm_comments`: a brief summary of what changed and what was verified.
15
+ 7. **Close** with `pm_close` and a clear reason that addresses the acceptance criteria.
16
+ 8. **Release** with `pm_release`.
17
+ 9. **Sync TUI** — if a `TaskCreate` was called for this item during this session, call `TaskUpdate` with `status: "completed"` using the saved taskId. If no taskId is known, note the closure in the response.
18
+ 10. **Report** confirmation with the item ID and closing reason.
19
+
20
+ Do not close if acceptance criteria are not met — instead report what's missing.
@@ -0,0 +1,38 @@
1
+ ---
2
+ description: Run the pm-cli developer execution loop — orient, claim, implement, link evidence, verify, and close — with native MCP tools and live TUI tracking. Accepts an optional item ID or keywords as argument.
3
+ ---
4
+
5
+ Run the full pm developer loop using native MCP tools. Argument: `$ARGUMENTS` (item ID like `pm-xxxx`, keywords, or empty to orient from context).
6
+
7
+ 1. **Orient**:
8
+ ```json
9
+ { "tool": "pm_context", "args": { "options": { "limit": "10" } } }
10
+ { "tool": "pm_search", "args": { "query": "$ARGUMENTS", "options": { "limit": "10" } } }
11
+ ```
12
+ 2. **Find or create the item**:
13
+ - If `$ARGUMENTS` is a pm ID: `pm_get` it directly.
14
+ - If keywords: pick the best match from search or ask the user.
15
+ - If no match: `pm_create` with progressive mode.
16
+ 3. **Claim** with `pm_claim` and `author: "claude-code-agent"`, then set `status: "in_progress"` with `pm_update`.
17
+ 4. **Sync to Claude Code task panel**:
18
+ ```
19
+ TaskCreate:
20
+ subject: "[pm-xxxx] <item title>"
21
+ description: "Developer loop — pm-xxxx. AC: <acceptance_criteria>"
22
+ activeForm: "Implementing pm-xxxx"
23
+ ```
24
+ Call `TaskUpdate(in_progress)`. Save the taskId for the session.
25
+ 5. **Implement** — make the changes. Link evidence as you go:
26
+ - `pm_files` for changed source files
27
+ - `pm_docs` for updated documentation
28
+ - `pm_test` for test commands
29
+ 6. **Verify**:
30
+ - Run the project build and tests
31
+ - `pm_validate` with `checkResolution: true`
32
+ 7. **Record evidence** with `pm_comments`: what changed, what was tested, results.
33
+ 8. **Close**:
34
+ - `pm_close` with reason
35
+ - `pm_release`
36
+ - `TaskUpdate(completed)` using the saved taskId
37
+
38
+ If `$ARGUMENTS` is empty, call `pm_list` to show active items and ask which to work on.