openplanr 2.2640.9 → 2.2641.1

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 (443) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +14 -14
  3. package/bin/openplanr.js +13 -0
  4. package/bin/planr.js +5 -11
  5. package/dist/cli/commands/artifact.d.ts.map +1 -1
  6. package/dist/cli/commands/artifact.js +5 -4
  7. package/dist/cli/commands/artifact.js.map +1 -1
  8. package/dist/cli/commands/checklist.d.ts.map +1 -1
  9. package/dist/cli/commands/checklist.js +4 -3
  10. package/dist/cli/commands/checklist.js.map +1 -1
  11. package/dist/cli/commands/company.d.ts.map +1 -1
  12. package/dist/cli/commands/company.js +3 -2
  13. package/dist/cli/commands/company.js.map +1 -1
  14. package/dist/cli/commands/context.d.ts +1 -1
  15. package/dist/cli/commands/context.js +1 -1
  16. package/dist/cli/commands/doctor.d.ts.map +1 -1
  17. package/dist/cli/commands/doctor.js +11 -5
  18. package/dist/cli/commands/doctor.js.map +1 -1
  19. package/dist/cli/commands/export.d.ts +1 -1
  20. package/dist/cli/commands/export.js +1 -1
  21. package/dist/cli/commands/github.d.ts +1 -1
  22. package/dist/cli/commands/github.d.ts.map +1 -1
  23. package/dist/cli/commands/github.js +9 -8
  24. package/dist/cli/commands/github.js.map +1 -1
  25. package/dist/cli/commands/init-deterministic.d.ts.map +1 -1
  26. package/dist/cli/commands/init-deterministic.js +2 -1
  27. package/dist/cli/commands/init-deterministic.js.map +1 -1
  28. package/dist/cli/commands/linear.d.ts +2 -2
  29. package/dist/cli/commands/linear.d.ts.map +1 -1
  30. package/dist/cli/commands/linear.js +28 -27
  31. package/dist/cli/commands/linear.js.map +1 -1
  32. package/dist/cli/commands/operate/registrars/index.d.ts +1 -1
  33. package/dist/cli/commands/operate/registrars/index.d.ts.map +1 -1
  34. package/dist/cli/commands/operate/registrars/index.js +1 -1
  35. package/dist/cli/commands/operate/registrars/index.js.map +1 -1
  36. package/dist/cli/commands/operate/render.d.ts.map +1 -1
  37. package/dist/cli/commands/operate/render.js +2 -1
  38. package/dist/cli/commands/operate/render.js.map +1 -1
  39. package/dist/cli/commands/operate.d.ts.map +1 -1
  40. package/dist/cli/commands/operate.js +2 -1
  41. package/dist/cli/commands/operate.js.map +1 -1
  42. package/dist/cli/commands/planning-artifacts.d.ts.map +1 -1
  43. package/dist/cli/commands/planning-artifacts.js +2 -1
  44. package/dist/cli/commands/planning-artifacts.js.map +1 -1
  45. package/dist/cli/commands/quick/interaction.d.ts +1 -1
  46. package/dist/cli/commands/quick/interaction.d.ts.map +1 -1
  47. package/dist/cli/commands/quick/interaction.js +1 -1
  48. package/dist/cli/commands/quick/interaction.js.map +1 -1
  49. package/dist/cli/commands/quick/project.d.ts +1 -1
  50. package/dist/cli/commands/quick/project.d.ts.map +1 -1
  51. package/dist/cli/commands/quick/project.js +1 -1
  52. package/dist/cli/commands/quick/project.js.map +1 -1
  53. package/dist/cli/commands/report-linter.d.ts +1 -1
  54. package/dist/cli/commands/report-linter.js +1 -1
  55. package/dist/cli/commands/report.d.ts +1 -1
  56. package/dist/cli/commands/report.d.ts.map +1 -1
  57. package/dist/cli/commands/report.js +5 -4
  58. package/dist/cli/commands/report.js.map +1 -1
  59. package/dist/cli/commands/setup.d.ts.map +1 -1
  60. package/dist/cli/commands/setup.js +5 -4
  61. package/dist/cli/commands/setup.js.map +1 -1
  62. package/dist/cli/commands/spec.d.ts +11 -11
  63. package/dist/cli/commands/spec.d.ts.map +1 -1
  64. package/dist/cli/commands/spec.js +34 -33
  65. package/dist/cli/commands/spec.js.map +1 -1
  66. package/dist/cli/commands/sprint-refinement.d.ts.map +1 -1
  67. package/dist/cli/commands/sprint-refinement.js +2 -1
  68. package/dist/cli/commands/sprint-refinement.js.map +1 -1
  69. package/dist/cli/commands/status.d.ts.map +1 -1
  70. package/dist/cli/commands/status.js +2 -1
  71. package/dist/cli/commands/status.js.map +1 -1
  72. package/dist/cli/commands/story/interaction.d.ts +1 -1
  73. package/dist/cli/commands/story/interaction.d.ts.map +1 -1
  74. package/dist/cli/commands/story/interaction.js +1 -1
  75. package/dist/cli/commands/story/interaction.js.map +1 -1
  76. package/dist/cli/commands/story/project.d.ts +1 -1
  77. package/dist/cli/commands/story/project.d.ts.map +1 -1
  78. package/dist/cli/commands/story/project.js +1 -1
  79. package/dist/cli/commands/story/project.js.map +1 -1
  80. package/dist/cli/commands/sync.d.ts +1 -1
  81. package/dist/cli/commands/sync.d.ts.map +1 -1
  82. package/dist/cli/commands/sync.js +3 -2
  83. package/dist/cli/commands/sync.js.map +1 -1
  84. package/dist/cli/commands/template.d.ts +1 -1
  85. package/dist/cli/commands/template.js +10 -10
  86. package/dist/cli/commands/template.js.map +1 -1
  87. package/dist/cli/commands/update.d.ts +1 -1
  88. package/dist/cli/commands/update.js +1 -1
  89. package/dist/cli/commands/upgrade.d.ts +1 -1
  90. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  91. package/dist/cli/commands/upgrade.js +3 -2
  92. package/dist/cli/commands/upgrade.js.map +1 -1
  93. package/dist/cli/commands/voice.d.ts +1 -1
  94. package/dist/cli/commands/voice.js +1 -1
  95. package/dist/cli/index.js +6 -3
  96. package/dist/cli/index.js.map +1 -1
  97. package/dist/dashboard/.vite/manifest.json +1 -1
  98. package/dist/dashboard/assets/{index-D7R6tnlX.js → index-DGyC7RDz.js} +115 -115
  99. package/dist/dashboard/assets/index-DGyC7RDz.js.map +1 -0
  100. package/dist/dashboard/dashboard-manifest.json +10 -10
  101. package/dist/dashboard/index.html +1 -1
  102. package/dist/generators/cursor-generator.js +1 -1
  103. package/dist/generators/cursor-generator.js.map +1 -1
  104. package/dist/models/schema.d.ts.map +1 -1
  105. package/dist/models/schema.js +2 -1
  106. package/dist/models/schema.js.map +1 -1
  107. package/dist/models/types.d.ts +12 -12
  108. package/dist/models/types.d.ts.map +1 -1
  109. package/dist/services/artifact-service.d.ts +1 -1
  110. package/dist/services/artifact-service.js +2 -2
  111. package/dist/services/artifact-service.js.map +1 -1
  112. package/dist/services/audit-log-service.d.ts.map +1 -1
  113. package/dist/services/audit-log-service.js +2 -1
  114. package/dist/services/audit-log-service.js.map +1 -1
  115. package/dist/services/claude-plugin-service.d.ts +3 -1
  116. package/dist/services/claude-plugin-service.d.ts.map +1 -1
  117. package/dist/services/claude-plugin-service.js +9 -5
  118. package/dist/services/claude-plugin-service.js.map +1 -1
  119. package/dist/services/codex-plugin-service.d.ts.map +1 -1
  120. package/dist/services/codex-plugin-service.js +3 -2
  121. package/dist/services/codex-plugin-service.js.map +1 -1
  122. package/dist/services/company-auth-service.d.ts.map +1 -1
  123. package/dist/services/company-auth-service.js +2 -1
  124. package/dist/services/company-auth-service.js.map +1 -1
  125. package/dist/services/company-sync-service.d.ts.map +1 -1
  126. package/dist/services/company-sync-service.js +9 -8
  127. package/dist/services/company-sync-service.js.map +1 -1
  128. package/dist/services/config-service.d.ts +6 -1
  129. package/dist/services/config-service.d.ts.map +1 -1
  130. package/dist/services/config-service.js +19 -4
  131. package/dist/services/config-service.js.map +1 -1
  132. package/dist/services/connectors/checkpoint-custody.d.ts.map +1 -1
  133. package/dist/services/connectors/checkpoint-custody.js +4 -1
  134. package/dist/services/connectors/checkpoint-custody.js.map +1 -1
  135. package/dist/services/credentials-service.js +1 -1
  136. package/dist/services/credentials-service.js.map +1 -1
  137. package/dist/services/delivery-status-service.d.ts +1 -1
  138. package/dist/services/delivery-status-service.d.ts.map +1 -1
  139. package/dist/services/delivery-status-service.js +3 -2
  140. package/dist/services/delivery-status-service.js.map +1 -1
  141. package/dist/services/diagram-authoring-service.d.ts.map +1 -1
  142. package/dist/services/diagram-authoring-service.js +2 -1
  143. package/dist/services/diagram-authoring-service.js.map +1 -1
  144. package/dist/services/diagram-pipeline-service.d.ts.map +1 -1
  145. package/dist/services/diagram-pipeline-service.js +6 -5
  146. package/dist/services/diagram-pipeline-service.js.map +1 -1
  147. package/dist/services/distribution-service.d.ts.map +1 -1
  148. package/dist/services/distribution-service.js +4 -3
  149. package/dist/services/distribution-service.js.map +1 -1
  150. package/dist/services/github-service.d.ts +1 -1
  151. package/dist/services/github-service.d.ts.map +1 -1
  152. package/dist/services/github-service.js +7 -6
  153. package/dist/services/github-service.js.map +1 -1
  154. package/dist/services/graph-integrity.d.ts +1 -1
  155. package/dist/services/graph-integrity.js +1 -1
  156. package/dist/services/landing/landing-service.d.ts.map +1 -1
  157. package/dist/services/landing/landing-service.js +4 -1
  158. package/dist/services/landing/landing-service.js.map +1 -1
  159. package/dist/services/landing/receipt-custody.d.ts.map +1 -1
  160. package/dist/services/landing/receipt-custody.js +3 -2
  161. package/dist/services/landing/receipt-custody.js.map +1 -1
  162. package/dist/services/linear/errors.d.ts.map +1 -1
  163. package/dist/services/linear/errors.js +2 -1
  164. package/dist/services/linear/errors.js.map +1 -1
  165. package/dist/services/linear/plan-builders.d.ts +3 -3
  166. package/dist/services/linear/plan-builders.d.ts.map +1 -1
  167. package/dist/services/linear/plan-builders.js +2 -2
  168. package/dist/services/linear/strategy-context.d.ts.map +1 -1
  169. package/dist/services/linear/strategy-context.js +6 -5
  170. package/dist/services/linear/strategy-context.js.map +1 -1
  171. package/dist/services/linear-mapping-service.d.ts +1 -1
  172. package/dist/services/linear-mapping-service.d.ts.map +1 -1
  173. package/dist/services/linear-mapping-service.js +3 -2
  174. package/dist/services/linear-mapping-service.js.map +1 -1
  175. package/dist/services/linear-pull-service.d.ts +1 -1
  176. package/dist/services/linear-pull-service.d.ts.map +1 -1
  177. package/dist/services/linear-pull-service.js +10 -9
  178. package/dist/services/linear-pull-service.js.map +1 -1
  179. package/dist/services/linear-push-service.d.ts +2 -2
  180. package/dist/services/linear-push-service.d.ts.map +1 -1
  181. package/dist/services/linear-push-service.js +17 -16
  182. package/dist/services/linear-push-service.js.map +1 -1
  183. package/dist/services/linear-service.d.ts +2 -2
  184. package/dist/services/linear-service.js +2 -2
  185. package/dist/services/linear-team-service.d.ts.map +1 -1
  186. package/dist/services/linear-team-service.js +2 -1
  187. package/dist/services/linear-team-service.js.map +1 -1
  188. package/dist/services/operate/assignment-packet-service.d.ts.map +1 -1
  189. package/dist/services/operate/assignment-packet-service.js +2 -1
  190. package/dist/services/operate/assignment-packet-service.js.map +1 -1
  191. package/dist/services/operate/delivery-evidence.d.ts.map +1 -1
  192. package/dist/services/operate/delivery-evidence.js +2 -1
  193. package/dist/services/operate/delivery-evidence.js.map +1 -1
  194. package/dist/services/operate/measurement-schedule-service.d.ts.map +1 -1
  195. package/dist/services/operate/measurement-schedule-service.js +2 -1
  196. package/dist/services/operate/measurement-schedule-service.js.map +1 -1
  197. package/dist/services/operate/path-custody.d.ts.map +1 -1
  198. package/dist/services/operate/path-custody.js +2 -1
  199. package/dist/services/operate/path-custody.js.map +1 -1
  200. package/dist/services/operate/pinned-legacy-replay-runner.d.ts.map +1 -1
  201. package/dist/services/operate/pinned-legacy-replay-runner.js +3 -2
  202. package/dist/services/operate/pinned-legacy-replay-runner.js.map +1 -1
  203. package/dist/services/operate/planning-handoff-service.d.ts.map +1 -1
  204. package/dist/services/operate/planning-handoff-service.js +3 -2
  205. package/dist/services/operate/planning-handoff-service.js.map +1 -1
  206. package/dist/services/operate/project-transaction-lock.d.ts.map +1 -1
  207. package/dist/services/operate/project-transaction-lock.js +2 -1
  208. package/dist/services/operate/project-transaction-lock.js.map +1 -1
  209. package/dist/services/operate/repository-read-service.d.ts.map +1 -1
  210. package/dist/services/operate/repository-read-service.js +5 -4
  211. package/dist/services/operate/repository-read-service.js.map +1 -1
  212. package/dist/services/operate/screened-evidence-service.d.ts.map +1 -1
  213. package/dist/services/operate/screened-evidence-service.js +5 -4
  214. package/dist/services/operate/screened-evidence-service.js.map +1 -1
  215. package/dist/services/operate/storage-layout.d.ts.map +1 -1
  216. package/dist/services/operate/storage-layout.js +8 -7
  217. package/dist/services/operate/storage-layout.js.map +1 -1
  218. package/dist/services/operate/store.d.ts.map +1 -1
  219. package/dist/services/operate/store.js +7 -6
  220. package/dist/services/operate/store.js.map +1 -1
  221. package/dist/services/pipeline-package-service.js +1 -1
  222. package/dist/services/pipeline-package-service.js.map +1 -1
  223. package/dist/services/provenance-service.d.ts.map +1 -1
  224. package/dist/services/provenance-service.js +2 -1
  225. package/dist/services/provenance-service.js.map +1 -1
  226. package/dist/services/report-linter-service.js +1 -1
  227. package/dist/services/report-linter-service.js.map +1 -1
  228. package/dist/services/revise-cache-service.d.ts.map +1 -1
  229. package/dist/services/revise-cache-service.js +2 -1
  230. package/dist/services/revise-cache-service.js.map +1 -1
  231. package/dist/services/runtime-manager/doctor.d.ts +13 -0
  232. package/dist/services/runtime-manager/doctor.d.ts.map +1 -1
  233. package/dist/services/runtime-manager/doctor.js +50 -3
  234. package/dist/services/runtime-manager/doctor.js.map +1 -1
  235. package/dist/services/runtime-manager/inventory.d.ts +1 -0
  236. package/dist/services/runtime-manager/inventory.d.ts.map +1 -1
  237. package/dist/services/runtime-manager/inventory.js +3 -1
  238. package/dist/services/runtime-manager/inventory.js.map +1 -1
  239. package/dist/services/runtime-manager-service.d.ts +4 -2
  240. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  241. package/dist/services/runtime-manager-service.js +52 -33
  242. package/dist/services/runtime-manager-service.js.map +1 -1
  243. package/dist/services/server-lifecycle-service.d.ts.map +1 -1
  244. package/dist/services/server-lifecycle-service.js +14 -9
  245. package/dist/services/server-lifecycle-service.js.map +1 -1
  246. package/dist/services/spec-service.d.ts +4 -4
  247. package/dist/services/spec-service.d.ts.map +1 -1
  248. package/dist/services/spec-service.js +9 -8
  249. package/dist/services/spec-service.js.map +1 -1
  250. package/dist/services/sprint-refinement-service.d.ts +6 -6
  251. package/dist/services/sprint-refinement-service.d.ts.map +1 -1
  252. package/dist/services/sprint-refinement-service.js +16 -16
  253. package/dist/services/sprint-refinement-service.js.map +1 -1
  254. package/dist/services/template-service.d.ts.map +1 -1
  255. package/dist/services/template-service.js +3 -1
  256. package/dist/services/template-service.js.map +1 -1
  257. package/dist/services/upgrade-offer-service.d.ts +2 -2
  258. package/dist/services/upgrade-offer-service.d.ts.map +1 -1
  259. package/dist/services/upgrade-offer-service.js +4 -3
  260. package/dist/services/upgrade-offer-service.js.map +1 -1
  261. package/dist/services/upgrade-report.d.ts +1 -1
  262. package/dist/services/upgrade-report.d.ts.map +1 -1
  263. package/dist/services/upgrade-report.js +5 -4
  264. package/dist/services/upgrade-report.js.map +1 -1
  265. package/dist/services/upgrade-service.d.ts +5 -5
  266. package/dist/services/upgrade-service.d.ts.map +1 -1
  267. package/dist/services/upgrade-service.js +14 -13
  268. package/dist/services/upgrade-service.js.map +1 -1
  269. package/dist/templates/backlog/backlog-item.md.hbs +1 -1
  270. package/dist/templates/checklists/agile-checklist.md.hbs +6 -6
  271. package/dist/templates/epics/epic.md.hbs +1 -1
  272. package/dist/templates/export/planning-report.html.hbs +1 -1
  273. package/dist/templates/export/planning-report.md.hbs +1 -1
  274. package/dist/templates/features/feature.md.hbs +1 -1
  275. package/dist/templates/guides/estimation.md.hbs +3 -12
  276. package/dist/templates/quick/quick-task.md.hbs +1 -1
  277. package/dist/templates/rules/cursor/create-epic.mdc.hbs +1 -1
  278. package/dist/templates/rules/cursor/create-features.mdc.hbs +1 -1
  279. package/dist/templates/rules/cursor/create-user-story.mdc.hbs +1 -1
  280. package/dist/templates/rules/cursor/openplanr.mdc.hbs +1 -1
  281. package/dist/templates/rules/shared/host-native-guidance.md.hbs +1 -1
  282. package/dist/templates/spec/spec-shaped.md.hbs +1 -1
  283. package/dist/templates/spec/spec.md.hbs +1 -1
  284. package/dist/templates/sprints/sprint-tasks.md.hbs +1 -1
  285. package/dist/templates/sprints/sprint.md.hbs +1 -1
  286. package/dist/templates/stories/user-story.md.hbs +1 -1
  287. package/dist/utils/constants.d.ts +8 -4
  288. package/dist/utils/constants.d.ts.map +1 -1
  289. package/dist/utils/constants.js +10 -4
  290. package/dist/utils/constants.js.map +1 -1
  291. package/docs/ARTIFACT_REVIEW.md +13 -13
  292. package/docs/CLI.md +249 -249
  293. package/docs/CROSS_RUNTIME_SETUP.md +33 -33
  294. package/docs/TROUBLESHOOTING.md +28 -28
  295. package/install.ps1 +2 -2
  296. package/install.sh +3 -3
  297. package/lib/host-packages/adapter-registry.json +5 -5
  298. package/lib/host-packages/capability-map.json +2 -2
  299. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  300. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  301. package/lib/host-packages/claude/openplanr/.openplanr-content.json +49 -45
  302. package/lib/host-packages/claude/openplanr/README.md +7 -7
  303. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/designer.md +2 -2
  304. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-owner-custody.mjs +8 -0
  305. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review.mjs +81 -46
  306. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +9 -4
  307. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  308. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  309. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +3 -3
  310. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +9 -1
  311. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +10 -3
  312. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +9 -1
  313. package/lib/host-packages/claude/openplanr/skills/artifact/SKILL.md +12 -12
  314. package/lib/host-packages/claude/openplanr/skills/artifact/references/company-review.md +9 -9
  315. package/lib/host-packages/claude/openplanr/skills/artifact/references/design-sharing.md +1 -1
  316. package/lib/host-packages/claude/openplanr/skills/artifact/references/diagram-sharing.md +3 -3
  317. package/lib/host-packages/claude/openplanr/skills/dashboard/SKILL.md +1 -1
  318. package/lib/host-packages/claude/openplanr/skills/delegate/references/operator-guide.md +1 -1
  319. package/lib/host-packages/claude/openplanr/skills/design/SKILL.md +1 -1
  320. package/lib/host-packages/claude/openplanr/skills/design/references/team-review.md +1 -1
  321. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +4 -4
  322. package/lib/host-packages/claude/openplanr/skills/design-loop/SKILL.md +1 -1
  323. package/lib/host-packages/claude/openplanr/skills/design-loop/references/team-review.md +1 -1
  324. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +4 -4
  325. package/lib/host-packages/claude/openplanr/skills/design-review/SKILL.md +1 -1
  326. package/lib/host-packages/claude/openplanr/skills/design-review/references/team-review.md +1 -1
  327. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +4 -4
  328. package/lib/host-packages/claude/openplanr/skills/diagram/SKILL.md +15 -15
  329. package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-document.md +1 -1
  330. package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-intent-to-ir.md +1 -1
  331. package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-sharing.md +3 -3
  332. package/lib/host-packages/claude/openplanr/skills/doctor/SKILL.md +9 -9
  333. package/lib/host-packages/claude/openplanr/skills/doctor/references/upgrade.md +18 -16
  334. package/lib/host-packages/claude/openplanr/skills/land/SKILL.md +2 -2
  335. package/lib/host-packages/claude/openplanr/skills/plan/references/artifact-contract.md +5 -0
  336. package/lib/host-packages/claude/openplanr/skills/spec/references/specification-contract.md +5 -0
  337. package/lib/host-packages/claude/openplanr/skills/sprint/SKILL.md +12 -12
  338. package/lib/host-packages/claude/openplanr/skills/sprint/references/refinement-contract.md +5 -5
  339. package/lib/host-packages/claude/openplanr/skills/sprint/references/sprint-formats.md +8 -8
  340. package/lib/host-packages/claude/openplanr/skills/sprint/schemas/refinement.schema.json +3 -3
  341. package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +1 -1
  342. package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +6 -6
  343. package/lib/host-packages/claude/openplanr/skills/sync/scripts/names.mjs +8 -0
  344. package/lib/host-packages/claude/openplanr/skills/sync/scripts/sync.mjs +3 -2
  345. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +47 -43
  346. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  347. package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/company-review.md +9 -9
  348. package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/design-sharing.md +1 -1
  349. package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/diagram-sharing.md +3 -3
  350. package/lib/host-packages/cursor/openplanr/rules/planr-artifact.mdc +12 -12
  351. package/lib/host-packages/cursor/openplanr/rules/planr-dashboard.mdc +1 -1
  352. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/operator-guide.md +1 -1
  353. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/team-review.md +1 -1
  354. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +4 -4
  355. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/team-review.md +1 -1
  356. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +4 -4
  357. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop.mdc +1 -1
  358. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/team-review.md +1 -1
  359. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +4 -4
  360. package/lib/host-packages/cursor/openplanr/rules/planr-design-review.mdc +1 -1
  361. package/lib/host-packages/cursor/openplanr/rules/planr-design.mdc +1 -1
  362. package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-document.md +1 -1
  363. package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-intent-to-ir.md +1 -1
  364. package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-sharing.md +3 -3
  365. package/lib/host-packages/cursor/openplanr/rules/planr-diagram.mdc +15 -15
  366. package/lib/host-packages/cursor/openplanr/rules/planr-doctor/references/upgrade.md +18 -16
  367. package/lib/host-packages/cursor/openplanr/rules/planr-doctor.mdc +9 -9
  368. package/lib/host-packages/cursor/openplanr/rules/planr-land.mdc +2 -2
  369. package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/artifact-contract.md +5 -0
  370. package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/specification-contract.md +5 -0
  371. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/refinement-contract.md +5 -5
  372. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/sprint-formats.md +8 -8
  373. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/schemas/refinement.schema.json +3 -3
  374. package/lib/host-packages/cursor/openplanr/rules/planr-sprint.mdc +12 -12
  375. package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +1 -1
  376. package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/names.mjs +8 -0
  377. package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/sync.mjs +3 -2
  378. package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +6 -6
  379. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-owner-custody.mjs +8 -0
  380. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review.mjs +81 -46
  381. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +9 -4
  382. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  383. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  384. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +3 -3
  385. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +9 -1
  386. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +10 -3
  387. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +9 -1
  388. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  389. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  390. package/lib/host-packages/openai/openplanr/.openplanr-content.json +48 -44
  391. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-owner-custody.mjs +8 -0
  392. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review.mjs +81 -46
  393. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +9 -4
  394. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  395. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  396. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +3 -3
  397. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +9 -1
  398. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +10 -3
  399. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +9 -1
  400. package/lib/host-packages/openai/openplanr/skills/artifact/SKILL.md +12 -12
  401. package/lib/host-packages/openai/openplanr/skills/artifact/references/company-review.md +9 -9
  402. package/lib/host-packages/openai/openplanr/skills/artifact/references/design-sharing.md +1 -1
  403. package/lib/host-packages/openai/openplanr/skills/artifact/references/diagram-sharing.md +3 -3
  404. package/lib/host-packages/openai/openplanr/skills/dashboard/SKILL.md +1 -1
  405. package/lib/host-packages/openai/openplanr/skills/delegate/references/operator-guide.md +1 -1
  406. package/lib/host-packages/openai/openplanr/skills/design/SKILL.md +1 -1
  407. package/lib/host-packages/openai/openplanr/skills/design/references/team-review.md +1 -1
  408. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +4 -4
  409. package/lib/host-packages/openai/openplanr/skills/design-loop/SKILL.md +1 -1
  410. package/lib/host-packages/openai/openplanr/skills/design-loop/references/team-review.md +1 -1
  411. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +4 -4
  412. package/lib/host-packages/openai/openplanr/skills/design-review/SKILL.md +1 -1
  413. package/lib/host-packages/openai/openplanr/skills/design-review/references/team-review.md +1 -1
  414. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +4 -4
  415. package/lib/host-packages/openai/openplanr/skills/diagram/SKILL.md +15 -15
  416. package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-document.md +1 -1
  417. package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-intent-to-ir.md +1 -1
  418. package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-sharing.md +3 -3
  419. package/lib/host-packages/openai/openplanr/skills/doctor/SKILL.md +9 -9
  420. package/lib/host-packages/openai/openplanr/skills/doctor/references/upgrade.md +18 -16
  421. package/lib/host-packages/openai/openplanr/skills/land/SKILL.md +2 -2
  422. package/lib/host-packages/openai/openplanr/skills/plan/references/artifact-contract.md +5 -0
  423. package/lib/host-packages/openai/openplanr/skills/spec/references/specification-contract.md +5 -0
  424. package/lib/host-packages/openai/openplanr/skills/sprint/SKILL.md +12 -12
  425. package/lib/host-packages/openai/openplanr/skills/sprint/references/refinement-contract.md +5 -5
  426. package/lib/host-packages/openai/openplanr/skills/sprint/references/sprint-formats.md +8 -8
  427. package/lib/host-packages/openai/openplanr/skills/sprint/schemas/refinement.schema.json +3 -3
  428. package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +1 -1
  429. package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +6 -6
  430. package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +11 -0
  431. package/lib/host-packages/openai/openplanr/skills/sync/scripts/names.mjs +8 -0
  432. package/lib/host-packages/openai/openplanr/skills/sync/scripts/sync.mjs +3 -2
  433. package/lib/integrations.mjs +3 -2
  434. package/lib/names.d.mts +4 -0
  435. package/lib/names.mjs +8 -0
  436. package/lib/planning-folder.d.mts +14 -0
  437. package/lib/planning-folder.mjs +40 -0
  438. package/package.json +5 -5
  439. package/dist/dashboard/assets/index-D7R6tnlX.js.map +0 -1
  440. package/dist/templates/voice/standup.md.hbs +0 -20
  441. /package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-runtime-support-5cb7531bede8.mjs → design-runtime-support-336900df0d39.mjs} +0 -0
  442. /package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-runtime-support-5cb7531bede8.mjs → design-runtime-support-336900df0d39.mjs} +0 -0
  443. /package/lib/host-packages/openai/openplanr/runtime/design/scripts/{design-runtime-support-5cb7531bede8.mjs → design-runtime-support-336900df0d39.mjs} +0 -0
@@ -11,7 +11,7 @@ item in full and judges it against the default branch and the calendar.
11
11
  **Select** fits the surviving items to the stated capacity and the next release
12
12
  cut, refutes the picks with three independent lenses, and writes the sprint.
13
13
  Perform the reasoning in this session; never delegate it to a model subprocess.
14
- The CLI (`planr sprint …`) stores what this skill decides. It is optional: when
14
+ The CLI (`openplanr sprint …`) stores what this skill decides. It is optional: when
15
15
  it is unavailable, write the same files by hand in the shapes given in
16
16
  [sprint formats](references/sprint-formats.md).
17
17
 
@@ -34,7 +34,7 @@ capability; it never blocks the run. Name every degraded input in `Issues`.
34
34
  | Git history and the code paths items cite | Evidence lens: stale, already fixed, premise false | Buckets rest on the items' own dates; say "not verified against code" |
35
35
  | Release profile (`.release/profile.md`: cut date, cadence, freezes) | Size the In-progress bucket to the cut; the sprint gets `releaseCut` | Ask once for a horizon; default to a two-week sprint from today |
36
36
  | Capacity (engineers × working days) | Fit the list and name the overflow | Ask once; default 1 engineer × 10 days, stated in the return |
37
- | Previous sprint or refinement note (`.planr/sprints/SPRINT-NNN/refinement.json`) | Carry `leftovers`; `planr sprint diff` is possible | First run, no diff |
37
+ | Previous sprint or refinement note (`.planr/sprints/SPRINT-NNN/refinement.json`) | Carry `leftovers`; `openplanr sprint diff` is possible | First run, no diff |
38
38
  | Last Operate cycle | Rank its unfinished actions alongside | Skipped silently |
39
39
  | Linear or GitHub connector | Push statuses on approval, read PR state | Local files only; report the external step as not run |
40
40
 
@@ -90,7 +90,7 @@ the cheapest refutations.
90
90
 
91
91
  Carry the previous Operate cycle's unfinished actions explicitly. Include the
92
92
  release cut itself as work; when it has no artifact yet, file it with
93
- `planr quick create "Release cut <date>"` so the sprint contains only artifact
93
+ `openplanr quick create "Release cut <date>"` so the sprint contains only artifact
94
94
  ids.
95
95
 
96
96
  ## Step 4: Refute the In-progress bucket
@@ -114,9 +114,9 @@ Write the three durable outputs (formats in
114
114
  them.
115
115
 
116
116
  ```bash
117
- planr sprint create --data sprint.json --json # name, releaseCut, capacityDays, startDate
118
- planr sprint refinement SPRINT-NNN --data refinement.json --json # validates, stores the note and JSON, fills the sprint body
119
- planr sprint diff SPRINT-MMM SPRINT-NNN # when a previous run exists
117
+ openplanr sprint create --data sprint.json --json # name, releaseCut, capacityDays, startDate
118
+ openplanr sprint refinement SPRINT-NNN --data refinement.json --json # validates, stores the note and JSON, fills the sprint body
119
+ openplanr sprint diff SPRINT-MMM SPRINT-NNN # when a previous run exists
120
120
  ```
121
121
 
122
122
  `refinement.json` must satisfy [the schema](schemas/refinement.schema.json); the
@@ -131,16 +131,16 @@ write-back, or leave the proposal as written.
131
131
  ## Step 6: On approval, apply
132
132
 
133
133
  ```bash
134
- planr sprint apply SPRINT-NNN --dry-run # show the status and priority changes
135
- planr sprint apply SPRINT-NNN --yes --commit # one commit: chore(planr): refine backlog for SPRINT-NNN
134
+ openplanr sprint apply SPRINT-NNN --dry-run # show the status and priority changes
135
+ openplanr sprint apply SPRINT-NNN --yes --commit # one commit: chore(planr): refine backlog for SPRINT-NNN
136
136
  ```
137
137
 
138
138
  Where a connector is configured, push each changed item afterwards
139
- (`planr linear push <id>`, `planr github push <id>`) and report the ones that
139
+ (`openplanr linear push <id>`, `openplanr github push <id>`) and report the ones that
140
140
  were not pushed. When the CLI is unavailable, apply the same status changes with
141
141
  the repository's own vocabulary and commit them with the same message.
142
142
 
143
- Close a finished sprint with `planr sprint close SPRINT-NNN`; it records the
143
+ Close a finished sprint with `openplanr sprint close SPRINT-NNN`; it records the
144
144
  leftovers the next run carries.
145
145
 
146
146
  ## Rules from production use
@@ -152,7 +152,7 @@ leftovers the next run carries.
152
152
  the question that unblocks them.
153
153
  - The list must fit the stated capacity; if it does not, say what was cut.
154
154
  - No new migration in a hand deploy unless the sprint says so explicitly.
155
- - Use the repository's own status vocabulary (`planr update --help` lists it);
155
+ - Use the repository's own status vocabulary (`openplanr update --help` lists it);
156
156
  never introduce a second one.
157
157
  - The note and the JSON are the durable output; the chat return is a view of
158
158
  them. That is what keeps the third run from re-arguing the first two.
@@ -179,7 +179,7 @@ and identify incomplete evidence or blocked inputs with their recovery action.
179
179
  The note and JSON remain complete and unchanged in shape. Omit empty chat sections;
180
180
  different summary wording never causes another sprint creation or write-back.
181
181
 
182
- `planr status` shows the active sprint with its cut and progress; the dashboard
182
+ `openplanr status` shows the active sprint with its cut and progress; the dashboard
183
183
  (`planr-dashboard`) renders the sprint from the same frontmatter and checkboxes.
184
184
 
185
185
  ## Reference files
@@ -2,10 +2,10 @@
2
2
 
3
3
  The refinement document is the durable record of one run: what was read, how
4
4
  each item was judged, what was selected and what the refuters changed. The CLI
5
- validates it (`planr sprint refinement <id> --data`), stores it as
5
+ validates it (`openplanr sprint refinement <id> --data`), stores it as
6
6
  `.planr/sprints/SPRINT-NNN/refinement.json`, renders `refinement.md` from it
7
- and fills the sprint body from its batches. `planr sprint diff`, `planr sprint
8
- close` and `planr sprint apply` read it back.
7
+ and fills the sprint body from its batches. `openplanr sprint diff`, `openplanr sprint
8
+ close` and `openplanr sprint apply` read it back.
9
9
 
10
10
  ## Item record
11
11
 
@@ -26,7 +26,7 @@ One entry per open item, whether or not it is selected.
26
26
  | `bucket` | `inProgress`, `planNext`, `blocked` or `closeOrDemote`. |
27
27
  | `reason` | One clause: why the item sits in that bucket. |
28
28
  | `evidence` | For close-or-demote rows: `file:line`, PR number or date. |
29
- | `targetStatus` / `targetPriority` | What `planr sprint apply` writes, in the repository's own vocabulary (`planr update --help`). Priority applies to backlog items only. |
29
+ | `targetStatus` / `targetPriority` | What `openplanr sprint apply` writes, in the repository's own vocabulary (`openplanr update --help`). Priority applies to backlog items only. |
30
30
 
31
31
  ## Scoring
32
32
 
@@ -149,6 +149,6 @@ A pick that fails a lens moves or drops, and the correction is recorded in
149
149
 
150
150
  `inputs.sources` names what was read; `inputs.defaulted` names every value
151
151
  taken from a default instead of the repository or the user. The CLI adds
152
- `leftovers[]` on `planr sprint close` and `applied` on `planr sprint apply`;
152
+ `leftovers[]` on `openplanr sprint close` and `applied` on `openplanr sprint apply`;
153
153
  never write those yourself. Unknown fields are rejected, so keep notes in
154
154
  `inputs.notes` or in the item's `reason`.
@@ -3,7 +3,7 @@
3
3
  Three durable outputs and one chat return. The CLI writes the first three from
4
4
  the two JSON inputs below; when it is unavailable, write the same files by hand.
5
5
 
6
- ## `sprint.json` (input to `planr sprint create --data`)
6
+ ## `sprint.json` (input to `openplanr sprint create --data`)
7
7
 
8
8
  ```json
9
9
  {
@@ -17,7 +17,7 @@ the two JSON inputs below; when it is unavailable, write the same files by hand.
17
17
 
18
18
  `endDate` defaults to `releaseCut`, or to `startDate` plus the duration when no
19
19
  cut is known. `status` may be `planned` or `active` (default). Omit `taskIds`
20
- and `batches`; `planr sprint refinement` fills them from the refinement
20
+ and `batches`; `openplanr sprint refinement` fills them from the refinement
21
21
  document.
22
22
 
23
23
  ## Sprint artifact
@@ -64,11 +64,11 @@ refinedAt: "2026-09-17"
64
64
  - [ ] **QT-194** Release cut 25 Sep · hours · [view](../quick/QT-194-release-cut-25-sep.md)
65
65
 
66
66
  ## Retrospective
67
- _Complete this section when closing the sprint with `planr sprint close SPRINT-004`._
67
+ _Complete this section when closing the sprint with `openplanr sprint close SPRINT-004`._
68
68
  ```
69
69
 
70
70
  Each task line is `- [ ] **ID** title · effort · [view](relative path)`.
71
- `planr status`, `planr sprint close` and the dashboard read these lines; tick a
71
+ `openplanr status`, `openplanr sprint close` and the dashboard read these lines; tick a
72
72
  box when the item ships. `releaseCut` is absent when no release profile exists;
73
73
  `capacityDays` and `refinedAt` are absent until a refinement is recorded.
74
74
 
@@ -84,20 +84,20 @@ run can diff against it:
84
84
  - **Refuter verdicts**: every correction verbatim, with its lens.
85
85
  - **In progress** by batch, then **Plan next**, **Blocked** and **Close or
86
86
  demote** in full, since only In progress goes into the sprint.
87
- - **Leftovers** (after `planr sprint close`) and **Applied** (after
88
- `planr sprint apply`).
87
+ - **Leftovers** (after `openplanr sprint close`) and **Applied** (after
88
+ `openplanr sprint apply`).
89
89
 
90
90
  ## Machine-readable copy
91
91
 
92
92
  `.planr/sprints/SPRINT-NNN/refinement.json`: the document described in
93
93
  [the refinement contract](refinement-contract.md), validated against the JSON
94
94
  Schema packaged as `schemas/refinement.schema.json` (linked from the skill
95
- entrypoint). The dashboard, `planr sprint diff` and `planr sprint apply` consume
95
+ entrypoint). The dashboard, `openplanr sprint diff` and `openplanr sprint apply` consume
96
96
  it.
97
97
 
98
98
  ## Status write-back
99
99
 
100
- Only on approval through the structured question. `planr sprint apply
100
+ Only on approval through the structured question. `openplanr sprint apply
101
101
  SPRINT-NNN --yes --commit` writes each close, demote or blocked row's
102
102
  `targetStatus`, `targetPriority` and `blockedBy` to the artifacts and commits the
103
103
  sprint, the note, the JSON and the changed artifacts as one commit:
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openplanr.dev/schemas/skills/planr-sprint/refinement.schema.json",
4
4
  "title": "OpenPlanr sprint refinement document",
5
- "description": "One backlog refinement run: inputs, every open item's judgement, the four buckets, the in-progress batches and the refuter corrections. Written by the planr-sprint skill and validated by planr sprint refinement.",
5
+ "description": "One backlog refinement run: inputs, every open item's judgement, the four buckets, the in-progress batches and the refuter corrections. Written by the planr-sprint skill and validated by openplanr sprint refinement.",
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
8
  "required": ["schemaVersion", "sprintId", "refinedAt", "inputs", "items", "buckets"],
@@ -102,7 +102,7 @@
102
102
  }
103
103
  },
104
104
  "leftovers": {
105
- "description": "Written by planr sprint close.",
105
+ "description": "Written by openplanr sprint close.",
106
106
  "type": "array",
107
107
  "items": {
108
108
  "type": "object",
@@ -115,7 +115,7 @@
115
115
  }
116
116
  },
117
117
  "applied": {
118
- "description": "Written by planr sprint apply.",
118
+ "description": "Written by openplanr sprint apply.",
119
119
  "type": "object",
120
120
  "additionalProperties": false,
121
121
  "required": ["at", "updates"],
@@ -8,7 +8,7 @@ license: MIT
8
8
 
9
9
  Inspect delivery state read-only in the active session. Read the repository's
10
10
  planning artifacts, task statuses, dependency graph, current branch, and relevant
11
- runtime markers directly. Use the optional deterministic `planr status --json`
11
+ runtime markers directly. Use the optional deterministic `openplanr status --json`
12
12
  utility when available, but do not require it or a semantic subprocess.
13
13
 
14
14
  Add GitHub or Linear lookups only when the user requests live remote state. Keep
@@ -15,17 +15,17 @@ Resolution order:
15
15
 
16
16
  1. use a host-native GitHub or Linear connector when available;
17
17
  2. otherwise, for GitHub, use the packaged deterministic helper;
18
- 3. otherwise, for Linear, use the `planr linear` terminal utility when the user has
19
- installed it; `planr github` and `planr sync` are optional equivalents for the rest.
18
+ 3. otherwise, for Linear, use the `openplanr linear` terminal utility when the user has
19
+ installed it; `openplanr github` and `openplanr sync` are optional equivalents for the rest.
20
20
 
21
21
  Linear through the CLI:
22
22
 
23
- - the user runs `planr linear init` in a terminal once; it prompts for a personal
23
+ - the user runs `openplanr linear init` in a terminal once; it prompts for a personal
24
24
  access token, which the CLI stores;
25
- - audit with `planr linear sync --dry-run`, which reads Linear without writing;
26
- - before a real `planr linear sync`, ask how conflicts should resolve and pass
25
+ - audit with `openplanr linear sync --dry-run`, which reads Linear without writing;
26
+ - before a real `openplanr linear sync`, ask how conflicts should resolve and pass
27
27
  `--on-conflict local` or `--on-conflict linear`; without a prompt it favors Linear;
28
- - `planr linear push <artifact-id>` creates or updates Linear issues; preview with
28
+ - `openplanr linear push <artifact-id>` creates or updates Linear issues; preview with
29
29
  `--dry-run`. Quick tasks and backlog items need `linear.standaloneProjectId` in the
30
30
  project config when no terminal prompt is available.
31
31
 
@@ -24,6 +24,17 @@
24
24
  ],
25
25
  "executable": true
26
26
  },
27
+ {
28
+ "path": "scripts/names.mjs",
29
+ "kind": "script",
30
+ "hosts": [
31
+ "claude-code",
32
+ "codex",
33
+ "chatgpt",
34
+ "cursor"
35
+ ],
36
+ "executable": false
37
+ },
27
38
  {
28
39
  "path": "agents/openai.yaml",
29
40
  "kind": "agent-metadata",
@@ -0,0 +1,8 @@
1
+ // @ts-check
2
+ // The planning folder and command names that every package and generated copy reads.
3
+
4
+ /** @type {typeof import('./names.d.mts').PLANNING_FOLDER} */
5
+ export const PLANNING_FOLDER = '.planr';
6
+
7
+ /** @type {typeof import('./names.d.mts').CLI_COMMAND} */
8
+ export const CLI_COMMAND = 'openplanr';
@@ -5,6 +5,7 @@ import { access, readFile } from 'node:fs/promises';
5
5
  import { resolve } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { promisify } from 'node:util';
8
+ import { CLI_COMMAND, PLANNING_FOLDER } from './names.mjs';
8
9
 
9
10
  const execFileAsync = promisify(execFile);
10
11
  const LINEAR_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
@@ -109,7 +110,7 @@ async function readJsonInput(value, stdin) {
109
110
  }
110
111
 
111
112
  async function inspectLocal(cwd) {
112
- const candidates = ['.planr/config.json', '.openplanr/config.json'];
113
+ const candidates = [`${PLANNING_FOLDER}/config.json`, '.openplanr/config.json'];
113
114
  const roots = [];
114
115
  for (const candidate of candidates) {
115
116
  try {
@@ -146,7 +147,7 @@ export async function runPortableSync(
146
147
  } else if (args.provider === 'linear') {
147
148
  throw new IntegrationError(
148
149
  'E_SYNC_USAGE',
149
- 'Linear synchronization runs through a Linear connector or the planr CLI (planr linear push, planr linear sync).',
150
+ `Linear synchronization runs through a Linear connector or the ${CLI_COMMAND} CLI (${CLI_COMMAND} linear push, ${CLI_COMMAND} linear sync).`,
150
151
  );
151
152
  } else {
152
153
  throw new IntegrationError(
@@ -5,6 +5,7 @@ import { access, readFile } from 'node:fs/promises';
5
5
  import { resolve } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { promisify } from 'node:util';
8
+ import { CLI_COMMAND, PLANNING_FOLDER } from './names.mjs';
8
9
 
9
10
  const execFileAsync = promisify(execFile);
10
11
  const LINEAR_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
@@ -109,7 +110,7 @@ async function readJsonInput(value, stdin) {
109
110
  }
110
111
 
111
112
  async function inspectLocal(cwd) {
112
- const candidates = ['.planr/config.json', '.openplanr/config.json'];
113
+ const candidates = [`${PLANNING_FOLDER}/config.json`, '.openplanr/config.json'];
113
114
  const roots = [];
114
115
  for (const candidate of candidates) {
115
116
  try {
@@ -146,7 +147,7 @@ export async function runPortableSync(
146
147
  } else if (args.provider === 'linear') {
147
148
  throw new IntegrationError(
148
149
  'E_SYNC_USAGE',
149
- 'Linear synchronization runs through a Linear connector or the planr CLI (planr linear push, planr linear sync).',
150
+ `Linear synchronization runs through a Linear connector or the ${CLI_COMMAND} CLI (${CLI_COMMAND} linear push, ${CLI_COMMAND} linear sync).`,
150
151
  );
151
152
  } else {
152
153
  throw new IntegrationError(
@@ -0,0 +1,4 @@
1
+ /** Folder at a project root that holds its OpenPlanr planning files. */
2
+ export declare const PLANNING_FOLDER: '.planr';
3
+ /** Command name that help, usage, errors and next-step hints show. */
4
+ export declare const CLI_COMMAND: 'openplanr';
package/lib/names.mjs ADDED
@@ -0,0 +1,8 @@
1
+ // @ts-check
2
+ // The planning folder and command names that every package and generated copy reads.
3
+
4
+ /** @type {typeof import('./names.d.mts').PLANNING_FOLDER} */
5
+ export const PLANNING_FOLDER = '.planr';
6
+
7
+ /** @type {typeof import('./names.d.mts').CLI_COMMAND} */
8
+ export const CLI_COMMAND = 'openplanr';
@@ -0,0 +1,14 @@
1
+ export { PLANNING_FOLDER } from './names.mjs';
2
+
3
+ /** Why OpenPlanr refuses to write into a project's planning folder. */
4
+ export interface PlanningFolderConflict {
5
+ readonly code: 'E_PLANNING_FOLDER_FOREIGN';
6
+ readonly problem: string;
7
+ readonly fix: string;
8
+ readonly signs: readonly string[];
9
+ }
10
+
11
+ /** Signs that `<projectRoot>/.planr`, which lacks OpenPlanr's config.json, is a folder OpenPlanr didn't create; empty when OpenPlanr may write there. */
12
+ export declare function foreignPlanningFolderSigns(projectRoot: string): string[];
13
+ /** The refusal for writing into a planning folder OpenPlanr didn't create, or null when OpenPlanr may write there. */
14
+ export declare function planningFolderConflict(projectRoot: string): PlanningFolderConflict | null;
@@ -0,0 +1,40 @@
1
+ // @ts-check
2
+ // Recognizes a planning folder OpenPlanr didn't create, so OpenPlanr never writes into it.
3
+ import { existsSync, readdirSync, statSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { CLI_COMMAND, PLANNING_FOLDER } from './names.mjs';
6
+
7
+ export { PLANNING_FOLDER };
8
+
9
+ const FOREIGN_FILES = Object.freeze(['planr.config.json', 'board.html']);
10
+ const GOAL_DIRECTORIES = Object.freeze(['tasks', 'plans']);
11
+
12
+ const isDirectory = (path) => existsSync(path) && statSync(path).isDirectory();
13
+
14
+ /** @type {typeof import('./planning-folder.d.mts').foreignPlanningFolderSigns} */
15
+ export function foreignPlanningFolderSigns(projectRoot) {
16
+ const folder = join(projectRoot, PLANNING_FOLDER);
17
+ if (!isDirectory(folder) || existsSync(join(folder, 'config.json'))) return [];
18
+ const signs = FOREIGN_FILES.filter((name) => existsSync(join(folder, name)));
19
+ for (const name of GOAL_DIRECTORIES) {
20
+ const directory = join(folder, name);
21
+ if (
22
+ isDirectory(directory) &&
23
+ readdirSync(directory).some((entry) => entry.endsWith('-goal.md'))
24
+ )
25
+ signs.push(`*-goal.md files in ${name}`);
26
+ }
27
+ return signs;
28
+ }
29
+
30
+ /** @type {typeof import('./planning-folder.d.mts').planningFolderConflict} */
31
+ export function planningFolderConflict(projectRoot) {
32
+ const signs = foreignPlanningFolderSigns(projectRoot);
33
+ if (signs.length === 0) return null;
34
+ return Object.freeze({
35
+ code: 'E_PLANNING_FOLDER_FOREIGN',
36
+ problem: `The ${PLANNING_FOLDER} folder in this project wasn't created by OpenPlanr: it has ${signs.join(', ')} and no OpenPlanr config.json. OpenPlanr wrote nothing there.`,
37
+ fix: `Move or rename that folder, or use ${CLI_COMMAND} in a project without it, then retry.`,
38
+ signs: Object.freeze(signs),
39
+ });
40
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openplanr",
3
- "version": "2.2640.9",
3
+ "version": "2.2641.1",
4
4
  "description": "Deterministic OpenPlanr utilities for planning storage, validation, rendering, setup, diagnostics, and GitHub/Linear synchronization",
5
5
  "type": "module",
6
6
  "main": "./dist/cli/index.js",
@@ -19,9 +19,9 @@
19
19
  }
20
20
  },
21
21
  "bin": {
22
- "planr": "./bin/planr.js",
23
- "openplanr": "./bin/planr.js",
24
- "opr": "./bin/planr.js"
22
+ "openplanr": "./bin/openplanr.js",
23
+ "opr": "./bin/openplanr.js",
24
+ "planr": "./bin/planr.js"
25
25
  },
26
26
  "publishConfig": {
27
27
  "access": "public",
@@ -115,7 +115,7 @@
115
115
  "zod": "^4.3.6"
116
116
  },
117
117
  "optionalDependencies": {
118
- "planr-pipeline": "0.55.10"
118
+ "planr-pipeline": "0.56.0"
119
119
  },
120
120
  "devDependencies": {
121
121
  "@biomejs/biome": "^2.4.9",