openplanr 3.0.0 → 3.1.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 (233) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/cli/commands/init-deterministic.d.ts.map +1 -1
  3. package/dist/cli/commands/init-deterministic.js +49 -6
  4. package/dist/cli/commands/init-deterministic.js.map +1 -1
  5. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  6. package/dist/cli/commands/upgrade.js +4 -2
  7. package/dist/cli/commands/upgrade.js.map +1 -1
  8. package/dist/dashboard/.vite/manifest.json +2 -2
  9. package/dist/dashboard/assets/{index-Bk8DyO_2.css → index-BU5fzjyz.css} +1 -1
  10. package/dist/dashboard/assets/index-G7ygVDGg.js +572 -0
  11. package/dist/dashboard/assets/index-G7ygVDGg.js.map +1 -0
  12. package/dist/dashboard/dashboard-manifest.json +14 -14
  13. package/dist/dashboard/index.html +2 -2
  14. package/dist/models/types.d.ts +0 -46
  15. package/dist/models/types.d.ts.map +1 -1
  16. package/dist/services/capability-map-service.d.ts +4 -0
  17. package/dist/services/capability-map-service.d.ts.map +1 -1
  18. package/dist/services/capability-map-service.js +7 -1
  19. package/dist/services/capability-map-service.js.map +1 -1
  20. package/dist/services/claude-plugin-service.d.ts +15 -1
  21. package/dist/services/claude-plugin-service.d.ts.map +1 -1
  22. package/dist/services/claude-plugin-service.js +66 -15
  23. package/dist/services/claude-plugin-service.js.map +1 -1
  24. package/dist/services/config-service.d.ts +24 -1
  25. package/dist/services/config-service.d.ts.map +1 -1
  26. package/dist/services/config-service.js +69 -2
  27. package/dist/services/config-service.js.map +1 -1
  28. package/dist/services/git-service.d.ts +5 -0
  29. package/dist/services/git-service.d.ts.map +1 -1
  30. package/dist/services/git-service.js +27 -0
  31. package/dist/services/git-service.js.map +1 -1
  32. package/dist/services/linear-pull-service.d.ts.map +1 -1
  33. package/dist/services/linear-pull-service.js +1 -2
  34. package/dist/services/linear-pull-service.js.map +1 -1
  35. package/dist/services/pipeline-package-service.d.ts +2 -0
  36. package/dist/services/pipeline-package-service.d.ts.map +1 -1
  37. package/dist/services/pipeline-package-service.js +2 -1
  38. package/dist/services/pipeline-package-service.js.map +1 -1
  39. package/dist/services/runtime-change-summary.d.ts.map +1 -1
  40. package/dist/services/runtime-change-summary.js +4 -0
  41. package/dist/services/runtime-change-summary.js.map +1 -1
  42. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  43. package/dist/services/runtime-manager-service.js +14 -3
  44. package/dist/services/runtime-manager-service.js.map +1 -1
  45. package/dist/services/spec-service.d.ts.map +1 -1
  46. package/dist/services/spec-service.js +11 -22
  47. package/dist/services/spec-service.js.map +1 -1
  48. package/dist/services/upgrade-report.d.ts.map +1 -1
  49. package/dist/services/upgrade-report.js +5 -2
  50. package/dist/services/upgrade-report.js.map +1 -1
  51. package/dist/services/upgrade-service.d.ts +14 -0
  52. package/dist/services/upgrade-service.d.ts.map +1 -1
  53. package/dist/services/upgrade-service.js +69 -11
  54. package/dist/services/upgrade-service.js.map +1 -1
  55. package/dist/templates/rules/shared/capability-map.md.hbs +2 -2
  56. package/lib/host-packages/adapter-registry.json +5 -5
  57. package/lib/host-packages/capability-map.json +89 -29
  58. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  59. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  60. package/lib/host-packages/claude/openplanr/.openplanr-content.json +70 -38
  61. package/lib/host-packages/claude/openplanr/CONNECTORS.md +62 -0
  62. package/lib/host-packages/claude/openplanr/README.md +1 -1
  63. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  64. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
  65. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
  66. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  67. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
  68. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  69. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  70. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
  71. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +279 -58
  72. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +50 -42
  73. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +282 -146
  74. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +949 -316
  75. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +143 -87
  76. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +930 -183
  77. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +17 -15
  78. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
  79. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
  80. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +146 -54
  81. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +25 -25
  82. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +8 -4
  83. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
  84. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +8 -4
  85. package/lib/host-packages/claude/openplanr/skills/connect/SKILL.md +60 -0
  86. package/lib/host-packages/claude/openplanr/skills/connect/references/connectors.md +62 -0
  87. package/lib/host-packages/claude/openplanr/skills/openplanr/SKILL.md +4 -0
  88. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +4 -1
  89. package/lib/host-packages/claude/openplanr/skills/plan/scripts/planning-ids.mjs +49 -3
  90. package/lib/host-packages/claude/openplanr/skills/share/SKILL.md +87 -0
  91. package/lib/host-packages/claude/openplanr/skills/share/references/connectors.md +62 -0
  92. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +6 -3
  93. package/lib/host-packages/claude/openplanr/skills/ship/scripts/discover-verification.mjs +2 -1
  94. package/lib/host-packages/claude/openplanr/skills/sprint/SKILL.md +15 -6
  95. package/lib/host-packages/claude/openplanr/skills/sprint/references/connectors.md +62 -0
  96. package/lib/host-packages/claude/openplanr/skills/sprint/references/tracker-connections.md +9 -13
  97. package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +14 -3
  98. package/lib/host-packages/claude/openplanr/skills/status/references/connectors.md +62 -0
  99. package/lib/host-packages/claude/openplanr/skills/status/references/tracker-connections.md +9 -13
  100. package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +25 -10
  101. package/lib/host-packages/claude/openplanr/skills/sync/references/connectors.md +62 -0
  102. package/lib/host-packages/claude/openplanr/skills/sync/references/tracker-connections.md +9 -13
  103. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +69 -37
  104. package/lib/host-packages/cursor/openplanr/CONNECTORS.md +62 -0
  105. package/lib/host-packages/cursor/openplanr/manifest.json +4 -2
  106. package/lib/host-packages/cursor/openplanr/rules/planr-connect/references/connectors.md +62 -0
  107. package/lib/host-packages/cursor/openplanr/rules/planr-connect.mdc +58 -0
  108. package/lib/host-packages/cursor/openplanr/rules/planr-openplanr.mdc +4 -0
  109. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/planning-ids.mjs +49 -3
  110. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +4 -1
  111. package/lib/host-packages/cursor/openplanr/rules/planr-share/references/connectors.md +62 -0
  112. package/lib/host-packages/cursor/openplanr/rules/planr-share.mdc +85 -0
  113. package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/discover-verification.mjs +2 -1
  114. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +6 -3
  115. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/connectors.md +62 -0
  116. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/tracker-connections.md +9 -13
  117. package/lib/host-packages/cursor/openplanr/rules/planr-sprint.mdc +15 -6
  118. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/connectors.md +62 -0
  119. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/tracker-connections.md +9 -13
  120. package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +14 -3
  121. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/connectors.md +62 -0
  122. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/tracker-connections.md +9 -13
  123. package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +25 -10
  124. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  125. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
  126. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
  127. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  128. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
  129. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  130. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  131. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
  132. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +279 -58
  133. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +50 -42
  134. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +282 -146
  135. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +949 -316
  136. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +143 -87
  137. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +930 -183
  138. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +17 -15
  139. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
  140. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
  141. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +146 -54
  142. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +25 -25
  143. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +8 -4
  144. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
  145. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +8 -4
  146. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  147. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  148. package/lib/host-packages/openai/openplanr/.openplanr-content.json +88 -40
  149. package/lib/host-packages/openai/openplanr/CONNECTORS.md +62 -0
  150. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  151. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
  152. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
  153. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  154. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
  155. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  156. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  157. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
  158. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +279 -58
  159. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +50 -42
  160. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +282 -146
  161. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +949 -316
  162. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +143 -87
  163. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +930 -183
  164. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +17 -15
  165. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
  166. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
  167. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +146 -54
  168. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +25 -25
  169. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +8 -4
  170. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
  171. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +8 -4
  172. package/lib/host-packages/openai/openplanr/skills/connect/SKILL.md +59 -0
  173. package/lib/host-packages/openai/openplanr/skills/connect/agents/openai.yaml +6 -0
  174. package/lib/host-packages/openai/openplanr/skills/connect/openplanr.skill.json +37 -0
  175. package/lib/host-packages/openai/openplanr/skills/connect/references/connectors.md +62 -0
  176. package/lib/host-packages/openai/openplanr/skills/openplanr/SKILL.md +4 -0
  177. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +4 -1
  178. package/lib/host-packages/openai/openplanr/skills/plan/scripts/planning-ids.mjs +49 -3
  179. package/lib/host-packages/openai/openplanr/skills/share/SKILL.md +86 -0
  180. package/lib/host-packages/openai/openplanr/skills/share/agents/openai.yaml +6 -0
  181. package/lib/host-packages/openai/openplanr/skills/share/openplanr.skill.json +37 -0
  182. package/lib/host-packages/openai/openplanr/skills/share/references/connectors.md +62 -0
  183. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +6 -3
  184. package/lib/host-packages/openai/openplanr/skills/ship/scripts/discover-verification.mjs +2 -1
  185. package/lib/host-packages/openai/openplanr/skills/sprint/SKILL.md +15 -6
  186. package/lib/host-packages/openai/openplanr/skills/sprint/openplanr.skill.json +11 -0
  187. package/lib/host-packages/openai/openplanr/skills/sprint/references/connectors.md +62 -0
  188. package/lib/host-packages/openai/openplanr/skills/sprint/references/tracker-connections.md +9 -13
  189. package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +14 -3
  190. package/lib/host-packages/openai/openplanr/skills/status/openplanr.skill.json +11 -0
  191. package/lib/host-packages/openai/openplanr/skills/status/references/connectors.md +62 -0
  192. package/lib/host-packages/openai/openplanr/skills/status/references/tracker-connections.md +9 -13
  193. package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +25 -10
  194. package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +11 -0
  195. package/lib/host-packages/openai/openplanr/skills/sync/references/connectors.md +62 -0
  196. package/lib/host-packages/openai/openplanr/skills/sync/references/tracker-connections.md +9 -13
  197. package/lib/json-schema.mjs +313 -36
  198. package/lib/schemas/v1.0.0/spec.schema.json +120 -0
  199. package/lib/schemas/v1.0.0/story.schema.json +95 -0
  200. package/lib/schemas/v1.0.0/task.schema.json +171 -0
  201. package/lib/schemas/v1.7.0/spec.schema.json +117 -0
  202. package/lib/schemas/v1.7.0/story.schema.json +107 -0
  203. package/lib/schemas/v1.7.0/task.schema.json +217 -0
  204. package/package.json +32 -32
  205. package/dist/dashboard/assets/index-Csby7_ur.js +0 -557
  206. package/dist/dashboard/assets/index-Csby7_ur.js.map +0 -1
  207. package/dist/services/audit-log-service.d.ts +0 -47
  208. package/dist/services/audit-log-service.d.ts.map +0 -1
  209. package/dist/services/audit-log-service.js +0 -211
  210. package/dist/services/audit-log-service.js.map +0 -1
  211. package/dist/services/delta-apply-service.d.ts +0 -16
  212. package/dist/services/delta-apply-service.d.ts.map +0 -1
  213. package/dist/services/delta-apply-service.js +0 -74
  214. package/dist/services/delta-apply-service.js.map +0 -1
  215. package/dist/services/evidence-verifier.d.ts +0 -71
  216. package/dist/services/evidence-verifier.d.ts.map +0 -1
  217. package/dist/services/evidence-verifier.js +0 -174
  218. package/dist/services/evidence-verifier.js.map +0 -1
  219. package/dist/services/revise-apply-service.d.ts +0 -55
  220. package/dist/services/revise-apply-service.d.ts.map +0 -1
  221. package/dist/services/revise-apply-service.js +0 -265
  222. package/dist/services/revise-apply-service.js.map +0 -1
  223. package/dist/services/revise-cache-service.d.ts +0 -46
  224. package/dist/services/revise-cache-service.d.ts.map +0 -1
  225. package/dist/services/revise-cache-service.js +0 -89
  226. package/dist/services/revise-cache-service.js.map +0 -1
  227. package/dist/services/revise-plan-service.d.ts +0 -38
  228. package/dist/services/revise-plan-service.d.ts.map +0 -1
  229. package/dist/services/revise-plan-service.js +0 -153
  230. package/dist/services/revise-plan-service.js.map +0 -1
  231. /package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
  232. /package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
  233. /package/lib/host-packages/openai/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
@@ -3,16 +3,20 @@
3
3
  "schemaVersion": "1.0.0",
4
4
  "protocolVersion": "1.8.0",
5
5
  "host": "cursor",
6
- "skillCount": 28,
6
+ "skillCount": 30,
7
7
  "roleCount": 0,
8
8
  "files": [
9
+ {
10
+ "path": "CONNECTORS.md",
11
+ "digest": "sha256:0b2062a01690bbb6b5e9688663fc3c38e8128361c9ddedea149b5bccd4620296"
12
+ },
9
13
  {
10
14
  "path": "LICENSE",
11
15
  "digest": "sha256:ff4ad7d960f2a89a51b5db88e1efb1a3b77e6c28e1c4fee27cbd35f6a5b3debb"
12
16
  },
13
17
  {
14
18
  "path": "manifest.json",
15
- "digest": "sha256:bb99c4e7aca114a4627114d9338303bd1432cad2773ca708b882b77878047598"
19
+ "digest": "sha256:6893f105f30ad5300dd8a617575929ba3662809840a2903dce386802d93ad501"
16
20
  },
17
21
  {
18
22
  "path": "rules/planr-artifact.mdc",
@@ -74,6 +78,14 @@
74
78
  "path": "rules/planr-cmo-review/scripts/validate-note.mjs",
75
79
  "digest": "sha256:9c3c94842059fb884c9a1b22413395f7a0169f788cded3c04bd3b251acd564ae"
76
80
  },
81
+ {
82
+ "path": "rules/planr-connect.mdc",
83
+ "digest": "sha256:10803ee8844a9b24d4dc7298b03e7ea29bf61380cb84b8abfb2df1612cd7104d"
84
+ },
85
+ {
86
+ "path": "rules/planr-connect/references/connectors.md",
87
+ "digest": "sha256:0b2062a01690bbb6b5e9688663fc3c38e8128361c9ddedea149b5bccd4620296"
88
+ },
77
89
  {
78
90
  "path": "rules/planr-coo-review.mdc",
79
91
  "digest": "sha256:5d1577760ee23f25a89e6e156afe4b6948220bb63243eae40556fe07083e0658"
@@ -444,7 +456,7 @@
444
456
  },
445
457
  {
446
458
  "path": "rules/planr-openplanr.mdc",
447
- "digest": "sha256:ecc6ca8121516c96c6daf16e1768e4986714add5c2ba281cc8ccc153003a6b53"
459
+ "digest": "sha256:78c736fff2a4ebc4293021021a33f9bab2702e573fc8301a353a600c097f35e2"
448
460
  },
449
461
  {
450
462
  "path": "rules/planr-operate.mdc",
@@ -460,7 +472,7 @@
460
472
  },
461
473
  {
462
474
  "path": "rules/planr-plan.mdc",
463
- "digest": "sha256:952f63ebe7ad028043e1c25e12737f2e56db6216efa09346fd6bd14f071a5223"
475
+ "digest": "sha256:e87564b05b0c8f9a17c0cf03ce9212a3104ae9321920152b2df67d7b0b705d63"
464
476
  },
465
477
  {
466
478
  "path": "rules/planr-plan/references/artifact-contract.md",
@@ -488,7 +500,7 @@
488
500
  },
489
501
  {
490
502
  "path": "rules/planr-plan/scripts/planning-ids.mjs",
491
- "digest": "sha256:5962fb674a45ce1c67c0fd7aa3085151ff1c817f4004baaa865acbdff5757adb"
503
+ "digest": "sha256:d7051fab0540e3beb176015f174e0851a3ceb8a24c43344495b43a28d2eaceae"
492
504
  },
493
505
  {
494
506
  "path": "rules/planr-release.mdc",
@@ -518,9 +530,17 @@
518
530
  "path": "rules/planr-release/scripts/collect_changes.sh",
519
531
  "digest": "sha256:6271a1d8ea7d0a8c86dd52f85fa78666845d7d152cc95ae5148fde68dcd2f652"
520
532
  },
533
+ {
534
+ "path": "rules/planr-share.mdc",
535
+ "digest": "sha256:1508157747f965bc1365d6e42d116b66831422f76ab2671e52d019661fb084ee"
536
+ },
537
+ {
538
+ "path": "rules/planr-share/references/connectors.md",
539
+ "digest": "sha256:0b2062a01690bbb6b5e9688663fc3c38e8128361c9ddedea149b5bccd4620296"
540
+ },
521
541
  {
522
542
  "path": "rules/planr-ship.mdc",
523
- "digest": "sha256:4b49139b3f14cb3ae85f57c1bd426b3ade0d5093d55ebb178e5f232ebc65bf1e"
543
+ "digest": "sha256:839b6a8a90182d17c32e733bb4bc3e61e11bf5c8a224daadf8112adbcc86ae02"
524
544
  },
525
545
  {
526
546
  "path": "rules/planr-ship/references/design-lineage.md",
@@ -532,7 +552,7 @@
532
552
  },
533
553
  {
534
554
  "path": "rules/planr-ship/scripts/discover-verification.mjs",
535
- "digest": "sha256:e6c2bf04fc400529362a4f4e0d6bee6b81e19642e78167cf4f546f5757920b28"
555
+ "digest": "sha256:8805ac8d814a1d94364d455df6da350983d4c8436faa3749717da5f1b3ae63b1"
536
556
  },
537
557
  {
538
558
  "path": "rules/planr-spec.mdc",
@@ -544,7 +564,11 @@
544
564
  },
545
565
  {
546
566
  "path": "rules/planr-sprint.mdc",
547
- "digest": "sha256:d7678d43e82e90cbfdb7089e637a0a0b5059d4bf5619693808571a6c2a566835"
567
+ "digest": "sha256:7cd45996b5aa00f16f8b23c72fbf5dfc2dc34e89af35a34e2cfd26946f5e3682"
568
+ },
569
+ {
570
+ "path": "rules/planr-sprint/references/connectors.md",
571
+ "digest": "sha256:0b2062a01690bbb6b5e9688663fc3c38e8128361c9ddedea149b5bccd4620296"
548
572
  },
549
573
  {
550
574
  "path": "rules/planr-sprint/references/refinement-contract.md",
@@ -556,7 +580,7 @@
556
580
  },
557
581
  {
558
582
  "path": "rules/planr-sprint/references/tracker-connections.md",
559
- "digest": "sha256:5f7d7126ca0db062c2b14c8ac35ca9758e44433329da610d7e75ad83b9417707"
583
+ "digest": "sha256:f9617486a5e2ecc861566d7a7eaf1c97725f9acfcc6bc64cfda1f9b6fd3c4d36"
560
584
  },
561
585
  {
562
586
  "path": "rules/planr-sprint/schemas/refinement.schema.json",
@@ -564,19 +588,27 @@
564
588
  },
565
589
  {
566
590
  "path": "rules/planr-status.mdc",
567
- "digest": "sha256:efc0ae769f57611c39cf4307d721273106a5bc22ca3dcc1e6e07ec9f19e2d508"
591
+ "digest": "sha256:b2a3b616038226e6cc850a337fa6bfce23db150bf6edafe088e986cfb468d820"
592
+ },
593
+ {
594
+ "path": "rules/planr-status/references/connectors.md",
595
+ "digest": "sha256:0b2062a01690bbb6b5e9688663fc3c38e8128361c9ddedea149b5bccd4620296"
568
596
  },
569
597
  {
570
598
  "path": "rules/planr-status/references/tracker-connections.md",
571
- "digest": "sha256:5f7d7126ca0db062c2b14c8ac35ca9758e44433329da610d7e75ad83b9417707"
599
+ "digest": "sha256:f9617486a5e2ecc861566d7a7eaf1c97725f9acfcc6bc64cfda1f9b6fd3c4d36"
572
600
  },
573
601
  {
574
602
  "path": "rules/planr-sync.mdc",
575
- "digest": "sha256:e2e300f5b378a7593c3ed5d133c253d7d3b2a17ad0349133f94a8ba18c4d20b9"
603
+ "digest": "sha256:dd861814a184e5d6cb6054342530adaa8fd7e8bb06b8cb6f34f6fd138777a2fe"
604
+ },
605
+ {
606
+ "path": "rules/planr-sync/references/connectors.md",
607
+ "digest": "sha256:0b2062a01690bbb6b5e9688663fc3c38e8128361c9ddedea149b5bccd4620296"
576
608
  },
577
609
  {
578
610
  "path": "rules/planr-sync/references/tracker-connections.md",
579
- "digest": "sha256:5f7d7126ca0db062c2b14c8ac35ca9758e44433329da610d7e75ad83b9417707"
611
+ "digest": "sha256:f9617486a5e2ecc861566d7a7eaf1c97725f9acfcc6bc64cfda1f9b6fd3c4d36"
580
612
  },
581
613
  {
582
614
  "path": "rules/planr-sync/scripts/names.mjs",
@@ -643,7 +675,7 @@
643
675
  "digest": "sha256:c338765d9f5746bf375377bdd25e94490ac31985bab0b0335e49f9faadb5c08b"
644
676
  },
645
677
  {
646
- "path": "runtime/design/scripts/design-runtime-support-336900df0d39.mjs",
678
+ "path": "runtime/design/scripts/design-runtime-support-e34c388a8e59.mjs",
647
679
  "digest": "sha256:6f9b75516c4c4e9468a3d27ba521664604547940a5a76e8d81425b3603a5ea4a"
648
680
  },
649
681
  {
@@ -652,7 +684,7 @@
652
684
  },
653
685
  {
654
686
  "path": "runtime/design/scripts/design-share.mjs",
655
- "digest": "sha256:76a313211315e67b1fc9a216ce5b4ae415f472a34216a059fdbb4c9870ae9db7"
687
+ "digest": "sha256:688580ad2ecf3e4a32ea62ec8309fd1d7578ca5ebb05802d5010d95becdeb796"
656
688
  },
657
689
  {
658
690
  "path": "runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs",
@@ -664,7 +696,7 @@
664
696
  },
665
697
  {
666
698
  "path": "runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs",
667
- "digest": "sha256:f411ea92c48db776e2911094efeb4d22de2471330332f34a737d8d6763995715"
699
+ "digest": "sha256:215096cb7b59f2ec0daff6d4dd229b30ae2c0d5ab2f6fb96539f02dfd1c428b7"
668
700
  },
669
701
  {
670
702
  "path": "runtime/design/scripts/design-shared-protocol-contracts-75a938cc.mjs",
@@ -680,15 +712,15 @@
680
712
  },
681
713
  {
682
714
  "path": "runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt",
683
- "digest": "sha256:2cd156e3285240dced643f0312875a23ec3681a0492bec96591bfc36c06256b9"
715
+ "digest": "sha256:66a4b5b0ce31ce6c5a5ea43c17dea76a48df6a1bcf5c2cd6b187b2b6c210143c"
684
716
  },
685
717
  {
686
718
  "path": "runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css",
687
- "digest": "sha256:61e3736cd81f15162d877bb29481e96538d8a32f19cc4a6718026e549e193c48"
719
+ "digest": "sha256:b616c94f27575a9b354f53bc697a0f168aa8e17fd54ecec75c92504a17b547d3"
688
720
  },
689
721
  {
690
722
  "path": "runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json",
691
- "digest": "sha256:fc814562f0392d309efcb1232b72d0887e6815c0a5b0c26a2c658101acdd478c"
723
+ "digest": "sha256:d8afa31f819d5c76026a4c7f99991e981d28d047dd7f1414aacb886e08d4367f"
692
724
  },
693
725
  {
694
726
  "path": "runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/01-module-runtime.js",
@@ -700,7 +732,7 @@
700
732
  },
701
733
  {
702
734
  "path": "runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js",
703
- "digest": "sha256:2222cb9544f49c3af6ee1255085450119cb0973bba4b63c610964835c2ed0d54"
735
+ "digest": "sha256:3494e8e8cd50ff596dc2c00cc4c02f6dd2f016de50e0fb1c284ac03b6470b19d"
704
736
  },
705
737
  {
706
738
  "path": "runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-compression.js",
@@ -724,7 +756,7 @@
724
756
  },
725
757
  {
726
758
  "path": "runtime/design/scripts/runtime/packages/design/package.json",
727
- "digest": "sha256:7c884f7d4b1e20ffcfe58514413f1a36e8c00e88866fb07492c912949e87782c"
759
+ "digest": "sha256:1b285ebfcfd776807abf3d8278d4ced7b158b17a4172aa230030d4bf14d29e60"
728
760
  },
729
761
  {
730
762
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css",
@@ -748,7 +780,7 @@
748
780
  },
749
781
  {
750
782
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json",
751
- "digest": "sha256:f517215a81d763cdc5aa903b0d6b2e679d10dc3592915e4f4c1f7062413cb6d3"
783
+ "digest": "sha256:37fd0d518f154d4918aefd7a3b2fc7a6c7b235e7cf7d2d0f5d3e45a82cb400b9"
752
784
  },
753
785
  {
754
786
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js",
@@ -756,35 +788,35 @@
756
788
  },
757
789
  {
758
790
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js",
759
- "digest": "sha256:bf350d5126e53d2eebc29c96ce4c38d007dc205aded91cc3bb964c1d68e469e5"
791
+ "digest": "sha256:3d07031b0e1ebfe8d00491d70eb876cdd9ec829801ec3df4fc5aa72205b5ea7f"
760
792
  },
761
793
  {
762
794
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js",
763
- "digest": "sha256:f30ee0a7f2c9dbe1b13e64d33fd9f5a25bd816e60ca04eeda5153a1a3694cbb1"
795
+ "digest": "sha256:793a627a349d139397ff51c837c7cc911b08b34a49e5629af0c7967e5cb89715"
764
796
  },
765
797
  {
766
798
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js",
767
- "digest": "sha256:0f5687e30eb5029375818768c47b407d48946ad420adec5b3d9453d4e6e9b751"
799
+ "digest": "sha256:3839e5bdcca072a612ec48fffb6e340083f4692c516a2aeb9c8c8896ab4ea6a4"
768
800
  },
769
801
  {
770
802
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js",
771
- "digest": "sha256:1fb2854c8642a5f9285fb5d30b015ef25006a5c2b433323eb6226173ec9f0d12"
803
+ "digest": "sha256:f057d07ab68567daebe124fe103d88157ee4ce68177e21d1a2166debf424309f"
772
804
  },
773
805
  {
774
806
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js",
775
- "digest": "sha256:6038d1c4d96e123d9f9ab7ee2516878c97bdbe5bc6149732d1064444d38b3b57"
807
+ "digest": "sha256:67291903232cb09062344ef0770638c9882a76178adba57c9a67f72bbdb80cbb"
776
808
  },
777
809
  {
778
810
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js",
779
- "digest": "sha256:89525ecc086cf31eff4fc4daf2e886ed603b301c8af6c855d409e9d6367df3e8"
811
+ "digest": "sha256:ed6b1c356c341efa060072cffa2a61fcbb425655bd00c8b58dc5b50a13d5a3ad"
780
812
  },
781
813
  {
782
814
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js",
783
- "digest": "sha256:02670980a272f781deb8d9e9d67c0ca5ea62fd31c9fff6ea55a1ccc7ade93262"
815
+ "digest": "sha256:fae78a4ea2c320638ca51a504b26dba90440d72882afdf1edf7ac49fe24853b6"
784
816
  },
785
817
  {
786
818
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js",
787
- "digest": "sha256:631a2f59100373a07571b84cf75aeb8469d122721c32c5c30a85c26591721878"
819
+ "digest": "sha256:adca04c0e9079e354d467d17aaa6f49423611d290661f0cbbd7610545a98825e"
788
820
  },
789
821
  {
790
822
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js",
@@ -804,15 +836,15 @@
804
836
  },
805
837
  {
806
838
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js",
807
- "digest": "sha256:674115ab13d18062757b121898429a0ba0c6075d94cdc1318d3a1fd4d99252f7"
839
+ "digest": "sha256:c8d5ab2e7df79e22329daaf59e074d74345d11147c500553edd7910aaf96ed3e"
808
840
  },
809
841
  {
810
842
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js",
811
- "digest": "sha256:6228cf871238da64e48ae07c2998a754451462fdc0662137a15e99ce1c7408ee"
843
+ "digest": "sha256:e26c838db40b55f6df77606ac87b36f0298d7316ac832fa8c770c9dbab896596"
812
844
  },
813
845
  {
814
846
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js",
815
- "digest": "sha256:5306387b1f59d43e1cd0ed2c471b18b0b35d5cc8c573ffe5439ea9315494c01e"
847
+ "digest": "sha256:81af29a6a5a15fd4f0ef41fc48e1eca63c30b3745fd1d92830ba83f7cf2ba603"
816
848
  },
817
849
  {
818
850
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/17-design-studio.js",
@@ -820,7 +852,7 @@
820
852
  },
821
853
  {
822
854
  "path": "runtime/design/scripts/runtime/packages/protocol/package.json",
823
- "digest": "sha256:2ef4fe15be8e2037dda6786e075a02b94b3484f30465aab3565022ff7f0321e4"
855
+ "digest": "sha256:45ac1d8badf5ffb59a8bfafbb2af1eecd78843250a1eaf725682e4672d0647c0"
824
856
  },
825
857
  {
826
858
  "path": "runtime/design/scripts/runtime/packages/protocol/registries/artifact-theme.json",
@@ -928,7 +960,7 @@
928
960
  },
929
961
  {
930
962
  "path": "runtime/plan/scripts/design-protocol-contracts.mjs",
931
- "digest": "sha256:153160758bd6d789b015d788c0bb3a7767508763049374e4c7c75f3729dfe763"
963
+ "digest": "sha256:d922b8a2dfa71ba5d17c45cdc75e944f18bdc6259fba99e384ecaf0562f6daf2"
932
964
  },
933
965
  {
934
966
  "path": "runtime/plan/scripts/design.mjs",
@@ -940,12 +972,12 @@
940
972
  },
941
973
  {
942
974
  "path": "runtime/plan/scripts/runtime/packages/protocol/package.json",
943
- "digest": "sha256:2ef4fe15be8e2037dda6786e075a02b94b3484f30465aab3565022ff7f0321e4"
975
+ "digest": "sha256:45ac1d8badf5ffb59a8bfafbb2af1eecd78843250a1eaf725682e4672d0647c0"
944
976
  },
945
977
  {
946
978
  "path": "runtime/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json",
947
979
  "digest": "sha256:b4db7b75b694c2aef2a37be2128e4635302f3473e09236aa1f37a33dcf3590b4"
948
980
  }
949
981
  ],
950
- "contentDigest": "sha256:35d8b3571f0a3d2e01916e1df450e4961e64c0822e48bfd549f239d64e293e9a"
982
+ "contentDigest": "sha256:d596cc6a5f40c22e7deff61709e528e5bde7e58a1e8455b7fe676e505af83d1f"
951
983
  }
@@ -0,0 +1,62 @@
1
+ # Connectors
2
+
3
+ OpenPlanr skills name a kind of service, such as `~~chat`, instead of a product. Connect
4
+ the product your team uses through your host: the vendor publishes the connector, and
5
+ you sign in through the host. OpenPlanr bundles no connectors; they and their credentials
6
+ live in your host. Two optional features need a token: Linear sync (`openplanr linear`) and
7
+ company sign-in (`openplanr company login`). Only when you use them does OpenPlanr store a
8
+ token, in your OS keychain, or in an encrypted file at `~/.planr/credentials.enc` if you set
9
+ `PLANR_CREDENTIAL_FILE_PASSPHRASE`. Tokens are sent only to Linear or to the company server
10
+ you sign in to.
11
+ `openplanr company logout` removes company tokens.
12
+ Every skill also works with nothing connected and reports any remote step it skipped.
13
+
14
+ | Category | Placeholder | Products |
15
+ | --- | --- | --- |
16
+ | Chat | `~~chat` | Slack, Microsoft Teams |
17
+ | Project tracker | `~~project tracker` | Linear, GitHub Issues, Jira, Asana |
18
+ | Source control | `~~source control` | GitHub, GitLab, Bitbucket |
19
+
20
+ Never paste a token into a chat, file or command for OpenPlanr. After you connect a
21
+ service, start a new request so the host loads its tools.
22
+
23
+ ## Chat (`~~chat`)
24
+
25
+ Share a status report, sprint note or release notes as a message draft that you review and send yourself.
26
+
27
+ | Product | Use | Claude Code | Codex | Cursor |
28
+ | --- | --- | --- | --- | --- |
29
+ | Slack | Message drafts | Run `/plugin install slack@claude-plugins-official`, then sign in to Slack from `/mcp`. A workspace admin may need to approve the app. | Install Slack from `/plugins` and sign in when asked. A workspace admin may need to approve the app. | Run `/add-plugin slack`, or install Slack from Customize, then sign in when asked. A workspace admin may need to approve the app. |
30
+
31
+ Message format for Slack, drafting through the connector: standard Markdown, which the connector converts on send ([Slack's messaging guidance](https://github.com/slackapi/slack-mcp-plugin/blob/main/skills/slack-messaging/SKILL.md)): `**bold**`, `_italic_`, `[link text](https://example.com)`, `-` lists, `>` quotes. Do not use mrkdwn's `*bold*` or `<url|text>` here.
32
+
33
+ Message format for Slack, text to paste: Slack mrkdwn ([formatting](https://docs.slack.dev/messaging/formatting-message-text)): `*bold*`, `_italic_`, `<https://example.com|link text>`, lines starting with `•` or `-` for lists, `>` for quotes; no headings or tables; escape `&`, `<` and `>` as `&amp;`, `&lt;` and `&gt;`.
34
+
35
+ Also works with: [Microsoft Teams](https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-teams-tools) (read for context). Add the vendor's connector in your host the same way.
36
+
37
+ Verified: [Slack](https://docs.slack.dev/ai/slack-mcp-server) on 2026-10-09, [Microsoft Teams](https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-teams-tools) on 2026-10-09.
38
+
39
+ ## Project tracker (`~~project tracker`)
40
+
41
+ Push planning status to linked issues after you approve each change, and read issue state back.
42
+
43
+ | Product | Use | Claude Code | Codex | Cursor |
44
+ | --- | --- | --- | --- | --- |
45
+ | Linear | OpenPlanr syncs with it | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install Linear from `/plugins` and sign in when asked. | Run `/add-plugin linear`, or install Linear from Customize, then sign in when asked. |
46
+ | GitHub Issues | OpenPlanr syncs with it | Install the GitHub CLI from cli.github.com and run `gh auth login`. | Install GitHub from `/plugins` and sign in when asked, or install the GitHub CLI and run `gh auth login`. | Install the GitHub CLI from cli.github.com and run `gh auth login`. |
47
+
48
+ Also works with: [Jira](https://support.atlassian.com/atlassian-ai-gateway/docs/get-started-with-the-atlassian-remote-mcp-server/) (read for context), [Asana](https://developers.asana.com/docs/using-asanas-mcp-server) (read for context). Add the vendor's connector in your host the same way.
49
+
50
+ Verified: [Linear](https://linear.app/docs/mcp) on 2026-10-09, [GitHub Issues](https://cli.github.com/manual/gh_auth_login) on 2026-10-09, [Jira](https://support.atlassian.com/atlassian-ai-gateway/docs/get-started-with-the-atlassian-remote-mcp-server/) on 2026-10-09, [Asana](https://developers.asana.com/docs/using-asanas-mcp-server) on 2026-10-09.
51
+
52
+ ## Source control (`~~source control`)
53
+
54
+ Read pull request and branch state for status reports and sprint reviews.
55
+
56
+ | Product | Use | Claude Code | Codex | Cursor |
57
+ | --- | --- | --- | --- | --- |
58
+ | GitHub | Read for context | Install the GitHub CLI from cli.github.com and run `gh auth login`. | Install GitHub from `/plugins` and sign in when asked, or install the GitHub CLI and run `gh auth login`. | Install the GitHub CLI from cli.github.com and run `gh auth login`. |
59
+
60
+ Also works with: [GitLab](https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/) (read for context), [Bitbucket](https://support.atlassian.com/atlassian-ai-gateway/docs/get-started-with-the-atlassian-remote-mcp-server/) (read for context). Add the vendor's connector in your host the same way.
61
+
62
+ Verified: [GitHub](https://cli.github.com/manual/gh_auth_login) on 2026-10-09, [GitLab](https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/) on 2026-10-09, [Bitbucket](https://support.atlassian.com/atlassian-ai-gateway/docs/get-started-with-the-atlassian-remote-mcp-server/) on 2026-10-09.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "openplanr",
3
- "version": "3.0.0",
4
- "ruleCount": 28,
3
+ "version": "3.1.0",
4
+ "ruleCount": 30,
5
5
  "rules": [
6
6
  "rules/planr-artifact.mdc",
7
7
  "rules/planr-browser-qa.mdc",
@@ -9,6 +9,7 @@
9
9
  "rules/planr-chair-review.mdc",
10
10
  "rules/planr-challenger-review.mdc",
11
11
  "rules/planr-cmo-review.mdc",
12
+ "rules/planr-connect.mdc",
12
13
  "rules/planr-coo-review.mdc",
13
14
  "rules/planr-cpo-review.mdc",
14
15
  "rules/planr-cto-review.mdc",
@@ -26,6 +27,7 @@
26
27
  "rules/planr-plan.mdc",
27
28
  "rules/planr-plan-review.mdc",
28
29
  "rules/planr-release.mdc",
30
+ "rules/planr-share.mdc",
29
31
  "rules/planr-ship.mdc",
30
32
  "rules/planr-spec.mdc",
31
33
  "rules/planr-sprint.mdc",
@@ -0,0 +1,62 @@
1
+ # Connectors
2
+
3
+ OpenPlanr skills name a kind of service, such as `~~chat`, instead of a product. Connect
4
+ the product your team uses through your host: the vendor publishes the connector, and
5
+ you sign in through the host. OpenPlanr bundles no connectors; they and their credentials
6
+ live in your host. Two optional features need a token: Linear sync (`openplanr linear`) and
7
+ company sign-in (`openplanr company login`). Only when you use them does OpenPlanr store a
8
+ token, in your OS keychain, or in an encrypted file at `~/.planr/credentials.enc` if you set
9
+ `PLANR_CREDENTIAL_FILE_PASSPHRASE`. Tokens are sent only to Linear or to the company server
10
+ you sign in to.
11
+ `openplanr company logout` removes company tokens.
12
+ Every skill also works with nothing connected and reports any remote step it skipped.
13
+
14
+ | Category | Placeholder | Products |
15
+ | --- | --- | --- |
16
+ | Chat | `~~chat` | Slack, Microsoft Teams |
17
+ | Project tracker | `~~project tracker` | Linear, GitHub Issues, Jira, Asana |
18
+ | Source control | `~~source control` | GitHub, GitLab, Bitbucket |
19
+
20
+ Never paste a token into a chat, file or command for OpenPlanr. After you connect a
21
+ service, start a new request so the host loads its tools.
22
+
23
+ ## Chat (`~~chat`)
24
+
25
+ Share a status report, sprint note or release notes as a message draft that you review and send yourself.
26
+
27
+ | Product | Use | Claude Code | Codex | Cursor |
28
+ | --- | --- | --- | --- | --- |
29
+ | Slack | Message drafts | Run `/plugin install slack@claude-plugins-official`, then sign in to Slack from `/mcp`. A workspace admin may need to approve the app. | Install Slack from `/plugins` and sign in when asked. A workspace admin may need to approve the app. | Run `/add-plugin slack`, or install Slack from Customize, then sign in when asked. A workspace admin may need to approve the app. |
30
+
31
+ Message format for Slack, drafting through the connector: standard Markdown, which the connector converts on send ([Slack's messaging guidance](https://github.com/slackapi/slack-mcp-plugin/blob/main/skills/slack-messaging/SKILL.md)): `**bold**`, `_italic_`, `[link text](https://example.com)`, `-` lists, `>` quotes. Do not use mrkdwn's `*bold*` or `<url|text>` here.
32
+
33
+ Message format for Slack, text to paste: Slack mrkdwn ([formatting](https://docs.slack.dev/messaging/formatting-message-text)): `*bold*`, `_italic_`, `<https://example.com|link text>`, lines starting with `•` or `-` for lists, `>` for quotes; no headings or tables; escape `&`, `<` and `>` as `&amp;`, `&lt;` and `&gt;`.
34
+
35
+ Also works with: [Microsoft Teams](https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-teams-tools) (read for context). Add the vendor's connector in your host the same way.
36
+
37
+ Verified: [Slack](https://docs.slack.dev/ai/slack-mcp-server) on 2026-10-09, [Microsoft Teams](https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-teams-tools) on 2026-10-09.
38
+
39
+ ## Project tracker (`~~project tracker`)
40
+
41
+ Push planning status to linked issues after you approve each change, and read issue state back.
42
+
43
+ | Product | Use | Claude Code | Codex | Cursor |
44
+ | --- | --- | --- | --- | --- |
45
+ | Linear | OpenPlanr syncs with it | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install Linear from `/plugins` and sign in when asked. | Run `/add-plugin linear`, or install Linear from Customize, then sign in when asked. |
46
+ | GitHub Issues | OpenPlanr syncs with it | Install the GitHub CLI from cli.github.com and run `gh auth login`. | Install GitHub from `/plugins` and sign in when asked, or install the GitHub CLI and run `gh auth login`. | Install the GitHub CLI from cli.github.com and run `gh auth login`. |
47
+
48
+ Also works with: [Jira](https://support.atlassian.com/atlassian-ai-gateway/docs/get-started-with-the-atlassian-remote-mcp-server/) (read for context), [Asana](https://developers.asana.com/docs/using-asanas-mcp-server) (read for context). Add the vendor's connector in your host the same way.
49
+
50
+ Verified: [Linear](https://linear.app/docs/mcp) on 2026-10-09, [GitHub Issues](https://cli.github.com/manual/gh_auth_login) on 2026-10-09, [Jira](https://support.atlassian.com/atlassian-ai-gateway/docs/get-started-with-the-atlassian-remote-mcp-server/) on 2026-10-09, [Asana](https://developers.asana.com/docs/using-asanas-mcp-server) on 2026-10-09.
51
+
52
+ ## Source control (`~~source control`)
53
+
54
+ Read pull request and branch state for status reports and sprint reviews.
55
+
56
+ | Product | Use | Claude Code | Codex | Cursor |
57
+ | --- | --- | --- | --- | --- |
58
+ | GitHub | Read for context | Install the GitHub CLI from cli.github.com and run `gh auth login`. | Install GitHub from `/plugins` and sign in when asked, or install the GitHub CLI and run `gh auth login`. | Install the GitHub CLI from cli.github.com and run `gh auth login`. |
59
+
60
+ Also works with: [GitLab](https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/) (read for context), [Bitbucket](https://support.atlassian.com/atlassian-ai-gateway/docs/get-started-with-the-atlassian-remote-mcp-server/) (read for context). Add the vendor's connector in your host the same way.
61
+
62
+ Verified: [GitHub](https://cli.github.com/manual/gh_auth_login) on 2026-10-09, [GitLab](https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/) on 2026-10-09, [Bitbucket](https://support.atlassian.com/atlassian-ai-gateway/docs/get-started-with-the-atlassian-remote-mcp-server/) on 2026-10-09.
@@ -0,0 +1,58 @@
1
+ ---
2
+ alwaysApply: false
3
+ ---
4
+
5
+ # OpenPlanr Connect
6
+
7
+ Report which chat, project tracker and source control connections the host has, and guide connecting the missing ones through the host. Use when the user wants to connect a service for OpenPlanr or asks what is connected.
8
+
9
+ Report which service categories this host can reach and help the user connect
10
+ the missing ones through the host's own connectors. OpenPlanr installs no
11
+ connector and never handles a credential: the vendor publishes the connector and
12
+ the user signs in through the host.
13
+
14
+ ## Check each category
15
+
16
+ The categories are ~~chat, ~~project tracker and ~~source control; their
17
+ products and per-host steps are in [connectors](planr-connect/references/connectors.md). With an
18
+ argument, check only that category; a product name from connectors selects the
19
+ category it belongs to.
20
+
21
+ A category is connected when the host exposes a tool for one of its products,
22
+ loaded or deferred; search the host's deferred tool list by product name when it
23
+ has one. For ~~project tracker and ~~source control, a signed-in GitHub CLI also
24
+ counts: `gh auth status --hostname github.com` succeeds. Judge by the tools you
25
+ can see; never call a tool that writes, posts or changes anything to find out.
26
+
27
+ ## Connect a missing category
28
+
29
+ Work through these steps in order for each missing category:
30
+
31
+ 1. **Already available.** If a matching tool appeared since the last check,
32
+ report the category as connected and name the product. If the host lists the
33
+ product's connector but offers only a sign-in or authentication notice instead
34
+ of its tools, report it as configured but not signed in, tell the user to sign
35
+ in from the host's connector settings, and skip the next two steps for it.
36
+ 2. **Connector suggestions.** If the host offers a connector-suggestion
37
+ capability, such as a tool that searches its connector directory and another
38
+ that shows a Connect card from a search result, search with the category's
39
+ product names and the category name, show the card for the best match, and
40
+ wait for the user to connect. Do not assume any particular tool name.
41
+ 3. **Host step.** Otherwise print the current host's step and the vendor's
42
+ documentation link from [connectors](planr-connect/references/connectors.md).
43
+
44
+ Then ask the user to run `/planr-connect` again once signed in. Do not retry on
45
+ your own. If a workspace admin must approve the vendor's app first, say so.
46
+
47
+ ## Rules
48
+
49
+ - Never ask for, read, store or print a token, key or password. If the user
50
+ pastes one, do not repeat it, and tell them OpenPlanr does not need it.
51
+ - Never edit host configuration, run install or sign-in commands, or sign in on
52
+ the user's behalf.
53
+ - Recommend the vendor's own connector from the catalog, never a third-party one.
54
+
55
+ ## Return
56
+
57
+ One line per category: connected (product), configured but not signed in
58
+ (product), or missing with the step shown (Connect card or host step). End with what the user does next.
@@ -30,6 +30,8 @@ Claude Code and `$planr:plan` in Codex). Do not perform the routed work here.
30
30
  | Refine the open backlog and select the sprint for the next release cut | `planr-sprint` |
31
31
  | See planning or Operate state in the browser | `planr-dashboard` |
32
32
  | Check artifacts for graph, status, or schema drift | `planr-sync` |
33
+ | Post a status, sprint, or release update to chat | `planr-share` (user-invoked) |
34
+ | Connect chat, a tracker, or source control, or see what is connected | `planr-connect` (user-invoked) |
33
35
  | Judge release readiness or prepare a landing sequence | `planr-land` |
34
36
  | Pick a versioning scheme, bump versions, write release notes | `planr-release` |
35
37
  | Diagnose the CLI, plugins, installation, or upgrade state | `planr-doctor` |
@@ -46,6 +48,8 @@ Claude Code and `$planr:plan` in Codex). Do not perform the routed work here.
46
48
  review code does not request implementation delegation.
47
49
  - PLAN and SHIP are separate user-invoked workflows. Route to one; never chain
48
50
  `planr-plan` into `planr-ship` on the user's behalf.
51
+ - `planr-share` and `planr-connect` run only when the user invokes them. When a
52
+ request matches one, name the command for the user to run instead of running it.
49
53
  - When a request spans several skills, route to the earliest step in that
50
54
  order (spec → plan → plan-review → ship → land → release) and name the rest.
51
55
  - When the request is not OpenPlanr work at all, say so and answer directly
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { mkdir, open, readdir, readFile, rename, unlink, writeFile } from 'node:fs/promises';
4
- import { resolve } from 'node:path';
3
+ import { open, readdir, readFile, rename, stat, unlink, writeFile } from 'node:fs/promises';
4
+ import { dirname, join, resolve } from 'node:path';
5
5
 
6
6
  const KINDS = Object.freeze(['SPEC', 'US', 'T']);
7
7
  const EMPTY = Object.freeze({ SPEC: 1, US: 1, T: 1 });
@@ -71,9 +71,55 @@ function parseArgs(argv) {
71
71
  return options;
72
72
  }
73
73
 
74
+ const shellQuote = (value) => (/^[\w./-]+$/u.test(value) ? value : `'${value.replaceAll("'", "'\\''")}'`);
75
+
76
+ /** Returns the nearest `.planr/config.json` at or above `directory` and the specs folder it configures. */
77
+ async function configuredRoot(directory) {
78
+ for (let current = directory; ; current = dirname(current)) {
79
+ const configPath = join(current, '.planr', 'config.json');
80
+ const raw = await readFile(configPath, 'utf8').catch((error) => {
81
+ if (error.code === 'ENOENT' || error.code === 'ENOTDIR') return null;
82
+ throw error;
83
+ });
84
+ if (raw !== null) {
85
+ let agile;
86
+ try {
87
+ agile = JSON.parse(raw).outputPaths?.agile ?? '.planr';
88
+ } catch (error) {
89
+ throw new Error(`Project config ${configPath} is not valid JSON: ${error.message}`);
90
+ }
91
+ if (typeof agile !== 'string') throw new Error(`Project config ${configPath} has a non-string outputPaths.agile.`);
92
+ return { configPath, expected: resolve(current, agile, 'specs') };
93
+ }
94
+ if (dirname(current) === current) return null;
95
+ }
96
+ }
97
+
98
+ /** Accepts only an existing directory that the nearest project config names as its planning folder. */
99
+ async function assertPlanningRoot(planningRoot) {
100
+ const project = await configuredRoot(planningRoot);
101
+ if (!project) {
102
+ throw new Error(`Planning root ${planningRoot} is not inside an OpenPlanr project: no .planr/config.json in it or any parent directory.`);
103
+ }
104
+ const { configPath, expected } = project;
105
+ if (planningRoot !== expected) {
106
+ throw new Error(`Planning root ${planningRoot} is not the planning folder configured by ${configPath}, which expects ${expected}.`);
107
+ }
108
+ const status = await stat(planningRoot).catch((error) => {
109
+ if (error.code === 'ENOENT') return null;
110
+ throw error;
111
+ });
112
+ if (!status) {
113
+ throw new Error(
114
+ `Planning root ${planningRoot} does not exist; ${configPath} expects it. Create it with \`mkdir -p ${shellQuote(planningRoot)}\`, or fix outputPaths.agile in ${configPath}.`,
115
+ );
116
+ }
117
+ if (!status.isDirectory()) throw new Error(`Planning root ${planningRoot} is not a directory; ${configPath} expects a directory there.`);
118
+ }
119
+
74
120
  async function reserve({ root, preview, counts }) {
75
121
  const planningRoot = resolve(root);
76
- if (!preview) await mkdir(planningRoot, { recursive: true });
122
+ await assertPlanningRoot(planningRoot);
77
123
  const run = async () => {
78
124
  const sequence = await currentSequence(planningRoot);
79
125
  const ids = Object.fromEntries(
@@ -76,7 +76,10 @@ Write stories and tasks directly in the repository's active planning mode.
76
76
 
77
77
  - Allocate project-global monotonic `US-NNN` and `T-NNN` IDs. Never reuse a
78
78
  deleted ID. The packaged [planning ID helper](planr-plan/scripts/planning-ids.mjs) may
79
- inspect or reserve IDs; it never generates content.
79
+ inspect or reserve IDs; it never generates content. Pass `--root` with the
80
+ `specs` folder under the project's configured planning path (`.planr/specs`
81
+ by default). It exits non-zero when that folder is missing or is not the one
82
+ `.planr/config.json` configures; never fall back to `US-001` or `T-001`.
80
83
  - Give each story stable acceptance IDs starting at `AC-001`.
81
84
  - Split each story into tasks that are coherent and independently verifiable.
82
85
  Separate by ownership first: UI work is a `UI` task for the frontend role and