openplanr 2.2639.4 → 2.2640.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 +15 -0
- package/dist/cli/commands/github.d.ts.map +1 -1
- package/dist/cli/commands/github.js +4 -3
- package/dist/cli/commands/github.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/{index-p83hrHZD.js → index-9DLb9EO5.js} +2 -2
- package/dist/dashboard/assets/{index-p83hrHZD.js.map → index-9DLb9EO5.js.map} +1 -1
- package/dist/dashboard/dashboard-manifest.json +13 -13
- package/dist/dashboard/index.html +1 -1
- package/dist/models/schema.d.ts.map +1 -1
- package/dist/models/schema.js +24 -1
- package/dist/models/schema.js.map +1 -1
- package/dist/services/artifact-service.js +2 -2
- package/dist/services/artifact-service.js.map +1 -1
- package/dist/services/github-service.d.ts +6 -4
- package/dist/services/github-service.d.ts.map +1 -1
- package/dist/services/github-service.js +7 -2
- package/dist/services/github-service.js.map +1 -1
- package/dist/services/id-service.d.ts +4 -1
- package/dist/services/id-service.d.ts.map +1 -1
- package/dist/services/id-service.js +28 -15
- package/dist/services/id-service.js.map +1 -1
- package/dist/services/landing/receipt-custody.d.ts.map +1 -1
- package/dist/services/landing/receipt-custody.js +2 -0
- package/dist/services/landing/receipt-custody.js.map +1 -1
- package/dist/services/report-linter-service.d.ts.map +1 -1
- package/dist/services/report-linter-service.js +2 -4
- package/dist/services/report-linter-service.js.map +1 -1
- package/docs/CLI.md +2 -0
- package/lib/host-packages/adapter-registry.json +5 -5
- package/lib/host-packages/capability-map.json +1 -1
- package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/claude/openplanr/.claude-plugin/icon.svg +11 -0
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +8 -3
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +160 -28
- package/lib/host-packages/claude/openplanr/README.md +4 -3
- package/lib/host-packages/claude/openplanr/skills/ceo-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/chair-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/challenger-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/cmo-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/coo-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/cpo-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/cto-review/SKILL.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/design/openplanr.skill.json +88 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/design.mjs +83 -21459
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-loop/openplanr.skill.json +88 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design.mjs +83 -21459
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/design-review/openplanr.skill.json +88 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design.mjs +83 -21459
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/plan/openplanr.skill.json +88 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/design.mjs +83 -21459
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +17 -6
- package/lib/host-packages/claude/openplanr/skills/sync/scripts/sync.mjs +7 -104
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +144 -16
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design.mjs +83 -21459
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design.mjs +83 -21459
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design.mjs +83 -21459
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design.mjs +83 -21459
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/sync.mjs +7 -104
- package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +17 -6
- package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
- package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +3 -2
- package/lib/host-packages/openai/openplanr/.openplanr-content.json +155 -27
- package/lib/host-packages/openai/openplanr/skills/ceo-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/chair-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/challenger-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/cmo-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/coo-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/cpo-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/cto-review/SKILL.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/design/openplanr.skill.json +88 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/design.mjs +83 -21459
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-loop/openplanr.skill.json +88 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design.mjs +83 -21459
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/design-review/openplanr.skill.json +88 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design.mjs +83 -21459
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +88 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-artifact-shell.mjs +2506 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-document.mjs +3674 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-entities.mjs +489 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-parse5-parser.mjs +3970 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-parse5-tokenizer.mjs +3501 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-review-handoff.mjs +4408 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-sandbox-guards.mjs +1073 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design-share.mjs +2127 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/design.mjs +83 -21459
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.js +1 -0
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +1 -1
- package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +17 -6
- package/lib/host-packages/openai/openplanr/skills/sync/scripts/sync.mjs +7 -104
- package/lib/integrations.d.mts +0 -10
- package/lib/integrations.mjs +7 -104
- package/package.json +2 -2
|
@@ -7,7 +7,6 @@ import { fileURLToPath } from 'node:url';
|
|
|
7
7
|
import { promisify } from 'node:util';
|
|
8
8
|
|
|
9
9
|
const execFileAsync = promisify(execFile);
|
|
10
|
-
const LINEAR_ENDPOINT = 'https://api.linear.app/graphql';
|
|
11
10
|
const LINEAR_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
|
|
12
11
|
const LINEAR_IDENTIFIER = /^[A-Z][A-Z0-9]+-\d+$/u;
|
|
13
12
|
|
|
@@ -102,100 +101,6 @@ export async function executeGitHubOperations(
|
|
|
102
101
|
return { provider: 'github', applied: true, results };
|
|
103
102
|
}
|
|
104
103
|
|
|
105
|
-
async function linearRequest(query, variables, token, fetchImpl = fetch) {
|
|
106
|
-
if (!token)
|
|
107
|
-
throw new IntegrationError('E_LINEAR_CREDENTIAL', 'Linear credentials are unavailable.');
|
|
108
|
-
let response;
|
|
109
|
-
let payload;
|
|
110
|
-
try {
|
|
111
|
-
response = await fetchImpl(LINEAR_ENDPOINT, {
|
|
112
|
-
method: 'POST',
|
|
113
|
-
headers: { authorization: token, 'content-type': 'application/json' },
|
|
114
|
-
body: JSON.stringify({ query, variables }),
|
|
115
|
-
});
|
|
116
|
-
payload = await response.json();
|
|
117
|
-
} catch (error) {
|
|
118
|
-
throw new IntegrationError('E_LINEAR_API', 'Linear synchronization transport failed.', {
|
|
119
|
-
cause: String(error?.message ?? error),
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
if (!response.ok || !payload || typeof payload !== 'object' || payload.errors?.length) {
|
|
123
|
-
throw new IntegrationError('E_LINEAR_API', 'Linear rejected the synchronization request.', {
|
|
124
|
-
status: response.status,
|
|
125
|
-
errors: payload?.errors,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
return payload.data;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
function requireLinearMutationResult(data, field) {
|
|
132
|
-
const result = data?.[field];
|
|
133
|
-
const issue = result?.issue;
|
|
134
|
-
if (
|
|
135
|
-
result?.success !== true ||
|
|
136
|
-
!issue ||
|
|
137
|
-
typeof issue.id !== 'string' ||
|
|
138
|
-
typeof issue.identifier !== 'string' ||
|
|
139
|
-
typeof issue.url !== 'string'
|
|
140
|
-
) {
|
|
141
|
-
throw new IntegrationError(
|
|
142
|
-
'E_LINEAR_API',
|
|
143
|
-
`Linear ${field} did not confirm a successful issue mutation.`,
|
|
144
|
-
{
|
|
145
|
-
field,
|
|
146
|
-
success: result?.success ?? null,
|
|
147
|
-
},
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
return issue;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export async function inspectLinear({ token = process.env.PLANR_LINEAR_TOKEN } = {}) {
|
|
154
|
-
const data = await linearRequest('query OpenPlanrViewer { viewer { id name email } }', {}, token);
|
|
155
|
-
return { provider: 'linear', viewer: data.viewer };
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export async function executeLinearOperations(
|
|
159
|
-
operations,
|
|
160
|
-
{ token = process.env.PLANR_LINEAR_TOKEN, apply = false } = {},
|
|
161
|
-
) {
|
|
162
|
-
if (!Array.isArray(operations))
|
|
163
|
-
throw new IntegrationError('E_SYNC_INPUT', 'Linear operations must be an array.');
|
|
164
|
-
if (!apply) return { provider: 'linear', applied: false, operations };
|
|
165
|
-
const results = [];
|
|
166
|
-
for (const operation of operations) {
|
|
167
|
-
if (operation.action === 'create' && operation.teamId) {
|
|
168
|
-
const data = await linearRequest(
|
|
169
|
-
'mutation OpenPlanrCreate($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { id identifier url } } }',
|
|
170
|
-
{
|
|
171
|
-
input: { teamId: operation.teamId, title: operation.title, description: operation.body },
|
|
172
|
-
},
|
|
173
|
-
token,
|
|
174
|
-
);
|
|
175
|
-
results.push({ action: 'create', ...requireLinearMutationResult(data, 'issueCreate') });
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
if (operation.action === 'update' && isLikelyLinearIssueId(operation.id)) {
|
|
179
|
-
const data = await linearRequest(
|
|
180
|
-
'mutation OpenPlanrUpdate($id: String!, $input: IssueUpdateInput!) { issueUpdate(id: $id, input: $input) { success issue { id identifier url } } }',
|
|
181
|
-
{
|
|
182
|
-
id: operation.id,
|
|
183
|
-
input: { title: operation.title, description: operation.body, stateId: operation.state },
|
|
184
|
-
},
|
|
185
|
-
token,
|
|
186
|
-
);
|
|
187
|
-
results.push({ action: 'update', ...requireLinearMutationResult(data, 'issueUpdate') });
|
|
188
|
-
continue;
|
|
189
|
-
}
|
|
190
|
-
throw new IntegrationError(
|
|
191
|
-
'E_SYNC_OPERATION',
|
|
192
|
-
'Unsupported Linear synchronization operation.',
|
|
193
|
-
{ operation },
|
|
194
|
-
);
|
|
195
|
-
}
|
|
196
|
-
return { provider: 'linear', applied: true, results };
|
|
197
|
-
}
|
|
198
|
-
|
|
199
104
|
async function readJsonInput(value, stdin) {
|
|
200
105
|
if (value) return JSON.parse(await readFile(resolve(value), 'utf8'));
|
|
201
106
|
let bytes = '';
|
|
@@ -226,7 +131,7 @@ function parseArgs(argv) {
|
|
|
226
131
|
|
|
227
132
|
export async function runPortableSync(
|
|
228
133
|
argv = process.argv.slice(2),
|
|
229
|
-
{ cwd = process.cwd(),
|
|
134
|
+
{ cwd = process.cwd(), stdin = process.stdin, stdout = process.stdout } = {},
|
|
230
135
|
) {
|
|
231
136
|
const args = parseArgs(argv);
|
|
232
137
|
let result;
|
|
@@ -238,17 +143,15 @@ export async function runPortableSync(
|
|
|
238
143
|
cwd,
|
|
239
144
|
apply: args.apply,
|
|
240
145
|
});
|
|
241
|
-
} else if (args.provider === 'linear'
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
apply: args.apply,
|
|
247
|
-
});
|
|
146
|
+
} else if (args.provider === 'linear') {
|
|
147
|
+
throw new IntegrationError(
|
|
148
|
+
'E_SYNC_USAGE',
|
|
149
|
+
'Linear synchronization runs through a Linear connector or the planr CLI (planr linear push, planr linear sync).',
|
|
150
|
+
);
|
|
248
151
|
} else {
|
|
249
152
|
throw new IntegrationError(
|
|
250
153
|
'E_SYNC_USAGE',
|
|
251
|
-
'Usage: sync.mjs <local|github
|
|
154
|
+
'Usage: sync.mjs <local|github> <inspect|sync> [--input path] [--apply]',
|
|
252
155
|
);
|
|
253
156
|
}
|
|
254
157
|
stdout.write(`${JSON.stringify(result, null, 2)}\n`);
|
|
@@ -6,16 +6,27 @@ alwaysApply: false
|
|
|
6
6
|
# Planr Sync
|
|
7
7
|
|
|
8
8
|
Reconcile local planning artifacts and, when requested, GitHub or Linear state.
|
|
9
|
-
Reason about conflicts in this active session; deterministic mapping and
|
|
10
|
-
may use a host connector or the packaged [sync helper](scripts/sync.mjs).
|
|
11
|
-
|
|
9
|
+
Reason about conflicts in this active session; deterministic mapping and GitHub
|
|
10
|
+
transport may use a host connector or the packaged [sync helper](scripts/sync.mjs).
|
|
11
|
+
Local and GitHub work never require the OpenPlanr CLI.
|
|
12
12
|
|
|
13
13
|
Resolution order:
|
|
14
14
|
|
|
15
15
|
1. use a host-native GitHub or Linear connector when available;
|
|
16
|
-
2. otherwise use the packaged deterministic helper;
|
|
17
|
-
3.
|
|
18
|
-
|
|
16
|
+
2. otherwise, for GitHub, use the packaged deterministic helper;
|
|
17
|
+
3. otherwise, for Linear, use the `planr linear` terminal utility when the user has
|
|
18
|
+
installed it; `planr github` and `planr sync` are optional equivalents for the rest.
|
|
19
|
+
|
|
20
|
+
Linear through the CLI:
|
|
21
|
+
|
|
22
|
+
- the user runs `planr linear init` in a terminal once; it prompts for a personal
|
|
23
|
+
access token, which the CLI stores;
|
|
24
|
+
- audit with `planr linear sync --dry-run`, which reads Linear without writing;
|
|
25
|
+
- before a real `planr linear sync`, ask how conflicts should resolve and pass
|
|
26
|
+
`--on-conflict local` or `--on-conflict linear`; without a prompt it favors Linear;
|
|
27
|
+
- `planr linear push <artifact-id>` creates or updates Linear issues; preview with
|
|
28
|
+
`--dry-run`. Quick tasks and backlog items need `linear.standaloneProjectId` in the
|
|
29
|
+
project config when no terminal prompt is available.
|
|
19
30
|
|
|
20
31
|
Audit is read-only by default. Apply local changes only when the request asks for
|
|
21
32
|
reconciliation, and push remote changes only when the request asks for external
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
"name": "AsemDevs"
|
|
5
5
|
},
|
|
6
6
|
"metadata": {
|
|
7
|
-
"version": "2.
|
|
7
|
+
"version": "2.2640.0",
|
|
8
8
|
"description": "Generated local OpenPlanr package."
|
|
9
9
|
},
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "planr",
|
|
13
13
|
"source": "./openplanr",
|
|
14
|
-
"version": "2.
|
|
14
|
+
"version": "2.2640.0",
|
|
15
15
|
"description": "Host-native OpenPlanr skills for OpenAI coding agents.",
|
|
16
16
|
"strict": true
|
|
17
17
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "planr",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2640.0",
|
|
4
4
|
"description": "Host-native OpenPlanr planning, delivery, review, design, and operating skills.",
|
|
5
5
|
"author": {
|
|
6
|
-
"name": "
|
|
6
|
+
"name": "OpenPlanr",
|
|
7
|
+
"url": "https://openplanr.dev"
|
|
7
8
|
},
|
|
8
9
|
"license": "MIT",
|
|
9
10
|
"skills": "./skills/"
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
{
|
|
10
10
|
"path": ".codex-plugin/plugin.json",
|
|
11
|
-
"digest": "sha256:
|
|
11
|
+
"digest": "sha256:6fe8da9843f3efb493c6d47ec6b58835ce09c913025008fa4bb0e8eb8f64117f"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "skills/artifact/agents/openai.yaml",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
74
|
"path": "skills/ceo-review/SKILL.md",
|
|
75
|
-
"digest": "sha256:
|
|
75
|
+
"digest": "sha256:9c51ceb66d20f49ca417da1213441d4824cba8206d88f33b2481ed6eea51a399"
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
"path": "skills/chair-review/agents/openai.yaml",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
"path": "skills/chair-review/SKILL.md",
|
|
103
|
-
"digest": "sha256:
|
|
103
|
+
"digest": "sha256:fcc1f07dff8de8bd104a0176a4265fb71e380a9a3dbbcbc0c21e4a113f38acfd"
|
|
104
104
|
},
|
|
105
105
|
{
|
|
106
106
|
"path": "skills/challenger-review/agents/openai.yaml",
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
"path": "skills/challenger-review/SKILL.md",
|
|
131
|
-
"digest": "sha256:
|
|
131
|
+
"digest": "sha256:7eb97bc94201cd9aff3751430437ea116b15a8d1347269ce3b0cbbd9cbf0d8c7"
|
|
132
132
|
},
|
|
133
133
|
{
|
|
134
134
|
"path": "skills/cmo-review/agents/openai.yaml",
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
},
|
|
161
161
|
{
|
|
162
162
|
"path": "skills/cmo-review/SKILL.md",
|
|
163
|
-
"digest": "sha256:
|
|
163
|
+
"digest": "sha256:31112e8deae357bbde9d51d9707400f63e16563bf08f4774acb52e2f5ccdfa2a"
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
"path": "skills/coo-review/agents/openai.yaml",
|
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
},
|
|
193
193
|
{
|
|
194
194
|
"path": "skills/coo-review/SKILL.md",
|
|
195
|
-
"digest": "sha256:
|
|
195
|
+
"digest": "sha256:8d6b132b39e41d249961602e002035f4748f1ad4299984952f00d6b16485a678"
|
|
196
196
|
},
|
|
197
197
|
{
|
|
198
198
|
"path": "skills/cpo-review/agents/openai.yaml",
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
},
|
|
225
225
|
{
|
|
226
226
|
"path": "skills/cpo-review/SKILL.md",
|
|
227
|
-
"digest": "sha256:
|
|
227
|
+
"digest": "sha256:77d2f464f9102515ab842fc5afe76feae7a12c9ecde150c2392a599b50186cf4"
|
|
228
228
|
},
|
|
229
229
|
{
|
|
230
230
|
"path": "skills/cto-review/agents/openai.yaml",
|
|
@@ -256,7 +256,7 @@
|
|
|
256
256
|
},
|
|
257
257
|
{
|
|
258
258
|
"path": "skills/cto-review/SKILL.md",
|
|
259
|
-
"digest": "sha256:
|
|
259
|
+
"digest": "sha256:7addd0afdd7a17032f24c54c11dfc80beef516f0d7d90dfa11392a9556245b1e"
|
|
260
260
|
},
|
|
261
261
|
{
|
|
262
262
|
"path": "skills/dashboard/agents/openai.yaml",
|
|
@@ -276,7 +276,7 @@
|
|
|
276
276
|
},
|
|
277
277
|
{
|
|
278
278
|
"path": "skills/design-loop/openplanr.skill.json",
|
|
279
|
-
"digest": "sha256:
|
|
279
|
+
"digest": "sha256:4dc9b54a53a6a1e591f5e31bf68088caaccfbac18d45061e4af2940fcdfbb8e4"
|
|
280
280
|
},
|
|
281
281
|
{
|
|
282
282
|
"path": "skills/design-loop/references/craft.md",
|
|
@@ -326,9 +326,41 @@
|
|
|
326
326
|
"path": "skills/design-loop/schemas/design-review-handoff.schema.json",
|
|
327
327
|
"digest": "sha256:402b25238f93f8269b98697bf77fa11dda1fd284f44e41d73cdb813f5244a4e0"
|
|
328
328
|
},
|
|
329
|
+
{
|
|
330
|
+
"path": "skills/design-loop/scripts/design-artifact-shell.mjs",
|
|
331
|
+
"digest": "sha256:9245a86f8e3f20f6ec4c705d1364d2d6d3e639b34a7d41162769a0f490dd39df"
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"path": "skills/design-loop/scripts/design-document.mjs",
|
|
335
|
+
"digest": "sha256:7e15b9f9e9afd29be2a2558fad9e57b5df85e494a586180d5afe23015cdbcfb7"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"path": "skills/design-loop/scripts/design-entities.mjs",
|
|
339
|
+
"digest": "sha256:376ec35d0f184deac31b639f2c0918e6b0f165e19984ed1c89ba2cfad6af9b80"
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"path": "skills/design-loop/scripts/design-parse5-parser.mjs",
|
|
343
|
+
"digest": "sha256:a9bfeecae4d31155a6935455c82ea8348da25f8585216b531d00c6599b8196e4"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"path": "skills/design-loop/scripts/design-parse5-tokenizer.mjs",
|
|
347
|
+
"digest": "sha256:f655474fb8d0bed732f01ace5b67102f849b73cb40831a57f1fb7b61180fbde9"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"path": "skills/design-loop/scripts/design-review-handoff.mjs",
|
|
351
|
+
"digest": "sha256:1d04e0d821738f3934fb3fbd314b161fb557f4459cf2da2d1921c99d27d7d861"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"path": "skills/design-loop/scripts/design-sandbox-guards.mjs",
|
|
355
|
+
"digest": "sha256:dcc7aa1971da47018a198bfe7520c05e3e5ba21fe2d9c8fffcaad882ded5bbbb"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"path": "skills/design-loop/scripts/design-share.mjs",
|
|
359
|
+
"digest": "sha256:b10d7ce9cdb3eb48b9aca803e4d2ecc4f8e477e91f4a0c6a3ae17a1f7985aa06"
|
|
360
|
+
},
|
|
329
361
|
{
|
|
330
362
|
"path": "skills/design-loop/scripts/design.mjs",
|
|
331
|
-
"digest": "sha256:
|
|
363
|
+
"digest": "sha256:ab33412cab749120e07359983f85bcb64038026844c06ff9f464c4f371d6d6ca"
|
|
332
364
|
},
|
|
333
365
|
{
|
|
334
366
|
"path": "skills/design-loop/scripts/runtime/notices/entities.txt",
|
|
@@ -364,11 +396,11 @@
|
|
|
364
396
|
},
|
|
365
397
|
{
|
|
366
398
|
"path": "skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.js",
|
|
367
|
-
"digest": "sha256:
|
|
399
|
+
"digest": "sha256:85f8b084457aaa172025fb878b64059782cb976f72451b207c7bc40e8c982bb8"
|
|
368
400
|
},
|
|
369
401
|
{
|
|
370
402
|
"path": "skills/design-loop/scripts/runtime/packages/protocol/package.json",
|
|
371
|
-
"digest": "sha256:
|
|
403
|
+
"digest": "sha256:931a50e413656f4dcd95db2451b5fc63c985b13494b4b01b492d8292529f4fcb"
|
|
372
404
|
},
|
|
373
405
|
{
|
|
374
406
|
"path": "skills/design-loop/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -460,7 +492,7 @@
|
|
|
460
492
|
},
|
|
461
493
|
{
|
|
462
494
|
"path": "skills/design-review/openplanr.skill.json",
|
|
463
|
-
"digest": "sha256:
|
|
495
|
+
"digest": "sha256:5abf56388a0cae2fc5c2135ce01538e46b7131e9c82a1eae479852b92435ea92"
|
|
464
496
|
},
|
|
465
497
|
{
|
|
466
498
|
"path": "skills/design-review/references/craft.md",
|
|
@@ -510,9 +542,41 @@
|
|
|
510
542
|
"path": "skills/design-review/schemas/design-review-handoff.schema.json",
|
|
511
543
|
"digest": "sha256:402b25238f93f8269b98697bf77fa11dda1fd284f44e41d73cdb813f5244a4e0"
|
|
512
544
|
},
|
|
545
|
+
{
|
|
546
|
+
"path": "skills/design-review/scripts/design-artifact-shell.mjs",
|
|
547
|
+
"digest": "sha256:9245a86f8e3f20f6ec4c705d1364d2d6d3e639b34a7d41162769a0f490dd39df"
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"path": "skills/design-review/scripts/design-document.mjs",
|
|
551
|
+
"digest": "sha256:7e15b9f9e9afd29be2a2558fad9e57b5df85e494a586180d5afe23015cdbcfb7"
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"path": "skills/design-review/scripts/design-entities.mjs",
|
|
555
|
+
"digest": "sha256:376ec35d0f184deac31b639f2c0918e6b0f165e19984ed1c89ba2cfad6af9b80"
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
"path": "skills/design-review/scripts/design-parse5-parser.mjs",
|
|
559
|
+
"digest": "sha256:a9bfeecae4d31155a6935455c82ea8348da25f8585216b531d00c6599b8196e4"
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"path": "skills/design-review/scripts/design-parse5-tokenizer.mjs",
|
|
563
|
+
"digest": "sha256:f655474fb8d0bed732f01ace5b67102f849b73cb40831a57f1fb7b61180fbde9"
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
"path": "skills/design-review/scripts/design-review-handoff.mjs",
|
|
567
|
+
"digest": "sha256:1d04e0d821738f3934fb3fbd314b161fb557f4459cf2da2d1921c99d27d7d861"
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"path": "skills/design-review/scripts/design-sandbox-guards.mjs",
|
|
571
|
+
"digest": "sha256:dcc7aa1971da47018a198bfe7520c05e3e5ba21fe2d9c8fffcaad882ded5bbbb"
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"path": "skills/design-review/scripts/design-share.mjs",
|
|
575
|
+
"digest": "sha256:b10d7ce9cdb3eb48b9aca803e4d2ecc4f8e477e91f4a0c6a3ae17a1f7985aa06"
|
|
576
|
+
},
|
|
513
577
|
{
|
|
514
578
|
"path": "skills/design-review/scripts/design.mjs",
|
|
515
|
-
"digest": "sha256:
|
|
579
|
+
"digest": "sha256:ab33412cab749120e07359983f85bcb64038026844c06ff9f464c4f371d6d6ca"
|
|
516
580
|
},
|
|
517
581
|
{
|
|
518
582
|
"path": "skills/design-review/scripts/runtime/notices/entities.txt",
|
|
@@ -548,11 +612,11 @@
|
|
|
548
612
|
},
|
|
549
613
|
{
|
|
550
614
|
"path": "skills/design-review/scripts/runtime/packages/design/templates/studio/studio.js",
|
|
551
|
-
"digest": "sha256:
|
|
615
|
+
"digest": "sha256:85f8b084457aaa172025fb878b64059782cb976f72451b207c7bc40e8c982bb8"
|
|
552
616
|
},
|
|
553
617
|
{
|
|
554
618
|
"path": "skills/design-review/scripts/runtime/packages/protocol/package.json",
|
|
555
|
-
"digest": "sha256:
|
|
619
|
+
"digest": "sha256:931a50e413656f4dcd95db2451b5fc63c985b13494b4b01b492d8292529f4fcb"
|
|
556
620
|
},
|
|
557
621
|
{
|
|
558
622
|
"path": "skills/design-review/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -644,7 +708,7 @@
|
|
|
644
708
|
},
|
|
645
709
|
{
|
|
646
710
|
"path": "skills/design/openplanr.skill.json",
|
|
647
|
-
"digest": "sha256:
|
|
711
|
+
"digest": "sha256:d44c329b3754caa65cd0209f39fa31327f6ff68257f0de8c6f3ab26c3be9cc6c"
|
|
648
712
|
},
|
|
649
713
|
{
|
|
650
714
|
"path": "skills/design/references/craft.md",
|
|
@@ -694,9 +758,41 @@
|
|
|
694
758
|
"path": "skills/design/schemas/design-review-handoff.schema.json",
|
|
695
759
|
"digest": "sha256:402b25238f93f8269b98697bf77fa11dda1fd284f44e41d73cdb813f5244a4e0"
|
|
696
760
|
},
|
|
761
|
+
{
|
|
762
|
+
"path": "skills/design/scripts/design-artifact-shell.mjs",
|
|
763
|
+
"digest": "sha256:9245a86f8e3f20f6ec4c705d1364d2d6d3e639b34a7d41162769a0f490dd39df"
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
"path": "skills/design/scripts/design-document.mjs",
|
|
767
|
+
"digest": "sha256:7e15b9f9e9afd29be2a2558fad9e57b5df85e494a586180d5afe23015cdbcfb7"
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
"path": "skills/design/scripts/design-entities.mjs",
|
|
771
|
+
"digest": "sha256:376ec35d0f184deac31b639f2c0918e6b0f165e19984ed1c89ba2cfad6af9b80"
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
"path": "skills/design/scripts/design-parse5-parser.mjs",
|
|
775
|
+
"digest": "sha256:a9bfeecae4d31155a6935455c82ea8348da25f8585216b531d00c6599b8196e4"
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
"path": "skills/design/scripts/design-parse5-tokenizer.mjs",
|
|
779
|
+
"digest": "sha256:f655474fb8d0bed732f01ace5b67102f849b73cb40831a57f1fb7b61180fbde9"
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
"path": "skills/design/scripts/design-review-handoff.mjs",
|
|
783
|
+
"digest": "sha256:1d04e0d821738f3934fb3fbd314b161fb557f4459cf2da2d1921c99d27d7d861"
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"path": "skills/design/scripts/design-sandbox-guards.mjs",
|
|
787
|
+
"digest": "sha256:dcc7aa1971da47018a198bfe7520c05e3e5ba21fe2d9c8fffcaad882ded5bbbb"
|
|
788
|
+
},
|
|
789
|
+
{
|
|
790
|
+
"path": "skills/design/scripts/design-share.mjs",
|
|
791
|
+
"digest": "sha256:b10d7ce9cdb3eb48b9aca803e4d2ecc4f8e477e91f4a0c6a3ae17a1f7985aa06"
|
|
792
|
+
},
|
|
697
793
|
{
|
|
698
794
|
"path": "skills/design/scripts/design.mjs",
|
|
699
|
-
"digest": "sha256:
|
|
795
|
+
"digest": "sha256:ab33412cab749120e07359983f85bcb64038026844c06ff9f464c4f371d6d6ca"
|
|
700
796
|
},
|
|
701
797
|
{
|
|
702
798
|
"path": "skills/design/scripts/runtime/notices/entities.txt",
|
|
@@ -732,11 +828,11 @@
|
|
|
732
828
|
},
|
|
733
829
|
{
|
|
734
830
|
"path": "skills/design/scripts/runtime/packages/design/templates/studio/studio.js",
|
|
735
|
-
"digest": "sha256:
|
|
831
|
+
"digest": "sha256:85f8b084457aaa172025fb878b64059782cb976f72451b207c7bc40e8c982bb8"
|
|
736
832
|
},
|
|
737
833
|
{
|
|
738
834
|
"path": "skills/design/scripts/runtime/packages/protocol/package.json",
|
|
739
|
-
"digest": "sha256:
|
|
835
|
+
"digest": "sha256:931a50e413656f4dcd95db2451b5fc63c985b13494b4b01b492d8292529f4fcb"
|
|
740
836
|
},
|
|
741
837
|
{
|
|
742
838
|
"path": "skills/design/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -944,7 +1040,7 @@
|
|
|
944
1040
|
},
|
|
945
1041
|
{
|
|
946
1042
|
"path": "skills/plan/openplanr.skill.json",
|
|
947
|
-
"digest": "sha256:
|
|
1043
|
+
"digest": "sha256:1feb1a6f4b5e57226f067f4be7f5bb427bbe99c52ef3b192885e07a0afc3f558"
|
|
948
1044
|
},
|
|
949
1045
|
{
|
|
950
1046
|
"path": "skills/plan/references/artifact-contract.md",
|
|
@@ -966,9 +1062,41 @@
|
|
|
966
1062
|
"path": "skills/plan/schemas/design-review-handoff.schema.json",
|
|
967
1063
|
"digest": "sha256:402b25238f93f8269b98697bf77fa11dda1fd284f44e41d73cdb813f5244a4e0"
|
|
968
1064
|
},
|
|
1065
|
+
{
|
|
1066
|
+
"path": "skills/plan/scripts/design-artifact-shell.mjs",
|
|
1067
|
+
"digest": "sha256:9245a86f8e3f20f6ec4c705d1364d2d6d3e639b34a7d41162769a0f490dd39df"
|
|
1068
|
+
},
|
|
1069
|
+
{
|
|
1070
|
+
"path": "skills/plan/scripts/design-document.mjs",
|
|
1071
|
+
"digest": "sha256:7e15b9f9e9afd29be2a2558fad9e57b5df85e494a586180d5afe23015cdbcfb7"
|
|
1072
|
+
},
|
|
1073
|
+
{
|
|
1074
|
+
"path": "skills/plan/scripts/design-entities.mjs",
|
|
1075
|
+
"digest": "sha256:376ec35d0f184deac31b639f2c0918e6b0f165e19984ed1c89ba2cfad6af9b80"
|
|
1076
|
+
},
|
|
1077
|
+
{
|
|
1078
|
+
"path": "skills/plan/scripts/design-parse5-parser.mjs",
|
|
1079
|
+
"digest": "sha256:a9bfeecae4d31155a6935455c82ea8348da25f8585216b531d00c6599b8196e4"
|
|
1080
|
+
},
|
|
1081
|
+
{
|
|
1082
|
+
"path": "skills/plan/scripts/design-parse5-tokenizer.mjs",
|
|
1083
|
+
"digest": "sha256:f655474fb8d0bed732f01ace5b67102f849b73cb40831a57f1fb7b61180fbde9"
|
|
1084
|
+
},
|
|
1085
|
+
{
|
|
1086
|
+
"path": "skills/plan/scripts/design-review-handoff.mjs",
|
|
1087
|
+
"digest": "sha256:1d04e0d821738f3934fb3fbd314b161fb557f4459cf2da2d1921c99d27d7d861"
|
|
1088
|
+
},
|
|
1089
|
+
{
|
|
1090
|
+
"path": "skills/plan/scripts/design-sandbox-guards.mjs",
|
|
1091
|
+
"digest": "sha256:dcc7aa1971da47018a198bfe7520c05e3e5ba21fe2d9c8fffcaad882ded5bbbb"
|
|
1092
|
+
},
|
|
1093
|
+
{
|
|
1094
|
+
"path": "skills/plan/scripts/design-share.mjs",
|
|
1095
|
+
"digest": "sha256:b10d7ce9cdb3eb48b9aca803e4d2ecc4f8e477e91f4a0c6a3ae17a1f7985aa06"
|
|
1096
|
+
},
|
|
969
1097
|
{
|
|
970
1098
|
"path": "skills/plan/scripts/design.mjs",
|
|
971
|
-
"digest": "sha256:
|
|
1099
|
+
"digest": "sha256:ab33412cab749120e07359983f85bcb64038026844c06ff9f464c4f371d6d6ca"
|
|
972
1100
|
},
|
|
973
1101
|
{
|
|
974
1102
|
"path": "skills/plan/scripts/planning-ids.mjs",
|
|
@@ -1008,11 +1136,11 @@
|
|
|
1008
1136
|
},
|
|
1009
1137
|
{
|
|
1010
1138
|
"path": "skills/plan/scripts/runtime/packages/design/templates/studio/studio.js",
|
|
1011
|
-
"digest": "sha256:
|
|
1139
|
+
"digest": "sha256:85f8b084457aaa172025fb878b64059782cb976f72451b207c7bc40e8c982bb8"
|
|
1012
1140
|
},
|
|
1013
1141
|
{
|
|
1014
1142
|
"path": "skills/plan/scripts/runtime/packages/protocol/package.json",
|
|
1015
|
-
"digest": "sha256:
|
|
1143
|
+
"digest": "sha256:931a50e413656f4dcd95db2451b5fc63c985b13494b4b01b492d8292529f4fcb"
|
|
1016
1144
|
},
|
|
1017
1145
|
{
|
|
1018
1146
|
"path": "skills/plan/scripts/runtime/packages/protocol/registries/artifact-theme.json",
|
|
@@ -1220,12 +1348,12 @@
|
|
|
1220
1348
|
},
|
|
1221
1349
|
{
|
|
1222
1350
|
"path": "skills/sync/scripts/sync.mjs",
|
|
1223
|
-
"digest": "sha256:
|
|
1351
|
+
"digest": "sha256:005397d703d8df70f346a789d15c665a44329449418b39e807bb0dff927153da"
|
|
1224
1352
|
},
|
|
1225
1353
|
{
|
|
1226
1354
|
"path": "skills/sync/SKILL.md",
|
|
1227
|
-
"digest": "sha256:
|
|
1355
|
+
"digest": "sha256:06048f24128098919931db60272e0e14fe51bcbeba4b499db587e3b89d7bb3b9"
|
|
1228
1356
|
}
|
|
1229
1357
|
],
|
|
1230
|
-
"contentDigest": "sha256:
|
|
1358
|
+
"contentDigest": "sha256:1b8598ef168ceec3a700cd18ac4ab067fecfb45828b9ffd3d338e1b8d35a94fc"
|
|
1231
1359
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: ceo-review
|
|
3
3
|
description: "Produce a grounded strategy and finance review for an Operate cycle. Use when direction, runway, margin, investment, or cost of delay needs a CEO lens."
|
|
4
4
|
license: MIT
|
|
5
|
-
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*),
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*), Edit(./.planr/operate/**)"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# CEO review (`strategy-finance`)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: chair-review
|
|
3
3
|
description: "Synthesize an Operate cycle into a prioritized decision queue and action plan. Use after specialist reviews when leadership needs one coherent brief."
|
|
4
4
|
license: MIT
|
|
5
|
-
allowed-tools: "Read, Grep, Glob,
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Edit(./.planr/operate/**)"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Chair synthesis (`chair`)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: challenger-review
|
|
3
3
|
description: "Challenge an Operate cycle's claims, alternatives, downside, and confidence. Use when assumptions or executive consensus need an independent stress test."
|
|
4
4
|
license: MIT
|
|
5
|
-
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*),
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*), Edit(./.planr/operate/**)"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Challenger review (`independent-challenge`)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: cmo-review
|
|
3
3
|
description: "Produce a grounded market and growth review for an Operate cycle. Use when acquisition, positioning, demand, retention, or missing measurement needs a CMO lens."
|
|
4
4
|
license: MIT
|
|
5
|
-
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*),
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*), Edit(./.planr/operate/**)"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# CMO review (`growth-market`)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: coo-review
|
|
3
3
|
description: "Produce a grounded operations and customer-health review for an Operate cycle. Use when readiness, service delivery, capacity, or customer health needs a COO lens."
|
|
4
4
|
license: MIT
|
|
5
|
-
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*),
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*), Edit(./.planr/operate/**)"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# COO review (`operations-customer`)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: cpo-review
|
|
3
3
|
description: "Produce a grounded product and activation review for an Operate cycle. Use when customer value, activation, prioritization, or adoption needs a CPO lens."
|
|
4
4
|
license: MIT
|
|
5
|
-
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*),
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*), Edit(./.planr/operate/**)"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# CPO review (`product-activation`)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: cto-review
|
|
3
3
|
description: "Produce a grounded technology and delivery-risk review for an Operate cycle. Use when architecture, reliability, security, or execution risk needs a CTO lens."
|
|
4
4
|
license: MIT
|
|
5
|
-
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*),
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Bash(git log:*), Bash(git show:*), Bash(git diff:*), Edit(./.planr/operate/**)"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# CTO review (`technology-risk`)
|