@unbrained/pm-cli 2026.5.12 → 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 (407) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/AGENTS.md +78 -457
  3. package/CHANGELOG.md +22 -0
  4. package/CONTRIBUTING.md +1 -0
  5. package/PRD.md +7 -28
  6. package/README.md +8 -14
  7. package/dist/cli/argv-utils.js +4 -1
  8. package/dist/cli/argv-utils.js.map +1 -1
  9. package/dist/cli/bootstrap-args.js +4 -1
  10. package/dist/cli/bootstrap-args.js.map +1 -1
  11. package/dist/cli/commander-usage.js +32 -1
  12. package/dist/cli/commander-usage.js.map +1 -1
  13. package/dist/cli/commands/activity.js +23 -5
  14. package/dist/cli/commands/activity.js.map +1 -1
  15. package/dist/cli/commands/aggregate.js +5 -2
  16. package/dist/cli/commands/aggregate.js.map +1 -1
  17. package/dist/cli/commands/append.js +4 -1
  18. package/dist/cli/commands/append.js.map +1 -1
  19. package/dist/cli/commands/calendar.js +9 -3
  20. package/dist/cli/commands/calendar.js.map +1 -1
  21. package/dist/cli/commands/claim.d.ts +3 -0
  22. package/dist/cli/commands/claim.js +19 -3
  23. package/dist/cli/commands/claim.js.map +1 -1
  24. package/dist/cli/commands/close.js +4 -1
  25. package/dist/cli/commands/close.js.map +1 -1
  26. package/dist/cli/commands/comments-audit.js +4 -1
  27. package/dist/cli/commands/comments-audit.js.map +1 -1
  28. package/dist/cli/commands/comments.js +4 -1
  29. package/dist/cli/commands/comments.js.map +1 -1
  30. package/dist/cli/commands/completion.js +98 -2
  31. package/dist/cli/commands/completion.js.map +1 -1
  32. package/dist/cli/commands/config.js +4 -1
  33. package/dist/cli/commands/config.js.map +1 -1
  34. package/dist/cli/commands/context.js +19 -5
  35. package/dist/cli/commands/context.js.map +1 -1
  36. package/dist/cli/commands/contracts.d.ts +9 -0
  37. package/dist/cli/commands/contracts.js +205 -49
  38. package/dist/cli/commands/contracts.js.map +1 -1
  39. package/dist/cli/commands/create.js +88 -9
  40. package/dist/cli/commands/create.js.map +1 -1
  41. package/dist/cli/commands/dedupe-audit.js +4 -1
  42. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  43. package/dist/cli/commands/delete.js +4 -1
  44. package/dist/cli/commands/delete.js.map +1 -1
  45. package/dist/cli/commands/deps.js +4 -1
  46. package/dist/cli/commands/deps.js.map +1 -1
  47. package/dist/cli/commands/docs.js +4 -1
  48. package/dist/cli/commands/docs.js.map +1 -1
  49. package/dist/cli/commands/extension.d.ts +7 -2
  50. package/dist/cli/commands/extension.js +360 -64
  51. package/dist/cli/commands/extension.js.map +1 -1
  52. package/dist/cli/commands/files.js +4 -1
  53. package/dist/cli/commands/files.js.map +1 -1
  54. package/dist/cli/commands/gc.js +4 -1
  55. package/dist/cli/commands/gc.js.map +1 -1
  56. package/dist/cli/commands/get.d.ts +7 -3
  57. package/dist/cli/commands/get.js +91 -18
  58. package/dist/cli/commands/get.js.map +1 -1
  59. package/dist/cli/commands/guide.js +6 -8
  60. package/dist/cli/commands/guide.js.map +1 -1
  61. package/dist/cli/commands/health.d.ts +4 -0
  62. package/dist/cli/commands/health.js +31 -8
  63. package/dist/cli/commands/health.js.map +1 -1
  64. package/dist/cli/commands/history-redact.d.ts +42 -0
  65. package/dist/cli/commands/history-redact.js +559 -0
  66. package/dist/cli/commands/history-redact.js.map +1 -0
  67. package/dist/cli/commands/history.d.ts +4 -0
  68. package/dist/cli/commands/history.js +14 -3
  69. package/dist/cli/commands/history.js.map +1 -1
  70. package/dist/cli/commands/index.d.ts +2 -8
  71. package/dist/cli/commands/index.js +6 -9
  72. package/dist/cli/commands/index.js.map +1 -1
  73. package/dist/cli/commands/init-agent-guidance.d.ts +31 -0
  74. package/dist/cli/commands/init-agent-guidance.js +336 -0
  75. package/dist/cli/commands/init-agent-guidance.js.map +1 -0
  76. package/dist/cli/commands/init.d.ts +14 -0
  77. package/dist/cli/commands/init.js +75 -1
  78. package/dist/cli/commands/init.js.map +1 -1
  79. package/dist/cli/commands/learnings.js +4 -1
  80. package/dist/cli/commands/learnings.js.map +1 -1
  81. package/dist/cli/commands/list.d.ts +1 -0
  82. package/dist/cli/commands/list.js +42 -18
  83. package/dist/cli/commands/list.js.map +1 -1
  84. package/dist/cli/commands/metadata-normalizers.js +4 -1
  85. package/dist/cli/commands/metadata-normalizers.js.map +1 -1
  86. package/dist/cli/commands/normalize.js +4 -1
  87. package/dist/cli/commands/normalize.js.map +1 -1
  88. package/dist/cli/commands/notes.js +4 -1
  89. package/dist/cli/commands/notes.js.map +1 -1
  90. package/dist/cli/commands/plan.d.ts +118 -0
  91. package/dist/cli/commands/plan.js +975 -0
  92. package/dist/cli/commands/plan.js.map +1 -0
  93. package/dist/cli/commands/reindex.d.ts +8 -0
  94. package/dist/cli/commands/reindex.js +100 -24
  95. package/dist/cli/commands/reindex.js.map +1 -1
  96. package/dist/cli/commands/restore.js +4 -1
  97. package/dist/cli/commands/restore.js.map +1 -1
  98. package/dist/cli/commands/search.js +58 -27
  99. package/dist/cli/commands/search.js.map +1 -1
  100. package/dist/cli/commands/stats.js +4 -1
  101. package/dist/cli/commands/stats.js.map +1 -1
  102. package/dist/cli/commands/templates.js +4 -1
  103. package/dist/cli/commands/templates.js.map +1 -1
  104. package/dist/cli/commands/test-all.js +4 -1
  105. package/dist/cli/commands/test-all.js.map +1 -1
  106. package/dist/cli/commands/test-runs.js +4 -1
  107. package/dist/cli/commands/test-runs.js.map +1 -1
  108. package/dist/cli/commands/test.js +4 -1
  109. package/dist/cli/commands/test.js.map +1 -1
  110. package/dist/cli/commands/update-many.js +4 -1
  111. package/dist/cli/commands/update-many.js.map +1 -1
  112. package/dist/cli/commands/update.js +114 -71
  113. package/dist/cli/commands/update.js.map +1 -1
  114. package/dist/cli/commands/upgrade.js +6 -3
  115. package/dist/cli/commands/upgrade.js.map +1 -1
  116. package/dist/cli/commands/validate.js +32 -4
  117. package/dist/cli/commands/validate.js.map +1 -1
  118. package/dist/cli/error-guidance.js +5 -2
  119. package/dist/cli/error-guidance.js.map +1 -1
  120. package/dist/cli/extension-command-help.js +4 -1
  121. package/dist/cli/extension-command-help.js.map +1 -1
  122. package/dist/cli/extension-command-options.js +4 -1
  123. package/dist/cli/extension-command-options.js.map +1 -1
  124. package/dist/cli/guide-topics.js +4 -1
  125. package/dist/cli/guide-topics.js.map +1 -1
  126. package/dist/cli/help-content.js +52 -33
  127. package/dist/cli/help-content.js.map +1 -1
  128. package/dist/cli/help-json-payload.js +4 -1
  129. package/dist/cli/help-json-payload.js.map +1 -1
  130. package/dist/cli/main.js +276 -32
  131. package/dist/cli/main.js.map +1 -1
  132. package/dist/cli/migration-gates.js +4 -1
  133. package/dist/cli/migration-gates.js.map +1 -1
  134. package/dist/cli/register-list-query.js +55 -150
  135. package/dist/cli/register-list-query.js.map +1 -1
  136. package/dist/cli/register-mutation.js +277 -261
  137. package/dist/cli/register-mutation.js.map +1 -1
  138. package/dist/cli/register-operations.js +62 -199
  139. package/dist/cli/register-operations.js.map +1 -1
  140. package/dist/cli/register-setup.js +55 -146
  141. package/dist/cli/register-setup.js.map +1 -1
  142. package/dist/cli/registration-helpers.d.ts +2 -2
  143. package/dist/cli/registration-helpers.js +11 -21
  144. package/dist/cli/registration-helpers.js.map +1 -1
  145. package/dist/cli/shared-parsers.js +4 -1
  146. package/dist/cli/shared-parsers.js.map +1 -1
  147. package/dist/cli/telemetry-flush.js +4 -1
  148. package/dist/cli/telemetry-flush.js.map +1 -1
  149. package/dist/cli.js +45 -3
  150. package/dist/cli.js.map +1 -1
  151. package/dist/core/extensions/extension-types.js +4 -1
  152. package/dist/core/extensions/extension-types.js.map +1 -1
  153. package/dist/core/extensions/index.js +4 -1
  154. package/dist/core/extensions/index.js.map +1 -1
  155. package/dist/core/extensions/item-fields.js +4 -1
  156. package/dist/core/extensions/item-fields.js.map +1 -1
  157. package/dist/core/extensions/loader.js +84 -54
  158. package/dist/core/extensions/loader.js.map +1 -1
  159. package/dist/core/extensions/runtime-registrations.js +4 -1
  160. package/dist/core/extensions/runtime-registrations.js.map +1 -1
  161. package/dist/core/fs/fs-utils.js +4 -1
  162. package/dist/core/fs/fs-utils.js.map +1 -1
  163. package/dist/core/fs/index.js +4 -1
  164. package/dist/core/fs/index.js.map +1 -1
  165. package/dist/core/history/history-stream-policy.js +4 -1
  166. package/dist/core/history/history-stream-policy.js.map +1 -1
  167. package/dist/core/history/history.js +4 -1
  168. package/dist/core/history/history.js.map +1 -1
  169. package/dist/core/history/index.js +4 -1
  170. package/dist/core/history/index.js.map +1 -1
  171. package/dist/core/item/id.js +4 -1
  172. package/dist/core/item/id.js.map +1 -1
  173. package/dist/core/item/index.js +4 -1
  174. package/dist/core/item/index.js.map +1 -1
  175. package/dist/core/item/item-format.js +241 -2
  176. package/dist/core/item/item-format.js.map +1 -1
  177. package/dist/core/item/parent-reference-policy.js +4 -1
  178. package/dist/core/item/parent-reference-policy.js.map +1 -1
  179. package/dist/core/item/parse.js +33 -3
  180. package/dist/core/item/parse.js.map +1 -1
  181. package/dist/core/item/sprint-release-format.js +4 -1
  182. package/dist/core/item/sprint-release-format.js.map +1 -1
  183. package/dist/core/item/status.js +4 -1
  184. package/dist/core/item/status.js.map +1 -1
  185. package/dist/core/item/type-registry.js +4 -1
  186. package/dist/core/item/type-registry.js.map +1 -1
  187. package/dist/core/lock/index.js +4 -1
  188. package/dist/core/lock/index.js.map +1 -1
  189. package/dist/core/lock/lock.js +4 -1
  190. package/dist/core/lock/lock.js.map +1 -1
  191. package/dist/core/output/command-aware.js +4 -1
  192. package/dist/core/output/command-aware.js.map +1 -1
  193. package/dist/core/output/output.d.ts +4 -0
  194. package/dist/core/output/output.js +47 -6
  195. package/dist/core/output/output.js.map +1 -1
  196. package/dist/core/packages/manifest.d.ts +27 -1
  197. package/dist/core/packages/manifest.js +87 -1
  198. package/dist/core/packages/manifest.js.map +1 -1
  199. package/dist/core/packages/root.d.ts +3 -0
  200. package/dist/core/packages/root.js +51 -0
  201. package/dist/core/packages/root.js.map +1 -0
  202. package/dist/core/schema/runtime-field-filters.js +4 -1
  203. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  204. package/dist/core/schema/runtime-field-values.js +4 -1
  205. package/dist/core/schema/runtime-field-values.js.map +1 -1
  206. package/dist/core/schema/runtime-schema.js +4 -1
  207. package/dist/core/schema/runtime-schema.js.map +1 -1
  208. package/dist/core/search/cache.js +7 -2
  209. package/dist/core/search/cache.js.map +1 -1
  210. package/dist/core/search/corpus.d.ts +2 -0
  211. package/dist/core/search/corpus.js +77 -2
  212. package/dist/core/search/corpus.js.map +1 -1
  213. package/dist/core/search/embedding-batches.d.ts +13 -1
  214. package/dist/core/search/embedding-batches.js +40 -8
  215. package/dist/core/search/embedding-batches.js.map +1 -1
  216. package/dist/core/search/http-client.js +4 -1
  217. package/dist/core/search/http-client.js.map +1 -1
  218. package/dist/core/search/providers.js +4 -1
  219. package/dist/core/search/providers.js.map +1 -1
  220. package/dist/core/search/semantic-defaults.js +11 -2
  221. package/dist/core/search/semantic-defaults.js.map +1 -1
  222. package/dist/core/search/vector-stores.js +4 -1
  223. package/dist/core/search/vector-stores.js.map +1 -1
  224. package/dist/core/sentry/helpers.js +4 -1
  225. package/dist/core/sentry/helpers.js.map +1 -1
  226. package/dist/core/sentry/instrument.js +10 -13
  227. package/dist/core/sentry/instrument.js.map +1 -1
  228. package/dist/core/shared/command-types.js +4 -1
  229. package/dist/core/shared/command-types.js.map +1 -1
  230. package/dist/core/shared/conflict-markers.js +4 -1
  231. package/dist/core/shared/conflict-markers.js.map +1 -1
  232. package/dist/core/shared/constants.d.ts +2 -2
  233. package/dist/core/shared/constants.js +24 -1
  234. package/dist/core/shared/constants.js.map +1 -1
  235. package/dist/core/shared/errors.js +4 -1
  236. package/dist/core/shared/errors.js.map +1 -1
  237. package/dist/core/shared/index.js +4 -1
  238. package/dist/core/shared/index.js.map +1 -1
  239. package/dist/core/shared/levenshtein.js +4 -1
  240. package/dist/core/shared/levenshtein.js.map +1 -1
  241. package/dist/core/shared/primitives.js +4 -1
  242. package/dist/core/shared/primitives.js.map +1 -1
  243. package/dist/core/shared/serialization.js +4 -1
  244. package/dist/core/shared/serialization.js.map +1 -1
  245. package/dist/core/shared/text-normalization.js +4 -1
  246. package/dist/core/shared/text-normalization.js.map +1 -1
  247. package/dist/core/shared/time.js +4 -1
  248. package/dist/core/shared/time.js.map +1 -1
  249. package/dist/core/store/front-matter-cache.d.ts +8 -1
  250. package/dist/core/store/front-matter-cache.js +28 -14
  251. package/dist/core/store/front-matter-cache.js.map +1 -1
  252. package/dist/core/store/index.js +4 -1
  253. package/dist/core/store/index.js.map +1 -1
  254. package/dist/core/store/item-format-migration.js +4 -1
  255. package/dist/core/store/item-format-migration.js.map +1 -1
  256. package/dist/core/store/item-store.d.ts +2 -0
  257. package/dist/core/store/item-store.js +66 -3
  258. package/dist/core/store/item-store.js.map +1 -1
  259. package/dist/core/store/paths.js +4 -1
  260. package/dist/core/store/paths.js.map +1 -1
  261. package/dist/core/store/settings.js +39 -1
  262. package/dist/core/store/settings.js.map +1 -1
  263. package/dist/core/telemetry/consent.js +4 -1
  264. package/dist/core/telemetry/consent.js.map +1 -1
  265. package/dist/core/telemetry/observability.d.ts +1 -1
  266. package/dist/core/telemetry/observability.js +11 -2
  267. package/dist/core/telemetry/observability.js.map +1 -1
  268. package/dist/core/telemetry/runtime.js +31 -5
  269. package/dist/core/telemetry/runtime.js.map +1 -1
  270. package/dist/core/test/background-runs.js +4 -1
  271. package/dist/core/test/background-runs.js.map +1 -1
  272. package/dist/core/test/item-test-run-tracking.js +4 -1
  273. package/dist/core/test/item-test-run-tracking.js.map +1 -1
  274. package/dist/mcp/server.d.ts +8 -0
  275. package/dist/mcp/server.js +212 -53
  276. package/dist/mcp/server.js.map +1 -1
  277. package/dist/sdk/cli-contracts/commander-mutation-options.d.ts +7 -0
  278. package/dist/sdk/cli-contracts/commander-mutation-options.js +484 -0
  279. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -0
  280. package/dist/sdk/cli-contracts/commander-types.d.ts +21 -0
  281. package/dist/sdk/cli-contracts/commander-types.js +95 -0
  282. package/dist/sdk/cli-contracts/commander-types.js.map +1 -0
  283. package/dist/sdk/cli-contracts.d.ts +10 -17
  284. package/dist/sdk/cli-contracts.js +232 -282
  285. package/dist/sdk/cli-contracts.js.map +1 -1
  286. package/dist/sdk/index.d.ts +2 -1
  287. package/dist/sdk/index.js +5 -1
  288. package/dist/sdk/index.js.map +1 -1
  289. package/dist/sdk/runtime.d.ts +29 -0
  290. package/dist/sdk/runtime.js +31 -0
  291. package/dist/sdk/runtime.js.map +1 -0
  292. package/dist/types/index.js +4 -1
  293. package/dist/types/index.js.map +1 -1
  294. package/dist/types.d.ts +86 -2
  295. package/dist/types.js +34 -1
  296. package/dist/types.js.map +1 -1
  297. package/docs/AGENT_GUIDE.md +16 -6
  298. package/docs/CLAUDE_CODE_PLUGIN.md +10 -10
  299. package/docs/CODEX_PLUGIN.md +2 -2
  300. package/docs/COMMANDS.md +83 -8
  301. package/docs/CONFIGURATION.md +4 -1
  302. package/docs/EXTENSIONS.md +176 -807
  303. package/docs/QUICKSTART.md +12 -5
  304. package/docs/README.md +7 -6
  305. package/docs/RELEASING.md +6 -4
  306. package/docs/SDK.md +78 -441
  307. package/docs/TESTING.md +2 -2
  308. package/marketplace.json +3 -3
  309. package/package.json +7 -4
  310. package/packages/pm-beads/extensions/beads/index.js +90 -101
  311. package/packages/pm-beads/extensions/beads/index.ts +2 -2
  312. package/packages/pm-beads/extensions/beads/runtime.js +2 -17
  313. package/packages/pm-beads/extensions/beads/runtime.ts +41 -18
  314. package/packages/pm-beads/package.json +34 -1
  315. package/packages/pm-calendar/README.md +13 -0
  316. package/packages/pm-calendar/extensions/calendar/index.js +56 -0
  317. package/packages/pm-calendar/extensions/calendar/index.ts +62 -0
  318. package/packages/pm-calendar/extensions/calendar/manifest.json +7 -0
  319. package/packages/pm-calendar/extensions/calendar/runtime.js +114 -0
  320. package/packages/pm-calendar/extensions/calendar/runtime.ts +123 -0
  321. package/packages/pm-calendar/package.json +51 -0
  322. package/packages/pm-governance-audit/README.md +23 -0
  323. package/packages/pm-governance-audit/extensions/governance-audit/index.js +117 -0
  324. package/packages/pm-governance-audit/extensions/governance-audit/index.ts +118 -0
  325. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +7 -0
  326. package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +159 -0
  327. package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +176 -0
  328. package/packages/pm-governance-audit/package.json +52 -0
  329. package/packages/pm-guide-shell/README.md +23 -0
  330. package/packages/pm-guide-shell/extensions/guide-shell/index.js +76 -0
  331. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +81 -0
  332. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +7 -0
  333. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +263 -0
  334. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +327 -0
  335. package/packages/pm-guide-shell/package.json +52 -0
  336. package/packages/pm-linked-test-adapters/README.md +24 -0
  337. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.js +101 -0
  338. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +102 -0
  339. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +7 -0
  340. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +142 -0
  341. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +173 -0
  342. package/packages/pm-linked-test-adapters/package.json +53 -0
  343. package/packages/pm-search-advanced/README.md +27 -0
  344. package/packages/pm-search-advanced/extensions/search-advanced/index.js +93 -0
  345. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +94 -0
  346. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +7 -0
  347. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +120 -0
  348. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +144 -0
  349. package/packages/pm-search-advanced/package.json +54 -0
  350. package/packages/pm-templates/README.md +20 -0
  351. package/packages/pm-templates/extensions/templates/index.js +101 -0
  352. package/packages/pm-templates/extensions/templates/index.ts +109 -0
  353. package/packages/pm-templates/extensions/templates/manifest.json +7 -0
  354. package/packages/pm-templates/extensions/templates/runtime.js +226 -0
  355. package/packages/pm-templates/extensions/templates/runtime.ts +283 -0
  356. package/packages/pm-templates/package.json +50 -0
  357. package/packages/pm-todos/extensions/todos/index.js +105 -116
  358. package/packages/pm-todos/extensions/todos/index.ts +3 -2
  359. package/packages/pm-todos/extensions/todos/runtime.js +2 -17
  360. package/packages/pm-todos/extensions/todos/runtime.ts +40 -18
  361. package/packages/pm-todos/package.json +35 -1
  362. package/plugins/{pm-cli-claude → pm-claude}/.claude-plugin/plugin.json +2 -2
  363. package/plugins/{pm-cli-claude → pm-claude}/.mcp.json +1 -1
  364. package/plugins/{pm-cli-claude → pm-claude}/README.md +4 -4
  365. package/plugins/{pm-cli-claude → pm-claude}/agents/pm-coordinator.md +1 -1
  366. package/plugins/{pm-cli-claude → pm-claude}/commands/pm-init.md +10 -1
  367. package/plugins/{pm-cli-claude → pm-claude}/commands/pm-planner.md +18 -0
  368. package/plugins/{pm-cli-claude → pm-claude}/scripts/pm-mcp-server.mjs +4 -2
  369. package/plugins/{pm-cli-claude → pm-claude}/skills/pm-planner/SKILL.md +46 -1
  370. package/plugins/{pm-cli-codex → pm-codex}/.codex-plugin/plugin.json +3 -3
  371. package/plugins/{pm-cli-codex → pm-codex}/.mcp.json +1 -1
  372. package/plugins/{pm-cli-codex → pm-codex}/README.md +7 -4
  373. package/plugins/{pm-cli-codex → pm-codex}/scripts/pm-mcp-server.mjs +4 -2
  374. package/plugins/pm-codex/skills/pm-native/SKILL.md +81 -0
  375. package/scripts/finalize-build.mjs +28 -0
  376. package/scripts/prepare-build-cache.mjs +37 -0
  377. package/plugins/pm-cli-codex/skills/pm-native/SKILL.md +0 -57
  378. /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-delivery-chain.md +0 -0
  379. /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-triage-agent.md +0 -0
  380. /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-verification-agent.md +0 -0
  381. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-audit.md +0 -0
  382. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-calendar.md +0 -0
  383. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-close-task.md +0 -0
  384. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-developer.md +0 -0
  385. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-list.md +0 -0
  386. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-new.md +0 -0
  387. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-release.md +0 -0
  388. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-search.md +0 -0
  389. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-start-task.md +0 -0
  390. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-status.md +0 -0
  391. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-triage.md +0 -0
  392. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-workflow.md +0 -0
  393. /package/plugins/{pm-cli-claude → pm-claude}/hooks/hooks.json +0 -0
  394. /package/plugins/{pm-cli-claude → pm-claude}/hooks/session-start.mjs +0 -0
  395. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-audit/SKILL.md +0 -0
  396. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-developer/SKILL.md +0 -0
  397. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-release/SKILL.md +0 -0
  398. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-workflow/SKILL.md +0 -0
  399. /package/plugins/{pm-cli-codex → pm-codex}/assets/pm-cli-small.svg +0 -0
  400. /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-audit.md +0 -0
  401. /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-close-task.md +0 -0
  402. /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-start-task.md +0 -0
  403. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/SKILL.md +0 -0
  404. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/agents/openai.yaml +0 -0
  405. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-native/agents/openai.yaml +0 -0
  406. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/SKILL.md +0 -0
  407. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/agents/openai.yaml +0 -0
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
9
- "version": "1.3.0"
9
+ "version": "1.4.0"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
- "name": "pm-cli",
14
- "source": "./plugins/pm-cli-claude",
13
+ "name": "pm-claude",
14
+ "source": "./plugins/pm-claude",
15
15
  "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.",
16
- "version": "1.3.0",
16
+ "version": "1.4.0",
17
17
  "author": {
18
18
  "name": "unbrained",
19
19
  "url": "https://github.com/unbraind/pm-cli"
package/AGENTS.md CHANGED
@@ -1,487 +1,108 @@
1
- # AGENTS.md - Operating Rules for `pm`
1
+ # AGENTS.md - Compact Operating Rules for `pm`
2
2
 
3
- This document defines how coding agents must use `pm` for planning, execution, and reporting in this repository.
3
+ This file is the low-context entrypoint for agents working in this repository. Read it first, then expand only into the linked docs that match the task.
4
4
 
5
- ## 1) Core Rules
5
+ ## Progressive Disclosure
6
6
 
7
- - Use `pm` as the system of record for project work.
8
- - Prefer deterministic, script-friendly command usage (`--json` when strict parsing is needed).
9
- - Default to TOON output when human + model readability and low token use are desired (calendar command is the intentional exception and defaults to markdown unless overridden).
10
- - Treat TOON as the canonical item-document format in this repo; item metadata is modeled as `metadata` internally and stored as top-level object fields in TOON.
11
- - Never make destructive item changes outside `pm` mutations.
12
- - Every mutation must produce a history entry.
7
+ | Need | Read |
8
+ |------|------|
9
+ | Agent workflow and ownership | [Agent Guide](docs/AGENT_GUIDE.md) |
10
+ | Exact command families and examples | [Command Reference](docs/COMMANDS.md) |
11
+ | Sandbox-safe verification | [Testing](docs/TESTING.md) |
12
+ | Settings, output, and environment | [Configuration](docs/CONFIGURATION.md) |
13
+ | Package or extension work | [Packages and Extensions](docs/EXTENSIONS.md), [SDK](docs/SDK.md) |
14
+ | Release work | [Releasing](docs/RELEASING.md) |
15
+ | Full docs map | [Documentation Index](docs/README.md) |
13
16
 
14
- ### 1.1) Session Bootstrap (Required)
15
-
16
- - Determine command invocation before running mutations:
17
- - Use `PM_CMD="pm"` only when `pm` clearly resolves to this repository's current build.
18
- - Otherwise use `PM_CMD="node dist/cli.js"` from repository root.
19
- - Set `PM_AUTHOR` explicitly for all maintainer runs.
20
- - Refresh the global CLI from this repository for maintainer runs:
21
- - Run `npm install -g .` from repository root.
22
- - Verify availability with `pm --version` before mutation commands.
23
- - Run baseline runtime/build sanity checks before mutation commands:
24
- - `PM_CMD --version`
25
- - `node -v`
26
- - `pnpm -v`
27
- - `pnpm build` (if configured)
28
- - For real repository tracking, do not override `PM_PATH`.
29
- - For tests only, always use sandboxed `PM_PATH` and `PM_GLOBAL_PATH` (or `node scripts/run-tests.mjs ...`).
30
-
31
- ## 2) Canonical Agent Workflow
32
-
33
- ### Step A - Pick next work
34
-
35
- Before creating any new `pm` item, always check for an existing relevant item first.
36
-
37
- - Search and list existing items before `pm create`:
38
- - `pm context --limit 10` (brief snapshot; use `--depth standard` for hierarchy/progress/workload, `--depth deep` for full sections)
39
- - `pm search "<keywords>" --limit 10`
40
- - `pm list-open --limit 20`
41
- - `pm list-in-progress --limit 20`
42
- - If a relevant item already exists, reuse it, update it, or claim it instead of creating a new one.
43
- - Never create duplicate `pm` items for the same work.
44
- - Before `pm create`, identify the canonical parent lineage (`Epic` -> `Feature`) for the incoming scope.
45
- - If scope is truly net-new, create/normalize parent lineage first, then create child work with explicit `--parent`.
46
- - Add a create-time comment that records duplicate-check evidence (commands run + why net-new scope was required).
47
-
48
- Use one of:
49
-
50
- - `pm list-in-progress --limit 20`
51
- - `pm list-open --limit 20`
52
- - `pm list-blocked --limit 20`
53
-
54
- Then filter:
55
-
56
- - by type: `--type <value>` (resolved by runtime type registry: built-ins plus configured custom types)
57
- - by priority: `--priority 0..4`
58
- - by tag: `--tag <name>`
59
-
60
- ### Step B - Claim ownership
61
-
62
- - `pm claim <ID>`
63
- - If conflict and explicitly approved: `pm claim <ID> --force`
64
- - `pm claim` takeover of non-terminal items assigned to another owner does not require `--force`; reserve `--force` for terminal-state or lock override paths.
65
-
66
- Rules:
67
-
68
- - Do not work unclaimed unless the task is intentionally collaborative.
69
- - If switching context, release previous claim.
70
-
71
- ### Step C - Clarify task intent
72
-
73
- Populate metadata early:
74
-
75
- - `pm update <ID> --description "..."`
76
- - `pm update <ID> --acceptance-criteria/--ac "..."`
77
- - `pm update <ID> --body "..."` (replace body content for normalization/backfill; use `pm append --body` for additive notes)
78
- - `pm update <ID> --parent <ID>` to keep hierarchy deterministic for future linking (clear with `pm update <ID> --unset parent`)
79
- - `pm update <ID> --estimate <minutes>`
80
- - `pm update <ID> --deadline +1d` (accepts ISO/date strings or relative `+6h/+1d/+2w/+6m`; resolved to ISO at write)
81
- - `pm update <ID> --close-reason <text>` for explicit close_reason set; clear with `pm update <ID> --unset close-reason` (reopen transitions from `closed` to non-terminal status auto-clear stale close_reason unless explicitly overridden in that same update call)
82
- - when team-level close-readiness policy changes, update Definition of Done criteria via:
83
- - `pm config project set definition-of-done --criterion "tests pass" --criterion "linked files/tests/docs present" --criterion "parent/dependency links complete" --criterion "duplicate check performed before create"`
84
-
85
- ### Step D - Link execution context
86
-
87
- Attach references to keep work reproducible:
88
-
89
- - Files:
90
- - `pm files <ID> --add path=src/app.ts,scope=project,note="entrypoint"`
91
- - `pm files <ID> --add-glob "src/**/*.ts"` for deterministic batch linking
92
- - `pm files <ID> --add path=src/new.ts,scope=project --append-stable` when preserving existing link order and minimizing history patch churn
93
- - Tests:
94
- - `pm test <ID> --add command="node scripts/run-tests.mjs test",scope=project,timeout_seconds=240`
95
- - `pm test <ID> --add command="node scripts/run-tests.mjs test -- tests/history.spec.ts",path=tests/history.spec.ts,scope=project`
96
- - Docs:
97
- - `pm docs <ID> --add path=docs/ARCHITECTURE.md,scope=project`
98
- - Command boundaries:
99
- - `pm update` intentionally does not mutate linked files/docs; use `pm files` / `pm docs`.
100
- - `pm deps` is read-only and intended for dependency tree/graph inspection (`--format tree|graph`).
101
- - Entry-format resilience:
102
- - `--add`/repeatable seed flags accept CSV `key=value`, markdown `key: value`, or stdin token `-` with piped payload.
103
- - for `pm create` log-seed flags, `--comment` supports plain-text shorthand in addition to structured key/value input; structured `--comment`/`--note`/`--learning` payloads accept only `author`, `created_at`, and `text` keys. Quote punctuation-heavy text (for example `text="hello,scope:project"`) or use markdown/stdin to avoid ambiguous key-like continuations.
104
- - for `pm comments|notes|learnings --add`, CSV-like strings with extra key fragments (for example `text=hello,scope:project`) are intentionally preserved as plain text; use explicit `text=...`, markdown `text: ...`, or stdin token `-` when structured parsing is required.
105
- - Example: `printf '%s\n' 'path: src/app.ts' 'scope: project' | pm files <ID> --add -`
106
-
107
- ### Step E - Record progress
108
-
109
- Use append-style updates:
110
-
111
- - `pm comments <ID> "Implemented lock retry path"` (or `--add "..."` for structured/stdin forms)
112
- - use `pm comments <ID> ... --allow-audit-comment` for append-only audit comments on items assigned to another owner
113
- - use `pm notes <ID> ... --allow-audit-comment` / `pm learnings <ID> ... --allow-audit-comment` for append-only audit note/learning entries on another owner's item
114
- - use `pm update <ID> --dep ... --allow-audit-dep-update` for cross-owner append-only dependency wiring without broad `--force`
115
- - use `pm release <ID> ... --allow-audit-release` for non-owner handoffs that only clear assignee metadata
116
- - reserve `pm comments <ID> ... --force` for coordinated ownership-override paths beyond append-only audit comments
117
- - `pm update <ID> --status in_progress`
118
- - `pm append <ID> --body "Detailed implementation notes..."`
119
-
120
- Capture durable notes:
121
-
122
- - `pm notes <ID> --add "Design rationale and implementation context"`
123
- - `pm learnings <ID> --add "Durable lesson for future work"`
124
-
125
- ### Step F - Validate and close
126
-
127
- Before close:
128
-
129
- 1. Run linked tests:
130
- - `pm test <ID> --run` (add `--progress` for explicit non-interactive stderr progress visibility)
131
- - optional managed background mode: `pm test <ID> --run --background` / `pm test-all --background`, then monitor/control with `pm test-runs` (defaults to list) or explicit `pm test-runs list|status|logs|stop|resume`
132
- 2. Run sandbox-safe coverage verification:
133
- - `node scripts/run-tests.mjs coverage`
134
- 3. Optionally run project sweep:
135
- - `pm test-all --status in_progress` (add `--progress` for explicit non-interactive visibility)
136
- - `pm test-all --status closed` (when running a broader release-readiness regression sweep)
137
- - Avoid linking `pm test-all` itself as an item-level linked test command, since that creates recursive orchestration.
138
- 4. Run targeted close-readiness validation when relevant:
139
- - `pm validate --check-resolution --check-history-drift`
140
- - `pm normalize --dry-run --json` (when performing lifecycle metadata hygiene sweeps before apply mode)
141
- - for linked-file coverage audits, use `pm validate --check-files --scan-mode tracked-all`
142
- 5. Add closure evidence:
143
- - `pm comments <ID> "Evidence: tests X, Y passed; coverage remains 100%."` (or `--add "..."`)
144
-
145
- Close (current v0.1 workflow):
146
-
147
- - `pm close <ID> "<reason>" --validate-close warn --author "..." --message "Close: <reason with evidence>"`
148
-
149
- ### Step G - Release claim
150
-
151
- - `pm release <ID>`
152
-
153
- Use release when:
154
-
155
- - work is paused
156
- - handoff is complete
157
- - task is closed/canceled
158
-
159
- ## 3) Safe Automation Rules
160
-
161
- - Do not rewrite item files directly; mutate via `pm` commands only.
162
- - Do not bypass lock/conflict semantics except with explicit `--force`.
163
- - Do not delete history logs.
164
- - Do not run destructive project commands based only on item text; require explicit user approval.
165
- - If restore is needed, use:
166
- - `pm restore <ID> <TIMESTAMP|VERSION>`
167
- - If uncertain about mutation intent, add comment first, then mutate.
168
-
169
- ## 3.1 Test Safety Rules (Hard Requirement)
170
-
171
- - Tests must never read/write the repository's real `.agents/pm` data.
172
- - Unit/integration test runs must set `PM_PATH` to a temporary sandbox directory.
173
- - pm-driven test execution should use `node scripts/run-tests.mjs <test|coverage>` so both `PM_PATH` and `PM_GLOBAL_PATH` are sandboxed automatically per run.
174
- - `pm test <ID> --add` should only link sandbox-safe runnable commands and now requires `command=...` metadata (optional `path=...` is supplemental context): use `node scripts/run-tests.mjs ...` or explicitly set both `PM_PATH` and `PM_GLOBAL_PATH`; sandbox-unsafe runner commands are rejected at add-time, including unsandboxed package-manager run-script variants (for example `npm run test`, `pnpm run test`, `yarn run test`, and `bun run test`) and chained direct test-runner segments that are not explicitly sandboxed.
175
- - `pm test <ID> --run` should defensively skip legacy linked commands that invoke `pm test-all` (including global-flag and package-spec launcher forms such as `pm --json test-all`, `npx @unbrained/pm-cli@latest --json test-all`, `pnpm dlx @unbrained/pm-cli@latest --json test-all`, and `npm exec -- @unbrained/pm-cli@latest --json test-all`) and report deterministic skipped results.
176
- - `pm test <ID> --run` / `pm test-all` should preserve sandbox isolation while seeding project/global `settings.json` and `extensions/` from source roots so extension-defined type/schema behavior matches direct workspace runs.
177
- - `pm test <ID> --run --background` / `pm test-all --background` should be treated as additive lifecycle controls only; use `pm test-runs` commands for status/log/stop/resume and rely on fingerprint dedupe to avoid duplicate parallel runs.
178
- - PM-command linked-test runs should default to `--pm-context schema`; PM tracker-read linked commands fail on context mismatch by default in schema mode, `--pm-context auto` can route tracker-read commands automatically, and `--pm-context tracker` should be used when full tracker parity is required. Use `--check-context` for deterministic preflight diagnostics and `--auto-pm-context` for tracker-read auto-remediation. Per-linked-test `pm_context_mode` metadata can override run-level mode; when that override forces schema against run-level tracker, mismatch guidance should call out the override explicitly. Rely on `run_results[].execution_context` metadata (including tracker-read classification plus `requested_pm_context_mode` / `auto_pm_context_applied`) for parity diagnostics.
179
- - Use strict governance flags when verification quality matters: `--fail-on-context-mismatch`, `--fail-on-skipped`, and `--require-assertions-for-pm`.
180
- - Treat failed linked-test run results from `pm test <ID> --run` as dependency-failed process exits (code `5`) in automation/CI checks, matching `pm test-all` gating semantics.
181
- - Linked-test assertion metadata is optional but preferred for PM-command checks (`assert_stdout_contains`, `assert_stdout_regex`, `assert_stderr_contains`, `assert_stderr_regex`, `assert_stdout_min_lines`, `assert_json_field_equals`, `assert_json_field_gte`).
182
- - `pm test-all` deduplicates linked tests by scope+normalized command or scope+path (including runtime directives/assertions/context metadata) and reports duplicates as skipped; when duplicate keys disagree on `timeout_seconds`, execution uses the deterministic maximum timeout for that key.
183
- - Item-level test result persistence is controlled via `pm config ... test-result-tracking --policy enabled|disabled`; when enabled, bounded `test_runs` summaries are appended on `pm test --run` / `pm test-all` completion.
184
- - Integration tests should invoke the built CLI (`node dist/cli.js ...`) with explicit `PM_PATH`, `PM_GLOBAL_PATH`, and `PM_AUTHOR`.
185
- - Cleanup temporary test directories after each test/suite.
186
-
187
- ## 3.2 Community Files Baseline (Release Requirement)
188
-
189
- - Keep these files present and current for release readiness:
190
- - `LICENSE` (MIT) at repository root
191
- - `CHANGELOG.md` using Keep a Changelog with `[Unreleased]`
192
- - `CONTRIBUTING.md` with local dev and test workflow
193
- - `SECURITY.md` with vulnerability reporting instructions
194
- - `CODE_OF_CONDUCT.md` contributor behavior policy
195
-
196
- ## 3.3 Terminal Compatibility Guardrails
197
-
198
- - Keep CLI output terminal-neutral by default: deterministic TOON/JSON/markdown text, no required custom OSC/ANSI protocol.
199
- - Preserve canonical exit-code mapping while preferring graceful exit handling (`process.exitCode`) over forced `process.exit(...)` when feasible.
200
- - For stdin token paths (`-`) and `pm beads import --file -`, treat interactive TTY stdin as usage error and provide explicit piped-input guidance.
201
- - Document and test manual EOF guidance for interactive sessions:
202
- - Unix/macOS: `Ctrl+D`
203
- - Windows: `Ctrl+Z` then `Enter`
204
- - For linked test orchestration (`pm test --run` / `pm test-all`), maintain sandbox safety and non-interactive child process behavior, including deterministic timeout/maxBuffer diagnostics.
205
- - For long-running linked-test and reindex paths, use additive `--progress` when non-interactive visibility is required.
206
-
207
- ## 4) Token Minimization Rules (TOON-first)
208
-
209
- - Prefer default TOON output for list/search/get in agent loops.
210
- - Prefer `pm context --limit <n>` as the first triage snapshot when selecting next work.
211
- - `--depth brief` (default) shows only focus items + agenda -- minimal tokens.
212
- - `--depth standard` adds hierarchy, activity, progress, and workload sections -- recommended for medium/large projects.
213
- - `--depth deep` adds blockers, hot files, staleness, and test health -- use for full project orientation or debugging.
214
- - `--section <name>` (repeatable) overrides `--depth` and includes only named sections (hierarchy, activity, progress, blockers, files, workload, staleness, tests).
215
- - `--activity-limit <n>` controls recent activity entries (default 10).
216
- - `--stale-threshold <value>` controls staleness cutoff in days (default 7d).
217
- - Configure persistent defaults via `pm config project set context --default-depth standard --activity-limit 15`.
218
- - Use `--json` only when strict machine parsing is required.
219
- - Request narrow outputs:
220
- - `--limit`
221
- - status/type/priority/tag filters
222
- - Prefer focused retrieval:
223
- - `pm get <ID>` over broad list scans.
224
- - Keep prompts concise by referencing IDs and linked artifacts, not pasting long bodies.
225
-
226
- ## 5) Status and Ownership Norms
227
-
228
- - `draft`: incomplete definition
229
- - `open`: ready to be claimed
230
- - `in_progress`: active implementation
231
- - `blocked`: waiting on dependency/input
232
- - `closed`: done and verified
233
- - `canceled`: intentionally discontinued
234
- - Input compatibility: `in-progress` is accepted for status flags and normalized to `in_progress`.
235
-
236
- Ownership:
237
-
238
- - `assignee` identifies current owner for claim/release and conflict checks.
239
- - use explicit `--assignee` or `--author` values that are stable and meaningful for your agent identity.
240
-
241
- ## 6) Dependency Management Conventions
242
-
243
- Use explicit dependency entries via `pm create --dep`:
244
-
245
- - format: `id=<id>,kind=<blocks|parent|child|related|discovered_from>,author=<a>,created_at=<iso|now>`
246
- - include one `kind=parent` entry for epic/feature/task hierarchy where applicable
247
- - include `kind=related` / `kind=blocks` entries to make ordering intent explicit
248
-
249
- When creating links, add context:
250
-
251
- - include `--message` explaining why relationship exists.
252
-
253
- ## 7) Required Evidence for Closure
254
-
255
- A close action should include:
256
-
257
- - clear close reason text
258
- - at least one verification artifact:
259
- - test command result summary
260
- - linked file path(s)
261
- - linked docs or notes
262
- - updated acceptance criteria status (met/not met)
263
-
264
- ## 8) Common Command Recipes
265
-
266
- Quick start loop:
17
+ Use runtime contracts for exact flags because packages and settings can change the active surface:
267
18
 
268
19
  ```bash
269
- pm config project set definition-of-done --criterion "tests pass" --criterion "linked files/tests/docs present"
270
- pm config project set test-result-tracking --policy enabled
271
- pm list-open --type Task --priority 0 --fields id,title,parent,type --sort priority --order asc --limit 5
272
- pm claim pm-a1b2
273
- pm update pm-a1b2 --status in_progress --description "Implement restore replay"
274
- pm update pm-a1b2 --description "Audit metadata clarification" --allow-audit-update --author "audit-maintainer"
275
- pm update-many --filter-status open --filter-tag governance --status in_progress --dry-run --json
276
- pm update-many --filter-tag wave:7 --replace-tests --test "command=node scripts/run-tests.mjs test -- tests/core/history.spec.ts,scope=project,timeout_seconds=240" --message "Normalize linked tests"
277
- pm normalize --filter-status in_progress --dry-run --json
278
- pm normalize --filter-tag governance --apply --allow-audit-update --author audit-maintainer --message "Normalize lifecycle metadata"
279
- pm update pm-a1b2 --body "Restore replay scope and acceptance details."
280
- pm update pm-a1b2 --reminder "at=+1d,text=Follow up on restore replay tests"
281
- pm files pm-a1b2 --add path=src/history.ts,scope=project,note="restore implementation"
282
- pm files pm-a1b2 --add-glob "src/**/*.ts"
283
- pm test pm-a1b2 --add command="node scripts/run-tests.mjs test",scope=project,timeout_seconds=240
284
- pm comments pm-a1b2 "Restore replay implemented with hash checks"
285
- pm notes pm-a1b2 --add "Replay path now guards missing history streams before write"
286
- pm learnings pm-a1b2 --add "Use sandbox runner for linked test commands to preserve PM_PATH safety"
287
- pm deps pm-a1b2 --format tree
288
- pm aggregate --group-by parent,type --status open --json
289
- pm dedupe-audit --mode parent_scope --limit 20 --json
290
- pm calendar --view week --date 2026-04-06 --full-period --include deadlines,events --format markdown
291
- pm activity --id pm-a1b2 --op update --author codex-agent --from -7d --to now --limit 100
292
- pm activity --json --stream rows --limit 200
293
- pm start-task pm-a1b2 --author codex-agent --message "Start implementation"
294
- pm pause-task pm-a1b2 --author codex-agent --message "Pause for dependency unblock"
295
- pm close-task pm-a1b2 "All acceptance criteria met" --author codex-agent --message "Close and handoff"
296
- pm contracts --command update --flags-only --json
297
- pm test pm-a1b2 --run --progress
298
- pm health --check-only
299
- pm validate --check-resolution --check-history-drift
300
- node scripts/run-tests.mjs coverage
301
- pm close pm-a1b2 "history replay tests passed; restore emits restore history event" --validate-close warn --author "..." --message "Close: history replay tests passed; restore emits restore history event"
302
- pm release pm-a1b2
20
+ pm <command> --help --json
21
+ pm contracts --command <command> --flags-only --json
22
+ pm install guide-shell --project
23
+ pm guide <topic>
303
24
  ```
304
25
 
305
- Templates syntax reminder:
26
+ ## Non-Negotiables
27
+
28
+ - `pm` is the system of record. Do not edit `.agents/pm` files directly.
29
+ - Every code, docs, or test change must be linked to a `pm` item with files/docs/tests and evidence comments.
30
+ - Before creating work, search existing items and reuse the canonical lineage when possible.
31
+ - Claim before substantial edits; release when paused, handed off, closed, or canceled.
32
+ - Every mutation must write history through `pm`.
33
+ - Use TOON/default human-readable output for agent loops; use `--json` only for strict parsing.
34
+ - Do not run destructive commands or force ownership/lock overrides unless the user explicitly approves that action.
35
+ - Keep public docs free of credentials, host-specific runbooks, private operations details, and ignored local evidence logs.
306
36
 
307
- - `pm templates save` and `pm templates show` use positional template names.
308
- - Use `pm templates save <name> ...` and `pm templates show <name>`.
309
- - Do not pass `--name`; it is not a supported flag.
37
+ ## Required Bootstrap
310
38
 
311
- Investigate change timeline:
39
+ Before `pm` mutations in this repo:
312
40
 
313
41
  ```bash
314
- pm history pm-a1b2 --limit 20
315
- pm activity --limit 50
42
+ npm install -g .
43
+ pm --version
44
+ node -v
45
+ pnpm -v
46
+ pnpm build
316
47
  ```
317
48
 
318
- Recover previous state:
49
+ Then set:
319
50
 
320
51
  ```bash
321
- pm restore pm-a1b2 2026-02-17T11:15:03.120Z
52
+ export PM_AUTHOR=<stable-agent-id>
322
53
  ```
323
54
 
324
- ## 9) Multi-Agent Etiquette
325
-
326
- - Claim before heavy edits.
327
- - Release when blocked or context-switching.
328
- - Use comments for handoff notes.
329
- - Avoid silent force-claim unless policy allows and conflict is stale.
330
- - Keep item descriptions stable; append details in body/notes/comments.
331
-
332
- ## 10) Troubleshooting for Agents
333
-
334
- Lock conflict:
335
-
336
- - inspect ownership and lock age
337
- - retry later or use `--force` with explicit rationale
338
-
339
- Not found:
340
-
341
- - normalize ID and verify with `pm list-all --limit ...`
55
+ Use `PM_CMD=pm` only after `pm` clearly resolves to this checkout's current build. Otherwise run `node dist/cli.js` from the repository root.
342
56
 
343
- Search mismatch:
57
+ For real repository tracking, do not override `PM_PATH`. For tests and dogfood runs, use sandboxed `PM_PATH` and `PM_GLOBAL_PATH`; prefer `node scripts/run-tests.mjs ...` because it sets them automatically.
344
58
 
345
- - run `pm reindex`
346
- - check provider/vector store config with `pm health`
59
+ <!-- pm-cli:agent-guidance:start:v1 -->
60
+ ## pm Workflow Quickstart
347
61
 
348
- Extension issues:
349
-
350
- - run with `--no-extensions` to isolate core behavior
351
- - inspect `pm health` extension checks
352
- - verify active extension selectors in settings (`search.provider`, `vector_store.adapter`) when semantic search/reindex behavior differs from baseline
353
- - verify manifest capability declarations include any new API usage (`parser`, `preflight`, `services`) to avoid activation failures
354
- - when debugging runtime behavior changes, inspect parser/preflight/service override collisions in health/profile diagnostics (last registration wins)
355
- - use SDK contracts from `@unbrained/pm-cli/sdk` (not internal `src/core/...` imports) for extension authoring and examples
62
+ ```bash
63
+ pm context --limit 10
64
+ pm search "<request keywords>" --limit 10
65
+ pm list-open --limit 20
66
+ pm list-in-progress --limit 20
67
+ pm create --create-mode progressive --title "..." --description "..." --type Task --status open
68
+ pm claim <id>
69
+ pm update <id> --status in_progress --message "Start implementation"
70
+ pm files <id> --add path=<path>,scope=project,note="<why>"
71
+ pm docs <id> --add path=<path>,scope=project,note="<why>"
72
+ pm test <id> --add command="node scripts/run-tests.mjs test -- <target>",scope=project,timeout_seconds=240
73
+ pm comments <id> "Evidence: <what changed and what passed>"
74
+ pm test <id> --run --progress
75
+ pm close <id> "<reason with evidence>" --validate-close warn
76
+ pm release <id>
77
+ ```
356
78
 
357
- ## 11) Dogfood Logging Protocol (Required)
79
+ Set `PM_AUTHOR=<stable-agent-id>` before mutations.
80
+ <!-- pm-cli:agent-guidance:end -->
358
81
 
359
- From now on in this repository, all implementation work must be tracked through `pm` items and `pm` mutations.
82
+ ## Working Rules
360
83
 
361
- Rules:
84
+ - **Orient:** run `pm context`, `pm search`, `pm list-open`, and `pm list-in-progress` before `pm create`. If net-new work is required, create or reuse the parent lineage first and record duplicate-check evidence in a create-time comment.
85
+ - **Implement:** keep edits scoped to the claimed item. Link changed files with `pm files`, docs with `pm docs`, and runnable verification with `pm test`.
86
+ - **Record:** use `pm comments`, `pm notes`, and `pm learnings` for progress, rationale, and durable lessons. Prefer append-style updates over rewriting item content.
87
+ - **Verify:** use sandbox-safe commands. For documentation-only work, run at least `pnpm build` and a focused link/content check. For broader work, run linked tests, coverage, validation, and release gates as appropriate.
88
+ - **Close:** add evidence first, then `pm close <id> "<reason>" --validate-close warn`, then `pm release <id>`.
362
89
 
363
- - Every code change must be linked to at least one `pm` item.
364
- - For every change-set/commit-sized unit of work, agents must:
365
- - create or update relevant `pm` item(s)
366
- - link changed files via `pm files`
367
- - link verification via `pm test`/`pm docs` as applicable
368
- - add a comment with evidence (what changed, why, what was verified)
369
- - ensure history is written through `pm` mutation commands (never by editing `.agents/pm` files directly)
370
- - Until full command coverage exists, prioritize implementing the minimal missing subset needed for logging:
371
- - `append`
372
- - `comments`
373
- - `notes`
374
- - `learnings`
375
- - `files`
376
- - `test`
377
- - `test-all`
378
- - `docs`
379
- - `update`
380
- - `claim`
381
- - `release`
90
+ ## Test Safety
382
91
 
383
- ### All-Flags Create Template (copy/paste)
92
+ - Tests must never read or write the real repository `.agents/pm` data.
93
+ - Use `node scripts/run-tests.mjs test` and `node scripts/run-tests.mjs coverage` for local tests.
94
+ - Linked tests should use sandbox-safe commands and avoid recursive `pm test-all` item links.
95
+ - Use `--progress` for long-running non-interactive linked tests or reindex paths.
384
96
 
385
- `pm create` strict mode (default / `--create-mode strict`) enforces every repeatable seed flag as concrete input; pass concrete values for each of `--dep`, `--comment`, `--note`, `--learning`, `--file`, `--test`, and `--doc`. If a repeatable field is intentionally empty during staged capture, use `--create-mode progressive` and backfill required metadata before close.
97
+ ## Documentation Policy
386
98
 
387
- ```bash
388
- pm create \
389
- --title "..." \
390
- --description "..." \
391
- --type Task \
392
- --status open \
393
- --priority 1 \
394
- --tags "pm-cli,milestone:0,area:core,core" \
395
- --body "..." \
396
- --deadline +1d \
397
- --estimate 60 \
398
- --acceptance-criteria/--ac "..." \
399
- --unset definition-of-ready \
400
- --unset order \
401
- --unset goal \
402
- --unset objective \
403
- --unset value \
404
- --unset impact \
405
- --unset outcome \
406
- --unset why-now \
407
- --author "..." \
408
- --message "..." \
409
- --unset assignee \
410
- --unset parent \
411
- --unset reviewer \
412
- --unset risk \
413
- --unset confidence \
414
- --unset sprint \
415
- --unset release \
416
- --unset blocked-by \
417
- --unset blocked-reason \
418
- --unset unblock-note \
419
- --unset reporter \
420
- --unset severity \
421
- --unset environment \
422
- --unset repro-steps \
423
- --unset resolution \
424
- --unset expected-result \
425
- --unset actual-result \
426
- --unset affected-version \
427
- --unset fixed-version \
428
- --unset component \
429
- --unset regression \
430
- --unset customer-impact \
431
- --dep <DEP> \
432
- --comment <COMMENT> \
433
- --note <NOTE> \
434
- --learning <LEARNINGS> \
435
- --file <FILES> \
436
- --test <TESTS> \
437
- --doc <DOCS>
438
- ```
99
+ - Keep this file and [README](README.md) short.
100
+ - Move details into focused docs under `docs/` and keep links relative/GitHub-compatible.
101
+ - Add tracker references near the top of new docs when a `pm` item created the change.
102
+ - Link documentation changes back to the active item with `pm docs`.
439
103
 
440
- Notes:
104
+ ## When Unsure
441
105
 
442
- - `--type` values come from the runtime type registry (built-ins plus `settings.item_types.definitions` and extension registrations).
443
- - Custom type metadata can be passed with repeatable `--type-option key=value` flags (or `--clear-type-options` to explicitly clear).
444
- - For staged governance capture without placeholder repeatables, use `--create-mode progressive` and backfill required metadata before close.
445
-
446
- ### Epic Template With Comment + Note
447
-
448
- ```bash
449
- pm create \
450
- --title "Milestone X - ..." \
451
- --description "..." \
452
- --type Epic \
453
- --status open \
454
- --priority 0 \
455
- --tags "pm-cli,milestone:X,area:...,core" \
456
- --body "..." \
457
- --deadline +7d \
458
- --estimate 240 \
459
- --acceptance-criteria/--ac "..." \
460
- --unset definition-of-ready \
461
- --unset order \
462
- --unset goal \
463
- --unset objective \
464
- --unset value \
465
- --unset impact \
466
- --unset outcome \
467
- --unset why-now \
468
- --author "..." \
469
- --message "MESSAGE" \
470
- --unset assignee \
471
- --unset parent \
472
- --unset reviewer \
473
- --unset risk \
474
- --unset confidence \
475
- --unset sprint \
476
- --unset release \
477
- --unset blocked-by \
478
- --unset blocked-reason \
479
- --unset unblock-note \
480
- --dep "id=pm-xxxx,kind=blocks,author=...,created_at=now" \
481
- --comment "author=...,created_at=now,text=Why this epic exists." \
482
- --note "author=...,created_at=now,text=How success is measured." \
483
- --learning <LEARNINGS> \
484
- --file <FILES> \
485
- --test <TESTS> \
486
- --doc <DOCS>
487
- ```
106
+ 1. Add a `pm comments <id> "Investigation note: ..."` entry before risky mutation.
107
+ 2. Prefer `pm health --check-only`, `pm validate --check-resolution --check-history-drift`, and `pm normalize --dry-run --json` for diagnostics.
108
+ 3. Use [Agent Guide](docs/AGENT_GUIDE.md) for the full agent loop and [Command Reference](docs/COMMANDS.md) for command-specific examples.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2026.5.18] - 2026-05-18
11
+
12
+ ### Changed
13
+ - CI: split the serial `gates` job into a parallel matrix (`coverage`, `typecheck`, `static`, `compat`, `smokes`) all fanning out from the shared `build-foundation` dist artifact, and moved the slow Windows test job from push CI to nightly so it no longer dominates the push critical path. Reduces push critical path from ~10 min to ~5-6 min on the free-tier runners; Windows + macOS cross-platform coverage now runs daily in `nightly.yml` so regressions are still caught within 24h.
14
+ - `pm package` / `pm extension` bare invocations now default to `--explore` instead of erroring on the required-action contract, matching the agent-friendly default used by `pm templates`.
15
+ - `pm create` now defaults `--type` to the configurable `settings.governance.create_default_type` (falling back to `Task`) so the positional-title shortcut (`pm create "title"`) succeeds without forcing an explicit `--type` flag.
16
+ - Telemetry `command_resolution` is now derived from the CLI exit code rather than the JSON output's `ok` field, so warning-but-exit-zero commands (`pm validate`, `pm health`) are no longer reported as failures in the telemetry KPI dashboards.
17
+
18
+ ### Added
19
+ - New `settings.governance.create_default_type` knob lets each workspace pick the default item type for the positional-title `pm create` shortcut.
20
+
21
+ ## [2026.5.14] - 2026-05-14
22
+
23
+ ### Added
24
+ - Added shared `scripts/release/verify-published-release.mjs` and `pnpm release:verify-published` so maintainers and GitHub Actions run the same npm, `npx`, `bunx`, and GitHub Release verification logic.
25
+ - Added installable first-party packages for calendar, templates, governance audit, guide shell, linked-test adapters, and advanced search workflows, with package catalog/list discovery and packed CLI smoke coverage.
26
+
27
+ ### Changed
28
+ - Hardened daily release automation so empty `[Unreleased]` changelog content skips cleanly, generated release notes stay sourced from changelog plus pm evidence, and hosted Sentry severity thresholds match the current maintained baseline instead of blocking on known historical noise.
29
+ - Continued the package-first refactor by moving optional workflows into bundled packages while keeping the bare CLI/SDK smaller and exposing runtime package actions through installed extension contracts.
30
+ - Improved agent-facing command contracts, release gates, activity/audit flows, plugin launchers, and package runtime helper exports for more deterministic automation.
31
+
10
32
  ## [2026.5.12] - 2026-05-12
11
33
 
12
34
  ### Changed
package/CONTRIBUTING.md CHANGED
@@ -144,6 +144,7 @@ When unmanaged extension state is expected to be managed, use `pm extension --do
144
144
 
145
145
  - Include focused scope and rationale.
146
146
  - Confirm all checks pass (`pnpm build && pnpm typecheck && pnpm test:coverage`).
147
+ - CI runs the full matrix on `main` pushes unless the push only changes docs/markdown or issue templates. Pull requests run the reduced free-tier matrix (`ubuntu-latest` Node 20 and `macos-latest` Node 20) for review confidence, while nightly keeps broader regression coverage.
147
148
  - Update relevant user-facing docs when behavior changes, but keep enforcement in `pm` data and runtime tests.
148
149
  - Keep private operations artifacts out of tracked public docs and package output.
149
150
  - Add/maintain tests for any new behavior (100% coverage required).