openplanr 3.2.0 → 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 (231) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cli/commands/spec.d.ts +2 -1
  3. package/dist/cli/commands/spec.d.ts.map +1 -1
  4. package/dist/cli/commands/spec.js +45 -5
  5. package/dist/cli/commands/spec.js.map +1 -1
  6. package/dist/dashboard/.vite/manifest.json +1 -1
  7. package/dist/dashboard/assets/index-B_96uzCl.js +572 -0
  8. package/dist/dashboard/assets/index-B_96uzCl.js.map +1 -0
  9. package/dist/dashboard/dashboard-manifest.json +10 -10
  10. package/dist/dashboard/index.html +1 -1
  11. package/dist/services/claude-plugin-service.d.ts +5 -0
  12. package/dist/services/claude-plugin-service.d.ts.map +1 -1
  13. package/dist/services/claude-plugin-service.js +18 -2
  14. package/dist/services/claude-plugin-service.js.map +1 -1
  15. package/dist/services/codex-plugin-service.d.ts.map +1 -1
  16. package/dist/services/codex-plugin-service.js +11 -3
  17. package/dist/services/codex-plugin-service.js.map +1 -1
  18. package/dist/services/runtime-manager/codex-discovery.d.ts +1 -3
  19. package/dist/services/runtime-manager/codex-discovery.d.ts.map +1 -1
  20. package/dist/services/runtime-manager/codex-discovery.js +3 -16
  21. package/dist/services/runtime-manager/codex-discovery.js.map +1 -1
  22. package/dist/services/runtime-manager/doctor.d.ts +25 -0
  23. package/dist/services/runtime-manager/doctor.d.ts.map +1 -1
  24. package/dist/services/runtime-manager/doctor.js +480 -0
  25. package/dist/services/runtime-manager/doctor.js.map +1 -1
  26. package/dist/services/runtime-manager/errors.d.ts +12 -0
  27. package/dist/services/runtime-manager/errors.d.ts.map +1 -0
  28. package/dist/services/runtime-manager/errors.js +14 -0
  29. package/dist/services/runtime-manager/errors.js.map +1 -0
  30. package/dist/services/runtime-manager/global-state.d.ts +7 -0
  31. package/dist/services/runtime-manager/global-state.d.ts.map +1 -1
  32. package/dist/services/runtime-manager/global-state.js +116 -0
  33. package/dist/services/runtime-manager/global-state.js.map +1 -1
  34. package/dist/services/runtime-manager/host-version-probe.d.ts +8 -0
  35. package/dist/services/runtime-manager/host-version-probe.d.ts.map +1 -0
  36. package/dist/services/runtime-manager/host-version-probe.js +14 -0
  37. package/dist/services/runtime-manager/host-version-probe.js.map +1 -0
  38. package/dist/services/runtime-manager/install-plan.d.ts +25 -0
  39. package/dist/services/runtime-manager/install-plan.d.ts.map +1 -1
  40. package/dist/services/runtime-manager/install-plan.js +305 -0
  41. package/dist/services/runtime-manager/install-plan.js.map +1 -1
  42. package/dist/services/runtime-manager/inventory.d.ts +6 -0
  43. package/dist/services/runtime-manager/inventory.d.ts.map +1 -1
  44. package/dist/services/runtime-manager/inventory.js +16 -1
  45. package/dist/services/runtime-manager/inventory.js.map +1 -1
  46. package/dist/services/runtime-manager/legacy-adapters.d.ts +9 -0
  47. package/dist/services/runtime-manager/legacy-adapters.d.ts.map +1 -0
  48. package/dist/services/runtime-manager/legacy-adapters.js +187 -0
  49. package/dist/services/runtime-manager/legacy-adapters.js.map +1 -0
  50. package/dist/services/runtime-manager/paths.d.ts +18 -0
  51. package/dist/services/runtime-manager/paths.d.ts.map +1 -0
  52. package/dist/services/runtime-manager/paths.js +83 -0
  53. package/dist/services/runtime-manager/paths.js.map +1 -0
  54. package/dist/services/runtime-manager/runtime-package.d.ts +21 -0
  55. package/dist/services/runtime-manager/runtime-package.d.ts.map +1 -1
  56. package/dist/services/runtime-manager/runtime-package.js +77 -0
  57. package/dist/services/runtime-manager/runtime-package.js.map +1 -1
  58. package/dist/services/runtime-manager/storage.d.ts +47 -0
  59. package/dist/services/runtime-manager/storage.d.ts.map +1 -0
  60. package/dist/services/runtime-manager/storage.js +604 -0
  61. package/dist/services/runtime-manager/storage.js.map +1 -0
  62. package/dist/services/runtime-manager-service.d.ts +7 -17
  63. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  64. package/dist/services/runtime-manager-service.js +32 -1695
  65. package/dist/services/runtime-manager-service.js.map +1 -1
  66. package/dist/services/ship-checks/contract.d.ts +13 -1
  67. package/dist/services/ship-checks/contract.d.ts.map +1 -1
  68. package/dist/services/ship-checks/contract.js +1 -1
  69. package/dist/services/ship-checks/contract.js.map +1 -1
  70. package/dist/services/ship-checks/coverage.d.ts +4 -0
  71. package/dist/services/ship-checks/coverage.d.ts.map +1 -0
  72. package/dist/services/ship-checks/coverage.js +113 -0
  73. package/dist/services/ship-checks/coverage.js.map +1 -0
  74. package/dist/services/ship-checks/discover.d.ts.map +1 -1
  75. package/dist/services/ship-checks/discover.js +3 -0
  76. package/dist/services/ship-checks/discover.js.map +1 -1
  77. package/dist/services/spec-service.d.ts +18 -0
  78. package/dist/services/spec-service.d.ts.map +1 -1
  79. package/dist/services/spec-service.js +174 -9
  80. package/dist/services/spec-service.js.map +1 -1
  81. package/dist/templates/spec/spec-shaped.md.hbs +1 -1
  82. package/dist/templates/spec/spec.md.hbs +2 -2
  83. package/docs/CLI.md +49 -2
  84. package/lib/host-packages/adapter-registry.json +5 -5
  85. package/lib/host-packages/capability-map.json +3 -3
  86. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  87. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  88. package/lib/host-packages/claude/openplanr/.openplanr-content.json +50 -46
  89. package/lib/host-packages/claude/openplanr/README.md +1 -1
  90. package/lib/host-packages/claude/openplanr/agents/planr-qa.md +5 -3
  91. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-document.mjs +87 -2
  92. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
  93. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  94. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +102 -9
  95. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +130 -1
  96. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design.mjs +271 -28
  97. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
  98. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +77 -1
  99. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  100. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  101. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
  102. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +5 -5
  103. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
  104. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
  105. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
  106. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
  107. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
  108. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  109. package/lib/host-packages/{cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0 → claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +131 -4
  110. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  111. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +78 -1
  112. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +30 -2
  113. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  114. package/lib/host-packages/claude/openplanr/skills/design/references/design-system.md +17 -2
  115. package/lib/host-packages/claude/openplanr/skills/design/references/generation.md +60 -2
  116. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +11 -1
  117. package/lib/host-packages/claude/openplanr/skills/design/schemas/design-document.schema.json +131 -4
  118. package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-system.md +17 -2
  119. package/lib/host-packages/claude/openplanr/skills/design-loop/references/generation.md +60 -2
  120. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +11 -1
  121. package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-document.schema.json +131 -4
  122. package/lib/host-packages/claude/openplanr/skills/design-review/references/design-system.md +17 -2
  123. package/lib/host-packages/claude/openplanr/skills/design-review/references/generation.md +60 -2
  124. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +11 -1
  125. package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-document.schema.json +131 -4
  126. package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +1 -1
  127. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +21 -11
  128. package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-document.schema.json +131 -4
  129. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +31 -10
  130. package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +6 -0
  131. package/lib/host-packages/claude/openplanr/skills/spec/references/specification-contract.md +3 -1
  132. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +48 -44
  133. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  134. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-system.md +17 -2
  135. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/generation.md +60 -2
  136. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +11 -1
  137. package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-document.schema.json +131 -4
  138. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-system.md +17 -2
  139. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/generation.md +60 -2
  140. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +11 -1
  141. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-document.schema.json +131 -4
  142. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-system.md +17 -2
  143. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/generation.md +60 -2
  144. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +11 -1
  145. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-document.schema.json +131 -4
  146. package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +1 -1
  147. package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-document.schema.json +131 -4
  148. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +21 -11
  149. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +31 -10
  150. package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/specification-contract.md +3 -1
  151. package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +6 -0
  152. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-document.mjs +87 -2
  153. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
  154. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  155. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +102 -9
  156. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +130 -1
  157. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design.mjs +271 -28
  158. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
  159. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +77 -1
  160. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  161. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  162. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
  163. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +5 -5
  164. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
  165. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
  166. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
  167. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
  168. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
  169. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  170. package/lib/host-packages/{openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0 → cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +131 -4
  171. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  172. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +78 -1
  173. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +30 -2
  174. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  175. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  176. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  177. package/lib/host-packages/openai/openplanr/.openplanr-content.json +54 -50
  178. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-document.mjs +87 -2
  179. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
  180. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  181. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +102 -9
  182. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +130 -1
  183. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design.mjs +271 -28
  184. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
  185. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +77 -1
  186. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  187. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  188. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
  189. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +5 -5
  190. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
  191. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
  192. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
  193. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
  194. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
  195. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  196. package/lib/host-packages/{claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0 → openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +131 -4
  197. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  198. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +78 -1
  199. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +30 -2
  200. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  201. package/lib/host-packages/openai/openplanr/skills/design/references/design-system.md +17 -2
  202. package/lib/host-packages/openai/openplanr/skills/design/references/generation.md +60 -2
  203. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +11 -1
  204. package/lib/host-packages/openai/openplanr/skills/design/schemas/design-document.schema.json +131 -4
  205. package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-system.md +17 -2
  206. package/lib/host-packages/openai/openplanr/skills/design-loop/references/generation.md +60 -2
  207. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +11 -1
  208. package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-document.schema.json +131 -4
  209. package/lib/host-packages/openai/openplanr/skills/design-review/references/design-system.md +17 -2
  210. package/lib/host-packages/openai/openplanr/skills/design-review/references/generation.md +60 -2
  211. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +11 -1
  212. package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-document.schema.json +131 -4
  213. package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +1 -1
  214. package/lib/host-packages/openai/openplanr/skills/investigate/agents/openai.yaml +1 -1
  215. package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +1 -1
  216. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +21 -11
  217. package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +1 -1
  218. package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-document.schema.json +131 -4
  219. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +31 -10
  220. package/lib/host-packages/openai/openplanr/skills/ship/agents/openai.yaml +1 -1
  221. package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +1 -1
  222. package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +6 -0
  223. package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +1 -1
  224. package/lib/host-packages/openai/openplanr/skills/spec/references/specification-contract.md +3 -1
  225. package/lib/json-schema.mjs +4 -0
  226. package/package.json +12 -12
  227. package/dist/dashboard/assets/index-L8qtwqv6.js +0 -572
  228. package/dist/dashboard/assets/index-L8qtwqv6.js.map +0 -1
  229. /package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-runtime-support-6774fd3d5d02.mjs → design-runtime-support-25485dbf1cb2.mjs} +0 -0
  230. /package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-runtime-support-6774fd3d5d02.mjs → design-runtime-support-25485dbf1cb2.mjs} +0 -0
  231. /package/lib/host-packages/openai/openplanr/runtime/design/scripts/{design-runtime-support-6774fd3d5d02.mjs → design-runtime-support-25485dbf1cb2.mjs} +0 -0
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://openplanr.dev/schemas/v1.20.0/design-document.schema.json",
3
+ "$id": "https://openplanr.dev/schemas/v1.22.0/design-document.schema.json",
4
4
  "x-openplanr-contract": {
5
5
  "id": "design-document",
6
- "version": "1.20.0"
6
+ "version": "1.22.0"
7
7
  },
8
8
  "title": "OpenPlanr authored design document",
9
9
  "type": "object",
@@ -26,7 +26,10 @@
26
26
  "const": "openplanr-design-document"
27
27
  },
28
28
  "schemaVersion": {
29
- "const": "1.0.0"
29
+ "enum": [
30
+ "1.0.0",
31
+ "1.1.0"
32
+ ]
30
33
  },
31
34
  "id": {
32
35
  "$ref": "#/$defs/id"
@@ -158,6 +161,66 @@
158
161
  },
159
162
  "anchors": {
160
163
  "$ref": "#/$defs/ids"
164
+ },
165
+ "props": {
166
+ "type": "object",
167
+ "propertyNames": {
168
+ "type": "string",
169
+ "minLength": 1,
170
+ "maxLength": 128,
171
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
172
+ },
173
+ "additionalProperties": {
174
+ "oneOf": [
175
+ {
176
+ "type": "object",
177
+ "additionalProperties": false,
178
+ "required": [
179
+ "type",
180
+ "options",
181
+ "default"
182
+ ],
183
+ "properties": {
184
+ "type": {
185
+ "const": "enum"
186
+ },
187
+ "options": {
188
+ "type": "array",
189
+ "minItems": 1,
190
+ "uniqueItems": true,
191
+ "items": {
192
+ "type": "string",
193
+ "minLength": 1,
194
+ "maxLength": 128,
195
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
196
+ }
197
+ },
198
+ "default": {
199
+ "type": "string",
200
+ "minLength": 1,
201
+ "maxLength": 128,
202
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
203
+ }
204
+ }
205
+ },
206
+ {
207
+ "type": "object",
208
+ "additionalProperties": false,
209
+ "required": [
210
+ "type",
211
+ "default"
212
+ ],
213
+ "properties": {
214
+ "type": {
215
+ "const": "boolean"
216
+ },
217
+ "default": {
218
+ "type": "boolean"
219
+ }
220
+ }
221
+ }
222
+ ]
223
+ }
161
224
  }
162
225
  }
163
226
  }
@@ -232,6 +295,34 @@
232
295
  "additionalProperties": {
233
296
  "$ref": "#/$defs/source"
234
297
  }
298
+ },
299
+ "props": {
300
+ "type": "object",
301
+ "propertyNames": {
302
+ "$ref": "#/$defs/id"
303
+ },
304
+ "additionalProperties": {
305
+ "type": "object",
306
+ "propertyNames": {
307
+ "type": "string",
308
+ "minLength": 1,
309
+ "maxLength": 128,
310
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
311
+ },
312
+ "additionalProperties": {
313
+ "anyOf": [
314
+ {
315
+ "type": "string",
316
+ "minLength": 1,
317
+ "maxLength": 128,
318
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
319
+ },
320
+ {
321
+ "type": "boolean"
322
+ }
323
+ ]
324
+ }
325
+ }
235
326
  }
236
327
  },
237
328
  "if": {
@@ -375,5 +466,41 @@
375
466
  "minimum": -10000000,
376
467
  "maximum": 10000000
377
468
  }
378
- }
469
+ },
470
+ "allOf": [
471
+ {
472
+ "if": {
473
+ "properties": {
474
+ "schemaVersion": {
475
+ "const": "1.1.0"
476
+ }
477
+ },
478
+ "required": [
479
+ "schemaVersion"
480
+ ]
481
+ },
482
+ "else": {
483
+ "properties": {
484
+ "screens": {
485
+ "items": {
486
+ "not": {
487
+ "required": [
488
+ "props"
489
+ ]
490
+ }
491
+ }
492
+ },
493
+ "variants": {
494
+ "items": {
495
+ "not": {
496
+ "required": [
497
+ "props"
498
+ ]
499
+ }
500
+ }
501
+ }
502
+ }
503
+ }
504
+ }
505
+ ]
379
506
  }
@@ -54,8 +54,23 @@ while authoring:
54
54
  - at most two families and three weights each; one variable file can cover a
55
55
  family's weights.
56
56
 
57
- Snapshotting needs network access while authoring. When it is unavailable, or a
58
- license is unclear, use the role's system stack and name that fallback in the return:
57
+ Snapshot with the bundled helper, run from the skill directory (see
58
+ [utilities.md](utilities.md)):
59
+
60
+ ```sh
61
+ node scripts/design.mjs fonts fetch --family "Inter:400,600" --family "Source Serif 4:400" --dest <design>/source/assets/fonts
62
+ ```
63
+
64
+ It is the one command to ask approval for. A host that allowlists network access by
65
+ domain needs `raw.githubusercontent.com`, `fonts.googleapis.com` and
66
+ `fonts.gstatic.com`. It enforces the rules above, verifies each
67
+ license from the Google Fonts catalog, writes `fonts.css`, and prints the files and
68
+ total bytes. Start the design stylesheet with `@import "assets/fonts/fonts.css";`
69
+ (relative to that stylesheet), then use the families by name. Nothing is fetched when
70
+ a design opens.
71
+
72
+ When the host denies network access, the command fails, or it refuses a license, use
73
+ the role's system stack and name that fallback in the return:
59
74
 
60
75
  | Role | System stack |
61
76
  | --- | --- |
@@ -10,7 +10,8 @@ Use a versioned `design-document.json` and the bundled schema exposed by the
10
10
  local HTML/CSS/JavaScript, assets, screen order, responsive frames, interaction
11
11
  flows, selected direction, brief provenance and design-system references. Inspect
12
12
  the schema before creating the document; validate it before rendering. Use
13
- `schemaVersion: "1.0.0"` when authoring, revising, migrating or arranging documents.
13
+ `schemaVersion: "1.1.0"` for documents with screen or variant props. Documents without
14
+ props may keep `schemaVersion: "1.0.0"`.
14
15
 
15
16
  Read [team-review.md](team-review.md) and author a sibling `review-context.json`
16
17
  for every new design. Its welcome purpose and review questions belong to this
@@ -19,7 +20,9 @@ design, updating only what changed. Render it with the same revision as the
19
20
  screens so the shared welcome and implementation guidance describe that revision.
20
21
 
21
22
  Place source in a sibling `source/` directory. Shared CSS and components belong in
22
- shared source; variants write disjoint directories. Preserve IDs during evolution.
23
+ shared source. Distinct design directions may use disjoint directories; theme,
24
+ partial and state instances share a screen source through typed props. Preserve
25
+ IDs during evolution.
23
26
  All document source paths are local and relative to its directory; import the
24
27
  required asset snapshots rather than referring outside it or to remote resources.
25
28
  Fonts are asset snapshots too; follow [design-system.md](design-system.md).
@@ -57,6 +60,61 @@ observable. If the requested deliverable is an architecture or decision diagram
57
60
  rather than a product interface, route that content to the diagram workflow instead
58
61
  of styling documentation as a product screen.
59
62
 
63
+ ## Typed screen props
64
+
65
+ Declare reusable screen state in `screens[].props`. An enum declaration requires
66
+ `type: "enum"`, nonempty unique string `options`, and a `default` from those options.
67
+ A boolean declaration requires `type: "boolean"` and a boolean `default`. Prop names,
68
+ enum options and enum defaults must be lowercase tokens matching
69
+ `^[a-z][a-z0-9-]*$`, with at most 128 characters. Use `is-dark` and `dark-mode`,
70
+ for example; uppercase letters, spaces and underscores are invalid. Use props for
71
+ theme, partial content and state variants instead of copying HTML sources.
72
+
73
+ Set instance values in `variants[].props`, keyed first by screen ID and then prop
74
+ name. Omitted values use the screen defaults. For example:
75
+
76
+ ```json
77
+ {
78
+ "schemaVersion": "1.1.0",
79
+ "screens": [
80
+ {
81
+ "id": "overview",
82
+ "title": "Overview",
83
+ "source": { "html": "source/overview.html" },
84
+ "props": {
85
+ "theme": { "type": "enum", "options": ["light", "dark"], "default": "light" },
86
+ "partial": { "type": "boolean", "default": false }
87
+ }
88
+ }
89
+ ],
90
+ "variants": [
91
+ { "id": "light", "label": "Light", "status": "ready" },
92
+ {
93
+ "id": "dark",
94
+ "label": "Dark",
95
+ "status": "ready",
96
+ "props": { "overview": { "theme": "dark", "partial": true } }
97
+ }
98
+ ]
99
+ }
100
+ ```
101
+
102
+ Each source with props needs exactly one explicit `<body>` screen root. The
103
+ renderer writes effective values onto that body as `data-prop-theme="dark"`,
104
+ `data-prop-partial="true"`, `prop-theme-dark` and `prop-partial-true`; false booleans
105
+ also receive an attribute and class. Names and values are written unchanged,
106
+ without case conversion or encoding. A prop named `is-dark` becomes
107
+ `data-prop-is-dark="true"` and `prop-is-dark-true`; scripts read it as
108
+ `document.body.dataset.propIsDark`. Branch CSS and local scripts on these values.
109
+ A `variants[].sources[screenId]` override still selects the source; props
110
+ apply to that selected source, otherwise to `screens[].source`. Board keys,
111
+ screen order, responsive frames and existing source overrides retain their roles.
112
+
113
+ Lint warns about copied screens only when their source files are byte-identical
114
+ after removing body `data-theme="light"` or `data-theme="dark"` attributes and
115
+ `theme-light` or `theme-dark` body classes. Other markup, styles, scripts and assets
116
+ must match. Use a shared source with a theme prop for those instances.
117
+
60
118
  ## Views
61
119
 
62
120
  | View | Purpose | Required behavior |
@@ -2,7 +2,8 @@
2
2
 
3
3
  Run the linked design helper from the skill entrypoint relative to the skill's
4
4
  directory. It contains deterministic operations and all required assets. It needs
5
- Node.js 22.13 or later, with no global CLI, provider credentials or runtime downloads.
5
+ Node.js 22.13 or later, with no global CLI or provider credentials. Only `fonts fetch`
6
+ downloads anything, and only when run; nothing is fetched when a design opens.
6
7
  Use `--help` to inspect the installed command interface before writing documents
7
8
  or invoking operations; the installed contract is authoritative.
8
9
 
@@ -15,8 +16,17 @@ node scripts/design.mjs feedback <design-document.json> --action inspect --json
15
16
  node scripts/design.mjs view-context <design-document.json> --json
16
17
  node scripts/design.mjs studio <design-document.json> --action status --json
17
18
  node scripts/design.mjs studio <design-document.json> --action stop --json
19
+ node scripts/design.mjs fonts fetch --family "<Name>:<weights>" [--family ...] --dest <design>/source/assets/fonts --json
18
20
  ```
19
21
 
22
+ `fonts fetch` snapshots at most two OFL or Apache families, three weights each, as
23
+ Latin `woff2` files with their license files and a local `fonts.css`. It needs network
24
+ access; ask the user to approve that one command. A host that allowlists domains needs
25
+ `raw.githubusercontent.com` (license check), `fonts.googleapis.com` (font CSS) and
26
+ `fonts.gstatic.com` (font files). It refuses an existing non-empty
27
+ `--dest` and leaves nothing behind when any request fails. See
28
+ [design-system.md](design-system.md) for the fallback.
29
+
20
30
  Use `--view prototype` or `--view walkthrough` to select the initial presentation.
21
31
  When an `openplanr` CLI is available, prefer its public `openplanr artifact` route for
22
32
  opening the document; otherwise use this bundled script. Both compose the same
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://openplanr.dev/schemas/v1.20.0/design-document.schema.json",
3
+ "$id": "https://openplanr.dev/schemas/v1.22.0/design-document.schema.json",
4
4
  "x-openplanr-contract": {
5
5
  "id": "design-document",
6
- "version": "1.20.0"
6
+ "version": "1.22.0"
7
7
  },
8
8
  "title": "OpenPlanr authored design document",
9
9
  "type": "object",
@@ -26,7 +26,10 @@
26
26
  "const": "openplanr-design-document"
27
27
  },
28
28
  "schemaVersion": {
29
- "const": "1.0.0"
29
+ "enum": [
30
+ "1.0.0",
31
+ "1.1.0"
32
+ ]
30
33
  },
31
34
  "id": {
32
35
  "$ref": "#/$defs/id"
@@ -158,6 +161,66 @@
158
161
  },
159
162
  "anchors": {
160
163
  "$ref": "#/$defs/ids"
164
+ },
165
+ "props": {
166
+ "type": "object",
167
+ "propertyNames": {
168
+ "type": "string",
169
+ "minLength": 1,
170
+ "maxLength": 128,
171
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
172
+ },
173
+ "additionalProperties": {
174
+ "oneOf": [
175
+ {
176
+ "type": "object",
177
+ "additionalProperties": false,
178
+ "required": [
179
+ "type",
180
+ "options",
181
+ "default"
182
+ ],
183
+ "properties": {
184
+ "type": {
185
+ "const": "enum"
186
+ },
187
+ "options": {
188
+ "type": "array",
189
+ "minItems": 1,
190
+ "uniqueItems": true,
191
+ "items": {
192
+ "type": "string",
193
+ "minLength": 1,
194
+ "maxLength": 128,
195
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
196
+ }
197
+ },
198
+ "default": {
199
+ "type": "string",
200
+ "minLength": 1,
201
+ "maxLength": 128,
202
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
203
+ }
204
+ }
205
+ },
206
+ {
207
+ "type": "object",
208
+ "additionalProperties": false,
209
+ "required": [
210
+ "type",
211
+ "default"
212
+ ],
213
+ "properties": {
214
+ "type": {
215
+ "const": "boolean"
216
+ },
217
+ "default": {
218
+ "type": "boolean"
219
+ }
220
+ }
221
+ }
222
+ ]
223
+ }
161
224
  }
162
225
  }
163
226
  }
@@ -232,6 +295,34 @@
232
295
  "additionalProperties": {
233
296
  "$ref": "#/$defs/source"
234
297
  }
298
+ },
299
+ "props": {
300
+ "type": "object",
301
+ "propertyNames": {
302
+ "$ref": "#/$defs/id"
303
+ },
304
+ "additionalProperties": {
305
+ "type": "object",
306
+ "propertyNames": {
307
+ "type": "string",
308
+ "minLength": 1,
309
+ "maxLength": 128,
310
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
311
+ },
312
+ "additionalProperties": {
313
+ "anyOf": [
314
+ {
315
+ "type": "string",
316
+ "minLength": 1,
317
+ "maxLength": 128,
318
+ "pattern": "^[a-z][a-z0-9-]*(?![\\s\\S])"
319
+ },
320
+ {
321
+ "type": "boolean"
322
+ }
323
+ ]
324
+ }
325
+ }
235
326
  }
236
327
  },
237
328
  "if": {
@@ -375,5 +466,41 @@
375
466
  "minimum": -10000000,
376
467
  "maximum": 10000000
377
468
  }
378
- }
469
+ },
470
+ "allOf": [
471
+ {
472
+ "if": {
473
+ "properties": {
474
+ "schemaVersion": {
475
+ "const": "1.1.0"
476
+ }
477
+ },
478
+ "required": [
479
+ "schemaVersion"
480
+ ]
481
+ },
482
+ "else": {
483
+ "properties": {
484
+ "screens": {
485
+ "items": {
486
+ "not": {
487
+ "required": [
488
+ "props"
489
+ ]
490
+ }
491
+ }
492
+ },
493
+ "variants": {
494
+ "items": {
495
+ "not": {
496
+ "required": [
497
+ "props"
498
+ ]
499
+ }
500
+ }
501
+ }
502
+ }
503
+ }
504
+ }
505
+ ]
379
506
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: investigate
3
- description: "Diagnose a bug, regression, error, or unexplained behavior and optionally implement a bounded fix. Use for root-cause investigation, not planned feature delivery."
3
+ description: "Diagnose a bug, regression, error, or unexplained behavior and optionally implement a bounded fix. Use for root-cause investigation, including before any fix, not planned feature delivery."
4
4
  ---
5
5
 
6
6
  # OpenPlanr Investigate
@@ -1,6 +1,6 @@
1
1
  interface:
2
2
  display_name: "OpenPlanr Investigate"
3
3
  short_description: "Diagnose a bug, regression, error, or unexplained behavior and…"
4
- default_prompt: "Use $planr:investigate to diagnose a bug, regression, error, or unexplained behavior and optionally implement a bounded fix. Use for root-cause investigation, not planned feature delivery."
4
+ default_prompt: "Use $planr:investigate to diagnose a bug, regression, error, or unexplained behavior and optionally implement a bounded fix. Use for root-cause investigation, including before any fix, not planned feature delivery."
5
5
  policy:
6
6
  allow_implicit_invocation: true
@@ -3,7 +3,7 @@
3
3
  "schemaVersion": "1.0.0",
4
4
  "protocolVersion": "1.8.0",
5
5
  "skillId": "planr-investigate",
6
- "skillVersion": "2.0.1",
6
+ "skillVersion": "2.1.0",
7
7
  "entrypoint": "SKILL.md",
8
8
  "hosts": [
9
9
  "claude-code",
@@ -7,9 +7,9 @@ license: MIT
7
7
  # OpenPlanr Plan
8
8
 
9
9
  Turn a decision-complete specification or clear product request into
10
- implementation-ready stories and tasks. Perform the reasoning in this active
11
- coding session. Do not delegate semantic planning to a command-line or model
12
- subprocess. Plan ends with a Ship handoff; it never starts implementation
10
+ implementation-ready stories and tasks in this active coding session. Do not
11
+ delegate semantic planning to a command-line or model subprocess. Plan ends with a
12
+ Ship handoff; it never starts implementation
13
13
  automatically.
14
14
 
15
15
  ## Resolve context directly
@@ -64,14 +64,24 @@ host has no structured question interface, ask one concise chat question.
64
64
 
65
65
  ## Apply PO lenses in-session
66
66
 
67
- When the host supports native agents, dispatch the applicable database,
68
- designer, and specification roles inside this session. Give each role the
69
- request, repository root, relevant paths, and the precise decision or artifact
70
- it owns. Parallelize independent lenses. When native agents are unavailable,
71
- perform the same lenses sequentially in the active agent.
72
-
73
- The specification role integrates the results. Database and design roles
74
- provide grounded inputs; they do not create a second independent plan.
67
+ The main session owns the plan, decisions, and integration. Keep small coherent
68
+ planning work in this session. Delegate only a self-contained outcome that
69
+ benefits from context isolation, a distinct capability boundary, or independent
70
+ parallel work; agent availability alone is not a reason to dispatch.
71
+
72
+ Use specification for a distinct planning assignment or completeness review,
73
+ designer for a separate design deliverable or critique, and database only for
74
+ authorized read-only live introspection when repository schemas are insufficient.
75
+ Do not have two planners decompose the same request. Entity scaffolding remains
76
+ manual, on explicit request.
77
+
78
+ Select the exact registered identity from the host's roster; Claude plugin
79
+ agents use names such as `planr:planr-specification`. Give each worker its outcome,
80
+ authoritative paths, relevant decisions, file ownership, verification requirements,
81
+ and concise return expectations. Parallel workers need disjoint writes or an
82
+ agreed interface. Explain the delegation's purpose briefly in commentary.
83
+ When the host lacks the native role, perform the work sequentially in this session
84
+ and disclose capability limitations; never claim an unavailable specialist ran.
75
85
 
76
86
  ## Author the decomposition
77
87
 
@@ -3,7 +3,7 @@
3
3
  "schemaVersion": "1.0.0",
4
4
  "protocolVersion": "1.8.0",
5
5
  "skillId": "planr-plan",
6
- "skillVersion": "1.2.1",
6
+ "skillVersion": "1.3.0",
7
7
  "entrypoint": "SKILL.md",
8
8
  "hosts": [
9
9
  "claude-code",