openplanr 3.1.1 → 3.3.0

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 (452) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/cli/commands/groups/delivery.d.ts.map +1 -1
  3. package/dist/cli/commands/groups/delivery.js +2 -0
  4. package/dist/cli/commands/groups/delivery.js.map +1 -1
  5. package/dist/cli/commands/planning-artifacts.d.ts.map +1 -1
  6. package/dist/cli/commands/planning-artifacts.js +22 -12
  7. package/dist/cli/commands/planning-artifacts.js.map +1 -1
  8. package/dist/cli/commands/ship.d.ts +3 -0
  9. package/dist/cli/commands/ship.d.ts.map +1 -0
  10. package/dist/cli/commands/ship.js +65 -0
  11. package/dist/cli/commands/ship.js.map +1 -0
  12. package/dist/cli/commands/spec.d.ts +2 -1
  13. package/dist/cli/commands/spec.d.ts.map +1 -1
  14. package/dist/cli/commands/spec.js +45 -5
  15. package/dist/cli/commands/spec.js.map +1 -1
  16. package/dist/dashboard/.vite/manifest.json +1 -1
  17. package/dist/dashboard/assets/index-B_96uzCl.js +572 -0
  18. package/dist/dashboard/assets/index-B_96uzCl.js.map +1 -0
  19. package/dist/dashboard/dashboard-manifest.json +10 -10
  20. package/dist/dashboard/index.html +1 -1
  21. package/dist/models/schema.d.ts +39 -23
  22. package/dist/models/schema.d.ts.map +1 -1
  23. package/dist/models/schema.js +19 -12
  24. package/dist/models/schema.js.map +1 -1
  25. package/dist/models/types.d.ts +6 -0
  26. package/dist/models/types.d.ts.map +1 -1
  27. package/dist/services/claude-plugin-service.d.ts +5 -0
  28. package/dist/services/claude-plugin-service.d.ts.map +1 -1
  29. package/dist/services/claude-plugin-service.js +18 -2
  30. package/dist/services/claude-plugin-service.js.map +1 -1
  31. package/dist/services/codex-plugin-service.d.ts.map +1 -1
  32. package/dist/services/codex-plugin-service.js +11 -3
  33. package/dist/services/codex-plugin-service.js.map +1 -1
  34. package/dist/services/id-service.d.ts +1 -5
  35. package/dist/services/id-service.d.ts.map +1 -1
  36. package/dist/services/id-service.js +1 -34
  37. package/dist/services/id-service.js.map +1 -1
  38. package/dist/services/runtime-manager/codex-discovery.d.ts +1 -3
  39. package/dist/services/runtime-manager/codex-discovery.d.ts.map +1 -1
  40. package/dist/services/runtime-manager/codex-discovery.js +3 -16
  41. package/dist/services/runtime-manager/codex-discovery.js.map +1 -1
  42. package/dist/services/runtime-manager/doctor.d.ts +25 -0
  43. package/dist/services/runtime-manager/doctor.d.ts.map +1 -1
  44. package/dist/services/runtime-manager/doctor.js +480 -0
  45. package/dist/services/runtime-manager/doctor.js.map +1 -1
  46. package/dist/services/runtime-manager/errors.d.ts +12 -0
  47. package/dist/services/runtime-manager/errors.d.ts.map +1 -0
  48. package/dist/services/runtime-manager/errors.js +14 -0
  49. package/dist/services/runtime-manager/errors.js.map +1 -0
  50. package/dist/services/runtime-manager/global-state.d.ts +7 -0
  51. package/dist/services/runtime-manager/global-state.d.ts.map +1 -1
  52. package/dist/services/runtime-manager/global-state.js +116 -0
  53. package/dist/services/runtime-manager/global-state.js.map +1 -1
  54. package/dist/services/runtime-manager/host-version-probe.d.ts +8 -0
  55. package/dist/services/runtime-manager/host-version-probe.d.ts.map +1 -0
  56. package/dist/services/runtime-manager/host-version-probe.js +14 -0
  57. package/dist/services/runtime-manager/host-version-probe.js.map +1 -0
  58. package/dist/services/runtime-manager/install-plan.d.ts +25 -0
  59. package/dist/services/runtime-manager/install-plan.d.ts.map +1 -1
  60. package/dist/services/runtime-manager/install-plan.js +305 -0
  61. package/dist/services/runtime-manager/install-plan.js.map +1 -1
  62. package/dist/services/runtime-manager/inventory.d.ts +6 -0
  63. package/dist/services/runtime-manager/inventory.d.ts.map +1 -1
  64. package/dist/services/runtime-manager/inventory.js +16 -1
  65. package/dist/services/runtime-manager/inventory.js.map +1 -1
  66. package/dist/services/runtime-manager/legacy-adapters.d.ts +9 -0
  67. package/dist/services/runtime-manager/legacy-adapters.d.ts.map +1 -0
  68. package/dist/services/runtime-manager/legacy-adapters.js +187 -0
  69. package/dist/services/runtime-manager/legacy-adapters.js.map +1 -0
  70. package/dist/services/runtime-manager/paths.d.ts +18 -0
  71. package/dist/services/runtime-manager/paths.d.ts.map +1 -0
  72. package/dist/services/runtime-manager/paths.js +83 -0
  73. package/dist/services/runtime-manager/paths.js.map +1 -0
  74. package/dist/services/runtime-manager/runtime-package.d.ts +21 -0
  75. package/dist/services/runtime-manager/runtime-package.d.ts.map +1 -1
  76. package/dist/services/runtime-manager/runtime-package.js +77 -0
  77. package/dist/services/runtime-manager/runtime-package.js.map +1 -1
  78. package/dist/services/runtime-manager/storage.d.ts +47 -0
  79. package/dist/services/runtime-manager/storage.d.ts.map +1 -0
  80. package/dist/services/runtime-manager/storage.js +604 -0
  81. package/dist/services/runtime-manager/storage.js.map +1 -0
  82. package/dist/services/runtime-manager-service.d.ts +7 -17
  83. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  84. package/dist/services/runtime-manager-service.js +32 -1695
  85. package/dist/services/runtime-manager-service.js.map +1 -1
  86. package/dist/services/ship-checks/changes.d.ts +24 -0
  87. package/dist/services/ship-checks/changes.d.ts.map +1 -0
  88. package/dist/services/ship-checks/changes.js +135 -0
  89. package/dist/services/ship-checks/changes.js.map +1 -0
  90. package/dist/services/ship-checks/contract.d.ts +93 -0
  91. package/dist/services/ship-checks/contract.d.ts.map +1 -0
  92. package/dist/services/ship-checks/contract.js +7 -0
  93. package/dist/services/ship-checks/contract.js.map +1 -0
  94. package/dist/services/ship-checks/coverage.d.ts +4 -0
  95. package/dist/services/ship-checks/coverage.d.ts.map +1 -0
  96. package/dist/services/ship-checks/coverage.js +113 -0
  97. package/dist/services/ship-checks/coverage.js.map +1 -0
  98. package/dist/services/ship-checks/discover.d.ts +10 -0
  99. package/dist/services/ship-checks/discover.d.ts.map +1 -0
  100. package/dist/services/ship-checks/discover.js +253 -0
  101. package/dist/services/ship-checks/discover.js.map +1 -0
  102. package/dist/services/ship-checks/glob.d.ts +5 -0
  103. package/dist/services/ship-checks/glob.d.ts.map +1 -0
  104. package/dist/services/ship-checks/glob.js +39 -0
  105. package/dist/services/ship-checks/glob.js.map +1 -0
  106. package/dist/services/ship-checks/hooks.d.ts +7 -0
  107. package/dist/services/ship-checks/hooks.d.ts.map +1 -0
  108. package/dist/services/ship-checks/hooks.js +65 -0
  109. package/dist/services/ship-checks/hooks.js.map +1 -0
  110. package/dist/services/ship-checks/packages.d.ts +29 -0
  111. package/dist/services/ship-checks/packages.d.ts.map +1 -0
  112. package/dist/services/ship-checks/packages.js +197 -0
  113. package/dist/services/ship-checks/packages.js.map +1 -0
  114. package/dist/services/ship-checks/related-tests.d.ts +13 -0
  115. package/dist/services/ship-checks/related-tests.d.ts.map +1 -0
  116. package/dist/services/ship-checks/related-tests.js +73 -0
  117. package/dist/services/ship-checks/related-tests.js.map +1 -0
  118. package/dist/services/ship-checks/scope.d.ts +8 -0
  119. package/dist/services/ship-checks/scope.d.ts.map +1 -0
  120. package/dist/services/ship-checks/scope.js +66 -0
  121. package/dist/services/ship-checks/scope.js.map +1 -0
  122. package/dist/services/ship-checks/task-requirements.d.ts +14 -0
  123. package/dist/services/ship-checks/task-requirements.d.ts.map +1 -0
  124. package/dist/services/ship-checks/task-requirements.js +145 -0
  125. package/dist/services/ship-checks/task-requirements.js.map +1 -0
  126. package/dist/services/ship-checks/workflows.d.ts +21 -0
  127. package/dist/services/ship-checks/workflows.d.ts.map +1 -0
  128. package/dist/services/ship-checks/workflows.js +208 -0
  129. package/dist/services/ship-checks/workflows.js.map +1 -0
  130. package/dist/services/spec-service.d.ts +18 -0
  131. package/dist/services/spec-service.d.ts.map +1 -1
  132. package/dist/services/spec-service.js +174 -9
  133. package/dist/services/spec-service.js.map +1 -1
  134. package/dist/services/template-service.d.ts +2 -0
  135. package/dist/services/template-service.d.ts.map +1 -1
  136. package/dist/services/template-service.js +4 -0
  137. package/dist/services/template-service.js.map +1 -1
  138. package/dist/templates/spec/spec-shaped.md.hbs +1 -1
  139. package/dist/templates/spec/spec.md.hbs +2 -2
  140. package/dist/utils/slugify.d.ts +1 -8
  141. package/dist/utils/slugify.d.ts.map +1 -1
  142. package/dist/utils/slugify.js +1 -25
  143. package/dist/utils/slugify.js.map +1 -1
  144. package/docs/CLI.md +96 -2
  145. package/lib/backlog-item.d.mts +49 -0
  146. package/lib/backlog-item.mjs +339 -0
  147. package/lib/host-packages/adapter-registry.json +5 -5
  148. package/lib/host-packages/capability-map.json +3 -3
  149. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  150. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  151. package/lib/host-packages/claude/openplanr/.openplanr-content.json +134 -94
  152. package/lib/host-packages/claude/openplanr/CONNECTORS.md +4 -6
  153. package/lib/host-packages/claude/openplanr/README.md +1 -1
  154. package/lib/host-packages/claude/openplanr/agents/planr-qa.md +5 -3
  155. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-artifact-shell.mjs +1 -1
  156. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +1 -1
  157. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-document.mjs +471 -80
  158. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-handoff.mjs +2 -2
  159. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-resource-pack.mjs +1 -1
  160. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review.mjs +45 -4
  161. package/lib/host-packages/{cursor/openplanr/runtime/design/scripts/design-runtime-support-e34c388a8e59.mjs → claude/openplanr/runtime/design/scripts/design-runtime-support-25485dbf1cb2.mjs} +1 -1
  162. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +8 -5
  163. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +138 -12
  164. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs +1 -1
  165. package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-shared-protocol-contracts-31a760fc.mjs → design-shared-protocol-contracts-b5f28f94.mjs} +413 -45
  166. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-upload-spool.mjs +1 -1
  167. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design.mjs +482 -79
  168. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
  169. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +23 -23
  170. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +322 -45
  171. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +12 -12
  172. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +47 -14
  173. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +11 -10
  174. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -3
  175. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +16 -11
  176. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js +7 -11
  177. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +165 -276
  178. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +494 -967
  179. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +346 -678
  180. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +382 -810
  181. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +406 -730
  182. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +259 -522
  183. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +585 -937
  184. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +119 -244
  185. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js +7 -17
  186. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/11-artifact-review-ui.js +3 -4
  187. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +285 -0
  188. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +2773 -0
  189. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js +134 -0
  190. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +2207 -0
  191. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js +16 -0
  192. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-studio-shell.js +8 -0
  193. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/18-interface-primitives.js +3883 -0
  194. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/19-interface-primitives.js +966 -0
  195. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/{16-studio-shell.js → 20-studio-shell.js} +122 -227
  196. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +1597 -0
  197. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +101 -47
  198. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +6 -2
  199. package/lib/host-packages/{openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0 → claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +207 -7
  200. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  201. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +324 -45
  202. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +73 -12
  203. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +6 -2
  204. package/lib/host-packages/claude/openplanr/skills/connect/references/connectors.md +4 -6
  205. package/lib/host-packages/claude/openplanr/skills/design/SKILL.md +12 -0
  206. package/lib/host-packages/claude/openplanr/skills/design/references/craft.md +14 -3
  207. package/lib/host-packages/claude/openplanr/skills/design/references/design-system.md +48 -1
  208. package/lib/host-packages/claude/openplanr/skills/design/references/discovery.md +18 -4
  209. package/lib/host-packages/claude/openplanr/skills/design/references/generation.md +133 -2
  210. package/lib/host-packages/claude/openplanr/skills/design/references/hosted-canvas.md +62 -0
  211. package/lib/host-packages/claude/openplanr/skills/design/references/review.md +46 -1
  212. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +17 -1
  213. package/lib/host-packages/claude/openplanr/skills/design/schemas/design-document.schema.json +207 -7
  214. package/lib/host-packages/claude/openplanr/skills/design-loop/references/craft.md +14 -3
  215. package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-system.md +48 -1
  216. package/lib/host-packages/claude/openplanr/skills/design-loop/references/discovery.md +18 -4
  217. package/lib/host-packages/claude/openplanr/skills/design-loop/references/generation.md +133 -2
  218. package/lib/host-packages/claude/openplanr/skills/design-loop/references/review.md +46 -1
  219. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +17 -1
  220. package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-document.schema.json +207 -7
  221. package/lib/host-packages/claude/openplanr/skills/design-review/references/craft.md +14 -3
  222. package/lib/host-packages/claude/openplanr/skills/design-review/references/design-system.md +48 -1
  223. package/lib/host-packages/claude/openplanr/skills/design-review/references/discovery.md +18 -4
  224. package/lib/host-packages/claude/openplanr/skills/design-review/references/generation.md +133 -2
  225. package/lib/host-packages/claude/openplanr/skills/design-review/references/review.md +46 -1
  226. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +17 -1
  227. package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-document.schema.json +207 -7
  228. package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +11 -2
  229. package/lib/host-packages/claude/openplanr/skills/investigate/references/findings.md +92 -0
  230. package/lib/host-packages/claude/openplanr/skills/investigate/scripts/backlog-item.mjs +339 -0
  231. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +24 -11
  232. package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-document.schema.json +207 -7
  233. package/lib/host-packages/claude/openplanr/skills/share/references/connectors.md +4 -6
  234. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +46 -14
  235. package/lib/host-packages/claude/openplanr/skills/ship/references/findings.md +92 -0
  236. package/lib/host-packages/claude/openplanr/skills/ship/references/result-contract.md +3 -1
  237. package/lib/host-packages/claude/openplanr/skills/ship/scripts/backlog-item.mjs +339 -0
  238. package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +6 -0
  239. package/lib/host-packages/claude/openplanr/skills/spec/references/specification-contract.md +3 -1
  240. package/lib/host-packages/claude/openplanr/skills/sprint/references/connectors.md +4 -6
  241. package/lib/host-packages/claude/openplanr/skills/status/references/connectors.md +4 -6
  242. package/lib/host-packages/claude/openplanr/skills/sync/references/connectors.md +4 -6
  243. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +132 -92
  244. package/lib/host-packages/cursor/openplanr/CONNECTORS.md +4 -6
  245. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  246. package/lib/host-packages/cursor/openplanr/rules/planr-connect/references/connectors.md +4 -6
  247. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/craft.md +14 -3
  248. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-system.md +48 -1
  249. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/discovery.md +18 -4
  250. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/generation.md +133 -2
  251. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/hosted-canvas.md +62 -0
  252. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/review.md +46 -1
  253. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +17 -1
  254. package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-document.schema.json +207 -7
  255. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/craft.md +14 -3
  256. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-system.md +48 -1
  257. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/discovery.md +18 -4
  258. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/generation.md +133 -2
  259. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/review.md +46 -1
  260. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +17 -1
  261. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-document.schema.json +207 -7
  262. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/craft.md +14 -3
  263. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-system.md +48 -1
  264. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/discovery.md +18 -4
  265. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/generation.md +133 -2
  266. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/review.md +46 -1
  267. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +17 -1
  268. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-document.schema.json +207 -7
  269. package/lib/host-packages/cursor/openplanr/rules/planr-design.mdc +12 -0
  270. package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/findings.md +92 -0
  271. package/lib/host-packages/cursor/openplanr/rules/planr-investigate/scripts/backlog-item.mjs +339 -0
  272. package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +11 -2
  273. package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-document.schema.json +207 -7
  274. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +24 -11
  275. package/lib/host-packages/cursor/openplanr/rules/planr-share/references/connectors.md +4 -6
  276. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/findings.md +92 -0
  277. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/result-contract.md +3 -1
  278. package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/backlog-item.mjs +339 -0
  279. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +46 -14
  280. package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/specification-contract.md +3 -1
  281. package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +6 -0
  282. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/connectors.md +4 -6
  283. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/connectors.md +4 -6
  284. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/connectors.md +4 -6
  285. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-artifact-shell.mjs +1 -1
  286. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +1 -1
  287. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-document.mjs +471 -80
  288. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-handoff.mjs +2 -2
  289. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-resource-pack.mjs +1 -1
  290. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review.mjs +45 -4
  291. package/lib/host-packages/{openai/openplanr/runtime/design/scripts/design-runtime-support-e34c388a8e59.mjs → cursor/openplanr/runtime/design/scripts/design-runtime-support-25485dbf1cb2.mjs} +1 -1
  292. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +8 -5
  293. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +138 -12
  294. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs +1 -1
  295. package/lib/host-packages/{openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs → cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs} +413 -45
  296. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-upload-spool.mjs +1 -1
  297. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design.mjs +482 -79
  298. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
  299. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +23 -23
  300. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +322 -45
  301. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +12 -12
  302. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +47 -14
  303. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +11 -10
  304. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -3
  305. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +16 -11
  306. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js +7 -11
  307. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +165 -276
  308. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +494 -967
  309. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +346 -678
  310. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +382 -810
  311. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +406 -730
  312. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +259 -522
  313. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +585 -937
  314. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +119 -244
  315. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js +7 -17
  316. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/11-artifact-review-ui.js +3 -4
  317. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +285 -0
  318. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +2773 -0
  319. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js +134 -0
  320. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +2207 -0
  321. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js +16 -0
  322. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-studio-shell.js +8 -0
  323. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/18-interface-primitives.js +3883 -0
  324. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/19-interface-primitives.js +966 -0
  325. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/{16-studio-shell.js → 20-studio-shell.js} +122 -227
  326. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +1597 -0
  327. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +101 -47
  328. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +6 -2
  329. package/lib/host-packages/{claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0 → cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +207 -7
  330. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  331. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +324 -45
  332. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +73 -12
  333. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +6 -2
  334. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  335. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  336. package/lib/host-packages/openai/openplanr/.openplanr-content.json +139 -99
  337. package/lib/host-packages/openai/openplanr/CONNECTORS.md +4 -6
  338. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-artifact-shell.mjs +1 -1
  339. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +1 -1
  340. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-document.mjs +471 -80
  341. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-handoff.mjs +2 -2
  342. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-resource-pack.mjs +1 -1
  343. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review.mjs +45 -4
  344. package/lib/host-packages/{claude/openplanr/runtime/design/scripts/design-runtime-support-e34c388a8e59.mjs → openai/openplanr/runtime/design/scripts/design-runtime-support-25485dbf1cb2.mjs} +1 -1
  345. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +8 -5
  346. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +138 -12
  347. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs +1 -1
  348. package/lib/host-packages/{cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs → openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs} +413 -45
  349. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-upload-spool.mjs +1 -1
  350. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design.mjs +482 -79
  351. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
  352. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +23 -23
  353. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +322 -45
  354. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +12 -12
  355. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +47 -14
  356. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +11 -10
  357. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -3
  358. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +16 -11
  359. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js +7 -11
  360. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +165 -276
  361. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +494 -967
  362. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +346 -678
  363. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +382 -810
  364. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +406 -730
  365. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +259 -522
  366. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +585 -937
  367. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +119 -244
  368. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js +7 -17
  369. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/11-artifact-review-ui.js +3 -4
  370. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +285 -0
  371. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +2773 -0
  372. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js +134 -0
  373. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +2207 -0
  374. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js +16 -0
  375. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-studio-shell.js +8 -0
  376. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/18-interface-primitives.js +3883 -0
  377. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/19-interface-primitives.js +966 -0
  378. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/{16-studio-shell.js → 20-studio-shell.js} +122 -227
  379. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +1597 -0
  380. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +101 -47
  381. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +6 -2
  382. package/lib/host-packages/{cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0 → openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +207 -7
  383. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  384. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +324 -45
  385. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +73 -12
  386. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +6 -2
  387. package/lib/host-packages/openai/openplanr/skills/connect/references/connectors.md +4 -6
  388. package/lib/host-packages/openai/openplanr/skills/design/SKILL.md +12 -0
  389. package/lib/host-packages/openai/openplanr/skills/design/openplanr.skill.json +11 -0
  390. package/lib/host-packages/openai/openplanr/skills/design/references/craft.md +14 -3
  391. package/lib/host-packages/openai/openplanr/skills/design/references/design-system.md +48 -1
  392. package/lib/host-packages/openai/openplanr/skills/design/references/discovery.md +18 -4
  393. package/lib/host-packages/openai/openplanr/skills/design/references/generation.md +133 -2
  394. package/lib/host-packages/openai/openplanr/skills/design/references/hosted-canvas.md +62 -0
  395. package/lib/host-packages/openai/openplanr/skills/design/references/review.md +46 -1
  396. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +17 -1
  397. package/lib/host-packages/openai/openplanr/skills/design/schemas/design-document.schema.json +207 -7
  398. package/lib/host-packages/openai/openplanr/skills/design-loop/references/craft.md +14 -3
  399. package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-system.md +48 -1
  400. package/lib/host-packages/openai/openplanr/skills/design-loop/references/discovery.md +18 -4
  401. package/lib/host-packages/openai/openplanr/skills/design-loop/references/generation.md +133 -2
  402. package/lib/host-packages/openai/openplanr/skills/design-loop/references/review.md +46 -1
  403. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +17 -1
  404. package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-document.schema.json +207 -7
  405. package/lib/host-packages/openai/openplanr/skills/design-review/references/craft.md +14 -3
  406. package/lib/host-packages/openai/openplanr/skills/design-review/references/design-system.md +48 -1
  407. package/lib/host-packages/openai/openplanr/skills/design-review/references/discovery.md +18 -4
  408. package/lib/host-packages/openai/openplanr/skills/design-review/references/generation.md +133 -2
  409. package/lib/host-packages/openai/openplanr/skills/design-review/references/review.md +46 -1
  410. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +17 -1
  411. package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-document.schema.json +207 -7
  412. package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +11 -2
  413. package/lib/host-packages/openai/openplanr/skills/investigate/agents/openai.yaml +1 -1
  414. package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +23 -1
  415. package/lib/host-packages/openai/openplanr/skills/investigate/references/findings.md +92 -0
  416. package/lib/host-packages/openai/openplanr/skills/investigate/scripts/backlog-item.mjs +339 -0
  417. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +24 -11
  418. package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +1 -1
  419. package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-document.schema.json +207 -7
  420. package/lib/host-packages/openai/openplanr/skills/share/references/connectors.md +4 -6
  421. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +46 -14
  422. package/lib/host-packages/openai/openplanr/skills/ship/agents/openai.yaml +1 -1
  423. package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +23 -1
  424. package/lib/host-packages/openai/openplanr/skills/ship/references/findings.md +92 -0
  425. package/lib/host-packages/openai/openplanr/skills/ship/references/result-contract.md +3 -1
  426. package/lib/host-packages/openai/openplanr/skills/ship/scripts/backlog-item.mjs +339 -0
  427. package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +6 -0
  428. package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +1 -1
  429. package/lib/host-packages/openai/openplanr/skills/spec/references/specification-contract.md +3 -1
  430. package/lib/host-packages/openai/openplanr/skills/sprint/references/connectors.md +4 -6
  431. package/lib/host-packages/openai/openplanr/skills/status/references/connectors.md +4 -6
  432. package/lib/host-packages/openai/openplanr/skills/sync/references/connectors.md +4 -6
  433. package/lib/json-schema.mjs +4 -0
  434. package/package.json +13 -13
  435. package/dist/dashboard/assets/index-G7ygVDGg.js +0 -572
  436. package/dist/dashboard/assets/index-G7ygVDGg.js.map +0 -1
  437. package/dist/templates/backlog/backlog-item.md.hbs +0 -40
  438. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +0 -3589
  439. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-studio-shell.js +0 -184
  440. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +0 -5229
  441. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +0 -1733
  442. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-design-studio.js +0 -1844
  443. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +0 -3589
  444. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-studio-shell.js +0 -184
  445. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +0 -5229
  446. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +0 -1733
  447. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-design-studio.js +0 -1844
  448. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +0 -3589
  449. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-studio-shell.js +0 -184
  450. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +0 -5229
  451. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +0 -1733
  452. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-design-studio.js +0 -1844
@@ -3,12 +3,10 @@
3
3
  OpenPlanr skills name a kind of service, such as `~~chat`, instead of a product. Connect
4
4
  the product your team uses through your host: the vendor publishes the connector, and
5
5
  you sign in through the host. OpenPlanr bundles no connectors; they and their credentials
6
- live in your host. Two optional features need a token: Linear sync (`openplanr linear`) and
7
- company sign-in (`openplanr company login`). Only when you use them does OpenPlanr store a
8
- token, in your OS keychain, or in an encrypted file at `~/.planr/credentials.enc` if you set
9
- `PLANR_CREDENTIAL_FILE_PASSPHRASE`. Tokens are sent only to Linear or to the company server
10
- you sign in to.
11
- `openplanr company logout` removes company tokens.
6
+ live in your host. One optional feature needs a token: Linear sync (`openplanr linear`).
7
+ Only when you use it does OpenPlanr store a token, in your OS keychain, or in an encrypted
8
+ file at `~/.planr/credentials.enc` if you set `PLANR_CREDENTIAL_FILE_PASSPHRASE`. The token
9
+ is sent only to Linear.
12
10
  Every skill also works with nothing connected and reports any remote step it skipped.
13
11
 
14
12
  | Category | Placeholder | Products |
@@ -0,0 +1,92 @@
1
+ # Findings outside the task
2
+
3
+ A finding is a defect or bad practice you observed outside the task: a wrong
4
+ value, the same bug elsewhere, a flaky check. It needs evidence you saw: a
5
+ repo-relative `file:line`, or a command and its output line. A suspicion without
6
+ evidence is not a finding. A problem that stops this task is a blocker, not a
7
+ finding.
8
+
9
+ ## Never fix a finding here
10
+
11
+ Do not change code for a finding in this run. The one exception is a defect that
12
+ blocks this task's own definition of done: it becomes a blocker, you fix it, and
13
+ **Changed** says it was pre-existing and why it could not wait.
14
+
15
+ ## Shape
16
+
17
+ `issues` holds two lists. `blockers`: problem, impact, next action.
18
+ `findings`, each with:
19
+
20
+ - `title`: one plain line stating the defect; it is also the backlog title.
21
+ - `severity`: `critical`, `high`, `medium` or `low`; it becomes the backlog priority.
22
+ - `evidence`: `file:line`, or the command and the output line.
23
+ - `proposed`: the backlog entry: title, priority, tags, and a `description` in
24
+ Markdown with Problem, Why it matters ("no consequence yet" when that is the
25
+ honest answer), Evidence, and Fix shape. Label unverified parts as unverified.
26
+ - `disposition`: `filed`, `tracked`, `declined` or `reported`, plus `{ id, path }`
27
+ when filed or tracked.
28
+
29
+ Merge duplicates within the run. Sort by severity, highest first, and number from
30
+ 1. Show at most 5 in full and summarise the rest as "+N more".
31
+
32
+ ## Check what is already tracked
33
+
34
+ Before showing findings, list open backlog items with the backlog helper
35
+ linked from SKILL.md, resolved relative to that file: `node <helper> list
36
+ --project <repository-root> --open`. A finding about the same problem as an open item,
37
+ normally the same evidence file and an equivalent title, is `tracked`. Never file
38
+ it again and never edit the existing item.
39
+
40
+ ## Decide, then ask at most once
41
+
42
+ After checks, and only when at least one finding is untracked, take the first
43
+ rule that applies. File only what it allows.
44
+
45
+ 1. The request says to file findings, or not to: do that.
46
+ 2. **Attended run**, the user can answer now: ask one question with the host's
47
+ structured question tool: "File N findings as backlog items?" with the options
48
+ "File all N (Recommended)" and "Don't file", and free text for numbers such as
49
+ "1 3". Without such a tool, ask in one chat line: `File these as backlog items?
50
+ Reply "all", "none", or the numbers, e.g. "1 3".` File what the answer names.
51
+ 3. **Unattended run**, nobody can answer: the host cannot ask and wait (for
52
+ example a print or exec mode), another skill or a delegate runner started this
53
+ run, or the user said not to ask. Read `findings.unattended` in
54
+ `.planr/config.json`. Only `file` files every untracked finding. With
55
+ `report`, or no setting, do not run `add` at all: mark the findings `reported`.
56
+
57
+ Never ask per finding, never ask mid-run, and never file or drop a finding
58
+ silently.
59
+
60
+ ## File
61
+
62
+ Send each item as one JSON object (`title`, `priority`, `tags`, `description`)
63
+ on stdin. Never pass `acceptanceCriteria`.
64
+
65
+ - When an `openplanr` CLI resolves (the project's `node_modules/.bin`, then
66
+ `PATH`; never `npx`): `openplanr --project-dir <repository-root> backlog add
67
+ --data - --json`.
68
+ - Otherwise: `node <helper> add --project <repository-root> --data -`. Its
69
+ result can carry `cliHint`; end the result with that line, word for word,
70
+ once. Install only if the user says yes then, by running exactly the command in
71
+ the line. If the result says `templateOverrideIgnored`, say the default format
72
+ was used.
73
+
74
+ If filing fails, report the command and its error, and leave the finding
75
+ `reported`.
76
+
77
+ ## Report
78
+
79
+ Under **Issues**, write the blockers, or `none for this task.` when only findings
80
+ remain. Then:
81
+
82
+ ```text
83
+ Found outside this task (not changed)
84
+ 1. medium · /import has no rate limit · src/routes/import.ts:41
85
+ Filed BL-431 · .planr/backlog/BL-431-import-endpoint-has-no-rate-limit.md
86
+ 2. low · tests/session.test.ts timed out once, passed on rerun · npm test, first run
87
+ Already tracked as BL-212 · .planr/backlog/BL-212-session-test-times-out.md
88
+ ```
89
+
90
+ Unfiled findings say why in the heading, for example `(not changed, not filed:
91
+ unattended default is "report")`, and end with: `To file them, reply "file 1 2".` In an unattended run, add: `To file automatically in unattended runs, set "findings": { "unattended": "file" } in .planr/config.json.`
92
+ Paths are always repo-relative.
@@ -7,7 +7,9 @@ Return one concise human rendering backed by these five machine fields:
7
7
  3. `changed`: material files grouped by purpose.
8
8
  4. `checks`: each executed or applicable check with `passed`, `failed`, or
9
9
  `not-run` and a concise result.
10
- 5. `issues`: unresolved problem, impact, and next action; use `none` when empty.
10
+ 5. `issues`: `blockers` for this task, each with problem, impact, and next
11
+ action, and `findings` outside the task, shaped as `findings.md` describes;
12
+ use `none` when both are empty.
11
13
 
12
14
  Do not add receipts, digests, proof ledgers, fixed review loops, or approval
13
15
  narration. Mention evidence only when it is the natural result of a command or
@@ -0,0 +1,339 @@
1
+ #!/usr/bin/env node
2
+ // @ts-check
3
+ // The one backlog item writer: the CLI imports it, and skills run it when no CLI is installed.
4
+
5
+ import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
6
+ import { join, relative, resolve, sep } from 'node:path';
7
+ import { fileURLToPath } from 'node:url';
8
+
9
+ /** Holds one empty file per issued ID, so the ID of a removed artifact is never issued again. */
10
+ const ISSUED_IDS_DIR = '.issued-ids';
11
+ const CLOSED_STATUSES = new Set(['closed', 'done']);
12
+
13
+ /** @type {typeof import('./backlog-item.d.mts').CLI_INSTALL_COMMAND} */
14
+ export const CLI_INSTALL_COMMAND = 'npm install -g openplanr';
15
+ /** @type {typeof import('./backlog-item.d.mts').CLI_HINT} */
16
+ export const CLI_HINT = `Install the OpenPlanr CLI to manage these items: ${CLI_INSTALL_COMMAND}`;
17
+
18
+ /** @type {typeof import('./backlog-item.d.mts').reserveNextId} */
19
+ export async function reserveNextId(dir, prefix) {
20
+ const issuedDir = join(dir, ISSUED_IDS_DIR);
21
+ await mkdir(issuedDir, { recursive: true });
22
+ const pattern = new RegExp(`^${prefix.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&')}-(\\d{3,})`, 'u');
23
+ let next = 1;
24
+ for (const directory of [dir, issuedDir]) {
25
+ for (const entry of await readdir(directory, { withFileTypes: true })) {
26
+ const match = entry.isDirectory() ? null : pattern.exec(entry.name);
27
+ if (match) next = Math.max(next, Number.parseInt(match[1], 10) + 1);
28
+ }
29
+ }
30
+ for (; ; next++) {
31
+ const id = `${prefix}-${String(next).padStart(3, '0')}`;
32
+ try {
33
+ await writeFile(join(issuedDir, id), '', { flag: 'wx' });
34
+ return id;
35
+ } catch (error) {
36
+ if (/** @type {NodeJS.ErrnoException} */ (error).code !== 'EEXIST') throw error;
37
+ }
38
+ }
39
+ }
40
+
41
+ /** @type {typeof import('./backlog-item.d.mts').slugify} */
42
+ export function slugify(text, maxLength = 80) {
43
+ let slug = text
44
+ .toLowerCase()
45
+ .trim()
46
+ .replace(/[^\w\s-]/g, '')
47
+ .replace(/[\s_]+/g, '-')
48
+ .replace(/-+/g, '-')
49
+ .replace(/^-+|-+$/g, '');
50
+ if (slug.length > maxLength) {
51
+ slug = slug.slice(0, maxLength);
52
+ // Trim at the last whole-word boundary to avoid cut-off words.
53
+ const lastDash = slug.lastIndexOf('-');
54
+ if (lastDash > 0) slug = slug.slice(0, lastDash);
55
+ }
56
+ return slug;
57
+ }
58
+
59
+ /** @param {unknown} value */
60
+ function strings(value) {
61
+ if (Array.isArray(value)) return value.map(String).filter(Boolean);
62
+ if (typeof value === 'string')
63
+ return value
64
+ .split(',')
65
+ .map((item) => item.trim())
66
+ .filter(Boolean);
67
+ return [];
68
+ }
69
+
70
+ /** @param {unknown} value */
71
+ function optionalText(value) {
72
+ return value === undefined || value === null || value === '' ? undefined : value;
73
+ }
74
+
75
+ const PRIORITIES = Object.freeze(['critical', 'high', 'medium', 'low']);
76
+
77
+ /** Bad backlog input; the code lets the CLI report it as an input error, not a crash. */
78
+ class BacklogInputError extends Error {
79
+ /** @param {string} message */
80
+ constructor(message) {
81
+ super(message);
82
+ this.name = 'BacklogInputError';
83
+ this.code = 'E_BACKLOG_INVALID';
84
+ }
85
+ }
86
+
87
+ /** @type {typeof import('./backlog-item.d.mts').backlogFields} */
88
+ export function backlogFields(input) {
89
+ const title = String(input.title ?? input.name ?? '').trim();
90
+ if (!title) throw new BacklogInputError('A backlog item needs a non-empty title.');
91
+ const priority = String(input.priority ?? 'medium');
92
+ if (!PRIORITIES.includes(priority))
93
+ throw new BacklogInputError(
94
+ `Backlog priority ${JSON.stringify(priority)} is not valid; use one of ${PRIORITIES.join(', ')}.`,
95
+ );
96
+ const criteria = optionalText(input.acceptanceCriteria);
97
+ const notes = optionalText(input.notes);
98
+ const epicId = optionalText(input.epicId);
99
+ return {
100
+ title,
101
+ priority,
102
+ tags: strings(input.tags),
103
+ description: String(input.description ?? title),
104
+ ...(criteria === undefined
105
+ ? {}
106
+ : { acceptanceCriteria: Array.isArray(criteria) ? criteria.map(String) : String(criteria) }),
107
+ ...(notes === undefined ? {} : { notes: String(notes) }),
108
+ ...(epicId === undefined ? {} : { epicId: String(epicId) }),
109
+ };
110
+ }
111
+
112
+ /** @type {typeof import('./backlog-item.d.mts').renderBacklogItem} */
113
+ export function renderBacklogItem(id, fields, date) {
114
+ const quote = JSON.stringify;
115
+ const lines = [
116
+ '---',
117
+ `id: ${quote(id)}`,
118
+ `title: ${quote(fields.title)}`,
119
+ `priority: ${quote(fields.priority)}`,
120
+ `tags: [${fields.tags.map((tag) => quote(tag)).join(', ')}]`,
121
+ 'status: "open"',
122
+ `created: ${quote(date)}`,
123
+ `updated: ${quote(date)}`,
124
+ ...(fields.epicId ? [`epicId: ${quote(fields.epicId)}`] : []),
125
+ '---',
126
+ '',
127
+ `# ${id}: ${fields.title}`,
128
+ '',
129
+ ];
130
+ /** @param {string} heading @param {string} body @param {boolean} [spaced] */
131
+ const section = (heading, body, spaced = false) =>
132
+ lines.push(`## ${heading}`, ...(spaced ? [''] : []), body, '');
133
+ if (fields.tags.length > 0)
134
+ section('Tags', fields.tags.map((tag) => `- ${tag}`).join('\n'), true);
135
+ // A description with its own sections stands alone instead of nesting under another heading.
136
+ if (/^## /u.test(fields.description)) lines.push(fields.description, '');
137
+ else if (fields.description !== fields.title) section('Description', fields.description);
138
+ if (fields.acceptanceCriteria !== undefined && fields.acceptanceCriteria.length > 0)
139
+ section(
140
+ 'Acceptance Criteria',
141
+ Array.isArray(fields.acceptanceCriteria)
142
+ ? fields.acceptanceCriteria.map((criterion) => `- ${criterion}`).join('\n')
143
+ : fields.acceptanceCriteria,
144
+ );
145
+ if (fields.notes) section('Notes', fields.notes);
146
+ lines.push('---', `_Close when done: \`openplanr backlog update ${id} --status closed\`_`, '');
147
+ return lines.join('\n');
148
+ }
149
+
150
+ /** @type {typeof import('./backlog-item.d.mts').writeBacklogItem} */
151
+ export async function writeBacklogItem(backlogDir, prefix, fields, date) {
152
+ await mkdir(backlogDir, { recursive: true });
153
+ const id = await reserveNextId(backlogDir, prefix);
154
+ const filePath = join(backlogDir, `${id}-${slugify(fields.title)}.md`);
155
+ await writeFile(filePath, renderBacklogItem(id, fields, date));
156
+ return { id, filePath };
157
+ }
158
+
159
+ /** @param {string} projectDir */
160
+ async function projectConfig(projectDir) {
161
+ const configPath = join(projectDir, '.planr', 'config.json');
162
+ let raw;
163
+ try {
164
+ raw = await readFile(configPath, 'utf8');
165
+ } catch (error) {
166
+ if (/** @type {NodeJS.ErrnoException} */ (error).code === 'ENOENT')
167
+ throw new Error(
168
+ `No OpenPlanr project at ${projectDir}: ${configPath} is missing. Run \`openplanr init\` or pass the project root.`,
169
+ );
170
+ throw error;
171
+ }
172
+ let config;
173
+ try {
174
+ config = JSON.parse(raw);
175
+ } catch (error) {
176
+ throw new Error(`${configPath} is not valid JSON: ${/** @type {Error} */ (error).message}`);
177
+ }
178
+ return { configPath, raw, config };
179
+ }
180
+
181
+ /** @param {string} projectDir */
182
+ async function projectBacklog(projectDir) {
183
+ const { config } = await projectConfig(projectDir);
184
+ const agile = String(config.outputPaths?.agile ?? '.planr').replaceAll('\\', '/');
185
+ return {
186
+ backlogDir: resolve(projectDir, agile, 'backlog'),
187
+ prefix: String(config.idPrefix?.backlog ?? 'BL'),
188
+ templateOverrides:
189
+ typeof config.templateOverrides === 'string' ? config.templateOverrides : undefined,
190
+ };
191
+ }
192
+
193
+ /** @param {string} projectDir @param {string} filePath */
194
+ const relativePath = (projectDir, filePath) => relative(projectDir, filePath).split(sep).join('/');
195
+
196
+ /** @type {typeof import('./backlog-item.d.mts').createBacklogItem} */
197
+ export async function createBacklogItem(
198
+ projectDir,
199
+ input,
200
+ date = new Date().toISOString().split('T')[0],
201
+ ) {
202
+ const { backlogDir, prefix } = await projectBacklog(projectDir);
203
+ const fields = backlogFields(input);
204
+ const { id, filePath } = await writeBacklogItem(backlogDir, prefix, fields, date);
205
+ return { id, title: fields.title, artifactPath: relativePath(projectDir, filePath) };
206
+ }
207
+
208
+ /**
209
+ * Top-level scalar frontmatter fields; double-quoted values are read as JSON strings.
210
+ * @param {string} text
211
+ * @param {string} filePath
212
+ */
213
+ function frontmatter(text, filePath) {
214
+ const block = /^---\n([\s\S]*?)\n---/u.exec(text.replace(/\r\n/gu, '\n'))?.[1] ?? '';
215
+ /** @type {Record<string, string>} */
216
+ const fields = {};
217
+ for (const line of block.split('\n')) {
218
+ const match = /^(\w+):\s*(.*)$/u.exec(line);
219
+ if (!match) continue;
220
+ const value = match[2].trim();
221
+ if (!value.startsWith('"')) {
222
+ fields[match[1]] = value.replace(/^'(.*)'$/u, '$1');
223
+ continue;
224
+ }
225
+ try {
226
+ fields[match[1]] = String(JSON.parse(value));
227
+ } catch (error) {
228
+ throw new Error(
229
+ `${filePath}: frontmatter field "${match[1]}" is not a valid quoted string: ${/** @type {Error} */ (error).message}`,
230
+ );
231
+ }
232
+ }
233
+ return fields;
234
+ }
235
+
236
+ /** @type {typeof import('./backlog-item.d.mts').listOpenBacklog} */
237
+ export async function listOpenBacklog(projectDir) {
238
+ const { backlogDir } = await projectBacklog(projectDir);
239
+ let names;
240
+ try {
241
+ names = await readdir(backlogDir);
242
+ } catch (error) {
243
+ if (/** @type {NodeJS.ErrnoException} */ (error).code === 'ENOENT') return [];
244
+ throw error;
245
+ }
246
+ const items = [];
247
+ for (const name of names.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))) {
248
+ const match = /^([A-Z]+-\d{3,})-.+\.md$/u.exec(name);
249
+ if (!match) continue;
250
+ const filePath = join(backlogDir, name);
251
+ const fields = frontmatter(await readFile(filePath, 'utf8'), filePath);
252
+ const status = fields.status ?? 'open';
253
+ if (CLOSED_STATUSES.has(status)) continue;
254
+ items.push({
255
+ id: fields.id ?? match[1],
256
+ title: fields.title ?? name.slice(match[1].length + 1, -3).replace(/-/g, ' '),
257
+ status,
258
+ path: relativePath(projectDir, filePath),
259
+ });
260
+ }
261
+ return items;
262
+ }
263
+
264
+ /** @type {typeof import('./backlog-item.d.mts').takeCliHint} */
265
+ export async function takeCliHint(projectDir) {
266
+ const { configPath, raw, config } = await projectConfig(projectDir);
267
+ if (config.findings?.cliHintShown === true) return null;
268
+ const next = { ...config, findings: { ...config.findings, cliHintShown: true } };
269
+ const indent = /\n(\t| +)"/u.exec(raw)?.[1] ?? ' ';
270
+ await writeFile(configPath, `${JSON.stringify(next, null, indent)}\n`);
271
+ return CLI_HINT;
272
+ }
273
+
274
+ /** @param {string} source */
275
+ async function readInput(source) {
276
+ const text =
277
+ source === '-'
278
+ ? await new Promise((done, fail) => {
279
+ let value = '';
280
+ process.stdin.setEncoding('utf8');
281
+ process.stdin.on('data', (chunk) => {
282
+ value += chunk;
283
+ });
284
+ process.stdin.on('end', () => done(value));
285
+ process.stdin.on('error', fail);
286
+ })
287
+ : await readFile(resolve(source), 'utf8');
288
+ const parsed = JSON.parse(String(text));
289
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
290
+ throw new Error('Backlog input must be one JSON object with at least a title.');
291
+ return parsed;
292
+ }
293
+
294
+ const USAGE =
295
+ 'Usage: backlog-item.mjs add --project <dir> --data <file|->\n backlog-item.mjs list --project <dir> --open\n';
296
+
297
+ /** @param {string[]} argv */
298
+ async function main(argv) {
299
+ const [command, ...rest] = argv;
300
+ /** @type {Record<string, string | boolean>} */
301
+ const options = {};
302
+ for (let index = 0; index < rest.length; index += 1) {
303
+ const flag = rest[index];
304
+ if (flag === '--open') options.open = true;
305
+ else if (flag === '--project' || flag === '--data')
306
+ options[flag.slice(2)] = rest[++index] ?? '';
307
+ else throw new Error(`Unknown argument: ${flag}\n${USAGE}`);
308
+ }
309
+ const projectDir = resolve(String(options.project ?? '.'));
310
+ if (command === 'add') {
311
+ if (typeof options.data !== 'string' || !options.data)
312
+ throw new Error(`add needs --data.\n${USAGE}`);
313
+ const { templateOverrides } = await projectBacklog(projectDir);
314
+ const result = await createBacklogItem(projectDir, await readInput(options.data));
315
+ const cliHint = await takeCliHint(projectDir);
316
+ process.stdout.write(
317
+ `${JSON.stringify({
318
+ ok: true,
319
+ action: 'backlog.created',
320
+ ...result,
321
+ ...(templateOverrides ? { templateOverrideIgnored: true } : {}),
322
+ ...(cliHint ? { cliHint } : {}),
323
+ })}\n`,
324
+ );
325
+ return;
326
+ }
327
+ if (command === 'list' && options.open) {
328
+ process.stdout.write(`${JSON.stringify({ items: await listOpenBacklog(projectDir) })}\n`);
329
+ return;
330
+ }
331
+ throw new Error(USAGE);
332
+ }
333
+
334
+ if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
335
+ main(process.argv.slice(2)).catch((error) => {
336
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
337
+ process.exit(1);
338
+ });
339
+ }
@@ -1,12 +1,12 @@
1
1
  ---
2
- description: "Implement an OpenPlanr plan, specification, task, or clearly stated request end to end in the current repository. Use when the user asks to build, implement, fix, finish, or ship local work."
2
+ description: "Implement an OpenPlanr plan, specification, task, or clearly stated request end to end in the current repository. Use when the user asks to build, implement, fix, finish, or ship local work, or to plan and implement an accepted change. Invoke before editing files for the requested change. Not for planning only, landing, release, or work handed to another coding agent."
3
3
  alwaysApply: false
4
4
  ---
5
5
 
6
6
  # OpenPlanr Ship
7
7
 
8
- Produce an implementation-complete local repository in this active coding
9
- session. Landing and release preparation belong to `planr-land`. Ordinary
8
+ Produce an implementation-complete local repository in this active coding session.
9
+ Landing and release preparation belong to `planr-land`. Ordinary
10
10
  Ship stays host-native. Do not delegate implementation to a command-line or model subprocess. If the user explicitly asks another coding agent to implement,
11
11
  hand off to `planr-delegate` before implementation. That separate opt-in workflow
12
12
  previews the selected context, writable repository, profile, and destination;
@@ -39,13 +39,34 @@ context is sufficient; missing planning files do not create a gate.
39
39
 
40
40
  ## Implement with native roles
41
41
 
42
- Use the host's read, edit, shell, browser, and test capabilities. When native
43
- agents are available, dispatch only the applicable frontend, backend, database,
44
- QA, DevOps, and documentation roles inside this session. Give each role its
45
- owned outcome, relevant context paths, and explicit file coordination boundary.
46
- Run independent work in parallel. Host-native role agents remain part of this
47
- Ship session and do not invoke the separate `planr-delegate` helper. When native
48
- agents are unavailable, perform the same lenses sequentially in the active agent.
42
+ The main session owns scope, decisions, integration, and final verification.
43
+ Use the host's read, edit, shell, browser, and test capabilities inside this session.
44
+ Keep small coherent changes in this session. Delegate only a self-contained
45
+ outcome that benefits from context isolation, a distinct capability boundary,
46
+ or independent parallel work; agent availability alone is not a reason to dispatch.
47
+
48
+ Frontend and backend own substantial bounded implementation assignments.
49
+ Persistence implementation, including a task carrying the legacy `db-agent`
50
+ identity, belongs to backend with the relevant database guidance; preserve the
51
+ task's recorded identity. Database is optional read-only introspection when
52
+ repository schemas are insufficient, never migration implementation. Keep small
53
+ documentation updates with their implementation; delegate substantial documentation
54
+ or requested configuration work separately. DevOps never deploys. Entity
55
+ scaffolding remains manual, on explicit request.
56
+
57
+ Use a separate QA reviewer for authorization, credentials, data-loss risk,
58
+ migrations, public contracts, release behavior, or substantial delegated
59
+ implementation. Small low-risk edits use focused verification in the main session.
60
+ QA retains verification tools, subject to role policy and session permissions.
61
+
62
+ Select the exact registered identity from the host's roster; Claude plugin
63
+ agents use names such as `planr:planr-backend` and `planr:planr-qa`. Give each worker
64
+ its outcome, authoritative paths, relevant decisions, file ownership, verification
65
+ requirements, and concise return expectations. Parallel workers need disjoint
66
+ writes or an agreed interface. Explain the delegation's purpose briefly in
67
+ commentary. Host-native workers do not invoke the separate `planr-delegate` helper.
68
+ When the host lacks the native role, perform the work sequentially in this session
69
+ and disclose capability limitations; never claim an unavailable specialist ran.
49
70
 
50
71
  Integrate the complete change, then verify behavior. `reviewRisks` and
51
72
  `browserSurfaces` select useful checks; empty arrays are normal and neither field
@@ -60,10 +81,15 @@ Discover checks in this order:
60
81
  3. package and task-runner scripts;
61
82
  4. applicable CI and pre-commit configuration.
62
83
 
63
- The packaged read-only [verification discovery helper](planr-ship/scripts/discover-verification.mjs)
64
- may list candidates. Resolve it relative to this `SKILL.md` and run
84
+ Run `openplanr ship checks --json --task <task-path>` (omit `--task` for a direct
85
+ request; add `--tier story` or `--tier push` before pushing) and run its `checks`
86
+ from each `cwd`. The command never executes checks or writes files. When
87
+ `complete` is `false`, report its error diagnostics and treat the check set as
88
+ incomplete: a pass is not CI-equivalent. Without the CLI, the packaged read-only
89
+ [verification discovery helper](planr-ship/scripts/discover-verification.mjs) may list
90
+ candidates. Resolve it relative to this `SKILL.md` and run
65
91
  `node <helper> --project <repository-root> --task <task-path>`; omit `--task` for a
66
- direct request. It never executes checks or writes files. If it is unavailable,
92
+ direct request. It never executes checks or writes files. If both are unavailable,
67
93
  inspect those four sources directly. Missing commands are diagnostics, not a
68
94
  reason to invent or skip all verification.
69
95
 
@@ -73,6 +99,11 @@ it by its own exit code; to shorten output, write it to a log and read the tail.
73
99
  Fix failures caused by the change and rerun affected checks.
74
100
  Read [the result contract](planr-ship/references/result-contract.md) before reporting.
75
101
 
102
+ Report defects you notice outside the task as [findings](planr-ship/references/findings.md),
103
+ and never fix them in this change unless they block it. The packaged
104
+ [backlog helper](planr-ship/scripts/backlog-item.mjs) lists and files backlog items when no
105
+ CLI is installed; resolve it relative to this `SKILL.md`.
106
+
76
107
  Do not write progress into an approved design package. The studio derives
77
108
  approved, planned, implementing, and verified state from canonical planning and
78
109
  Ship artifacts after this separate invocation.
@@ -88,7 +119,8 @@ results instead of reproducing them in chat.
88
119
  - **Task:** task ID and path, or `direct-request`.
89
120
  - **Changed:** material paths grouped by purpose.
90
121
  - **Checks:** command, `passed`, `failed`, or `not-run`, plus a concise result.
91
- - **Issues:** problem, impact, and next action, or `none`.
122
+ - **Issues:** blockers with problem, impact, and next action, or `none`; then
123
+ findings outside the task, each with its disposition.
92
124
 
93
125
  Keep the five machine fields unchanged. A human summary may omit empty or unavailable fields,
94
126
  but must make partial, blocked or unverified work clear and give the smallest
@@ -30,7 +30,9 @@ template:
30
30
 
31
31
  Keep evidence and rollback as useful planning context, not approval gates or
32
32
  receipt requirements. A risk-specialist section may be empty when no specialist
33
- lens applies.
33
+ lens applies. Under `## Notes for Decomposition`, list each decision made without
34
+ an answer as a bullet starting `Assumption:` that names the decision and the
35
+ alternative not taken.
34
36
 
35
37
  For a repository intentionally using default mode, write
36
38
  `input/specs/spec-{slug}.md` and preserve its active schema. Do not create a
@@ -22,6 +22,12 @@ mutually exclusive questions at once and put the recommended option first. If
22
22
  the host lacks that interface, ask one concise chat question. Do not present a
23
23
  long prose questionnaire.
24
24
 
25
+ If no one can answer, as in a headless run, do not ask: choose the
26
+ repository-backed default, or the recommended one when the repository does not
27
+ settle it, and record each such choice as a bullet starting `Assumption:` under
28
+ `## Notes for Decomposition`, naming the decision and the alternative not taken.
29
+ Record a decision you settle inside a functional requirement the same way.
30
+
25
31
  When native agents are available, use the specification role to consolidate the
26
32
  contract and dispatch database or designer roles only when their lens affects
27
33
  the decision. Otherwise perform those lenses sequentially in the active agent.
@@ -3,12 +3,10 @@
3
3
  OpenPlanr skills name a kind of service, such as `~~chat`, instead of a product. Connect
4
4
  the product your team uses through your host: the vendor publishes the connector, and
5
5
  you sign in through the host. OpenPlanr bundles no connectors; they and their credentials
6
- live in your host. Two optional features need a token: Linear sync (`openplanr linear`) and
7
- company sign-in (`openplanr company login`). Only when you use them does OpenPlanr store a
8
- token, in your OS keychain, or in an encrypted file at `~/.planr/credentials.enc` if you set
9
- `PLANR_CREDENTIAL_FILE_PASSPHRASE`. Tokens are sent only to Linear or to the company server
10
- you sign in to.
11
- `openplanr company logout` removes company tokens.
6
+ live in your host. One optional feature needs a token: Linear sync (`openplanr linear`).
7
+ Only when you use it does OpenPlanr store a token, in your OS keychain, or in an encrypted
8
+ file at `~/.planr/credentials.enc` if you set `PLANR_CREDENTIAL_FILE_PASSPHRASE`. The token
9
+ is sent only to Linear.
12
10
  Every skill also works with nothing connected and reports any remote step it skipped.
13
11
 
14
12
  | Category | Placeholder | Products |
@@ -3,12 +3,10 @@
3
3
  OpenPlanr skills name a kind of service, such as `~~chat`, instead of a product. Connect
4
4
  the product your team uses through your host: the vendor publishes the connector, and
5
5
  you sign in through the host. OpenPlanr bundles no connectors; they and their credentials
6
- live in your host. Two optional features need a token: Linear sync (`openplanr linear`) and
7
- company sign-in (`openplanr company login`). Only when you use them does OpenPlanr store a
8
- token, in your OS keychain, or in an encrypted file at `~/.planr/credentials.enc` if you set
9
- `PLANR_CREDENTIAL_FILE_PASSPHRASE`. Tokens are sent only to Linear or to the company server
10
- you sign in to.
11
- `openplanr company logout` removes company tokens.
6
+ live in your host. One optional feature needs a token: Linear sync (`openplanr linear`).
7
+ Only when you use it does OpenPlanr store a token, in your OS keychain, or in an encrypted
8
+ file at `~/.planr/credentials.enc` if you set `PLANR_CREDENTIAL_FILE_PASSPHRASE`. The token
9
+ is sent only to Linear.
12
10
  Every skill also works with nothing connected and reports any remote step it skipped.
13
11
 
14
12
  | Category | Placeholder | Products |
@@ -3,12 +3,10 @@
3
3
  OpenPlanr skills name a kind of service, such as `~~chat`, instead of a product. Connect
4
4
  the product your team uses through your host: the vendor publishes the connector, and
5
5
  you sign in through the host. OpenPlanr bundles no connectors; they and their credentials
6
- live in your host. Two optional features need a token: Linear sync (`openplanr linear`) and
7
- company sign-in (`openplanr company login`). Only when you use them does OpenPlanr store a
8
- token, in your OS keychain, or in an encrypted file at `~/.planr/credentials.enc` if you set
9
- `PLANR_CREDENTIAL_FILE_PASSPHRASE`. Tokens are sent only to Linear or to the company server
10
- you sign in to.
11
- `openplanr company logout` removes company tokens.
6
+ live in your host. One optional feature needs a token: Linear sync (`openplanr linear`).
7
+ Only when you use it does OpenPlanr store a token, in your OS keychain, or in an encrypted
8
+ file at `~/.planr/credentials.enc` if you set `PLANR_CREDENTIAL_FILE_PASSPHRASE`. The token
9
+ is sent only to Linear.
12
10
  Every skill also works with nothing connected and reports any remote step it skipped.
13
11
 
14
12
  | Category | Placeholder | Products |
@@ -3,7 +3,7 @@ import {
3
3
  } from "./design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs";
4
4
  import {
5
5
  validateJson
6
- } from "./design-shared-protocol-contracts-31a760fc.mjs";
6
+ } from "./design-shared-protocol-contracts-b5f28f94.mjs";
7
7
 
8
8
  // packages/artifact/lib/artifact/ui/shell.mjs
9
9
  import { readFileSync as readFileSync2 } from "node:fs";
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  LARGE_OBJECT_LIMITS,
11
11
  assertLargeObjectContract
12
- } from "./design-shared-protocol-contracts-31a760fc.mjs";
12
+ } from "./design-shared-protocol-contracts-b5f28f94.mjs";
13
13
  import {
14
14
  canonicalizeJson,
15
15
  sha256Hex