@unbrained/pm-cli 2026.5.14 → 2026.5.18

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 (361) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/AGENTS.md +78 -457
  3. package/CHANGELOG.md +11 -0
  4. package/CONTRIBUTING.md +1 -0
  5. package/README.md +6 -5
  6. package/dist/cli/argv-utils.js +4 -1
  7. package/dist/cli/argv-utils.js.map +1 -1
  8. package/dist/cli/bootstrap-args.js +4 -1
  9. package/dist/cli/bootstrap-args.js.map +1 -1
  10. package/dist/cli/commander-usage.js +5 -1
  11. package/dist/cli/commander-usage.js.map +1 -1
  12. package/dist/cli/commands/activity.js +4 -1
  13. package/dist/cli/commands/activity.js.map +1 -1
  14. package/dist/cli/commands/aggregate.js +5 -2
  15. package/dist/cli/commands/aggregate.js.map +1 -1
  16. package/dist/cli/commands/append.js +4 -1
  17. package/dist/cli/commands/append.js.map +1 -1
  18. package/dist/cli/commands/calendar.js +4 -1
  19. package/dist/cli/commands/calendar.js.map +1 -1
  20. package/dist/cli/commands/claim.d.ts +3 -0
  21. package/dist/cli/commands/claim.js +19 -3
  22. package/dist/cli/commands/claim.js.map +1 -1
  23. package/dist/cli/commands/close.js +4 -1
  24. package/dist/cli/commands/close.js.map +1 -1
  25. package/dist/cli/commands/comments-audit.js +4 -1
  26. package/dist/cli/commands/comments-audit.js.map +1 -1
  27. package/dist/cli/commands/comments.js +4 -1
  28. package/dist/cli/commands/comments.js.map +1 -1
  29. package/dist/cli/commands/completion.js +98 -2
  30. package/dist/cli/commands/completion.js.map +1 -1
  31. package/dist/cli/commands/config.js +4 -1
  32. package/dist/cli/commands/config.js.map +1 -1
  33. package/dist/cli/commands/context.js +19 -5
  34. package/dist/cli/commands/context.js.map +1 -1
  35. package/dist/cli/commands/contracts.d.ts +9 -0
  36. package/dist/cli/commands/contracts.js +152 -34
  37. package/dist/cli/commands/contracts.js.map +1 -1
  38. package/dist/cli/commands/create.js +30 -6
  39. package/dist/cli/commands/create.js.map +1 -1
  40. package/dist/cli/commands/dedupe-audit.js +4 -1
  41. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  42. package/dist/cli/commands/delete.js +4 -1
  43. package/dist/cli/commands/delete.js.map +1 -1
  44. package/dist/cli/commands/deps.js +4 -1
  45. package/dist/cli/commands/deps.js.map +1 -1
  46. package/dist/cli/commands/docs.js +4 -1
  47. package/dist/cli/commands/docs.js.map +1 -1
  48. package/dist/cli/commands/extension.d.ts +2 -1
  49. package/dist/cli/commands/extension.js +123 -33
  50. package/dist/cli/commands/extension.js.map +1 -1
  51. package/dist/cli/commands/files.js +4 -1
  52. package/dist/cli/commands/files.js.map +1 -1
  53. package/dist/cli/commands/gc.js +4 -1
  54. package/dist/cli/commands/gc.js.map +1 -1
  55. package/dist/cli/commands/get.d.ts +7 -3
  56. package/dist/cli/commands/get.js +91 -18
  57. package/dist/cli/commands/get.js.map +1 -1
  58. package/dist/cli/commands/guide.js +6 -8
  59. package/dist/cli/commands/guide.js.map +1 -1
  60. package/dist/cli/commands/health.d.ts +4 -0
  61. package/dist/cli/commands/health.js +31 -8
  62. package/dist/cli/commands/health.js.map +1 -1
  63. package/dist/cli/commands/history-redact.d.ts +42 -0
  64. package/dist/cli/commands/history-redact.js +559 -0
  65. package/dist/cli/commands/history-redact.js.map +1 -0
  66. package/dist/cli/commands/history.d.ts +4 -0
  67. package/dist/cli/commands/history.js +14 -3
  68. package/dist/cli/commands/history.js.map +1 -1
  69. package/dist/cli/commands/index.d.ts +2 -0
  70. package/dist/cli/commands/index.js +6 -1
  71. package/dist/cli/commands/index.js.map +1 -1
  72. package/dist/cli/commands/init-agent-guidance.d.ts +31 -0
  73. package/dist/cli/commands/init-agent-guidance.js +336 -0
  74. package/dist/cli/commands/init-agent-guidance.js.map +1 -0
  75. package/dist/cli/commands/init.d.ts +14 -0
  76. package/dist/cli/commands/init.js +75 -1
  77. package/dist/cli/commands/init.js.map +1 -1
  78. package/dist/cli/commands/learnings.js +4 -1
  79. package/dist/cli/commands/learnings.js.map +1 -1
  80. package/dist/cli/commands/list.d.ts +1 -0
  81. package/dist/cli/commands/list.js +42 -18
  82. package/dist/cli/commands/list.js.map +1 -1
  83. package/dist/cli/commands/metadata-normalizers.js +4 -1
  84. package/dist/cli/commands/metadata-normalizers.js.map +1 -1
  85. package/dist/cli/commands/normalize.js +4 -1
  86. package/dist/cli/commands/normalize.js.map +1 -1
  87. package/dist/cli/commands/notes.js +4 -1
  88. package/dist/cli/commands/notes.js.map +1 -1
  89. package/dist/cli/commands/plan.d.ts +118 -0
  90. package/dist/cli/commands/plan.js +975 -0
  91. package/dist/cli/commands/plan.js.map +1 -0
  92. package/dist/cli/commands/reindex.js +4 -1
  93. package/dist/cli/commands/reindex.js.map +1 -1
  94. package/dist/cli/commands/restore.js +4 -1
  95. package/dist/cli/commands/restore.js.map +1 -1
  96. package/dist/cli/commands/search.js +7 -2
  97. package/dist/cli/commands/search.js.map +1 -1
  98. package/dist/cli/commands/stats.js +4 -1
  99. package/dist/cli/commands/stats.js.map +1 -1
  100. package/dist/cli/commands/templates.js +4 -1
  101. package/dist/cli/commands/templates.js.map +1 -1
  102. package/dist/cli/commands/test-all.js +4 -1
  103. package/dist/cli/commands/test-all.js.map +1 -1
  104. package/dist/cli/commands/test-runs.js +4 -1
  105. package/dist/cli/commands/test-runs.js.map +1 -1
  106. package/dist/cli/commands/test.js +4 -1
  107. package/dist/cli/commands/test.js.map +1 -1
  108. package/dist/cli/commands/update-many.js +4 -1
  109. package/dist/cli/commands/update-many.js.map +1 -1
  110. package/dist/cli/commands/update.js +114 -71
  111. package/dist/cli/commands/update.js.map +1 -1
  112. package/dist/cli/commands/upgrade.js +6 -3
  113. package/dist/cli/commands/upgrade.js.map +1 -1
  114. package/dist/cli/commands/validate.js +32 -4
  115. package/dist/cli/commands/validate.js.map +1 -1
  116. package/dist/cli/error-guidance.js +5 -2
  117. package/dist/cli/error-guidance.js.map +1 -1
  118. package/dist/cli/extension-command-help.js +4 -1
  119. package/dist/cli/extension-command-help.js.map +1 -1
  120. package/dist/cli/extension-command-options.js +4 -1
  121. package/dist/cli/extension-command-options.js.map +1 -1
  122. package/dist/cli/guide-topics.js +4 -1
  123. package/dist/cli/guide-topics.js.map +1 -1
  124. package/dist/cli/help-content.js +35 -15
  125. package/dist/cli/help-content.js.map +1 -1
  126. package/dist/cli/help-json-payload.js +4 -1
  127. package/dist/cli/help-json-payload.js.map +1 -1
  128. package/dist/cli/main.js +203 -25
  129. package/dist/cli/main.js.map +1 -1
  130. package/dist/cli/migration-gates.js +4 -1
  131. package/dist/cli/migration-gates.js.map +1 -1
  132. package/dist/cli/register-list-query.js +37 -14
  133. package/dist/cli/register-list-query.js.map +1 -1
  134. package/dist/cli/register-mutation.js +228 -4
  135. package/dist/cli/register-mutation.js.map +1 -1
  136. package/dist/cli/register-operations.js +33 -1
  137. package/dist/cli/register-operations.js.map +1 -1
  138. package/dist/cli/register-setup.js +23 -13
  139. package/dist/cli/register-setup.js.map +1 -1
  140. package/dist/cli/registration-helpers.js +10 -2
  141. package/dist/cli/registration-helpers.js.map +1 -1
  142. package/dist/cli/shared-parsers.js +4 -1
  143. package/dist/cli/shared-parsers.js.map +1 -1
  144. package/dist/cli/telemetry-flush.js +4 -1
  145. package/dist/cli/telemetry-flush.js.map +1 -1
  146. package/dist/cli.js +45 -3
  147. package/dist/cli.js.map +1 -1
  148. package/dist/core/extensions/extension-types.js +4 -1
  149. package/dist/core/extensions/extension-types.js.map +1 -1
  150. package/dist/core/extensions/index.js +4 -1
  151. package/dist/core/extensions/index.js.map +1 -1
  152. package/dist/core/extensions/item-fields.js +4 -1
  153. package/dist/core/extensions/item-fields.js.map +1 -1
  154. package/dist/core/extensions/loader.js +77 -53
  155. package/dist/core/extensions/loader.js.map +1 -1
  156. package/dist/core/extensions/runtime-registrations.js +4 -1
  157. package/dist/core/extensions/runtime-registrations.js.map +1 -1
  158. package/dist/core/fs/fs-utils.js +4 -1
  159. package/dist/core/fs/fs-utils.js.map +1 -1
  160. package/dist/core/fs/index.js +4 -1
  161. package/dist/core/fs/index.js.map +1 -1
  162. package/dist/core/history/history-stream-policy.js +4 -1
  163. package/dist/core/history/history-stream-policy.js.map +1 -1
  164. package/dist/core/history/history.js +4 -1
  165. package/dist/core/history/history.js.map +1 -1
  166. package/dist/core/history/index.js +4 -1
  167. package/dist/core/history/index.js.map +1 -1
  168. package/dist/core/item/id.js +4 -1
  169. package/dist/core/item/id.js.map +1 -1
  170. package/dist/core/item/index.js +4 -1
  171. package/dist/core/item/index.js.map +1 -1
  172. package/dist/core/item/item-format.js +241 -2
  173. package/dist/core/item/item-format.js.map +1 -1
  174. package/dist/core/item/parent-reference-policy.js +4 -1
  175. package/dist/core/item/parent-reference-policy.js.map +1 -1
  176. package/dist/core/item/parse.js +33 -3
  177. package/dist/core/item/parse.js.map +1 -1
  178. package/dist/core/item/sprint-release-format.js +4 -1
  179. package/dist/core/item/sprint-release-format.js.map +1 -1
  180. package/dist/core/item/status.js +4 -1
  181. package/dist/core/item/status.js.map +1 -1
  182. package/dist/core/item/type-registry.js +4 -1
  183. package/dist/core/item/type-registry.js.map +1 -1
  184. package/dist/core/lock/index.js +4 -1
  185. package/dist/core/lock/index.js.map +1 -1
  186. package/dist/core/lock/lock.js +4 -1
  187. package/dist/core/lock/lock.js.map +1 -1
  188. package/dist/core/output/command-aware.js +4 -1
  189. package/dist/core/output/command-aware.js.map +1 -1
  190. package/dist/core/output/output.d.ts +4 -0
  191. package/dist/core/output/output.js +47 -6
  192. package/dist/core/output/output.js.map +1 -1
  193. package/dist/core/packages/manifest.d.ts +1 -0
  194. package/dist/core/packages/manifest.js +5 -1
  195. package/dist/core/packages/manifest.js.map +1 -1
  196. package/dist/core/packages/root.d.ts +3 -0
  197. package/dist/core/packages/root.js +51 -0
  198. package/dist/core/packages/root.js.map +1 -0
  199. package/dist/core/schema/runtime-field-filters.js +4 -1
  200. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  201. package/dist/core/schema/runtime-field-values.js +4 -1
  202. package/dist/core/schema/runtime-field-values.js.map +1 -1
  203. package/dist/core/schema/runtime-schema.js +4 -1
  204. package/dist/core/schema/runtime-schema.js.map +1 -1
  205. package/dist/core/search/cache.js +7 -2
  206. package/dist/core/search/cache.js.map +1 -1
  207. package/dist/core/search/corpus.d.ts +2 -0
  208. package/dist/core/search/corpus.js +77 -2
  209. package/dist/core/search/corpus.js.map +1 -1
  210. package/dist/core/search/embedding-batches.js +21 -7
  211. package/dist/core/search/embedding-batches.js.map +1 -1
  212. package/dist/core/search/http-client.js +4 -1
  213. package/dist/core/search/http-client.js.map +1 -1
  214. package/dist/core/search/providers.js +4 -1
  215. package/dist/core/search/providers.js.map +1 -1
  216. package/dist/core/search/semantic-defaults.js +11 -2
  217. package/dist/core/search/semantic-defaults.js.map +1 -1
  218. package/dist/core/search/vector-stores.js +4 -1
  219. package/dist/core/search/vector-stores.js.map +1 -1
  220. package/dist/core/sentry/helpers.js +4 -1
  221. package/dist/core/sentry/helpers.js.map +1 -1
  222. package/dist/core/sentry/instrument.js +10 -13
  223. package/dist/core/sentry/instrument.js.map +1 -1
  224. package/dist/core/shared/command-types.js +4 -1
  225. package/dist/core/shared/command-types.js.map +1 -1
  226. package/dist/core/shared/conflict-markers.js +4 -1
  227. package/dist/core/shared/conflict-markers.js.map +1 -1
  228. package/dist/core/shared/constants.d.ts +2 -2
  229. package/dist/core/shared/constants.js +24 -1
  230. package/dist/core/shared/constants.js.map +1 -1
  231. package/dist/core/shared/errors.js +4 -1
  232. package/dist/core/shared/errors.js.map +1 -1
  233. package/dist/core/shared/index.js +4 -1
  234. package/dist/core/shared/index.js.map +1 -1
  235. package/dist/core/shared/levenshtein.js +4 -1
  236. package/dist/core/shared/levenshtein.js.map +1 -1
  237. package/dist/core/shared/primitives.js +4 -1
  238. package/dist/core/shared/primitives.js.map +1 -1
  239. package/dist/core/shared/serialization.js +4 -1
  240. package/dist/core/shared/serialization.js.map +1 -1
  241. package/dist/core/shared/text-normalization.js +4 -1
  242. package/dist/core/shared/text-normalization.js.map +1 -1
  243. package/dist/core/shared/time.js +4 -1
  244. package/dist/core/shared/time.js.map +1 -1
  245. package/dist/core/store/front-matter-cache.js +8 -3
  246. package/dist/core/store/front-matter-cache.js.map +1 -1
  247. package/dist/core/store/index.js +4 -1
  248. package/dist/core/store/index.js.map +1 -1
  249. package/dist/core/store/item-format-migration.js +4 -1
  250. package/dist/core/store/item-format-migration.js.map +1 -1
  251. package/dist/core/store/item-store.d.ts +2 -0
  252. package/dist/core/store/item-store.js +66 -3
  253. package/dist/core/store/item-store.js.map +1 -1
  254. package/dist/core/store/paths.js +4 -1
  255. package/dist/core/store/paths.js.map +1 -1
  256. package/dist/core/store/settings.js +39 -1
  257. package/dist/core/store/settings.js.map +1 -1
  258. package/dist/core/telemetry/consent.js +4 -1
  259. package/dist/core/telemetry/consent.js.map +1 -1
  260. package/dist/core/telemetry/observability.d.ts +1 -1
  261. package/dist/core/telemetry/observability.js +11 -2
  262. package/dist/core/telemetry/observability.js.map +1 -1
  263. package/dist/core/telemetry/runtime.js +31 -5
  264. package/dist/core/telemetry/runtime.js.map +1 -1
  265. package/dist/core/test/background-runs.js +4 -1
  266. package/dist/core/test/background-runs.js.map +1 -1
  267. package/dist/core/test/item-test-run-tracking.js +4 -1
  268. package/dist/core/test/item-test-run-tracking.js.map +1 -1
  269. package/dist/mcp/server.js +123 -14
  270. package/dist/mcp/server.js.map +1 -1
  271. package/dist/sdk/cli-contracts/commander-mutation-options.js +10 -3
  272. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  273. package/dist/sdk/cli-contracts/commander-types.js +4 -1
  274. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  275. package/dist/sdk/cli-contracts.d.ts +6 -2
  276. package/dist/sdk/cli-contracts.js +213 -20
  277. package/dist/sdk/cli-contracts.js.map +1 -1
  278. package/dist/sdk/index.js +4 -1
  279. package/dist/sdk/index.js.map +1 -1
  280. package/dist/sdk/runtime.js +4 -1
  281. package/dist/sdk/runtime.js.map +1 -1
  282. package/dist/types/index.js +4 -1
  283. package/dist/types/index.js.map +1 -1
  284. package/dist/types.d.ts +86 -2
  285. package/dist/types.js +34 -1
  286. package/dist/types.js.map +1 -1
  287. package/docs/AGENT_GUIDE.md +16 -6
  288. package/docs/CLAUDE_CODE_PLUGIN.md +10 -10
  289. package/docs/CODEX_PLUGIN.md +2 -2
  290. package/docs/COMMANDS.md +80 -8
  291. package/docs/CONFIGURATION.md +4 -1
  292. package/docs/EXTENSIONS.md +158 -814
  293. package/docs/QUICKSTART.md +11 -5
  294. package/docs/README.md +7 -6
  295. package/docs/RELEASING.md +2 -2
  296. package/docs/TESTING.md +2 -2
  297. package/marketplace.json +3 -3
  298. package/package.json +4 -2
  299. package/packages/pm-beads/package.json +1 -1
  300. package/packages/pm-calendar/README.md +1 -1
  301. package/packages/pm-calendar/extensions/calendar/index.js +1 -1
  302. package/packages/pm-calendar/extensions/calendar/index.ts +1 -1
  303. package/packages/pm-calendar/extensions/calendar/runtime.js +26 -7
  304. package/packages/pm-calendar/extensions/calendar/runtime.ts +26 -7
  305. package/packages/pm-calendar/package.json +1 -1
  306. package/packages/pm-governance-audit/package.json +1 -1
  307. package/packages/pm-guide-shell/extensions/guide-shell/index.js +1 -1
  308. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +1 -1
  309. package/packages/pm-guide-shell/package.json +1 -1
  310. package/packages/pm-linked-test-adapters/package.json +1 -1
  311. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +1 -1
  312. package/packages/pm-search-advanced/package.json +1 -1
  313. package/packages/pm-templates/README.md +1 -1
  314. package/packages/pm-templates/package.json +1 -1
  315. package/packages/pm-todos/package.json +1 -1
  316. package/plugins/{pm-cli-claude → pm-claude}/.claude-plugin/plugin.json +2 -2
  317. package/plugins/{pm-cli-claude → pm-claude}/.mcp.json +1 -1
  318. package/plugins/{pm-cli-claude → pm-claude}/README.md +4 -4
  319. package/plugins/{pm-cli-claude → pm-claude}/agents/pm-coordinator.md +1 -1
  320. package/plugins/{pm-cli-claude → pm-claude}/commands/pm-init.md +10 -1
  321. package/plugins/{pm-cli-claude → pm-claude}/commands/pm-planner.md +18 -0
  322. package/plugins/{pm-cli-claude → pm-claude}/skills/pm-planner/SKILL.md +46 -1
  323. package/plugins/{pm-cli-codex → pm-codex}/.codex-plugin/plugin.json +3 -3
  324. package/plugins/{pm-cli-codex → pm-codex}/.mcp.json +1 -1
  325. package/plugins/{pm-cli-codex → pm-codex}/README.md +7 -4
  326. package/plugins/pm-codex/skills/pm-native/SKILL.md +81 -0
  327. package/scripts/finalize-build.mjs +28 -0
  328. package/scripts/prepare-build-cache.mjs +37 -0
  329. package/plugins/pm-cli-codex/skills/pm-native/SKILL.md +0 -57
  330. /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-delivery-chain.md +0 -0
  331. /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-triage-agent.md +0 -0
  332. /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-verification-agent.md +0 -0
  333. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-audit.md +0 -0
  334. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-calendar.md +0 -0
  335. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-close-task.md +0 -0
  336. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-developer.md +0 -0
  337. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-list.md +0 -0
  338. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-new.md +0 -0
  339. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-release.md +0 -0
  340. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-search.md +0 -0
  341. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-start-task.md +0 -0
  342. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-status.md +0 -0
  343. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-triage.md +0 -0
  344. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-workflow.md +0 -0
  345. /package/plugins/{pm-cli-claude → pm-claude}/hooks/hooks.json +0 -0
  346. /package/plugins/{pm-cli-claude → pm-claude}/hooks/session-start.mjs +0 -0
  347. /package/plugins/{pm-cli-claude → pm-claude}/scripts/pm-mcp-server.mjs +0 -0
  348. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-audit/SKILL.md +0 -0
  349. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-developer/SKILL.md +0 -0
  350. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-release/SKILL.md +0 -0
  351. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-workflow/SKILL.md +0 -0
  352. /package/plugins/{pm-cli-codex → pm-codex}/assets/pm-cli-small.svg +0 -0
  353. /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-audit.md +0 -0
  354. /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-close-task.md +0 -0
  355. /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-start-task.md +0 -0
  356. /package/plugins/{pm-cli-codex → pm-codex}/scripts/pm-mcp-server.mjs +0 -0
  357. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/SKILL.md +0 -0
  358. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/agents/openai.yaml +0 -0
  359. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-native/agents/openai.yaml +0 -0
  360. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/SKILL.md +0 -0
  361. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/agents/openai.yaml +0 -0
@@ -9,7 +9,7 @@ Use this page to get from a clean repository to a tracked, verified item.
9
9
  - Claim before implementation.
10
10
  - Link changed files, docs, and tests to the item.
11
11
  - Close only after evidence is recorded.
12
- - Use `pm guide quickstart` or `pm guide workflows` when you need local docs routing.
12
+ - Use `pm install guide-shell --project` before `pm guide quickstart` or `pm guide workflows` when you need local docs routing.
13
13
 
14
14
  Tracked documentation work: [pm-1sb2](../.agents/pm/tasks/pm-1sb2.toon).
15
15
 
@@ -34,9 +34,10 @@ For one-off use:
34
34
  npx @unbrained/pm-cli --help
35
35
  ```
36
36
 
37
- Optional first-party packages are installable on demand:
37
+ Optional first-party packages are installable during init or on demand:
38
38
 
39
39
  ```bash
40
+ pm init --defaults --with-packages
40
41
  pm package catalog --project
41
42
  pm install '*' --project
42
43
  pm install all --project
@@ -48,9 +49,14 @@ pm package doctor --project --detail summary
48
49
  ```bash
49
50
  pm init
50
51
  pm health --check-only
52
+ pm init --agent-guidance status
53
+ pm init --agent-guidance add
51
54
  ```
52
55
 
53
56
  `pm init` creates `.agents/pm/` with settings, item folders, history, locks, search cache directories, and project extension storage.
57
+ When AGENTS/CLAUDE guidance is missing, default `pm init` uses `--agent-guidance ask`: it prompts only in TTY, never blocks non-interactive runs, and records declined prompts.
58
+ Use `pm init --agent-guidance add` to write the compact workflow block later, or `pm init --agent-guidance status` to inspect guidance state without changing files.
59
+ Use `pm init --defaults --with-packages` when agents should get bundled commands such as calendar, templates, advanced search, and governance helpers in one non-interactive setup step.
54
60
 
55
61
  ## Create Your First Item
56
62
 
@@ -94,9 +100,9 @@ Do not create a duplicate item until `context`, `search`, and list commands show
94
100
  ## Link Work Artifacts
95
101
 
96
102
  ```bash
97
- pm files <item-id> --add path=src/core/lock/lock.ts,scope=project,note="implementation"
98
- pm docs <item-id> --add path=docs/ARCHITECTURE.md,scope=project,note="design context"
99
- pm test <item-id> --add command="node scripts/run-tests.mjs test -- tests/unit/lock.spec.ts",scope=project,timeout_seconds=240
103
+ pm files <item-id> --add path=src/core/lock/lock.ts,note="implementation"
104
+ pm docs <item-id> --add path=docs/ARCHITECTURE.md,note="design context"
105
+ pm test <item-id> --add command="node scripts/run-tests.mjs test -- tests/unit/lock.spec.ts",timeout_seconds=240
100
106
  ```
101
107
 
102
108
  Use `node scripts/run-tests.mjs ...` for linked tests so tracker data is sandboxed.
package/docs/README.md CHANGED
@@ -2,11 +2,12 @@
2
2
 
3
3
  This directory is the public documentation home for `pm-cli`. It is organized for progressive disclosure: read the smallest page that answers the current question, then follow links only when more detail is needed.
4
4
 
5
- ## CLI Guide Router
5
+ ## Optional CLI Guide Router
6
6
 
7
- `pm guide` exposes the same documentation routes from inside the CLI:
7
+ `pm guide` is provided by the optional `guide-shell` package. Install it when local in-CLI documentation routing is useful:
8
8
 
9
9
  ```bash
10
+ pm install guide-shell --project
10
11
  pm guide
11
12
  pm guide quickstart
12
13
  pm guide commands --depth standard
@@ -23,7 +24,7 @@ pm guide release --json
23
24
  | Maintainer | [Contributing](../CONTRIBUTING.md) | [Testing](TESTING.md), [Releasing](RELEASING.md), [Architecture](ARCHITECTURE.md) |
24
25
  | Package author | [Packages and Extensions](EXTENSIONS.md) | [SDK](SDK.md), [starter extension](examples/starter-extension/README.md) |
25
26
  | Codex user | [Codex Plugin](CODEX_PLUGIN.md) | [Agent Guide](AGENT_GUIDE.md), then [Command Reference](COMMANDS.md) |
26
- | Machine client | `pm guide commands` | [Command Reference](COMMANDS.md#machine-contracts), then `pm contracts --json` |
27
+ | Machine client | `pm contracts --json` | [Command Reference](COMMANDS.md#machine-contracts), optionally `pm install guide-shell --project && pm guide commands` |
27
28
 
28
29
  ## Documentation Map
29
30
 
@@ -41,8 +42,8 @@ pm guide release --json
41
42
 
42
43
  ## Guide Topic Map
43
44
 
44
- | `pm guide` topic | Primary docs |
45
- |------------------|--------------|
45
+ | Optional `pm guide` topic | Primary docs |
46
+ |-----------------------------|--------------|
46
47
  | `quickstart` | [Quickstart](QUICKSTART.md), [Command Reference](COMMANDS.md) |
47
48
  | `commands` | [Command Reference](COMMANDS.md), [Configuration](CONFIGURATION.md) |
48
49
  | `workflows` | [Agent Guide](AGENT_GUIDE.md), [Testing](TESTING.md) |
@@ -79,7 +80,7 @@ This documentation structure is tracked through:
79
80
  When changing docs, link files back to the active item:
80
81
 
81
82
  ```bash
82
- pm docs <item-id> --add path=docs/README.md,scope=project,note="documentation index"
83
+ pm docs <item-id> --add path=docs/README.md,note="documentation index"
83
84
  pm comments <item-id> "Docs updated; links and build verified."
84
85
  ```
85
86
 
package/docs/RELEASING.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Releasing `@unbrained/pm-cli`
2
2
 
3
3
  This page is for maintainers cutting npm and GitHub releases. It assumes release work is tracked with `pm`.
4
- For local progressive-disclosure routing, use `pm guide release`.
4
+ For local progressive-disclosure routing, install `guide-shell` with `pm install guide-shell --project`, then use `pm guide release`.
5
5
 
6
6
  ## Agent Quick Context
7
7
 
@@ -10,7 +10,7 @@ For local progressive-disclosure routing, use `pm guide release`.
10
10
  - Publishing is owned by the tag-driven GitHub Actions release workflow.
11
11
  - Do not run manual `npm publish`.
12
12
  - Run local parity gates before pushing release tags.
13
- - Use `pm guide release --json` for machine-readable release docs routing.
13
+ - Use `pm guide release --json` for machine-readable release docs routing after `guide-shell` is installed.
14
14
 
15
15
  Tracked documentation work: [pm-1sb2](../.agents/pm/tasks/pm-1sb2.toon).
16
16
 
package/docs/TESTING.md CHANGED
@@ -36,7 +36,7 @@ Use focused runs while iterating, then run coverage before closure when risk or
36
36
  Add tests to the item that owns the work:
37
37
 
38
38
  ```bash
39
- pm test <item-id> --add command="node scripts/run-tests.mjs test -- tests/unit/output.spec.ts",scope=project,timeout_seconds=240
39
+ pm test <item-id> --add command="node scripts/run-tests.mjs test -- tests/unit/output.spec.ts",timeout_seconds=240
40
40
  pm test <item-id> --run --progress
41
41
  ```
42
42
 
@@ -76,7 +76,7 @@ Linked tests can include assertion metadata:
76
76
 
77
77
  ```bash
78
78
  pm test <item-id> --add \
79
- command="pm list-open --json",scope=project,timeout_seconds=120,assert_json_field_gte=count:0
79
+ command="pm list-open --json",timeout_seconds=120,assert_json_field_gte=count:0
80
80
  ```
81
81
 
82
82
  Common assertion keys include:
package/marketplace.json CHANGED
@@ -7,10 +7,10 @@
7
7
  },
8
8
  "plugins": [
9
9
  {
10
- "name": "pm-cli",
10
+ "name": "pm-claude",
11
11
  "description": "Native pm CLI integration for Claude Code — 18 MCP tools, 5 workflow skills, 14 slash commands, 3 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
12
- "version": "1.3.0",
13
- "source": "./plugins/pm-cli-claude",
12
+ "version": "1.4.0",
13
+ "source": "./plugins/pm-claude",
14
14
  "author": {
15
15
  "name": "unbrained",
16
16
  "url": "https://github.com/unbraind/pm-cli"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-cli",
3
- "version": "2026.5.14",
3
+ "version": "2026.5.18",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "author": "unbrained",
@@ -49,12 +49,14 @@
49
49
  ".claude-plugin/**",
50
50
  "plugins/**",
51
51
  "packages/pm-*/**",
52
+ "scripts/finalize-build.mjs",
52
53
  "scripts/install.sh",
53
54
  "scripts/install.ps1",
55
+ "scripts/prepare-build-cache.mjs",
54
56
  "marketplace.json"
55
57
  ],
56
58
  "scripts": {
57
- "build": "tsc -p tsconfig.json",
59
+ "build": "node scripts/prepare-build-cache.mjs && tsc -p tsconfig.json && node scripts/finalize-build.mjs",
58
60
  "typecheck": "tsc --noEmit -p tsconfig.json && tsc -p tsconfig.packages.json",
59
61
  "start": "node dist/cli.js",
60
62
  "dev": "tsx src/cli.ts",
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@unbrained/pm-package-beads",
2
+ "name": "@unbrained/pm-beads",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  # pm Calendar Package
2
2
 
3
- `@unbrained/pm-package-calendar` provides agenda and calendar views as an installable pm package.
3
+ `@unbrained/pm-calendar` provides agenda and calendar views as an installable pm package.
4
4
 
5
5
  ```bash
6
6
  pm install calendar
@@ -46,7 +46,7 @@ export function activate(api) {
46
46
  api.registerCommand(calendarCommand("cal"));
47
47
  api.registerService("output_format", (context) => {
48
48
  const rendered = renderCalendarPackageOutput(context);
49
- return rendered ?? context.payload;
49
+ return rendered ?? null;
50
50
  });
51
51
  }
52
52
 
@@ -52,7 +52,7 @@ export function activate(api: ExtensionApi): void {
52
52
  api.registerCommand(calendarCommand("cal"));
53
53
  api.registerService("output_format", (context) => {
54
54
  const rendered = renderCalendarPackageOutput(context as ServiceOverrideContext);
55
- return rendered ?? context.payload;
55
+ return rendered ?? null;
56
56
  });
57
57
  }
58
58
 
@@ -51,10 +51,6 @@ function isCalendarResult(value) {
51
51
  );
52
52
  }
53
53
 
54
- function isCalendarCommand(command) {
55
- return command === "calendar" || command === "cal";
56
- }
57
-
58
54
  function readPayloadFormat(payload) {
59
55
  if (typeof payload === "object" && payload !== null) {
60
56
  const format = payload.format;
@@ -72,6 +68,26 @@ function readPayloadResult(payload) {
72
68
  return payload;
73
69
  }
74
70
 
71
+ function readPayloadCommandOptions(payload) {
72
+ if (typeof payload === "object" && payload !== null) {
73
+ const commandOptions = payload.command_options;
74
+ if (typeof commandOptions === "object" && commandOptions !== null) {
75
+ return commandOptions;
76
+ }
77
+ }
78
+ return {};
79
+ }
80
+
81
+ function readPayloadGlobalOptions(payload) {
82
+ if (typeof payload === "object" && payload !== null) {
83
+ const global = payload.global;
84
+ if (typeof global === "object" && global !== null) {
85
+ return global;
86
+ }
87
+ }
88
+ return {};
89
+ }
90
+
75
91
  export async function runCalendarPackage(options, global) {
76
92
  const loaded = await ensureCalendarCoreModule();
77
93
  return loaded.runCalendar(options, global);
@@ -79,11 +95,14 @@ export async function runCalendarPackage(options, global) {
79
95
 
80
96
  export function renderCalendarPackageOutput(context) {
81
97
  const result = readPayloadResult(context.payload);
82
- if (!calendarCore || !isCalendarCommand(context.command) || !isCalendarResult(result)) {
98
+ if (!calendarCore || !isCalendarResult(result)) {
83
99
  return null;
84
100
  }
85
- const options = context.options ?? {};
86
- const global = context.global ?? {};
101
+ const options =
102
+ context.options && Object.keys(context.options).length > 0
103
+ ? context.options
104
+ : readPayloadCommandOptions(context.payload);
105
+ const global = context.global ?? readPayloadGlobalOptions(context.payload);
87
106
  const outputFormat = calendarCore.resolveCalendarOutputFormat(options, global);
88
107
  if (outputFormat === "markdown") {
89
108
  return `${calendarCore.renderCalendarMarkdown(result)}\n`;
@@ -60,10 +60,6 @@ function isCalendarResult(value: unknown): value is CalendarResult {
60
60
  );
61
61
  }
62
62
 
63
- function isCalendarCommand(command: unknown): boolean {
64
- return command === "calendar" || command === "cal";
65
- }
66
-
67
63
  function readPayloadFormat(payload: unknown): "toon" | "json" {
68
64
  if (typeof payload === "object" && payload !== null) {
69
65
  const format = (payload as { format?: unknown }).format;
@@ -81,6 +77,26 @@ function readPayloadResult(payload: unknown): unknown {
81
77
  return payload;
82
78
  }
83
79
 
80
+ function readPayloadCommandOptions(payload: unknown): CalendarOptions {
81
+ if (typeof payload === "object" && payload !== null) {
82
+ const commandOptions = (payload as { command_options?: unknown }).command_options;
83
+ if (typeof commandOptions === "object" && commandOptions !== null) {
84
+ return commandOptions as CalendarOptions;
85
+ }
86
+ }
87
+ return {};
88
+ }
89
+
90
+ function readPayloadGlobalOptions(payload: unknown): GlobalOptions {
91
+ if (typeof payload === "object" && payload !== null) {
92
+ const global = (payload as { global?: unknown }).global;
93
+ if (typeof global === "object" && global !== null) {
94
+ return global as GlobalOptions;
95
+ }
96
+ }
97
+ return {};
98
+ }
99
+
84
100
  export async function runCalendarPackage(options: CalendarOptions, global: GlobalOptions): Promise<CalendarResult> {
85
101
  const loaded = await ensureCalendarCoreModule();
86
102
  return loaded.runCalendar(options, global);
@@ -88,11 +104,14 @@ export async function runCalendarPackage(options: CalendarOptions, global: Globa
88
104
 
89
105
  export function renderCalendarPackageOutput(context: ServiceOverrideContext): string | null {
90
106
  const result = readPayloadResult(context.payload);
91
- if (!calendarCore || !isCalendarCommand(context.command) || !isCalendarResult(result)) {
107
+ if (!calendarCore || !isCalendarResult(result)) {
92
108
  return null;
93
109
  }
94
- const options = (context.options ?? {}) as CalendarOptions;
95
- const global = (context.global ?? {}) as GlobalOptions;
110
+ const options =
111
+ context.options && Object.keys(context.options).length > 0
112
+ ? (context.options as CalendarOptions)
113
+ : readPayloadCommandOptions(context.payload);
114
+ const global = context.global ?? readPayloadGlobalOptions(context.payload);
96
115
  const outputFormat = calendarCore.resolveCalendarOutputFormat(options, global);
97
116
  if (outputFormat === "markdown") {
98
117
  return `${calendarCore.renderCalendarMarkdown(result)}\n`;
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@unbrained/pm-package-calendar",
2
+ "name": "@unbrained/pm-calendar",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@unbrained/pm-package-governance-audit",
2
+ "name": "@unbrained/pm-governance-audit",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -66,7 +66,7 @@ export function activate(api) {
66
66
  api.registerCommand(completionTagsCommand());
67
67
  api.registerService("output_format", (context) => {
68
68
  const rendered = renderGuideShellPackageOutput(context);
69
- return rendered ?? context.payload;
69
+ return rendered ?? null;
70
70
  });
71
71
  }
72
72
 
@@ -71,7 +71,7 @@ export function activate(api: ExtensionApi): void {
71
71
  api.registerCommand(completionTagsCommand());
72
72
  api.registerService("output_format", (context) => {
73
73
  const rendered = renderGuideShellPackageOutput(context as ServiceOverrideContext);
74
- return rendered ?? context.payload;
74
+ return rendered ?? null;
75
75
  });
76
76
  }
77
77
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@unbrained/pm-package-guide-shell",
2
+ "name": "@unbrained/pm-guide-shell",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@unbrained/pm-package-linked-test-adapters",
2
+ "name": "@unbrained/pm-linked-test-adapters",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -6,7 +6,7 @@ export const manifest = {
6
6
  version: "0.1.0",
7
7
  entry: "./index.js",
8
8
  priority: 0,
9
- capabilities: ["commands"],
9
+ capabilities: ["commands", "schema"],
10
10
  };
11
11
 
12
12
  const searchAdvancedFlags = [
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@unbrained/pm-package-search-advanced",
2
+ "name": "@unbrained/pm-search-advanced",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  # pm Templates Package
2
2
 
3
- `@unbrained/pm-package-templates` provides reusable `pm create` templates as an installable pm package.
3
+ `@unbrained/pm-templates` provides reusable `pm create` templates as an installable pm package.
4
4
 
5
5
  Install it with:
6
6
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@unbrained/pm-package-templates",
2
+ "name": "@unbrained/pm-templates",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@unbrained/pm-package-todos",
2
+ "name": "@unbrained/pm-todos",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -1,7 +1,7 @@
1
1
  {
2
- "name": "pm-cli",
2
+ "name": "pm-claude",
3
3
  "description": "Native pm CLI integration for Claude Code — 18 MCP tools, 5 workflow skills, 14 slash commands, 3 subagents (coordinator, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.",
4
- "version": "1.3.0",
4
+ "version": "1.4.0",
5
5
  "author": {
6
6
  "name": "unbrained",
7
7
  "url": "https://github.com/unbraind/pm-cli"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "mcpServers": {
3
- "pm-cli-native": {
3
+ "pm-mcp": {
4
4
  "command": "node",
5
5
  "args": ["${CLAUDE_PLUGIN_ROOT}/scripts/pm-mcp-server.mjs"],
6
6
  "env": {
@@ -6,7 +6,7 @@ Native pm CLI integration for Claude Code. Use pm project management tools direc
6
6
 
7
7
  | Component | What it provides |
8
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 |
9
+ | **18 MCP tools** | Full pm surface: context, search, list, get, create, update, claim, release, close, comments, files, docs, test, validate, health, contracts, plan + `pm_run` for everything else |
10
10
  | **5 skills** | `pm-workflow`, `pm-developer`, `pm-release`, `pm-audit`, `pm-planner` — auto-loaded as Claude Code skills |
11
11
  | **14 slash commands** | Full lifecycle coverage — status, start, close, triage, audit, search, new, list, calendar, developer, planner, release, workflow, init |
12
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 |
@@ -42,7 +42,7 @@ Both `pm` and `pm-cli` marketplace IDs resolve to the same plugin.
42
42
  ### Option C: Global MCP server via Claude Code CLI (MCP tools only)
43
43
 
44
44
  ```bash
45
- claude mcp add --transport stdio pm-cli-native -- npx -y @unbrained/pm-cli pm-mcp
45
+ claude mcp add --transport stdio pm-mcp -- npx -y @unbrained/pm-cli pm-mcp
46
46
  ```
47
47
 
48
48
  This gives you the 18 MCP tools but not the skills, slash commands, or session hook.
@@ -54,7 +54,7 @@ Add to your project's `.mcp.json`:
54
54
  ```json
55
55
  {
56
56
  "mcpServers": {
57
- "pm-cli-native": {
57
+ "pm-mcp": {
58
58
  "command": "npx",
59
59
  "args": ["-y", "@unbrained/pm-cli@latest", "pm-mcp"],
60
60
  "env": {
@@ -163,7 +163,7 @@ Spawn pm-triage-agent to set up the pm item for: add OAuth2 login support
163
163
  | `pm_validate` | Run validation checks |
164
164
  | `pm_health` | Run health diagnostics |
165
165
  | `pm_contracts` | Inspect command contracts |
166
- | `pm_guide` | Read guide topics |
166
+ | `pm_plan` | Manage durable Plan workflows |
167
167
 
168
168
  ### General tool
169
169
 
@@ -29,7 +29,7 @@ For batch audits spanning many items, create one top-level `TaskCreate` for the
29
29
 
30
30
  ## Tools Available
31
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.
32
+ Use the `pm-mcp` 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_plan`, and `pm_run` for all other operations.
33
33
 
34
34
  Also use Claude Code's built-in `TaskCreate` and `TaskUpdate` tools for TUI panel display.
35
35
 
@@ -14,6 +14,14 @@ Initialize pm project tracking using native MCP tools. Argument: `$ARGUMENTS` (o
14
14
  ```json
15
15
  { "tool": "pm_run", "args": { "action": "init", "options": {} } }
16
16
  ```
17
+ If guidance state inspection is needed before writing AGENTS/CLAUDE sections, run:
18
+ ```json
19
+ { "tool": "pm_run", "args": { "action": "init", "options": { "agentGuidance": "status" } } }
20
+ ```
21
+ To explicitly add compact workflow guidance without waiting for interactive prompts, run:
22
+ ```json
23
+ { "tool": "pm_run", "args": { "action": "init", "options": { "agentGuidance": "add" } } }
24
+ ```
17
25
 
18
26
  3. **Verify initialization** — call `pm_health` again to confirm `ok: true`.
19
27
 
@@ -37,8 +45,9 @@ Initialize pm project tracking using native MCP tools. Argument: `$ARGUMENTS` (o
37
45
 
38
46
  5. **Show quick-start summary**:
39
47
  - pm initialized at `.agents/pm/`
48
+ - guidance mode defaults to `ask` (TTY prompt only); use `agentGuidance=add|skip|status` in `pm_run` options for deterministic behavior
40
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`
41
- - All 18 MCP tools available: `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`, `pm_run`
50
+ - All 18 MCP tools available: `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_plan`, `pm_run`
42
51
  - Next: use `/pm-new <title>` to create your first item, or `/pm-status` to see the tracker state
43
52
 
44
53
  If initialization fails, report the error and suggest running `pm init` manually in the terminal.
@@ -49,3 +49,21 @@ Run the pm planning loop using native MCP tools. Argument: `$ARGUMENTS` (optiona
49
49
  9. If you claimed a planning item: `pm_close` it, `pm_release`, then `TaskUpdate(completed)`.
50
50
 
51
51
  10. **Report** — list all created/updated items with their IDs, types, priorities, and parent links.
52
+
53
+ ## Living plan mode (`pm_plan`)
54
+
55
+ If the user wants a Codex-style ExecPlan / Claude Plan Mode / Cursor plan-and-edit flow rather than a flat backlog, use the built-in `Plan` item type via the `pm_plan` MCP tool. It records ordered steps, evidence, decisions, discoveries, validation, and supports materializing steps into real Tasks/Features.
56
+
57
+ ```json
58
+ { "tool": "pm_plan", "args": { "options": { "subcommand": "create", "title": "Plan title", "scope": "What this plan changes", "harness": "claude-code", "parent": "pm-epic1", "claim": true } } }
59
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "add-step", "stepTitle": "Read affected files", "dependsOn": "pm-task1" } } }
60
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "stepRef": "plan-step-001", "options": { "subcommand": "complete-step", "stepEvidence": "files reviewed" } } }
61
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "approve" } } }
62
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "materialize", "steps": "plan-step-002,plan-step-003", "materializeType": "Task" } } }
63
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "show", "depth": "deep" } } }
64
+ ```
65
+
66
+ Resume a plan after compaction:
67
+ ```json
68
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "resume", "resumeContext": "step 2 in progress; tests still failing on retry path" } } }
69
+ ```
@@ -111,8 +111,53 @@ Write AC as numbered, testable assertions:
111
111
 
112
112
  Set via `pm_create` with `acceptanceCriteria` field or `pm_update` with `options.acceptanceCriteria`.
113
113
 
114
+ ## Built-in Plan workflow (`pm_plan` / `pm plan`)
115
+
116
+ 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. Plans are stored as normal pm items under `.agents/pm/plans/`, get the full history hash chain, dependencies, search corpus, and lifecycle tooling.
117
+
118
+ ### When to use `pm plan` vs. `pm_create` + tasks
119
+
120
+ - `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.
121
+ - `pm_create` (Epic/Feature/Task) — when the work is already decomposed and you just need persistent backlog items.
122
+
123
+ ### Lifecycle (call via `pm_plan` MCP tool)
124
+
125
+ ```json
126
+ { "tool": "pm_plan", "args": { "options": { "subcommand": "create", "title": "Refactor lock retry", "scope": "Improve retry semantics", "harness": "claude-code", "parent": "pm-epic1", "related": "pm-rel1,pm-rel2", "claim": true } } }
127
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "add-step", "stepTitle": "Read lock.ts", "stepBody": "Understand retry path", "dependsOn": "pm-task1" } } }
128
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "stepRef": "plan-step-001", "options": { "subcommand": "update-step", "stepStatus": "in_progress", "stepEvidence": "started reading lock.ts" } } }
129
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "stepRef": "plan-step-001", "options": { "subcommand": "complete-step", "stepEvidence": "lock.ts read; retry path captured" } } }
130
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "decision", "decisionText": "Use exponential backoff", "decisionRationale": "Avoid thundering herd" } } }
131
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "discovery", "discoveryText": "Found existing util in src/util/retry.ts" } } }
132
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "validation", "validationText": "Coverage gate stays at 100%", "validationCommand": "node scripts/run-tests.mjs coverage" } } }
133
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "approve" } } }
134
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "materialize", "steps": "plan-step-002", "materializeType": "Task", "materializeParent": "pm-epic1" } } }
135
+ ```
136
+
137
+ ### Progressive-disclosure reads
138
+
139
+ ```json
140
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "show", "depth": "brief" } } }
141
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "show", "depth": "standard" } } }
142
+ { "tool": "pm_plan", "args": { "id": "pm-plan1", "options": { "subcommand": "show", "depth": "deep" } } }
143
+ ```
144
+
145
+ ### Harness mapping cheatsheet
146
+
147
+ | Harness signal | pm_plan equivalent |
148
+ |----------------|--------------------|
149
+ | Codex `update_plan` step status | `subcommand=update-step` with `stepStatus` |
150
+ | Claude `TaskCreate` | `subcommand=add-step` |
151
+ | Claude `TaskUpdate(in_progress)` | `subcommand=update-step` with `stepStatus=in_progress` |
152
+ | Cursor edit a plan step | `subcommand=update-step` |
153
+ | Resume after compaction | `subcommand=resume` with `resumeContext` then `subcommand=show --depth deep` |
154
+ | Approve before edits | `subcommand=approve` |
155
+ | Convert checklist into real items | `subcommand=materialize` |
156
+
114
157
  ## Safety
115
158
 
116
159
  - Never pass `path` during real repository tracking.
117
- - Always `pm_search` before `pm_create` — avoid duplicates.
160
+ - Always `pm_search` before `pm_create`/`pm plan create` — avoid duplicates.
118
161
  - Run `pm_validate` after batch changes.
162
+ - Set exactly one step `in_progress` per plan; pass `allowMultipleActive: true` only for explicit parallel branches.
163
+ - Use `pm_plan` `subcommand=resume` after long-running sessions so the next agent can pick up with a deterministic context.
@@ -1,12 +1,12 @@
1
1
  {
2
- "name": "pm-cli-codex",
3
- "version": "1.0.0",
2
+ "name": "pm-codex",
3
+ "version": "1.1.0",
4
4
  "description": "Native Codex integration for pm-cli with bundled MCP tools, skills, commands, and agent workflows.",
5
5
  "author": {
6
6
  "name": "unbrained",
7
7
  "url": "https://github.com/unbraind/pm-cli"
8
8
  },
9
- "homepage": "https://github.com/unbraind/pm-cli/tree/main/plugins/pm-cli-codex",
9
+ "homepage": "https://github.com/unbraind/pm-cli/tree/main/plugins/pm-codex",
10
10
  "repository": "https://github.com/unbraind/pm-cli",
11
11
  "license": "MIT",
12
12
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "mcpServers": {
3
- "pm-cli-native": {
3
+ "pm-mcp": {
4
4
  "command": "node",
5
5
  "args": [
6
6
  "./scripts/pm-mcp-server.mjs"