openplanr 3.0.1 → 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.
- package/CHANGELOG.md +27 -0
- package/dist/cli/commands/init-deterministic.d.ts.map +1 -1
- package/dist/cli/commands/init-deterministic.js +49 -6
- package/dist/cli/commands/init-deterministic.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +2 -2
- package/dist/dashboard/assets/{index-Bk8DyO_2.css → index-BU5fzjyz.css} +1 -1
- package/dist/dashboard/assets/index-G7ygVDGg.js +572 -0
- package/dist/dashboard/assets/index-G7ygVDGg.js.map +1 -0
- package/dist/dashboard/dashboard-manifest.json +14 -14
- package/dist/dashboard/index.html +2 -2
- package/dist/models/types.d.ts +0 -46
- package/dist/models/types.d.ts.map +1 -1
- package/dist/services/capability-map-service.d.ts +4 -0
- package/dist/services/capability-map-service.d.ts.map +1 -1
- package/dist/services/capability-map-service.js +7 -1
- package/dist/services/capability-map-service.js.map +1 -1
- package/dist/services/claude-plugin-service.d.ts +6 -1
- package/dist/services/claude-plugin-service.d.ts.map +1 -1
- package/dist/services/claude-plugin-service.js +54 -15
- package/dist/services/claude-plugin-service.js.map +1 -1
- package/dist/services/config-service.d.ts +24 -1
- package/dist/services/config-service.d.ts.map +1 -1
- package/dist/services/config-service.js +69 -2
- package/dist/services/config-service.js.map +1 -1
- package/dist/services/git-service.d.ts +5 -0
- package/dist/services/git-service.d.ts.map +1 -1
- package/dist/services/git-service.js +27 -0
- package/dist/services/git-service.js.map +1 -1
- package/dist/services/linear-pull-service.d.ts.map +1 -1
- package/dist/services/linear-pull-service.js +1 -2
- package/dist/services/linear-pull-service.js.map +1 -1
- package/dist/services/pipeline-package-service.d.ts +2 -0
- package/dist/services/pipeline-package-service.d.ts.map +1 -1
- package/dist/services/pipeline-package-service.js +2 -1
- package/dist/services/pipeline-package-service.js.map +1 -1
- package/dist/services/runtime-change-summary.d.ts.map +1 -1
- package/dist/services/runtime-change-summary.js +4 -0
- package/dist/services/runtime-change-summary.js.map +1 -1
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +14 -3
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/dist/services/spec-service.d.ts.map +1 -1
- package/dist/services/spec-service.js +11 -22
- package/dist/services/spec-service.js.map +1 -1
- package/dist/services/upgrade-service.d.ts.map +1 -1
- package/dist/services/upgrade-service.js +3 -1
- package/dist/services/upgrade-service.js.map +1 -1
- package/dist/templates/rules/shared/capability-map.md.hbs +2 -2
- package/lib/host-packages/adapter-registry.json +5 -5
- package/lib/host-packages/capability-map.json +89 -29
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +69 -37
- package/lib/host-packages/claude/openplanr/CONNECTORS.md +62 -0
- package/lib/host-packages/claude/openplanr/README.md +1 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +1 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +23 -23
- package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +4 -4
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
- package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +4 -4
- package/lib/host-packages/claude/openplanr/skills/connect/SKILL.md +60 -0
- package/lib/host-packages/claude/openplanr/skills/connect/references/connectors.md +62 -0
- package/lib/host-packages/claude/openplanr/skills/openplanr/SKILL.md +4 -0
- package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +4 -1
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/planning-ids.mjs +49 -3
- package/lib/host-packages/claude/openplanr/skills/share/SKILL.md +87 -0
- package/lib/host-packages/claude/openplanr/skills/share/references/connectors.md +62 -0
- package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +6 -3
- package/lib/host-packages/claude/openplanr/skills/ship/scripts/discover-verification.mjs +2 -1
- package/lib/host-packages/claude/openplanr/skills/sprint/SKILL.md +15 -6
- package/lib/host-packages/claude/openplanr/skills/sprint/references/connectors.md +62 -0
- package/lib/host-packages/claude/openplanr/skills/sprint/references/tracker-connections.md +9 -13
- package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +14 -3
- package/lib/host-packages/claude/openplanr/skills/status/references/connectors.md +62 -0
- package/lib/host-packages/claude/openplanr/skills/status/references/tracker-connections.md +9 -13
- package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +25 -10
- package/lib/host-packages/claude/openplanr/skills/sync/references/connectors.md +62 -0
- package/lib/host-packages/claude/openplanr/skills/sync/references/tracker-connections.md +9 -13
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +68 -36
- package/lib/host-packages/cursor/openplanr/CONNECTORS.md +62 -0
- package/lib/host-packages/cursor/openplanr/manifest.json +4 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-connect/references/connectors.md +62 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-connect.mdc +58 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-openplanr.mdc +4 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/planning-ids.mjs +49 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +4 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-share/references/connectors.md +62 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-share.mdc +85 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/discover-verification.mjs +2 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +6 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/connectors.md +62 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/tracker-connections.md +9 -13
- package/lib/host-packages/cursor/openplanr/rules/planr-sprint.mdc +15 -6
- package/lib/host-packages/cursor/openplanr/rules/planr-status/references/connectors.md +62 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-status/references/tracker-connections.md +9 -13
- package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +14 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/connectors.md +62 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/tracker-connections.md +9 -13
- package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +25 -10
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +1 -1
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +23 -23
- package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +4 -4
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
- package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +4 -4
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +87 -39
- package/lib/host-packages/openai/openplanr/CONNECTORS.md +62 -0
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +1 -1
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +23 -23
- package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +4 -4
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
- package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/connect/SKILL.md +59 -0
- package/lib/host-packages/openai/openplanr/skills/connect/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/connect/openplanr.skill.json +37 -0
- package/lib/host-packages/openai/openplanr/skills/connect/references/connectors.md +62 -0
- package/lib/host-packages/openai/openplanr/skills/openplanr/SKILL.md +4 -0
- package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +4 -1
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/planning-ids.mjs +49 -3
- package/lib/host-packages/openai/openplanr/skills/share/SKILL.md +86 -0
- package/lib/host-packages/openai/openplanr/skills/share/agents/openai.yaml +6 -0
- package/lib/host-packages/openai/openplanr/skills/share/openplanr.skill.json +37 -0
- package/lib/host-packages/openai/openplanr/skills/share/references/connectors.md +62 -0
- package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +6 -3
- package/lib/host-packages/openai/openplanr/skills/ship/scripts/discover-verification.mjs +2 -1
- package/lib/host-packages/openai/openplanr/skills/sprint/SKILL.md +15 -6
- package/lib/host-packages/openai/openplanr/skills/sprint/openplanr.skill.json +11 -0
- package/lib/host-packages/openai/openplanr/skills/sprint/references/connectors.md +62 -0
- package/lib/host-packages/openai/openplanr/skills/sprint/references/tracker-connections.md +9 -13
- package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +14 -3
- package/lib/host-packages/openai/openplanr/skills/status/openplanr.skill.json +11 -0
- package/lib/host-packages/openai/openplanr/skills/status/references/connectors.md +62 -0
- package/lib/host-packages/openai/openplanr/skills/status/references/tracker-connections.md +9 -13
- package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +25 -10
- package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +11 -0
- package/lib/host-packages/openai/openplanr/skills/sync/references/connectors.md +62 -0
- package/lib/host-packages/openai/openplanr/skills/sync/references/tracker-connections.md +9 -13
- package/lib/json-schema.mjs +313 -36
- package/lib/schemas/v1.0.0/spec.schema.json +120 -0
- package/lib/schemas/v1.0.0/story.schema.json +95 -0
- package/lib/schemas/v1.0.0/task.schema.json +171 -0
- package/lib/schemas/v1.7.0/spec.schema.json +117 -0
- package/lib/schemas/v1.7.0/story.schema.json +107 -0
- package/lib/schemas/v1.7.0/task.schema.json +217 -0
- package/package.json +31 -31
- package/dist/dashboard/assets/index-n08LJ6bK.js +0 -557
- package/dist/dashboard/assets/index-n08LJ6bK.js.map +0 -1
- package/dist/services/audit-log-service.d.ts +0 -47
- package/dist/services/audit-log-service.d.ts.map +0 -1
- package/dist/services/audit-log-service.js +0 -211
- package/dist/services/audit-log-service.js.map +0 -1
- package/dist/services/delta-apply-service.d.ts +0 -16
- package/dist/services/delta-apply-service.d.ts.map +0 -1
- package/dist/services/delta-apply-service.js +0 -74
- package/dist/services/delta-apply-service.js.map +0 -1
- package/dist/services/evidence-verifier.d.ts +0 -71
- package/dist/services/evidence-verifier.d.ts.map +0 -1
- package/dist/services/evidence-verifier.js +0 -174
- package/dist/services/evidence-verifier.js.map +0 -1
- package/dist/services/revise-apply-service.d.ts +0 -55
- package/dist/services/revise-apply-service.d.ts.map +0 -1
- package/dist/services/revise-apply-service.js +0 -265
- package/dist/services/revise-apply-service.js.map +0 -1
- package/dist/services/revise-cache-service.d.ts +0 -46
- package/dist/services/revise-cache-service.d.ts.map +0 -1
- package/dist/services/revise-cache-service.js +0 -89
- package/dist/services/revise-cache-service.js.map +0 -1
- package/dist/services/revise-plan-service.d.ts +0 -38
- package/dist/services/revise-plan-service.d.ts.map +0 -1
- package/dist/services/revise-plan-service.js +0 -153
- package/dist/services/revise-plan-service.js.map +0 -1
- /package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
- /package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
- /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":
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
599
|
+
"digest": "sha256:f9617486a5e2ecc861566d7a7eaf1c97725f9acfcc6bc64cfda1f9b6fd3c4d36"
|
|
572
600
|
},
|
|
573
601
|
{
|
|
574
602
|
"path": "rules/planr-sync.mdc",
|
|
575
|
-
"digest": "sha256:
|
|
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:
|
|
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-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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,11 +836,11 @@
|
|
|
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:
|
|
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:
|
|
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",
|
|
@@ -820,7 +852,7 @@
|
|
|
820
852
|
},
|
|
821
853
|
{
|
|
822
854
|
"path": "runtime/design/scripts/runtime/packages/protocol/package.json",
|
|
823
|
-
"digest": "sha256:
|
|
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:
|
|
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:
|
|
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:
|
|
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 `&`, `<` and `>`.
|
|
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
|
|
4
|
-
"ruleCount":
|
|
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 `&`, `<` and `>`.
|
|
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 {
|
|
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
|
-
|
|
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
|