openplanr 3.0.1 → 3.1.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 (232) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +1 -1
  3. package/dist/cli/commands/doctor.d.ts.map +1 -1
  4. package/dist/cli/commands/doctor.js +24 -1
  5. package/dist/cli/commands/doctor.js.map +1 -1
  6. package/dist/cli/commands/init-deterministic.d.ts.map +1 -1
  7. package/dist/cli/commands/init-deterministic.js +49 -6
  8. package/dist/cli/commands/init-deterministic.js.map +1 -1
  9. package/dist/dashboard/.vite/manifest.json +2 -2
  10. package/dist/dashboard/assets/{index-Bk8DyO_2.css → index-BU5fzjyz.css} +1 -1
  11. package/dist/dashboard/assets/index-G7ygVDGg.js +572 -0
  12. package/dist/dashboard/assets/index-G7ygVDGg.js.map +1 -0
  13. package/dist/dashboard/dashboard-manifest.json +14 -14
  14. package/dist/dashboard/index.html +2 -2
  15. package/dist/models/types.d.ts +0 -46
  16. package/dist/models/types.d.ts.map +1 -1
  17. package/dist/services/capability-map-service.d.ts +4 -0
  18. package/dist/services/capability-map-service.d.ts.map +1 -1
  19. package/dist/services/capability-map-service.js +7 -1
  20. package/dist/services/capability-map-service.js.map +1 -1
  21. package/dist/services/claude-plugin-service.d.ts +6 -1
  22. package/dist/services/claude-plugin-service.d.ts.map +1 -1
  23. package/dist/services/claude-plugin-service.js +54 -15
  24. package/dist/services/claude-plugin-service.js.map +1 -1
  25. package/dist/services/config-service.d.ts +24 -1
  26. package/dist/services/config-service.d.ts.map +1 -1
  27. package/dist/services/config-service.js +69 -2
  28. package/dist/services/config-service.js.map +1 -1
  29. package/dist/services/git-service.d.ts +5 -0
  30. package/dist/services/git-service.d.ts.map +1 -1
  31. package/dist/services/git-service.js +27 -0
  32. package/dist/services/git-service.js.map +1 -1
  33. package/dist/services/global-install-service.d.ts +24 -0
  34. package/dist/services/global-install-service.d.ts.map +1 -0
  35. package/dist/services/global-install-service.js +68 -0
  36. package/dist/services/global-install-service.js.map +1 -0
  37. package/dist/services/linear-pull-service.d.ts.map +1 -1
  38. package/dist/services/linear-pull-service.js +1 -2
  39. package/dist/services/linear-pull-service.js.map +1 -1
  40. package/dist/services/pipeline-package-service.d.ts +2 -0
  41. package/dist/services/pipeline-package-service.d.ts.map +1 -1
  42. package/dist/services/pipeline-package-service.js +2 -1
  43. package/dist/services/pipeline-package-service.js.map +1 -1
  44. package/dist/services/runtime-change-summary.d.ts.map +1 -1
  45. package/dist/services/runtime-change-summary.js +4 -0
  46. package/dist/services/runtime-change-summary.js.map +1 -1
  47. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  48. package/dist/services/runtime-manager-service.js +14 -3
  49. package/dist/services/runtime-manager-service.js.map +1 -1
  50. package/dist/services/spec-service.d.ts.map +1 -1
  51. package/dist/services/spec-service.js +11 -22
  52. package/dist/services/spec-service.js.map +1 -1
  53. package/dist/services/upgrade-service.d.ts +15 -1
  54. package/dist/services/upgrade-service.d.ts.map +1 -1
  55. package/dist/services/upgrade-service.js +105 -14
  56. package/dist/services/upgrade-service.js.map +1 -1
  57. package/dist/templates/rules/shared/capability-map.md.hbs +2 -2
  58. package/lib/host-packages/adapter-registry.json +5 -5
  59. package/lib/host-packages/capability-map.json +89 -29
  60. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  61. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  62. package/lib/host-packages/claude/openplanr/.openplanr-content.json +69 -37
  63. package/lib/host-packages/claude/openplanr/CONNECTORS.md +62 -0
  64. package/lib/host-packages/claude/openplanr/README.md +1 -1
  65. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  66. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
  67. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
  68. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  69. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
  70. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  71. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  72. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
  73. 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
  74. 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
  75. 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
  76. 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
  77. 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
  78. 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
  79. 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
  80. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
  81. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
  82. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +23 -23
  83. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +4 -4
  84. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
  85. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +4 -4
  86. package/lib/host-packages/claude/openplanr/skills/connect/SKILL.md +60 -0
  87. package/lib/host-packages/claude/openplanr/skills/connect/references/connectors.md +62 -0
  88. package/lib/host-packages/claude/openplanr/skills/openplanr/SKILL.md +4 -0
  89. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +4 -1
  90. package/lib/host-packages/claude/openplanr/skills/plan/scripts/planning-ids.mjs +49 -3
  91. package/lib/host-packages/claude/openplanr/skills/share/SKILL.md +87 -0
  92. package/lib/host-packages/claude/openplanr/skills/share/references/connectors.md +62 -0
  93. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +6 -3
  94. package/lib/host-packages/claude/openplanr/skills/ship/scripts/discover-verification.mjs +2 -1
  95. package/lib/host-packages/claude/openplanr/skills/sprint/SKILL.md +15 -6
  96. package/lib/host-packages/claude/openplanr/skills/sprint/references/connectors.md +62 -0
  97. package/lib/host-packages/claude/openplanr/skills/sprint/references/tracker-connections.md +9 -13
  98. package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +14 -3
  99. package/lib/host-packages/claude/openplanr/skills/status/references/connectors.md +62 -0
  100. package/lib/host-packages/claude/openplanr/skills/status/references/tracker-connections.md +9 -13
  101. package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +25 -10
  102. package/lib/host-packages/claude/openplanr/skills/sync/references/connectors.md +62 -0
  103. package/lib/host-packages/claude/openplanr/skills/sync/references/tracker-connections.md +9 -13
  104. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +68 -36
  105. package/lib/host-packages/cursor/openplanr/CONNECTORS.md +62 -0
  106. package/lib/host-packages/cursor/openplanr/manifest.json +4 -2
  107. package/lib/host-packages/cursor/openplanr/rules/planr-connect/references/connectors.md +62 -0
  108. package/lib/host-packages/cursor/openplanr/rules/planr-connect.mdc +58 -0
  109. package/lib/host-packages/cursor/openplanr/rules/planr-openplanr.mdc +4 -0
  110. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/planning-ids.mjs +49 -3
  111. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +4 -1
  112. package/lib/host-packages/cursor/openplanr/rules/planr-share/references/connectors.md +62 -0
  113. package/lib/host-packages/cursor/openplanr/rules/planr-share.mdc +85 -0
  114. package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/discover-verification.mjs +2 -1
  115. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +6 -3
  116. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/connectors.md +62 -0
  117. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/tracker-connections.md +9 -13
  118. package/lib/host-packages/cursor/openplanr/rules/planr-sprint.mdc +15 -6
  119. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/connectors.md +62 -0
  120. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/tracker-connections.md +9 -13
  121. package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +14 -3
  122. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/connectors.md +62 -0
  123. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/tracker-connections.md +9 -13
  124. package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +25 -10
  125. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  126. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
  127. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
  128. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  129. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
  130. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  131. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  132. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
  133. 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
  134. 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
  135. 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
  136. 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
  137. 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
  138. 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
  139. 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
  140. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
  141. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
  142. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +23 -23
  143. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +4 -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 +4 -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 +87 -39
  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.json +23 -23
  168. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +4 -4
  169. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
  170. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +4 -4
  171. package/lib/host-packages/openai/openplanr/skills/connect/SKILL.md +59 -0
  172. package/lib/host-packages/openai/openplanr/skills/connect/agents/openai.yaml +6 -0
  173. package/lib/host-packages/openai/openplanr/skills/connect/openplanr.skill.json +37 -0
  174. package/lib/host-packages/openai/openplanr/skills/connect/references/connectors.md +62 -0
  175. package/lib/host-packages/openai/openplanr/skills/openplanr/SKILL.md +4 -0
  176. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +4 -1
  177. package/lib/host-packages/openai/openplanr/skills/plan/scripts/planning-ids.mjs +49 -3
  178. package/lib/host-packages/openai/openplanr/skills/share/SKILL.md +86 -0
  179. package/lib/host-packages/openai/openplanr/skills/share/agents/openai.yaml +6 -0
  180. package/lib/host-packages/openai/openplanr/skills/share/openplanr.skill.json +37 -0
  181. package/lib/host-packages/openai/openplanr/skills/share/references/connectors.md +62 -0
  182. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +6 -3
  183. package/lib/host-packages/openai/openplanr/skills/ship/scripts/discover-verification.mjs +2 -1
  184. package/lib/host-packages/openai/openplanr/skills/sprint/SKILL.md +15 -6
  185. package/lib/host-packages/openai/openplanr/skills/sprint/openplanr.skill.json +11 -0
  186. package/lib/host-packages/openai/openplanr/skills/sprint/references/connectors.md +62 -0
  187. package/lib/host-packages/openai/openplanr/skills/sprint/references/tracker-connections.md +9 -13
  188. package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +14 -3
  189. package/lib/host-packages/openai/openplanr/skills/status/openplanr.skill.json +11 -0
  190. package/lib/host-packages/openai/openplanr/skills/status/references/connectors.md +62 -0
  191. package/lib/host-packages/openai/openplanr/skills/status/references/tracker-connections.md +9 -13
  192. package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +25 -10
  193. package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +11 -0
  194. package/lib/host-packages/openai/openplanr/skills/sync/references/connectors.md +62 -0
  195. package/lib/host-packages/openai/openplanr/skills/sync/references/tracker-connections.md +9 -13
  196. package/lib/json-schema.mjs +313 -36
  197. package/lib/schemas/v1.0.0/spec.schema.json +120 -0
  198. package/lib/schemas/v1.0.0/story.schema.json +95 -0
  199. package/lib/schemas/v1.0.0/task.schema.json +171 -0
  200. package/lib/schemas/v1.7.0/spec.schema.json +117 -0
  201. package/lib/schemas/v1.7.0/story.schema.json +107 -0
  202. package/lib/schemas/v1.7.0/task.schema.json +217 -0
  203. package/package.json +31 -31
  204. package/dist/dashboard/assets/index-n08LJ6bK.js +0 -557
  205. package/dist/dashboard/assets/index-n08LJ6bK.js.map +0 -1
  206. package/dist/services/audit-log-service.d.ts +0 -47
  207. package/dist/services/audit-log-service.d.ts.map +0 -1
  208. package/dist/services/audit-log-service.js +0 -211
  209. package/dist/services/audit-log-service.js.map +0 -1
  210. package/dist/services/delta-apply-service.d.ts +0 -16
  211. package/dist/services/delta-apply-service.d.ts.map +0 -1
  212. package/dist/services/delta-apply-service.js +0 -74
  213. package/dist/services/delta-apply-service.js.map +0 -1
  214. package/dist/services/evidence-verifier.d.ts +0 -71
  215. package/dist/services/evidence-verifier.d.ts.map +0 -1
  216. package/dist/services/evidence-verifier.js +0 -174
  217. package/dist/services/evidence-verifier.js.map +0 -1
  218. package/dist/services/revise-apply-service.d.ts +0 -55
  219. package/dist/services/revise-apply-service.d.ts.map +0 -1
  220. package/dist/services/revise-apply-service.js +0 -265
  221. package/dist/services/revise-apply-service.js.map +0 -1
  222. package/dist/services/revise-cache-service.d.ts +0 -46
  223. package/dist/services/revise-cache-service.d.ts.map +0 -1
  224. package/dist/services/revise-cache-service.js +0 -89
  225. package/dist/services/revise-cache-service.js.map +0 -1
  226. package/dist/services/revise-plan-service.d.ts +0 -38
  227. package/dist/services/revise-plan-service.d.ts.map +0 -1
  228. package/dist/services/revise-plan-service.js +0 -153
  229. package/dist/services/revise-plan-service.js.map +0 -1
  230. /package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
  231. /package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
  232. /package/lib/host-packages/openai/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
@@ -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,85 @@
1
+ ---
2
+ alwaysApply: false
3
+ ---
4
+
5
+ # OpenPlanr Share
6
+
7
+ Share a status report, sprint note or release notes with the team as a chat message draft that the user approves and sends. Use when the user asks to post a planning update to chat.
8
+
9
+ Turn the current planning state into a team update and hand it to ~~chat as a
10
+ draft that the user reviews and sends. Perform the work in this session. Nothing
11
+ leaves the session until the user approves the exact text and destination.
12
+
13
+ ## Choose the update
14
+
15
+ The first argument picks the source; default to `status`.
16
+
17
+ - `status`: the delivery report `planr-status` gives. Read the planning artifacts
18
+ directly, or use `openplanr status --json` when it is available.
19
+ - `sprint`: the current sprint under `.planr/sprints/`: the one in progress, else
20
+ the most recent. Use its goal, selected items, progress and leftovers.
21
+ - `release`: the newest release notes or changelog entry, or the version the
22
+ user names.
23
+
24
+ When the working directory has no OpenPlanr planning files for the chosen source,
25
+ say so and ask which project to use, or stop. Never build an update from guesses.
26
+
27
+ The second argument is the destination: a channel or person. When it names a chat
28
+ product from [connectors](planr-share/references/connectors.md) instead, use that product's
29
+ connection and still ask for the channel or person. When it is missing, ask for it.
30
+ Never pick a destination yourself.
31
+
32
+ ## Write it
33
+
34
+ Lead with the outcome in one line, then at most ten short lines: what finished,
35
+ what is in progress, what is blocked and who can unblock it, and what comes next.
36
+ Use counts and dates, link pull requests or issues when their URLs are known, and
37
+ leave out local file paths, backlog IDs and internal detail the team cannot act
38
+ on. Never include credentials or the contents of secret files.
39
+
40
+ Format the text for where it goes, as listed under "Message format" in
41
+ [connectors](planr-share/references/connectors.md): when drafting through a connector, use the
42
+ connector's input format, and follow the connector tool's own description when it
43
+ states one; for text the user pastes, use the paste format. Use plain text when no
44
+ format is listed.
45
+
46
+ ## Preview, then ask
47
+
48
+ Show the complete text exactly as it will appear, the destination, and what will
49
+ happen: "create a draft in <destination>; nothing is sent". Ask through the host's
50
+ structured question surface, or one short chat question when there is none:
51
+ create the draft, edit the text, or cancel. Create nothing without a clear yes.
52
+ After an edit, preview again.
53
+
54
+ ## If ~~chat is connected
55
+
56
+ A category is connected when the host exposes a tool for one of its products,
57
+ loaded or deferred. On approval, use that connection to create a message draft
58
+ in the destination, then report where the draft is and that the user sends it
59
+ from the chat app.
60
+
61
+ - Send directly only when the user explicitly asks to send and the connection
62
+ can send; confirm the destination once more first.
63
+ - When the connection cannot create drafts, say so and offer to send on an
64
+ explicit request, or print the text instead.
65
+ - When the connection fails, for example because a workspace admin has not
66
+ approved the app, report the error, print the text ready to paste, and stop.
67
+
68
+ ## With nothing connected
69
+
70
+ Print the update ready to paste and the one connect step for the current host
71
+ from [connectors](planr-share/references/connectors.md), and suggest `/planr-connect`. Make no
72
+ remote call and do not retry; the user runs this skill again once connected.
73
+
74
+ ## Rules
75
+
76
+ - Never ask for, read, store or print a token, key or password, and never edit
77
+ host configuration.
78
+ - One destination per run.
79
+ - Never change planning files.
80
+
81
+ ## Return
82
+
83
+ Lead with the result: draft created (where), sent (where, on explicit request),
84
+ printed for pasting, or cancelled. Name the source used and any section that was
85
+ empty or unavailable.
@@ -5,6 +5,7 @@ import { resolve } from 'node:path';
5
5
 
6
6
  const COMMAND = /^(?:npm|npx|pnpm|yarn|bun|node|deno|cargo|go|make|just|pytest|python(?:3)?\s+-m|dotnet|mvn|gradle|\.\/gradlew)\b/u;
7
7
  const PRIORITY = Object.freeze(['test', 'test:unit', 'test:integration', 'typecheck', 'check', 'lint', 'build']);
8
+ const USAGE = 'Usage: node discover-verification.mjs --project <repository-root> [--task <task-path>]';
8
9
  const read = (path) => readFileSync(path, 'utf8').replace(/\r\n/gu, '\n');
9
10
 
10
11
  function commands(markdown) {
@@ -57,7 +58,7 @@ function parseArgs(argv) {
57
58
  for (let index = 0; index < argv.length; index += 1) {
58
59
  if (argv[index] === '--project') options.project = argv[++index];
59
60
  else if (argv[index] === '--task') options.task = argv[++index];
60
- else throw new Error(`Unknown argument: ${argv[index]}`);
61
+ else throw new Error(`Unknown argument: ${argv[index]}\n${USAGE}`);
61
62
  }
62
63
  return options;
63
64
  }
@@ -61,13 +61,16 @@ Discover checks in this order:
61
61
  4. applicable CI and pre-commit configuration.
62
62
 
63
63
  The packaged read-only [verification discovery helper](planr-ship/scripts/discover-verification.mjs)
64
- may list candidates. Resolve it relative to this `SKILL.md`; pass the repository
65
- root and task path. It never executes checks or writes files. If it is unavailable,
64
+ may list candidates. Resolve it relative to this `SKILL.md` and run
65
+ `node <helper> --project <repository-root> --task <task-path>`; omit `--task` for a
66
+ direct request. It never executes checks or writes files. If it is unavailable,
66
67
  inspect those four sources directly. Missing commands are diagnostics, not a
67
68
  reason to invent or skip all verification.
68
69
 
69
70
  Run the strongest applicable focused checks while working, then the relevant
70
- regression checks. Fix failures caused by the change and rerun affected checks.
71
+ regression checks. Run each check on its own or under `set -o pipefail`, and judge
72
+ it by its own exit code; to shorten output, write it to a log and read the tail.
73
+ Fix failures caused by the change and rerun affected checks.
71
74
  Read [the result contract](planr-ship/references/result-contract.md) before reporting.
72
75
 
73
76
  Do not write progress into an approved design package. The studio derives
@@ -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,9 @@
1
- # GitHub and Linear connections
1
+ # Tracker sync reference
2
2
 
3
- These skills store and read no GitHub or Linear credentials. Remote steps run through a
4
- connection the host already has; the planning files stay the source of truth.
3
+ These skills store and read no tracker or source control credentials. Remote steps
4
+ run through a connection the host already has; the planning files stay the source of
5
+ truth. OpenPlanr syncs with the trackers marked "OpenPlanr syncs with it" in
6
+ [connectors](connectors.md), and reads other products for context only.
5
7
 
6
8
  ## Use the host's connection
7
9
 
@@ -14,16 +16,10 @@ command, URL or file.
14
16
 
15
17
  ## When a connection is missing
16
18
 
17
- Finish the local work first. Then report the remote step as not run and give the one
18
- line for the current host:
19
-
20
- | Host | Linear | GitHub |
21
- | --- | --- | --- |
22
- | Claude Code | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
23
- | Codex | Run `codex mcp add linear --url https://mcp.linear.app/mcp`, then `codex mcp login linear`. | Install the GitHub plugin from `/plugins`, or run `gh auth login`. |
24
- | Cursor | Add Linear from the Cursor Marketplace and sign in to Linear. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
25
-
26
- Ask the user to try again once connected; never retry the remote step on your own.
19
+ Finish the local work first. Then report the remote step as not run, naming the
20
+ category, and give the one connect step for the current host from
21
+ [connectors](connectors.md). Ask the user to try again once connected; never retry the
22
+ remote step on your own.
27
23
 
28
24
  ## Status mapping
29
25
 
@@ -35,7 +35,7 @@ capability; it never blocks the run. Name every degraded input in `Issues`.
35
35
  | Capacity (engineers × working days) | Fit the list and name the overflow | Ask once; default 1 engineer × 10 days, stated in the return |
36
36
  | Previous sprint or refinement note (`.planr/sprints/SPRINT-NNN/refinement.json`) | Carry `leftovers`; `openplanr sprint diff` is possible | First run, no diff |
37
37
  | Last Operate cycle | Rank its unfinished actions alongside | Skipped silently |
38
- | Linear or GitHub connection ([tracker connections](planr-sprint/references/tracker-connections.md)) | Update linked issues on approval, read PR state | Local files only; report the external step as not run and name the connection to add |
38
+ | ~~project tracker or ~~source control ([connectors](planr-sprint/references/connectors.md)) | Update linked issues on approval, read PR state | Local files only; report the external step as not run and name the category to add |
39
39
 
40
40
  ## Step 0: Frame the run
41
41
 
@@ -134,11 +134,20 @@ openplanr sprint apply SPRINT-NNN --dry-run # show the status and prior
134
134
  openplanr sprint apply SPRINT-NNN --yes --commit # one commit: chore(planr): refine backlog for SPRINT-NNN
135
135
  ```
136
136
 
137
- Then update the issue linked to each changed item through the host's Linear or
138
- GitHub connection, with the status mapping in
139
- [tracker connections](planr-sprint/references/tracker-connections.md), and report the items that
140
- were not updated. When the CLI is unavailable, apply the same status changes with
141
- the repository's own vocabulary and commit them with the same message.
137
+ Then, if ~~project tracker is connected, update the issue linked to each changed
138
+ item through the host's connection, with the status mapping in the
139
+ [tracker sync reference](planr-sprint/references/tracker-connections.md). Before any remote write,
140
+ list every issue change: each issue to create, update, close or reopen, with its
141
+ title and the status it moves to. Write only when the request explicitly asked for
142
+ that push or the user approves the list. Afterwards, report each item that was not
143
+ updated and why, and name the category and product used.
144
+
145
+ With nothing connected, the local apply is the whole step: report the tracker
146
+ update as not run and give the current host's step from
147
+ [connectors](planr-sprint/references/connectors.md).
148
+
149
+ When the CLI is unavailable, apply the same status changes with the repository's
150
+ own vocabulary and commit them with the same message.
142
151
 
143
152
  Close a finished sprint with `openplanr sprint close SPRINT-NNN`; it records the
144
153
  leftovers the next run carries.
@@ -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,9 @@
1
- # GitHub and Linear connections
1
+ # Tracker sync reference
2
2
 
3
- These skills store and read no GitHub or Linear credentials. Remote steps run through a
4
- connection the host already has; the planning files stay the source of truth.
3
+ These skills store and read no tracker or source control credentials. Remote steps
4
+ run through a connection the host already has; the planning files stay the source of
5
+ truth. OpenPlanr syncs with the trackers marked "OpenPlanr syncs with it" in
6
+ [connectors](connectors.md), and reads other products for context only.
5
7
 
6
8
  ## Use the host's connection
7
9
 
@@ -14,16 +16,10 @@ command, URL or file.
14
16
 
15
17
  ## When a connection is missing
16
18
 
17
- Finish the local work first. Then report the remote step as not run and give the one
18
- line for the current host:
19
-
20
- | Host | Linear | GitHub |
21
- | --- | --- | --- |
22
- | Claude Code | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
23
- | Codex | Run `codex mcp add linear --url https://mcp.linear.app/mcp`, then `codex mcp login linear`. | Install the GitHub plugin from `/plugins`, or run `gh auth login`. |
24
- | Cursor | Add Linear from the Cursor Marketplace and sign in to Linear. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
25
-
26
- Ask the user to try again once connected; never retry the remote step on your own.
19
+ Finish the local work first. Then report the remote step as not run, naming the
20
+ category, and give the one connect step for the current host from
21
+ [connectors](connectors.md). Ask the user to try again once connected; never retry the
22
+ remote step on your own.
27
23
 
28
24
  ## Status mapping
29
25
 
@@ -10,9 +10,6 @@ planning artifacts, task statuses, dependency graph, current branch, and relevan
10
10
  runtime markers directly. Use the optional deterministic `openplanr status --json`
11
11
  utility when available, but do not require it or a semantic subprocess.
12
12
 
13
- Add GitHub or Linear lookups only when the user requests live remote state, through
14
- the host's connections as described in [tracker connections](planr-status/references/tracker-connections.md).
15
- Keep local results useful when a connection is unavailable, and name the one to add.
16
13
  Report counts, ready and blocked work, dependency problems, and the most useful next
17
14
  action. Do not repair artifacts, start Plan or Ship, or change lifecycle state.
18
15
 
@@ -20,6 +17,20 @@ When the OpenPlanr dashboard is running (`planr-dashboard`), the same delivery
20
17
  state is browsable there: `#/overview` for the whole project, `#/detail/<id>`
21
18
  for one feature. This is navigation only.
22
19
 
20
+ ## With nothing connected
21
+
22
+ The report comes entirely from local planning files and git. When the user asks
23
+ for live remote state, report that step as not run, name the category it needs,
24
+ and give the current host's step from [connectors](planr-status/references/connectors.md).
25
+
26
+ ## If ~~project tracker or ~~source control is connected
27
+
28
+ Add remote lookups only when the user requests live remote state: issue state
29
+ from ~~project tracker, pull request and branch state from ~~source control,
30
+ through the host's connections as described in the
31
+ [tracker sync reference](planr-status/references/tracker-connections.md). Name the category each
32
+ remote fact came from. Status never writes to a remote service.
33
+
23
34
  ## Return
24
35
 
25
36
  Lead with the current delivery state, then summarize ready, blocked and pending
@@ -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,9 @@
1
- # GitHub and Linear connections
1
+ # Tracker sync reference
2
2
 
3
- These skills store and read no GitHub or Linear credentials. Remote steps run through a
4
- connection the host already has; the planning files stay the source of truth.
3
+ These skills store and read no tracker or source control credentials. Remote steps
4
+ run through a connection the host already has; the planning files stay the source of
5
+ truth. OpenPlanr syncs with the trackers marked "OpenPlanr syncs with it" in
6
+ [connectors](connectors.md), and reads other products for context only.
5
7
 
6
8
  ## Use the host's connection
7
9
 
@@ -14,16 +16,10 @@ command, URL or file.
14
16
 
15
17
  ## When a connection is missing
16
18
 
17
- Finish the local work first. Then report the remote step as not run and give the one
18
- line for the current host:
19
-
20
- | Host | Linear | GitHub |
21
- | --- | --- | --- |
22
- | Claude Code | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
23
- | Codex | Run `codex mcp add linear --url https://mcp.linear.app/mcp`, then `codex mcp login linear`. | Install the GitHub plugin from `/plugins`, or run `gh auth login`. |
24
- | Cursor | Add Linear from the Cursor Marketplace and sign in to Linear. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
25
-
26
- Ask the user to try again once connected; never retry the remote step on your own.
19
+ Finish the local work first. Then report the remote step as not run, naming the
20
+ category, and give the one connect step for the current host from
21
+ [connectors](connectors.md). Ask the user to try again once connected; never retry the
22
+ remote step on your own.
27
23
 
28
24
  ## Status mapping
29
25
 
@@ -5,25 +5,40 @@ alwaysApply: false
5
5
 
6
6
  # OpenPlanr Sync
7
7
 
8
- Reconcile local planning artifacts and, when requested, GitHub or Linear state.
9
- Reason about conflicts in this active session. Local and GitHub work never require
8
+ Reconcile local planning artifacts and, when requested, ~~project tracker state.
9
+ Reason about conflicts in this active session. Local and tracker work never require
10
10
  the OpenPlanr CLI.
11
11
 
12
- Remote steps run through the host's own connections, as described in
13
- [tracker connections](planr-sync/references/tracker-connections.md), which also holds the status
14
- mapping and what to tell the user when a connection is missing:
12
+ Remote steps run through the host's own ~~project tracker connection. The
13
+ [tracker sync reference](planr-sync/references/tracker-connections.md) holds which connection to
14
+ use per tracker, the status mapping, link shapes and what to tell the user when a
15
+ connection is missing; [connectors](planr-sync/references/connectors.md) lists the trackers
16
+ OpenPlanr syncs with and how to connect each in the current host.
15
17
 
16
- - GitHub: the host's GitHub connection, or, when the GitHub CLI is signed in, the
17
- packaged [sync helper](planr-sync/scripts/sync.mjs), which creates and edits issues through `gh`;
18
- close or reopen an issue with `gh issue close` or `gh issue reopen`. `openplanr github`
19
- is an optional equivalent; `openplanr sync` only repairs local cross-references.
20
- - Linear: the host's Linear connection.
18
+ When the GitHub CLI is signed in, the packaged [sync helper](planr-sync/scripts/sync.mjs) creates
19
+ and edits issues through `gh`; close or reopen an issue with `gh issue close` or
20
+ `gh issue reopen`. Other trackers go through the host's connection only.
21
+ `openplanr sync` only repairs local cross-references.
21
22
 
22
23
  Audit is read-only by default. Apply local changes only when the request asks for
23
24
  reconciliation, and push remote changes only when the request asks for external
24
25
  synchronization. If a connection is unavailable, complete local reconciliation
25
26
  and report only the external step that could not run.
26
27
 
28
+ ## With nothing connected
29
+
30
+ Audit and local reconciliation run in full. Report the remote step as not run,
31
+ name ~~project tracker as the category it needs, and give the current host's step
32
+ from [connectors](planr-sync/references/connectors.md).
33
+
34
+ ## If ~~project tracker is connected
35
+
36
+ Before any remote write, list every issue change: each issue to create, update,
37
+ close or reopen, with its title and the status it moves to. Write only when the
38
+ request explicitly asked for that push or the user approves the list. Afterwards,
39
+ report each item that was not updated and why, and name the category and product
40
+ the changes went to.
41
+
27
42
  ## Return
28
43
 
29
44
  Lead with what is aligned, repaired or still blocked. Summarize aligned, locally
@@ -1804,7 +1804,7 @@ async function importDesignShareRecovery(file, { input, ...options } = {}) {
1804
1804
  const pending = custody.pendingCreate ?? custody.pendingMutation.body;
1805
1805
  const destination = join3(root, "uploads", custody.id, pending.operationId);
1806
1806
  if (existsSync4(destination)) {
1807
- const { spoolChunkReader: spoolChunkReader2 } = await import("./design-runtime-support-336900df0d39.mjs");
1807
+ const { spoolChunkReader: spoolChunkReader2 } = await import("./design-runtime-support-e34c388a8e59.mjs");
1808
1808
  const reader = spoolChunkReader2(destination, pending);
1809
1809
  for (const part of pending.manifest.chunks) await reader(part.index);
1810
1810
  } else await copyUploadSpool(custody, destination);