openplanr 3.5.0 → 3.6.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 +31 -0
- package/dist/cli/commands/backlog-commands.d.ts +3 -0
- package/dist/cli/commands/backlog-commands.d.ts.map +1 -0
- package/dist/cli/commands/backlog-commands.js +60 -0
- package/dist/cli/commands/backlog-commands.js.map +1 -0
- package/dist/cli/commands/company.d.ts.map +1 -1
- package/dist/cli/commands/company.js +17 -0
- package/dist/cli/commands/company.js.map +1 -1
- package/dist/cli/commands/planning-artifacts.d.ts.map +1 -1
- package/dist/cli/commands/planning-artifacts.js +13 -5
- package/dist/cli/commands/planning-artifacts.js.map +1 -1
- package/dist/dashboard/.vite/manifest.json +1 -1
- package/dist/dashboard/assets/{index-B-l_941W.js → index-C_OquZVk.js} +2 -2
- package/dist/dashboard/assets/{index-B-l_941W.js.map → index-C_OquZVk.js.map} +1 -1
- package/dist/dashboard/dashboard-manifest.json +8 -8
- package/dist/dashboard/index.html +1 -1
- package/dist/services/artifact-service.d.ts.map +1 -1
- package/dist/services/artifact-service.js +13 -6
- package/dist/services/artifact-service.js.map +1 -1
- package/dist/services/company-export-service.d.ts +41 -0
- package/dist/services/company-export-service.d.ts.map +1 -0
- package/dist/services/company-export-service.js +429 -0
- package/dist/services/company-export-service.js.map +1 -0
- package/dist/services/company-sync-service.d.ts +24 -1
- package/dist/services/company-sync-service.d.ts.map +1 -1
- package/dist/services/company-sync-service.js +36 -19
- package/dist/services/company-sync-service.js.map +1 -1
- package/docs/CLI.md +97 -1
- package/lib/backlog-item.d.mts +45 -1
- package/lib/backlog-item.mjs +302 -34
- package/lib/host-packages/adapter-registry.json +4 -4
- 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.png +0 -0
- package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
- package/lib/host-packages/claude/openplanr/.openplanr-content.json +77 -77
- package/lib/host-packages/claude/openplanr/README.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/ceo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/ceo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/chair-review/SKILL.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/chair-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/challenger-review/SKILL.md +3 -7
- package/lib/host-packages/claude/openplanr/skills/challenger-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/cmo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/coo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/coo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/cpo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/cpo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/cto-review/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/cto-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +2 -3
- package/lib/host-packages/claude/openplanr/skills/investigate/references/backlog-filing.md +102 -0
- package/lib/host-packages/claude/openplanr/skills/investigate/references/findings.md +8 -16
- package/lib/host-packages/claude/openplanr/skills/operate/SKILL.md +73 -84
- package/lib/host-packages/claude/openplanr/skills/operate/references/note-checklist.md +131 -0
- package/lib/host-packages/claude/openplanr/skills/operate/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +16 -17
- package/lib/host-packages/claude/openplanr/skills/plan/references/planning-ids.md +53 -0
- package/lib/host-packages/claude/openplanr/skills/plan/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/plan-review/SKILL.md +6 -6
- package/lib/host-packages/claude/openplanr/skills/plan-review/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/release/SKILL.md +40 -139
- package/lib/host-packages/claude/openplanr/skills/release/references/cadence.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/release/references/release-notes.md +1 -1
- package/lib/host-packages/claude/openplanr/skills/release/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/release/references/schemes.md +4 -2
- package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +37 -24
- package/lib/host-packages/claude/openplanr/skills/ship/references/backlog-filing.md +102 -0
- package/lib/host-packages/claude/openplanr/skills/ship/references/findings.md +8 -16
- package/lib/host-packages/claude/openplanr/skills/ship/references/return-contract.md +10 -0
- package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +9 -9
- package/lib/host-packages/claude/openplanr/skills/spec/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/.openplanr-content.json +74 -74
- package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review.mdc +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review.mdc +3 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/backlog-filing.md +102 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/findings.md +8 -16
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +2 -3
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/references/note-checklist.md +131 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-operate.mdc +73 -84
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/planning-ids.md +53 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan-review/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-plan-review.mdc +6 -6
- package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +16 -17
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/cadence.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/release-notes.md +1 -1
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-release/references/schemes.md +4 -2
- package/lib/host-packages/cursor/openplanr/rules/planr-release.mdc +40 -139
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/backlog-filing.md +102 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/findings.md +8 -16
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +37 -24
- package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/return-contract.md +10 -0
- package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +9 -9
- 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 +89 -89
- package/lib/host-packages/openai/openplanr/skills/ceo-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/ceo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/ceo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/chair-review/SKILL.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/chair-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/chair-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/challenger-review/SKILL.md +3 -7
- package/lib/host-packages/openai/openplanr/skills/challenger-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/challenger-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/cmo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/cmo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/coo-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/coo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/coo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/cpo-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/cpo-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/cpo-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/cto-review/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/cto-review/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/cto-review/references/operate-advisor-contract.md +2 -7
- package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +2 -3
- package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/investigate/references/backlog-filing.md +102 -0
- package/lib/host-packages/openai/openplanr/skills/investigate/references/findings.md +8 -16
- package/lib/host-packages/openai/openplanr/skills/operate/SKILL.md +73 -84
- package/lib/host-packages/openai/openplanr/skills/operate/openplanr.skill.json +15 -4
- package/lib/host-packages/openai/openplanr/skills/operate/references/note-checklist.md +131 -0
- package/lib/host-packages/openai/openplanr/skills/operate/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +16 -17
- package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +15 -4
- package/lib/host-packages/openai/openplanr/skills/plan/references/planning-ids.md +53 -0
- package/lib/host-packages/openai/openplanr/skills/plan/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/plan-review/SKILL.md +6 -6
- package/lib/host-packages/openai/openplanr/skills/plan-review/openplanr.skill.json +12 -1
- package/lib/host-packages/openai/openplanr/skills/plan-review/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/release/SKILL.md +40 -139
- package/lib/host-packages/openai/openplanr/skills/release/openplanr.skill.json +4 -4
- package/lib/host-packages/openai/openplanr/skills/release/references/cadence.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/release/references/release-notes.md +1 -1
- package/lib/host-packages/openai/openplanr/skills/release/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/release/references/schemes.md +4 -2
- package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +37 -24
- package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +9 -9
- package/lib/host-packages/openai/openplanr/skills/ship/references/backlog-filing.md +102 -0
- package/lib/host-packages/openai/openplanr/skills/ship/references/findings.md +8 -16
- package/lib/host-packages/openai/openplanr/skills/ship/references/return-contract.md +10 -0
- package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +9 -9
- package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +12 -1
- package/lib/host-packages/openai/openplanr/skills/spec/references/return-contract.md +10 -0
- package/package.json +1 -1
- package/lib/host-packages/claude/openplanr/.claude-plugin/icon.svg +0 -11
- package/lib/host-packages/claude/openplanr/runtime/operate/scripts/errors.mjs +0 -8
- package/lib/host-packages/claude/openplanr/runtime/operate/scripts/operate-review-contract.mjs +0 -428
- package/lib/host-packages/claude/openplanr/runtime/operate/scripts/operate-review-note.mjs +0 -686
- package/lib/host-packages/claude/openplanr/runtime/operate/scripts/validate-note.mjs +0 -39
- package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/investigate/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/claude/openplanr/skills/operate/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/claude/openplanr/skills/plan/scripts/planning-ids.mjs +0 -166
- package/lib/host-packages/claude/openplanr/skills/release/scripts/collect_changes.sh +0 -85
- package/lib/host-packages/claude/openplanr/skills/ship/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/claude/openplanr/skills/ship/scripts/discover-verification.mjs +0 -108
- package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-investigate/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/planning-ids.mjs +0 -166
- package/lib/host-packages/cursor/openplanr/rules/planr-release/scripts/collect_changes.sh +0 -85
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/discover-verification.mjs +0 -108
- package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/errors.mjs +0 -8
- package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/operate-review-contract.mjs +0 -428
- package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/operate-review-note.mjs +0 -686
- package/lib/host-packages/cursor/openplanr/runtime/operate/scripts/validate-note.mjs +0 -39
- package/lib/host-packages/openai/openplanr/runtime/operate/scripts/errors.mjs +0 -8
- package/lib/host-packages/openai/openplanr/runtime/operate/scripts/operate-review-contract.mjs +0 -428
- package/lib/host-packages/openai/openplanr/runtime/operate/scripts/operate-review-note.mjs +0 -686
- package/lib/host-packages/openai/openplanr/runtime/operate/scripts/validate-note.mjs +0 -39
- package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/investigate/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/openai/openplanr/skills/operate/scripts/validate-note.mjs +0 -12
- package/lib/host-packages/openai/openplanr/skills/plan/scripts/planning-ids.mjs +0 -166
- package/lib/host-packages/openai/openplanr/skills/release/scripts/collect_changes.sh +0 -85
- package/lib/host-packages/openai/openplanr/skills/ship/scripts/backlog-item.mjs +0 -339
- package/lib/host-packages/openai/openplanr/skills/ship/scripts/discover-verification.mjs +0 -108
|
@@ -6,9 +6,7 @@ license: MIT
|
|
|
6
6
|
|
|
7
7
|
# OpenPlanr Operate
|
|
8
8
|
|
|
9
|
-
Run one useful operating review, not a ceremony.
|
|
10
|
-
executive advisors, use the Challenger to test material claims, and let the Chair synthesize the
|
|
11
|
-
result. Return a clean board report with decisions, actions, risks, gaps, and any real issues.
|
|
9
|
+
Run one useful operating review, not a ceremony. By default one agent applies all seven lenses in one pass and writes one report with decisions, actions, risks, gaps, and any real issues.
|
|
12
10
|
|
|
13
11
|
## Scope the review
|
|
14
12
|
|
|
@@ -20,58 +18,69 @@ Infer these values from the request and repository when they are clear:
|
|
|
20
18
|
- **Roster** — all seven lenses unless the user selects fewer.
|
|
21
19
|
|
|
22
20
|
Use the current repository, current snapshot, periodic review, and all seven lenses as sensible
|
|
23
|
-
defaults.
|
|
24
|
-
`unassigned`.
|
|
21
|
+
defaults. A recommendation may suggest a person, a role, or `unassigned`.
|
|
25
22
|
|
|
26
23
|
Ask only when an unresolved choice would materially change the sources inspected or the decision
|
|
27
24
|
being answered. Use the host's native structured-question UI when available, offering a
|
|
28
25
|
recommended choice and short alternatives. Otherwise ask one concise chat question at a time.
|
|
29
26
|
Never present the scope fields as a prose questionnaire.
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
Record the user's wording and the effective scope in the report's Scope section. Do not claim a
|
|
29
|
+
trend from a current snapshot; describe current state and name any missing baseline.
|
|
33
30
|
|
|
34
|
-
##
|
|
31
|
+
## Choose the mode
|
|
35
32
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
cycle only when the user explicitly asks to resume it and its recorded scope
|
|
39
|
-
matches. Never overwrite a prior cycle implicitly.
|
|
33
|
+
Default: this agent applies the lenses itself. Use subagents only when the user names a roster or
|
|
34
|
+
asks for independent reviewers; then follow Fan out.
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
.planr
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
Where the report goes: with no `.planr/` in the repository, answer in chat, or write one file where
|
|
37
|
+
the repository already keeps such documents. With `.planr/`, write `board-report.md` in a cycle
|
|
38
|
+
directory (below). `cycle.md`, `brief.md` and per-lens notes only when subagents run or the user asks to persist the cycle; a persisted cycle without fan-out writes `cycle.md` and `brief.md` with the contents defined under Fan out.
|
|
39
|
+
|
|
40
|
+
## Read the sources
|
|
41
|
+
|
|
42
|
+
Read the files the request names, plus `AGENTS.md` and `CLAUDE.md` when tracked, in one batch.
|
|
43
|
+
Expand only for a missing contract, a dependency or a contradiction, and stop when each claim has
|
|
44
|
+
evidence or a named gap. Keep observations separate from interpretation.
|
|
45
|
+
|
|
46
|
+
## Apply the lenses
|
|
47
|
+
|
|
48
|
+
Work through each selected lens in one pass:
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
| Lens | Focus |
|
|
51
|
+
|---|---|
|
|
52
|
+
| CEO | strategy and finance: direction, runway, margin, cost of delay |
|
|
53
|
+
| CTO | technology and delivery risk: architecture, reliability, security, execution risk |
|
|
54
|
+
| CPO | product and activation: customer value, activation, prioritization, adoption |
|
|
55
|
+
| CMO | growth and market: acquisition, positioning, demand, retention, measurement |
|
|
56
|
+
| COO | operations and customer health: process, support, incidents, capacity |
|
|
57
|
+
| Challenger | for each material claim: the strongest alternative, the downside, and the confidence |
|
|
58
|
+
| Chair | the decision queue and action plan, from the findings above |
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
Name each Review coverage row `CEO`, `CTO`, `CPO`, `CMO`, `COO`, `Challenger` or `Chair`; the dashboard matches on those names.
|
|
57
61
|
|
|
58
|
-
|
|
62
|
+
Every recommendation cites a source: a project path, command output, or a named gap. Do not
|
|
63
|
+
fabricate a lens with no evidence; record it as `no material finding` or `unavailable` in review
|
|
64
|
+
coverage with the smallest next action. Then assemble the report below.
|
|
59
65
|
|
|
60
|
-
|
|
61
|
-
- current revision and working-tree state when relevant;
|
|
62
|
-
- the requested range and a short change summary when the review is historical;
|
|
63
|
-
- paths to relevant planning, product, customer, financial, operational, delivery, architecture,
|
|
64
|
-
incident, and metric sources;
|
|
65
|
-
- important context that was searched for but not found.
|
|
66
|
+
## Cycle directory
|
|
66
67
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
Use a short subject slug and today's ISO date: `.planr/operate/<date>-<slug>/`. Choose the first
|
|
69
|
+
unused path; when the base path exists, append `-02`, `-03`, and so on. Reuse an existing cycle
|
|
70
|
+
only when the user explicitly asks to resume it and its recorded scope matches. Never overwrite a
|
|
71
|
+
prior cycle implicitly. If the directory is ignored by Git, continue locally and mention that in the
|
|
72
|
+
report; do not ask the user to change ignore rules. Report an exact filesystem error only when the
|
|
73
|
+
directory cannot be created or written.
|
|
70
74
|
|
|
71
|
-
##
|
|
75
|
+
## Fan out
|
|
76
|
+
|
|
77
|
+
When the user names a roster or asks for independent reviewers, create the cycle directory with
|
|
78
|
+
`cycle.md` (effective scope, roster, revision when relevant, outcome of each lens) and `brief.md`
|
|
79
|
+
(scope, revision, source paths, context searched for but not found), then one note per selected lens. An advisor lens run on its own creates the same layout with a one-lens
|
|
80
|
+
roster and an unsynthesized `board-report.md`.
|
|
72
81
|
|
|
73
82
|
Dispatch only the selected independent advisors, in parallel when subagents are
|
|
74
|
-
available:
|
|
83
|
+
available, giving each the brief path, its output path and the effective scope:
|
|
75
84
|
|
|
76
85
|
| Lens | Skill | Output |
|
|
77
86
|
|---|---|---|
|
|
@@ -81,21 +90,17 @@ available:
|
|
|
81
90
|
| Growth and market | `planr-cmo-review` | `cmo.md` |
|
|
82
91
|
| Operations and customer health | `planr-coo-review` | `coo.md` |
|
|
83
92
|
|
|
84
|
-
|
|
85
|
-
scope. Do not invoke or create note files for advisor lenses omitted by the
|
|
86
|
-
roster. After the selected advisor work finishes:
|
|
93
|
+
Do not create note files for omitted lenses. After the advisor work finishes:
|
|
87
94
|
|
|
88
|
-
1. If Challenger is selected, run `planr-challenger-review` over the available
|
|
89
|
-
|
|
90
|
-
2. If Chair is selected, run `planr-chair-review` over the available
|
|
91
|
-
|
|
92
|
-
3. If Challenger or Chair is omitted, record `omitted by scope` in review
|
|
93
|
-
|
|
94
|
-
inventing the omitted lens; when Chair is absent, clearly label the result as
|
|
95
|
-
an unsynthesized lens summary rather than a Chair recommendation.
|
|
95
|
+
1. If Challenger is selected, run `planr-challenger-review` over the available advisor notes to
|
|
96
|
+
surface only material exceptions, alternatives, and downside.
|
|
97
|
+
2. If Chair is selected, run `planr-chair-review` over the available notes to produce the decision
|
|
98
|
+
queue and action plan.
|
|
99
|
+
3. If Challenger or Chair is omitted, record `omitted by scope` in review coverage and label the
|
|
100
|
+
result an unsynthesized lens summary, not a Chair recommendation.
|
|
96
101
|
|
|
97
|
-
Missing or malformed lens output is an issue, not a reason to fabricate that lens or discard
|
|
98
|
-
other
|
|
102
|
+
Missing or malformed lens output is an issue, not a reason to fabricate that lens or discard the
|
|
103
|
+
other work. Record the problem, its effect on confidence, and the smallest next action.
|
|
99
104
|
|
|
100
105
|
## Assemble `board-report.md`
|
|
101
106
|
|
|
@@ -144,47 +149,31 @@ Use these sections in this order:
|
|
|
144
149
|
## Review coverage
|
|
145
150
|
| Lens | Outcome | Note | Informed |
|
|
146
151
|
|---|---|---|---|
|
|
147
|
-
|
|
|
152
|
+
| CEO | reported / no material finding / unavailable / omitted by scope | `file.md` or `—` | D1 / watch / none |
|
|
148
153
|
|
|
149
154
|
## Issues
|
|
150
155
|
- **I1 — <problem>:** <impact and practical next action>
|
|
151
156
|
<or `None.`>
|
|
152
157
|
```
|
|
153
158
|
|
|
154
|
-
|
|
155
|
-
opinion
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
and five decision-changing gaps. When no decision is ready, say so plainly and retain the strongest
|
|
160
|
-
watch items and the context needed to improve the next review.
|
|
161
|
-
|
|
162
|
-
## Optional quality check
|
|
159
|
+
In fan out with Chair, copy decisions and actions from `chair.md` without adding a new executive
|
|
160
|
+
opinion. Without Chair, summarize only the available notes, label the report an unsynthesized lens
|
|
161
|
+
summary, and use `No decision-ready proposal was established.` plus `No proposed actions.` unless
|
|
162
|
+
those notes already state a supported proposal. Keep at most five decisions, seven actions, and five
|
|
163
|
+
decision-changing gaps. When no decision is ready, say so and keep the strongest watch items.
|
|
163
164
|
|
|
164
|
-
|
|
165
|
+
## Quality check
|
|
165
166
|
|
|
166
|
-
|
|
167
|
-
node "<skill-root>/scripts/validate-note.mjs" "<absolute-advisor-output>" --profile advisor --contract-version 2.0.0
|
|
168
|
-
node "<skill-root>/scripts/validate-note.mjs" "<absolute-challenger-output>" --profile challenger --contract-version 2.0.0
|
|
169
|
-
node "<skill-root>/scripts/validate-note.mjs" "<absolute-chair-output>" --profile chair --contract-version 2.0.0
|
|
170
|
-
node "<skill-root>/scripts/validate-note.mjs" "<absolute-board-report-path>" --profile board-report --contract-version 2.0.0
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
Use their diagnostics as editing help. Include unresolved structural problems under `Issues` with
|
|
174
|
-
their impact and next action while preserving the useful parts of the report.
|
|
167
|
+
Before returning, check the report (and any lens note) against [the note checklist](references/note-checklist.md), which runs the CLI's `validate-note` when `command -v openplanr` succeeds and is the check otherwise. Put unresolved structural problems under `Issues` with their impact and next action.
|
|
175
168
|
|
|
176
169
|
## Return
|
|
177
170
|
|
|
178
|
-
Lead with the grounded overall signal and most consequential decision or missing
|
|
179
|
-
|
|
180
|
-
coverage
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
`#/operate/cycles/<id>`, the completed review index at `#/operate/cycles`, and the latest
|
|
188
|
-
completed review at `#/operate/today`. The standalone dashboard presents these local reports
|
|
189
|
-
read-only and refreshes them automatically. Inbox, actions, evidence, outcomes, recovery, and
|
|
190
|
-
all mutations require an actor-bound governed Operate session.
|
|
171
|
+
Lead with the grounded overall signal and most consequential decision or missing evidence.
|
|
172
|
+
Link `board-report.md` when one was written, summarize decision and action counts and the review
|
|
173
|
+
coverage completed, and name any unavailable or unsynthesized lens. Follow
|
|
174
|
+
[the shared return rules](references/return-contract.md).
|
|
175
|
+
|
|
176
|
+
When the OpenPlanr dashboard is running, the cycle is browsable at `#/operate/cycles/<id>`, the
|
|
177
|
+
review index at `#/operate/cycles`, and the latest review at `#/operate/today`, read-only.
|
|
178
|
+
Inbox, actions, evidence, outcomes, recovery, and all mutations require an actor-bound governed
|
|
179
|
+
Operate session.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"schemaVersion": "1.0.0",
|
|
4
4
|
"protocolVersion": "1.8.0",
|
|
5
5
|
"skillId": "planr-operate",
|
|
6
|
-
"skillVersion": "2.
|
|
6
|
+
"skillVersion": "2.4.0",
|
|
7
7
|
"entrypoint": "SKILL.md",
|
|
8
8
|
"hosts": [
|
|
9
9
|
"claude-code",
|
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
"execution": "host-agent",
|
|
15
15
|
"resources": [
|
|
16
16
|
{
|
|
17
|
-
"path": "
|
|
18
|
-
"kind": "
|
|
17
|
+
"path": "references/note-checklist.md",
|
|
18
|
+
"kind": "reference",
|
|
19
19
|
"hosts": [
|
|
20
20
|
"claude-code",
|
|
21
21
|
"codex",
|
|
22
22
|
"chatgpt",
|
|
23
23
|
"cursor"
|
|
24
24
|
],
|
|
25
|
-
"executable":
|
|
25
|
+
"executable": false
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"path": "agents/openai.yaml",
|
|
@@ -32,6 +32,17 @@
|
|
|
32
32
|
"chatgpt"
|
|
33
33
|
],
|
|
34
34
|
"executable": false
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"path": "references/return-contract.md",
|
|
38
|
+
"kind": "reference",
|
|
39
|
+
"hosts": [
|
|
40
|
+
"claude-code",
|
|
41
|
+
"codex",
|
|
42
|
+
"chatgpt",
|
|
43
|
+
"cursor"
|
|
44
|
+
],
|
|
45
|
+
"executable": false
|
|
35
46
|
}
|
|
36
47
|
]
|
|
37
48
|
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Operate note checklist
|
|
2
|
+
|
|
3
|
+
Check a written Operate note line by line before returning it. Each item names the diagnostic
|
|
4
|
+
code `openplanr operate validate-note` reports for the same problem. Fix what you can; report each
|
|
5
|
+
item that stays unresolved as a structural issue, with its code.
|
|
6
|
+
|
|
7
|
+
This checklist is the check. Never run `npx`, install or download anything, or search the
|
|
8
|
+
filesystem for a validator or the CLI. Run `openplanr operate validate-note <note> --profile
|
|
9
|
+
<profile> --contract-version 2.0.0` only if `command -v openplanr` succeeds, and treat its
|
|
10
|
+
diagnostics the same way.
|
|
11
|
+
|
|
12
|
+
Profiles: `advisor` (CEO, CTO, CPO, CMO and COO reviews), `challenger`, `chair` and
|
|
13
|
+
`board-report`. Notes written now use contract 2.0.0.
|
|
14
|
+
|
|
15
|
+
## Every profile
|
|
16
|
+
|
|
17
|
+
- [ ] The profile is one of the four above (`E_OPERATE_REVIEW_PROFILE_INVALID`).
|
|
18
|
+
- [ ] The preamble, before the first `##` heading, holds at most one contract line, written
|
|
19
|
+
`> **Contract:** …` or `- **Contract:** …`
|
|
20
|
+
(`E_OPERATE_REVIEW_CONTRACT_DECLARATION_DUPLICATE`). A note with no contract line passes.
|
|
21
|
+
Only a contract line that is present is checked: its value must be exactly
|
|
22
|
+
`operate-review-quality-contract@2.0.0` (`E_OPERATE_REVIEW_CONTRACT_DECLARATION_INVALID`
|
|
23
|
+
for an unsupported kind or version, `E_OPERATE_REVIEW_CONTRACT_VERSION_INVALID`,
|
|
24
|
+
`E_OPERATE_REVIEW_CONTRACT_VERSION_MISMATCH`).
|
|
25
|
+
- [ ] The note has exactly one level-one `#` title (`E_OPERATE_REVIEW_TITLE_MISSING`,
|
|
26
|
+
`E_OPERATE_REVIEW_TITLE_DUPLICATE`).
|
|
27
|
+
- [ ] The note fits its size limit in UTF-8 bytes: advisor 16 KiB, challenger 12 KiB, chair and
|
|
28
|
+
board-report 24 KiB (`E_OPERATE_REVIEW_SIZE_LIMIT`).
|
|
29
|
+
- [ ] Every required `##` section for the profile is present (`E_OPERATE_REVIEW_SECTION_MISSING`)
|
|
30
|
+
and appears once (`E_OPERATE_REVIEW_SECTION_DUPLICATE`); there is no other `##` section
|
|
31
|
+
(`E_OPERATE_REVIEW_SECTION_UNEXPECTED`); and the sections follow the order listed below
|
|
32
|
+
(`E_OPERATE_REVIEW_SECTION_ORDER`).
|
|
33
|
+
- [ ] Check section items, section fields and item fields only in sections that are present. A
|
|
34
|
+
missing section is reported once, as `E_OPERATE_REVIEW_SECTION_MISSING`, and yields no
|
|
35
|
+
field or item code for what it would have held. The preamble fields are always checked.
|
|
36
|
+
- [ ] Each required field is written as `- **Name:** value` or `> **Name:** value`, appears once
|
|
37
|
+
in its scope (`E_OPERATE_REVIEW_FIELD_DUPLICATE`), and holds a real value, not empty, `...`,
|
|
38
|
+
`TBD`, `TODO` or a `<placeholder>` (`E_OPERATE_REVIEW_FIELD_MISSING`).
|
|
39
|
+
- [ ] A field with a fixed value list uses one of the listed values exactly
|
|
40
|
+
(`E_OPERATE_REVIEW_FIELD_VALUE_INVALID`).
|
|
41
|
+
- [ ] The item section holds at least one item or its exact empty-state sentence
|
|
42
|
+
(`E_OPERATE_REVIEW_ITEM_OR_EMPTY_STATE_MISSING`), at most five items
|
|
43
|
+
(`E_OPERATE_REVIEW_ITEM_LIMIT`), headed `### <prefix><n> — <title>` and numbered 1, 2, 3
|
|
44
|
+
with no gaps or repeats (`E_OPERATE_REVIEW_ITEM_SEQUENCE`).
|
|
45
|
+
- [ ] `Decision-changing gaps` is `None.` or a list within its limit (advisor and challenger 3,
|
|
46
|
+
chair and board-report 5) counted as `- ` lines (`E_OPERATE_REVIEW_SECTION_ITEM_LIMIT`).
|
|
47
|
+
|
|
48
|
+
## advisor
|
|
49
|
+
|
|
50
|
+
- [ ] Preamble fields: `Signal` (`action`, `watch` or `insufficient context`) and `Bottom line`.
|
|
51
|
+
- [ ] Sections: `Findings`, `Recommended next move`, `Decision-changing gaps`,
|
|
52
|
+
`Sources consulted`.
|
|
53
|
+
- [ ] Items `F1`…`F5` under `Findings`, or `No decision-relevant finding was established.` Each
|
|
54
|
+
has `Priority` (`P0`, `P1`, `P2` or `unranked`), `Status` (`observed` or `inferred`),
|
|
55
|
+
`Why it matters`, `Sources`, `Confidence` and `Decision impact`.
|
|
56
|
+
- [ ] `Recommended next move` is exactly `No recommendation from current context.` or has
|
|
57
|
+
`Recommendation`, `Suggested owner`, `First step`, `Expected result`, `Check` and
|
|
58
|
+
`Revisit when`.
|
|
59
|
+
|
|
60
|
+
## challenger
|
|
61
|
+
|
|
62
|
+
- [ ] Preamble fields: `Verdict` (`holds`, `holds with exceptions` or `not decision-ready`) and
|
|
63
|
+
`Bottom line`.
|
|
64
|
+
- [ ] Sections: `Material exceptions`, `Decisions that still hold`, `Risks and dissent`,
|
|
65
|
+
`Decision-changing gaps`.
|
|
66
|
+
- [ ] Items `X1`…`X5` under `Material exceptions`, or `No material exception found.` Each has
|
|
67
|
+
`Target`, `Type` (`unsupported`, `contradicted`, `correlated reasoning`,
|
|
68
|
+
`missing alternative`, `unpriced downside` or `overconfident`), `Decision impact`,
|
|
69
|
+
`Challenge`, `Sources` and `Resolution`.
|
|
70
|
+
- [ ] `Risks and dissent` has `Dissent` and `Resolution condition`.
|
|
71
|
+
|
|
72
|
+
## chair
|
|
73
|
+
|
|
74
|
+
- [ ] Preamble fields: `Overall signal` (`act now`, `decide next`, `watch` or
|
|
75
|
+
`insufficient context`) and `Executive call`.
|
|
76
|
+
- [ ] Sections: `Decision queue`, `Action plan`, `Risks and dissent`, `Decision-changing gaps`,
|
|
77
|
+
`Review coverage`.
|
|
78
|
+
- [ ] The decision queue and action plan items below.
|
|
79
|
+
|
|
80
|
+
## board-report
|
|
81
|
+
|
|
82
|
+
- [ ] No preamble fields are required.
|
|
83
|
+
- [ ] Sections: `Scope`, `Executive summary`, `Decision queue`, `Action plan`,
|
|
84
|
+
`Risks and dissent`, `Decision-changing gaps`, `Review coverage`, `Issues`.
|
|
85
|
+
- [ ] `Scope` has `Subject`, `Window`, `Requested decision` and `Custody`.
|
|
86
|
+
- [ ] `Executive summary` is not empty (`E_OPERATE_REVIEW_SUMMARY_MISSING`); a missing
|
|
87
|
+
`Executive summary` section is reported both as `E_OPERATE_REVIEW_SECTION_MISSING` and as
|
|
88
|
+
`E_OPERATE_REVIEW_SUMMARY_MISSING`.
|
|
89
|
+
- [ ] Exceptions to "a missing section yields no other code": with at least one decision, a
|
|
90
|
+
missing `Action plan` (chair or board-report) also yields
|
|
91
|
+
`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`; in a contract 1.0.0 note, a missing `Executive call`
|
|
92
|
+
also yields `E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING` and a missing `Human gate` also yields
|
|
93
|
+
`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`.
|
|
94
|
+
- [ ] The decision queue and action plan items below.
|
|
95
|
+
|
|
96
|
+
## Decision queue and action plan (chair and board-report)
|
|
97
|
+
|
|
98
|
+
- [ ] Items `D1`…`D5` under `Decision queue`, or `No decision-ready proposal was established.`
|
|
99
|
+
- [ ] Each heading carries a priority: `### D1 — [P0] <title>`, with `P0`, `P1`, `P2` or
|
|
100
|
+
`unranked` (`E_OPERATE_REVIEW_ITEM_HEADING_INVALID`).
|
|
101
|
+
- [ ] Each decision has `Recommendation`, `Why now`, `Suggested owner`, `Confidence`,
|
|
102
|
+
`Alternative`, `First step`, `Expected result`, `Check`, `Dependencies`, `Revisit when`,
|
|
103
|
+
`Sources` and `Dissent`.
|
|
104
|
+
- [ ] With at least one decision, `Action plan` has the table header
|
|
105
|
+
`| ID | Priority | Action | Suggested owner | First step | Success measure | Check | Depends on |`
|
|
106
|
+
and at least one `A<n>` row (`E_OPERATE_REVIEW_ACTION_PLAN_INVALID`).
|
|
107
|
+
- [ ] The action plan has at most seven rows (`E_OPERATE_REVIEW_ACTION_LIMIT`), and every row
|
|
108
|
+
has exactly eight columns, none empty or a placeholder from the field list above (`...`,
|
|
109
|
+
`TBD`, `TODO`, `<placeholder>`); `—` is accepted, for example in `Depends on`
|
|
110
|
+
(`E_OPERATE_REVIEW_ACTION_ROW_INVALID`).
|
|
111
|
+
|
|
112
|
+
## Older notes (contract 1.0.0)
|
|
113
|
+
|
|
114
|
+
Only for reading a note that declares `operate-human-review-contract@1.0.0`; never write one.
|
|
115
|
+
Its sections and fields differ from the lists above. A 1.0.0 board report also needs:
|
|
116
|
+
|
|
117
|
+
- [ ] A non-empty `Executive call` section (`E_OPERATE_REVIEW_EXECUTIVE_CALL_MISSING`).
|
|
118
|
+
- [ ] A `Human gate` with one statement per decision naming adopt, reject, defer, the decision's
|
|
119
|
+
owner and a reason; with no decision, it offers close, supply evidence, and re-run for any
|
|
120
|
+
absent review seat (`E_OPERATE_REVIEW_HUMAN_GATE_INCOMPLETE`), and never offers adopt,
|
|
121
|
+
reject or defer (`E_OPERATE_REVIEW_HUMAN_GATE_CONTRADICTORY`).
|
|
122
|
+
|
|
123
|
+
A caller that requires a conforming note fails it as a whole when any item above is unresolved
|
|
124
|
+
(`E_OPERATE_REVIEW_NOTE_INVALID`); that whole-note code is never listed on the `CODES:` line.
|
|
125
|
+
|
|
126
|
+
## Report format
|
|
127
|
+
|
|
128
|
+
End the reply with exactly one line: `CODES: ` followed by every distinct code from the items
|
|
129
|
+
above, each written in full, sorted alphabetically and comma-separated; write
|
|
130
|
+
`CODES: none` when every item passes. Each code appears once however many times the problem
|
|
131
|
+
occurs.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Return rules
|
|
2
|
+
|
|
3
|
+
Shared by Spec, Plan, Plan Review, Ship, Operate and Release. Each skill lists its own fields.
|
|
4
|
+
|
|
5
|
+
- Lead with the outcome: what is ready, prepared or released, then what is partial or blocked.
|
|
6
|
+
- Link durable artifacts by purpose. Keep inventories, command output and transcripts in their files.
|
|
7
|
+
- Report only checks you ran, with their result. Name each check you could not run and what stays unverified.
|
|
8
|
+
- Omit empty fields. Give each open issue its impact and the smallest recovery action.
|
|
9
|
+
- The summary is a human view, not a schema. Different wording never calls for a rerun or a correction pass.
|
|
10
|
+
- Keep any machine-readable field a skill defines unchanged.
|
|
@@ -14,14 +14,11 @@ automatically.
|
|
|
14
14
|
|
|
15
15
|
## Resolve context directly
|
|
16
16
|
|
|
17
|
-
Read the
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
3. relevant implementation code, tests, package scripts, and CI configuration;
|
|
23
|
-
4. design inputs and design specifications when a browser surface is involved;
|
|
24
|
-
5. the database schema or persistence code when data behavior is involved.
|
|
17
|
+
Read the request, the selected specification and the files either names, plus
|
|
18
|
+
`AGENTS.md` and `CLAUDE.md` when tracked, in one batch. Expand only for a missing
|
|
19
|
+
contract, a dependency or a contradiction, and stop when each claim has evidence
|
|
20
|
+
or a named gap. Read design inputs when a browser surface is involved and the
|
|
21
|
+
schema or persistence code when data behavior is involved.
|
|
25
22
|
|
|
26
23
|
Use repository-local conventions first. Missing legacy `input/` or `.planr/`
|
|
27
24
|
paths do not block a clear request. State what was unavailable and continue when
|
|
@@ -93,11 +90,10 @@ Read [the artifact contract](references/artifact-contract.md) before writing.
|
|
|
93
90
|
Write stories and tasks directly in the repository's active planning mode.
|
|
94
91
|
|
|
95
92
|
- Allocate project-global monotonic `US-NNN` and `T-NNN` IDs. Never reuse a
|
|
96
|
-
deleted ID.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
`.planr/config.json` configures; never fall back to `US-001` or `T-001`.
|
|
93
|
+
deleted ID. Follow [the planning ID procedure](references/planning-ids.md)
|
|
94
|
+
immediately before writing: it reads the stored sequence and the existing
|
|
95
|
+
files, never overwrites an artifact, and never falls back to `US-001` or
|
|
96
|
+
`T-001`.
|
|
101
97
|
- Give each story stable acceptance IDs starting at `AC-001`.
|
|
102
98
|
- Split each story into tasks that are coherent and independently verifiable.
|
|
103
99
|
Separate by ownership first: UI work is a `UI` task for the frontend role and
|
|
@@ -116,9 +112,12 @@ Write stories and tasks directly in the repository's active planning mode.
|
|
|
116
112
|
- Name concrete files and repository-grounded checks. Preserve established
|
|
117
113
|
repository headings when they carry additional information.
|
|
118
114
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
115
|
+
Before finishing, check directly that every story and task frontmatter is
|
|
116
|
+
valid, every acceptance ID is mapped through `acceptanceRefs` and named under
|
|
117
|
+
`## Test Requirements`, and no ID repeats an existing one. When
|
|
118
|
+
`command -v openplanr` succeeds and a `SPEC-NNN` exists,
|
|
119
|
+
`openplanr spec sync <SPEC-ID> --dry-run` adds an orphan and schema-drift check
|
|
120
|
+
and writes nothing. Do not route semantic work to a CLI fallback.
|
|
122
121
|
|
|
123
122
|
For approved design input, author the complete story and task bytes before
|
|
124
123
|
touching target paths, then commit those bytes and the sibling
|
|
@@ -142,7 +141,7 @@ instead of repeating every path in chat.
|
|
|
142
141
|
(Codex/ChatGPT) or the `planr-ship` rule (Cursor).
|
|
143
142
|
|
|
144
143
|
Mention the planning layout or consulted lenses only when they explain a material
|
|
145
|
-
choice.
|
|
144
|
+
choice. Follow [the shared return rules](references/return-contract.md).
|
|
146
145
|
|
|
147
146
|
When the OpenPlanr dashboard is running, the planned graph is browsable at
|
|
148
147
|
`#/board`; open one story at `#/detail/<US-###>`.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"schemaVersion": "1.0.0",
|
|
4
4
|
"protocolVersion": "1.8.0",
|
|
5
5
|
"skillId": "planr-plan",
|
|
6
|
-
"skillVersion": "1.
|
|
6
|
+
"skillVersion": "1.5.0",
|
|
7
7
|
"entrypoint": "SKILL.md",
|
|
8
8
|
"hosts": [
|
|
9
9
|
"claude-code",
|
|
@@ -45,15 +45,26 @@
|
|
|
45
45
|
"executable": false
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"path": "
|
|
49
|
-
"kind": "
|
|
48
|
+
"path": "references/planning-ids.md",
|
|
49
|
+
"kind": "reference",
|
|
50
|
+
"hosts": [
|
|
51
|
+
"claude-code",
|
|
52
|
+
"codex",
|
|
53
|
+
"chatgpt",
|
|
54
|
+
"cursor"
|
|
55
|
+
],
|
|
56
|
+
"executable": false
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"path": "references/return-contract.md",
|
|
60
|
+
"kind": "reference",
|
|
50
61
|
"hosts": [
|
|
51
62
|
"claude-code",
|
|
52
63
|
"codex",
|
|
53
64
|
"chatgpt",
|
|
54
65
|
"cursor"
|
|
55
66
|
],
|
|
56
|
-
"executable":
|
|
67
|
+
"executable": false
|
|
57
68
|
},
|
|
58
69
|
{
|
|
59
70
|
"path": "schemas/design-document.schema.json",
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Allocate planning IDs
|
|
2
|
+
|
|
3
|
+
`SPEC-NNN`, `US-NNN` and `T-NNN` are project-global and monotonic. Allocate them
|
|
4
|
+
with your own file tools; never reuse a deleted ID and never fall back to
|
|
5
|
+
`US-001` or `T-001` because the sequence looked empty.
|
|
6
|
+
|
|
7
|
+
1. **Find the specs root.** Read `.planr/config.json` and take
|
|
8
|
+
`outputPaths.agile` (default `.planr`). The specs root is
|
|
9
|
+
`<agile>/specs`. Stop and report when the config is missing or not valid
|
|
10
|
+
JSON, or when the specs root does not exist or is not a directory; do not
|
|
11
|
+
create it.
|
|
12
|
+
2. **Respect the CLI's lock.** If `<specs root>/.id-sequence.lock` exists, an
|
|
13
|
+
`openplanr` command is reserving IDs. Wait about five seconds and check
|
|
14
|
+
again. If it is still there, stop and tell the user that
|
|
15
|
+
`.id-sequence.lock` is held and to retry when the `openplanr` command
|
|
16
|
+
finishes; delete the lock only if they confirm no `openplanr` command is
|
|
17
|
+
running. Never write while the lock exists.
|
|
18
|
+
3. **Read the stored sequence.** If `<specs root>/.id-sequence.json` exists, it
|
|
19
|
+
must have `kind: "planning-id-sequence"`, `protocolVersion: "1.7.0"` and a
|
|
20
|
+
positive integer `next.SPEC`, `next.US` and `next.T`. Stop and report when it
|
|
21
|
+
does not; never repair or replace it silently. A missing file means every
|
|
22
|
+
stored `next` is 1.
|
|
23
|
+
4. **Scan existing IDs.** List the specs root recursively, skipping directories
|
|
24
|
+
whose names start with `.`. For each file or directory name that starts with
|
|
25
|
+
`SPEC-`, `US-` or `T-` followed by three or more digits, keep the highest
|
|
26
|
+
number per kind.
|
|
27
|
+
5. **Choose the first ID.** For each kind, `next = max(stored next, highest + 1)`.
|
|
28
|
+
Number the new artifacts upward from `next`, padded to at least three digits
|
|
29
|
+
(`US-015`, `T-120`).
|
|
30
|
+
6. **Never overwrite.** Immediately before writing each artifact, confirm no file
|
|
31
|
+
or directory with that ID exists anywhere under the specs root. If one does,
|
|
32
|
+
take the next number and check again.
|
|
33
|
+
7. **Advance the sequence.** After writing, check the lock again (step 2),
|
|
34
|
+
then write `.id-sequence.json` in the specs root with two-space
|
|
35
|
+
indentation and a final newline. Each `next` is one past the highest ID you
|
|
36
|
+
wrote, or the value from step 5 for a kind you did not use. Never lower a
|
|
37
|
+
value. After writing `US-015` and `T-041`, for example:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"kind": "planning-id-sequence",
|
|
42
|
+
"schemaVersion": "1.0.0",
|
|
43
|
+
"protocolVersion": "1.7.0",
|
|
44
|
+
"next": {
|
|
45
|
+
"SPEC": 4,
|
|
46
|
+
"US": 16,
|
|
47
|
+
"T": 42
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Re-run steps 2–5 right before writing rather than reusing numbers from earlier in
|
|
53
|
+
the session: another writer may have added artifacts since.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Return rules
|
|
2
|
+
|
|
3
|
+
Shared by Spec, Plan, Plan Review, Ship, Operate and Release. Each skill lists its own fields.
|
|
4
|
+
|
|
5
|
+
- Lead with the outcome: what is ready, prepared or released, then what is partial or blocked.
|
|
6
|
+
- Link durable artifacts by purpose. Keep inventories, command output and transcripts in their files.
|
|
7
|
+
- Report only checks you ran, with their result. Name each check you could not run and what stays unverified.
|
|
8
|
+
- Omit empty fields. Give each open issue its impact and the smallest recovery action.
|
|
9
|
+
- The summary is a human view, not a schema. Different wording never calls for a rerun or a correction pass.
|
|
10
|
+
- Keep any machine-readable field a skill defines unchanged.
|
|
@@ -6,9 +6,11 @@ license: MIT
|
|
|
6
6
|
|
|
7
7
|
# OpenPlanr Plan Review
|
|
8
8
|
|
|
9
|
-
Give the plan a senior, practical review. Read the plan
|
|
10
|
-
and
|
|
11
|
-
|
|
9
|
+
Give the plan a senior, practical review. Read the plan and the files it names,
|
|
10
|
+
plus `AGENTS.md` and `CLAUDE.md` when tracked, in one batch. Expand only for a
|
|
11
|
+
missing contract, a dependency or a contradiction, and stop when each claim has
|
|
12
|
+
evidence or a named gap. Use only the review lenses relevant to the work; do not
|
|
13
|
+
manufacture a fixed committee.
|
|
12
14
|
|
|
13
15
|
## Review
|
|
14
16
|
|
|
@@ -42,6 +44,4 @@ the plan materially changes.
|
|
|
42
44
|
|
|
43
45
|
Link the reviewed plan and locate each actionable finding. State what was
|
|
44
46
|
inspected and any material evidence gap; a source review is not a passing test
|
|
45
|
-
run.
|
|
46
|
-
impact needs explanation, without requiring a fixed chat layout or a corrective
|
|
47
|
-
review just for wording.
|
|
47
|
+
run. Follow [the shared return rules](references/return-contract.md).
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"schemaVersion": "1.0.0",
|
|
4
4
|
"protocolVersion": "1.8.0",
|
|
5
5
|
"skillId": "planr-plan-review",
|
|
6
|
-
"skillVersion": "1.0
|
|
6
|
+
"skillVersion": "1.1.0",
|
|
7
7
|
"entrypoint": "SKILL.md",
|
|
8
8
|
"hosts": [
|
|
9
9
|
"claude-code",
|
|
@@ -21,6 +21,17 @@
|
|
|
21
21
|
"chatgpt"
|
|
22
22
|
],
|
|
23
23
|
"executable": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"path": "references/return-contract.md",
|
|
27
|
+
"kind": "reference",
|
|
28
|
+
"hosts": [
|
|
29
|
+
"claude-code",
|
|
30
|
+
"codex",
|
|
31
|
+
"chatgpt",
|
|
32
|
+
"cursor"
|
|
33
|
+
],
|
|
34
|
+
"executable": false
|
|
24
35
|
}
|
|
25
36
|
]
|
|
26
37
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Return rules
|
|
2
|
+
|
|
3
|
+
Shared by Spec, Plan, Plan Review, Ship, Operate and Release. Each skill lists its own fields.
|
|
4
|
+
|
|
5
|
+
- Lead with the outcome: what is ready, prepared or released, then what is partial or blocked.
|
|
6
|
+
- Link durable artifacts by purpose. Keep inventories, command output and transcripts in their files.
|
|
7
|
+
- Report only checks you ran, with their result. Name each check you could not run and what stays unverified.
|
|
8
|
+
- Omit empty fields. Give each open issue its impact and the smallest recovery action.
|
|
9
|
+
- The summary is a human view, not a schema. Different wording never calls for a rerun or a correction pass.
|
|
10
|
+
- Keep any machine-readable field a skill defines unchanged.
|