planr 1.7.0 → 1.7.2
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/README.md +47 -22
- package/docs/ARCHITECTURE.md +3 -2
- package/docs/RELEASE.md +50 -7
- package/docs/SWITCHLOOM_COMPATIBILITY.md +46 -0
- package/docs/documentation/CONTRACT.md +7 -7
- package/docs/documentation/COVERAGE.md +5 -3
- package/docs/documentation/INFORMATION_ARCHITECTURE.md +5 -2
- package/npm/native/darwin-arm64/planr +0 -0
- package/npm/native/darwin-x86_64/planr +0 -0
- package/npm/native/linux-arm64/planr +0 -0
- package/npm/native/linux-x86_64/planr +0 -0
- package/package.json +5 -1
- package/plugins/planr/.claude-plugin/plugin.json +1 -1
- package/plugins/planr/.codex-plugin/plugin.json +1 -1
- package/plugins/planr/agents/planr-worker.md +1 -1
- package/plugins/planr/skills/planr-goal/SKILL.md +21 -49
- package/plugins/planr/skills/planr-loop/SKILL.md +28 -94
- package/plugins/planr/skills/planr-loop/agents/planr-worker.md +1 -1
- package/plugins/planr/skills/planr-loop/references/host-dispatch.md +10 -0
- package/plugins/planr/skills/planr-loop/references/recovery-and-verification.md +24 -0
- package/plugins/planr/skills/planr-task-graph/SKILL.md +21 -190
- package/docs/CI.md +0 -55
- package/docs/CLAUDE_CODE.md +0 -52
- package/docs/CLI_REFERENCE.md +0 -170
- package/docs/CODEX.md +0 -56
- package/docs/CURSOR.md +0 -114
- package/docs/EXAMPLE_WEBAPP.md +0 -103
- package/docs/GOALS.md +0 -175
- package/docs/HANDOFFS_AND_STORIES.md +0 -121
- package/docs/HOOKS.md +0 -34
- package/docs/IMPORT.md +0 -23
- package/docs/INSTALL.md +0 -115
- package/docs/MCP_CONTRACT.md +0 -78
- package/docs/MCP_GUIDE.md +0 -40
- package/docs/MODEL_ROUTING.md +0 -33
- package/docs/NPM.md +0 -40
- package/docs/OPERATING_MODEL.md +0 -250
- package/docs/ROUTING_BUNDLES.md +0 -15
- package/docs/SECURITY.md +0 -8
- package/docs/SKILLS.md +0 -261
- package/docs/TASK_GRAPH_MODEL.md +0 -272
- package/docs/TESTING.md +0 -87
- package/docs/TROUBLESHOOTING.md +0 -30
- package/docs/planr-spec/ADRS.md +0 -160
- package/docs/planr-spec/AI_SPEC.md +0 -138
- package/docs/planr-spec/ANALYTICS_OBSERVABILITY_SPEC.md +0 -124
- package/docs/planr-spec/API_AND_DATA_MODEL.md +0 -519
- package/docs/planr-spec/BACKEND_IMPLEMENTATION_SPEC.md +0 -178
- package/docs/planr-spec/CLIENT_IMPLEMENTATION_SPEC.md +0 -119
- package/docs/planr-spec/DESIGN_SYSTEM_SPEC.md +0 -102
- package/docs/planr-spec/PRODUCT_SPEC.md +0 -193
- package/docs/planr-spec/QA_ACCEPTANCE_TESTS.md +0 -146
- package/docs/planr-spec/README.md +0 -68
- package/docs/planr-spec/REFERENCES.md +0 -29
- package/docs/planr-spec/RELEASE_READINESS.md +0 -95
- package/docs/planr-spec/SAFETY_PRIVACY_SECURITY.md +0 -169
- package/docs/planr-spec/TASKS.md +0 -932
- package/docs/planr-spec/TECH_ARCHITECTURE.md +0 -145
- package/docs/planr-spec/UX_FLOWS.md +0 -235
- package/docs/release-candidates/planr-v1.5.2.md +0 -156
- /package/docs/{planr-spec → contracts}/EVAL_CONTRACT_V1.md +0 -0
- /package/docs/{planr-spec → contracts}/V1_1_DIFFERENTIATION_CONTRACT.md +0 -0
package/docs/OPERATING_MODEL.md
DELETED
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
# Planr Operating Model
|
|
2
|
-
|
|
3
|
-
Planr coordinates coding-agent work through two durable surfaces:
|
|
4
|
-
|
|
5
|
-
- the Markdown plan package for product, build, architecture, verification, and narrative context;
|
|
6
|
-
- the SQLite map for item state, links, picks, reviews, logs, contexts, and closure.
|
|
7
|
-
|
|
8
|
-
The map is the source of truth for live state. Markdown explains why the work exists and what good completion means.
|
|
9
|
-
|
|
10
|
-
## Operator Start
|
|
11
|
-
|
|
12
|
-
Start every session by reading the current project and graph state:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
planr project show --json
|
|
16
|
-
planr map show --json
|
|
17
|
-
planr map lane --critical
|
|
18
|
-
planr map pressure
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
If the repository has no Planr project yet:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
planr project init "Project Name" --client all
|
|
25
|
-
planr doctor --client all
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Use `--db <path>` for isolated runs and tests.
|
|
29
|
-
|
|
30
|
-
## Canonical Flow
|
|
31
|
-
|
|
32
|
-
The default product flow is:
|
|
33
|
-
|
|
34
|
-
```text
|
|
35
|
-
idea -> product plan -> build plan -> map -> pick -> log -> review/evidence -> recovery/package -> close
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Use product and build plans for broad scope:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
planr plan new "App idea" --platform web --ai --backend
|
|
42
|
-
planr plan refine <plan-id> --note "decision or assumption"
|
|
43
|
-
planr plan split <plan-id> --slice "MVP implementation"
|
|
44
|
-
planr plan check <build-plan-id>
|
|
45
|
-
planr map build --from <build-plan-id>
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Product-plan task lists are candidates. Work becomes a live commitment only after it is in the map.
|
|
49
|
-
|
|
50
|
-
## Daily Agent Loop
|
|
51
|
-
|
|
52
|
-
Agents should work one map item at a time. The short path is:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
planr pick --json
|
|
56
|
-
planr done <item-id> --summary "what changed" --files a --files b --cmd "exact verification command" --review [--next]
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
`pick --json` returns one flat work packet (item, links, logs, runtime, recovery, conditions, recall context, `remaining` progress), so no separate `trace item` call is needed. `pick --work-type review` (or `code`) keeps checker and maker leases separate, and a null pick always carries a `reason` plus the `remaining` snapshot. `done` writes the completion log, then requests review (`--review`) or closes directly, and `--next` picks the following item. Evidence logging refreshes the heartbeat, so explicit `pick heartbeat` calls are only needed during long silent stretches.
|
|
60
|
-
|
|
61
|
-
For longer work, update runtime state instead of relying on chat history:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
planr pick progress <item-id> --percent 50 --note "implementation done, tests running"
|
|
65
|
-
planr pick pause <item-id> --note "waiting for human decision"
|
|
66
|
-
planr pick resume <item-id>
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
If a previous worker disappears, inspect stale picks before taking over:
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
planr pick stale --older-than-seconds 900
|
|
73
|
-
planr pick stale --older-than-seconds 900 --release
|
|
74
|
-
planr recover sweep --older-than-seconds 900
|
|
75
|
-
planr recover sweep --older-than-seconds 900 --apply
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Use `pick stale --release` for a targeted stale-claim reset. Use `recover sweep --apply` when you also want timed-out work and retryable failed work handled in the same explicit recovery pass.
|
|
79
|
-
|
|
80
|
-
Record discoveries that future work needs:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
planr context add "decision or discovery" --item <item-id> --tag discovery
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Record completion evidence before asking for review:
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
planr log add --item <item-id> \
|
|
90
|
-
--summary "what changed" \
|
|
91
|
-
--files path-a,path-b \
|
|
92
|
-
--cmd "exact verification command"
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Request and close review:
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
planr review request <item-id>
|
|
99
|
-
planr review annotate <item-id> --message "review note" --severity warning
|
|
100
|
-
planr review evidence <item-id> --pr-url https://example.invalid/pr/123
|
|
101
|
-
planr review ingest <item-id> --from .planr/tmp/review-feedback.json
|
|
102
|
-
planr review close <review-id> --verdict complete --close-target
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
With `--close-target` a complete verdict also closes the reviewed item (it must already carry a completion log); otherwise finish with `planr close <item-id> --summary "Verified with evidence"`.
|
|
106
|
-
|
|
107
|
-
`review evidence` records Git branch, commit, dirty state, item-scoped changed-file provenance, and optional PR URL context without treating unrelated dirty files as proof. Review ingestion records hook-compatible JSON feedback as contexts and logs only. It does not close the review, approve the item, or unblock downstream work.
|
|
108
|
-
|
|
109
|
-
For a browser-based local review pass:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
planr serve --port 7526
|
|
113
|
-
open http://127.0.0.1:7526/review
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
The review workspace shows review queues, linked plans, item evidence, diff-safe Git evidence, annotations, and approve/request-changes actions over the same local HTTP API.
|
|
117
|
-
|
|
118
|
-
Use approvals when a human decision must block closure:
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
planr approval request <item-id> --reason "release approval"
|
|
122
|
-
planr approval approve <item-id> --by "human reviewer"
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
Pending or denied approval blocks `planr close`; use `planr map preview --close <item-id>` to inspect the gate before mutating state.
|
|
126
|
-
|
|
127
|
-
If review finds issues:
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
planr review close <review-id> \
|
|
131
|
-
--verdict not-complete \
|
|
132
|
-
--findings "specific actionable finding"
|
|
133
|
-
planr review artifact <review-id>
|
|
134
|
-
planr map show --json
|
|
135
|
-
planr pick --json
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
Review findings create follow-up work and write a `.planr/reviews/*.review.md` artifact. Do not mark the original item complete by summarizing the finding away.
|
|
139
|
-
|
|
140
|
-
## Parent Gate Pattern
|
|
141
|
-
|
|
142
|
-
Model material changes as parent gates. The parent is not the work package; its linked children are.
|
|
143
|
-
|
|
144
|
-
```text
|
|
145
|
-
parent gate
|
|
146
|
-
`- implementation or test child
|
|
147
|
-
`- review item linked to that child
|
|
148
|
-
|- pass -> child can close -> parent gate auto-closes
|
|
149
|
-
`- findings -> fix item -> follow-up review -> ...
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Rules:
|
|
153
|
-
|
|
154
|
-
- create one parent item for the change;
|
|
155
|
-
- use `planr item breakdown <parent-id> --into "Implement, Verify"` to create child work under the parent;
|
|
156
|
-
- request review on the implementation or test child after evidence exists;
|
|
157
|
-
- if review finds issues, let Planr create fix and follow-up review work from the review verdict;
|
|
158
|
-
- downstream top-level work should depend on the parent gate, not on the first implementation child.
|
|
159
|
-
|
|
160
|
-
This keeps later work blocked until review is actually clean.
|
|
161
|
-
|
|
162
|
-
Parent gates roll up automatically: once every child is closed or cancelled, the gate becomes ready and auto-closes when no review or approval on the gate itself is open (a cancelled or partially closed child rolls up as `closed_partial`). Parent gates are never returned by `planr pick`; the children are the work.
|
|
163
|
-
|
|
164
|
-
## Notes, Contexts, Logs, And Stories
|
|
165
|
-
|
|
166
|
-
Use the smallest durable surface that fits the information:
|
|
167
|
-
|
|
168
|
-
- `planr log add`: proof that work happened, including files, commands, tests, review results, and handoff facts.
|
|
169
|
-
- `planr context add`: a project or item discovery that another future item may need.
|
|
170
|
-
- `planr note add`: a short task-local note when a human or agent needs nearby context.
|
|
171
|
-
- Story logs: longer narrative history when graph state and short contexts are too thin.
|
|
172
|
-
|
|
173
|
-
Story logs are narrative memory, not status authority. The map remains authoritative for state.
|
|
174
|
-
|
|
175
|
-
See [HANDOFFS_AND_STORIES.md](HANDOFFS_AND_STORIES.md) for file placement and contents.
|
|
176
|
-
|
|
177
|
-
## Recovery
|
|
178
|
-
|
|
179
|
-
After interruption, compaction, or agent handoff:
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
git status --short
|
|
183
|
-
planr project show --json
|
|
184
|
-
planr map show --json
|
|
185
|
-
planr map lane --critical
|
|
186
|
-
planr map pressure
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
Then inspect the current item:
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
planr trace item <item-id>
|
|
193
|
-
planr log list --item <item-id>
|
|
194
|
-
planr context list --item <item-id>
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
If ownership must be reset:
|
|
198
|
-
|
|
199
|
-
```bash
|
|
200
|
-
planr pick stale --older-than-seconds 900
|
|
201
|
-
planr pick release <item-id> --force
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
Use force only when the prior owner is gone or the operator intentionally resets the claim.
|
|
205
|
-
|
|
206
|
-
For broad interruption recovery, prefer the explicit sweeper:
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
planr recover sweep --older-than-seconds 900
|
|
210
|
-
planr recover sweep --older-than-seconds 900 --apply
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
The preview reports stale picks, timed-out work, retryable failures, retry delays, and manual pre/post conditions. The apply mode mutates only the listed recoverable work and records recovery events.
|
|
214
|
-
|
|
215
|
-
## Packages And Sharing
|
|
216
|
-
|
|
217
|
-
Use packages for local backups and reusable templates:
|
|
218
|
-
|
|
219
|
-
```bash
|
|
220
|
-
planr export --include-plans --include-logs --template-name "Backend slice" --tag api --out planr-package.json
|
|
221
|
-
planr import planr-package.json --preview
|
|
222
|
-
planr import planr-package.json --confirm
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
Import is preview-first. Confirmed import restores graph items, links, contexts, logs, plan file snapshots, and review artifacts into the current project. Encrypted sharing can wrap the JSON package with a local tool such as `age` or `gpg`; Planr does not require a hosted share service.
|
|
226
|
-
|
|
227
|
-
## Agent Prompts
|
|
228
|
-
|
|
229
|
-
Use prompt output when configuring agents without editing global config:
|
|
230
|
-
|
|
231
|
-
```bash
|
|
232
|
-
planr prompt cli --client codex
|
|
233
|
-
planr prompt mcp --client all
|
|
234
|
-
planr prompt http
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
Prompt commands print ready-to-use setup and operating instructions and report that global config was not edited.
|
|
238
|
-
|
|
239
|
-
## Completion Rule
|
|
240
|
-
|
|
241
|
-
Do not call a scope complete until all of these are true:
|
|
242
|
-
|
|
243
|
-
- required child and review items are closed;
|
|
244
|
-
- log evidence records exact files and commands;
|
|
245
|
-
- verification commands were actually run;
|
|
246
|
-
- review findings are closed or converted into follow-up work;
|
|
247
|
-
- `planr map show --json` has no in-scope blocker;
|
|
248
|
-
- the summary matches the map, logs, and review state.
|
|
249
|
-
|
|
250
|
-
For release-grade scopes, rerun the full verification ladder in [TESTING.md](TESTING.md).
|
package/docs/ROUTING_BUNDLES.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# External routing declarations
|
|
2
|
-
|
|
3
|
-
Planr Core is provider-neutral. It parses `.planr/agents.toml`, resolves routes into pick packets, records declared-versus-observed evidence, and checks `.planr/policy.toml`. It does not own a bundle format, catalog, compiler, signer, installer, or uninstaller.
|
|
4
|
-
|
|
5
|
-
The current boundary is repository-local declaration plus evidence:
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
planr agents init
|
|
9
|
-
planr agents check
|
|
10
|
-
planr agents list --json
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
External tools, including Switchloom v0.2.1, may create, update, apply, or uninstall repository-local routing artifacts. Those lifecycle operations happen outside Planr. Planr only consumes the resulting provider-neutral declarations and the route observations workers attach to logs.
|
|
14
|
-
|
|
15
|
-
Because declarations are advisory, requested model values never become proof by themselves. Strong evidence keeps requested, host-resolved, and effective execution separate in route observations, with `unavailable` used when the host cannot prove what ran.
|
package/docs/SECURITY.md
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
# Security And Privacy
|
|
2
|
-
|
|
3
|
-
- Planr is local-first and stores V1 data in the configured SQLite database and `.planr` files.
|
|
4
|
-
- No content telemetry is emitted by default.
|
|
5
|
-
- Shell commands are not run by Planr unless the user explicitly runs them outside Planr or records them as evidence.
|
|
6
|
-
- HTTP binds to `127.0.0.1`.
|
|
7
|
-
- Destructive operations require confirmation or preview flags.
|
|
8
|
-
- Logs, contexts, and inline artifact content are checked by `planr scrub` for common secret-looking patterns. `planr scrub --confirm` rewrites flagged values in place with `[REDACTED]` markers, updates the search index, and records a `secret_scrubbed` event per rewritten row.
|
package/docs/SKILLS.md
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
# Planr Skills
|
|
2
|
-
|
|
3
|
-
Planr ships agent-facing skill templates under `plugins/planr/skills/`.
|
|
4
|
-
|
|
5
|
-
The repository ships an installable plugin under `plugins/planr` for Codex and Claude Code, while Cursor receives the same skills through `planr install cursor`. Marketplace manifests at the repo root (`.agents/plugins/marketplace.json`, `.claude-plugin/marketplace.json`) point at that subdirectory — Codex silently ignores marketplaces whose plugin source is the repo root itself. The shared package carries skills and Claude's independent workflow roles; optional model-specific host roles come from repository-local routing declarations managed outside Planr, never from Planr Core or static fallbacks. The `planr` CLI must be installed separately (`brew install instructa/tap/planr`).
|
|
6
|
-
|
|
7
|
-
## Install As Plugin (preferred)
|
|
8
|
-
|
|
9
|
-
Codex:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
codex plugin marketplace add instructa/planr
|
|
13
|
-
# then install "planr" from the plugin directory picker, or:
|
|
14
|
-
codex plugin add planr@planr
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Claude Code:
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
/plugin marketplace add instructa/planr
|
|
21
|
-
/plugin install planr@planr
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Skills are namespaced in Claude Code: `/planr:planr`, `/planr:planr-loop`. The plugin also registers the `planr-worker` and `planr-reviewer` subagents from the plugin's `agents/` directory.
|
|
25
|
-
|
|
26
|
-
Cursor: pending marketplace review; `planr install cursor` provides the identical component set today — it writes the skills to `.cursor/skills/`, the subagents to `.cursor/agents/`, and the MCP config in one command (see below and [Cursor](CURSOR.md)).
|
|
27
|
-
|
|
28
|
-
opencode: no plugin yet; use `planr mcp` as an MCP server (below). A JS plugin wrapping the CLI as custom tools is a possible follow-up.
|
|
29
|
-
|
|
30
|
-
## Included Skills
|
|
31
|
-
|
|
32
|
-
Entry points (what users invoke):
|
|
33
|
-
|
|
34
|
-
- `planr`: master router. One entry point for any request; reads live map state and dispatches to the right skill. Users do not need to remember skill names.
|
|
35
|
-
- `planr-goal`: goal prep compiler for long-running runs. Turns a broad goal into a checked plan, a linked map, and a durable goal contract (`planr context --tag goal-contract`), then prints the starter command for the host's loop driver (Codex/Claude Code `/goal`, or manual re-dispatch). Prep only — see [Long-Running Goals](GOALS.md).
|
|
36
|
-
- `planr-loop`: autonomous closing loop. Drives one feature to verified completion — work, live verification, independent review, fix items — until the map is clean or the iteration budget runs out. Ships subagent templates under `plugins/planr/skills/planr-loop/agents/`.
|
|
37
|
-
|
|
38
|
-
Capability skills (dispatched by the loop's live-verification step):
|
|
39
|
-
|
|
40
|
-
- `planr-verify-web`: proves a web feature runs in a browser. Discovers the host's existing browser capability (browser skill, browser MCP, `npx playwright`, HTTP checks as last resort), records the choice as a `capability` context, and logs replayable evidence. Ships no browser tooling itself.
|
|
41
|
-
|
|
42
|
-
Stage skills (what the router and loop dispatch to; also directly invocable):
|
|
43
|
-
|
|
44
|
-
- `planr-task-graph`: active task graph coordination with plans, parent gates, map items, picks, runtime state, approvals, logs, reviews, handoffs, stories, and recovery.
|
|
45
|
-
- `planr-plan`: product and build planning.
|
|
46
|
-
- `planr-work`: one picked item to evidence-backed completion.
|
|
47
|
-
- `planr-review`: findings-first review gates.
|
|
48
|
-
- `planr-status`: honest read-only status.
|
|
49
|
-
- `planr-summary`: evidence-backed summaries.
|
|
50
|
-
|
|
51
|
-
## Cheat Sheet
|
|
52
|
-
|
|
53
|
-
Default usage needs one public entry point:
|
|
54
|
-
|
|
55
|
-
```text
|
|
56
|
-
$planr any request -> routed to the right stage skill from live map state
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
`$planr-goal` and `$planr-loop` are advanced stage surfaces selected by the router. A long-running goal is always prepared first; only the resulting real plan id is passed to the loop driver.
|
|
60
|
-
|
|
61
|
-
The stage order the router follows for a new app:
|
|
62
|
-
|
|
63
|
-
```text
|
|
64
|
-
$planr-plan idea -> product plan -> build plan
|
|
65
|
-
$planr-task-graph build plan -> map -> dependencies -> critical lane
|
|
66
|
-
$planr-work pick one ready item -> implement -> log evidence -> request review
|
|
67
|
-
$planr-review audit evidence -> complete or create fix work
|
|
68
|
-
$planr-work pick generated fix work when review finds issues
|
|
69
|
-
$planr-status report honest state, blockers, and next ready work
|
|
70
|
-
$planr-summary summarize completed scope with evidence
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Example first prompt for a Habit Tracker:
|
|
74
|
-
|
|
75
|
-
```text
|
|
76
|
-
Use $planr.
|
|
77
|
-
|
|
78
|
-
Create a production-ready Habit Tracker web app plan. Include habits, daily check-ins,
|
|
79
|
-
streaks, weekly overview, local-first persistence, tests, privacy, and release readiness.
|
|
80
|
-
Create the product plan, split an MVP build plan, check it, then build the Planr map.
|
|
81
|
-
Do not implement yet. End with the build plan id, critical lane, and first ready items.
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Example autonomous feature loop (two separate prompts):
|
|
85
|
-
|
|
86
|
-
```text
|
|
87
|
-
Use $planr-goal to prepare an autonomous goal for the weekly overview feature.
|
|
88
|
-
|
|
89
|
-
/goal Use $planr-loop on plan <plan-id>. The loop contract is stored in planr
|
|
90
|
-
context (tag: goal-contract).
|
|
91
|
-
|
|
92
|
-
Goal: ship the weekly overview feature. DONE when every in-scope map item is closed with
|
|
93
|
-
log evidence, all reviews are closed complete, and a live verification log shows the
|
|
94
|
-
overview rendering real check-in data in the browser. Iteration budget: 10.
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
Example single implementation step (human-in-the-loop):
|
|
98
|
-
|
|
99
|
-
```text
|
|
100
|
-
Use $planr-work.
|
|
101
|
-
|
|
102
|
-
Pick exactly one ready Habit Tracker item. Implement only that item, keep Planr runtime
|
|
103
|
-
state current, log changed files and real verification commands, then request review.
|
|
104
|
-
Do not close the item until review is complete.
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Two Journeys: New Project vs. Existing Project
|
|
108
|
-
|
|
109
|
-
Both journeys use the same public entry point (`$planr`). What differs is the state the router finds, and what kind of plan the work gets.
|
|
110
|
-
|
|
111
|
-
### Journey 1 — start a project from an idea
|
|
112
|
-
|
|
113
|
-
Initialize once per repository, then hand the idea to the router:
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
planr project init "Habit Tracker" --client all
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
```text
|
|
120
|
-
Use $planr.
|
|
121
|
-
|
|
122
|
-
Create a production-ready Habit Tracker web app plan. Create the product plan,
|
|
123
|
-
split an MVP build plan, check it, then build the Planr map. Do not implement yet.
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
The router runs the full stage order: product plan -> build plan -> map. From there it can select `$planr-work`, or prepare a plan-bound `$planr-loop` run.
|
|
127
|
-
|
|
128
|
-
### Journey 2 — mid-project: add a feature, refactor, or fix
|
|
129
|
-
|
|
130
|
-
Never re-run `project init`; the project and map already exist. Every new scope — a feature like an auth system, a refactor, a non-trivial fix — gets its own feature-scoped plan on the same map:
|
|
131
|
-
|
|
132
|
-
```text
|
|
133
|
-
Use $planr.
|
|
134
|
-
|
|
135
|
-
Add an auth system (email+password, sessions, protected routes) to this app.
|
|
136
|
-
Create a feature plan for it, record what existing code it builds on, split a
|
|
137
|
-
narrow build slice, check it, and extend the map with linked items. Do not implement yet.
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
What the router does with that, and why:
|
|
141
|
-
|
|
142
|
-
1. `$planr-plan` creates a new plan scoped to the feature (`planr plan new "Auth system" ...`), not a new project. Refine notes capture constraints from the existing codebase; the build plan's "existing leverage" field records what is reused instead of rebuilt.
|
|
143
|
-
2. `$planr-task-graph` extends the existing map: new items, plus `blocks` links to anything already on the map that must land first.
|
|
144
|
-
3. Execution is identical to journey 1: a plan-bound `$planr-loop` for autonomous work, or `$planr-work` / `$planr-review` for human-in-the-loop.
|
|
145
|
-
|
|
146
|
-
Or autonomous in two prompts:
|
|
147
|
-
|
|
148
|
-
```text
|
|
149
|
-
Use $planr-goal to prepare an autonomous goal for the auth system.
|
|
150
|
-
|
|
151
|
-
/goal Use $planr-loop on plan <plan-id>. The loop contract is stored in planr
|
|
152
|
-
context (tag: goal-contract).
|
|
153
|
-
|
|
154
|
-
Goal: ship an auth system (email+password, sessions, protected routes).
|
|
155
|
-
DONE when every auth map item is closed with log evidence, all reviews are closed
|
|
156
|
-
complete, and a live verification log shows login and a protected route working
|
|
157
|
-
in the browser. Iteration budget: 10.
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
Rules that hold in both journeys:
|
|
161
|
-
|
|
162
|
-
- No map items without a checked build plan — even a small fix gets a minimal slice (`plan new` -> `plan split` with a tiny scope). This keeps closure evidence and reviews attached to a contract.
|
|
163
|
-
- Plans accumulate: `planr plan list` shows the project's history of scopes; the map stays the single live source of item status.
|
|
164
|
-
- Status, review, and summary requests (`$planr-status`, `$planr-review`, `$planr-summary`) work the same at any point in either journey.
|
|
165
|
-
|
|
166
|
-
## Loop Roles
|
|
167
|
-
|
|
168
|
-
`planr-loop` keeps maker and checker separate. Hosts with subagents get dedicated roles that are prompted with skills, not hand-written prompts.
|
|
169
|
-
|
|
170
|
-
The CLI provisions the role files automatically — no manual copying:
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
planr project init "My Product" --client all # writes standalone Claude and Cursor roles; Codex has no project roles
|
|
174
|
-
planr agents init # writes the provider-neutral .planr/agents.toml registry; it does not generate Codex roles
|
|
175
|
-
planr install claude # provisions Claude's independent roles
|
|
176
|
-
planr install cursor # provisions Cursor's independent roles and skills
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
Optional project-scoped model-routing files are repository-local declarations. They may be edited directly or managed by an external tool such as [Switchloom v0.2.1](https://github.com/instructa/switchloom/releases/tag/v0.2.1); Core workflow skills remain host-neutral, and Planr does not install, invoke, apply, or uninstall external routing artifacts.
|
|
180
|
-
|
|
181
|
-
Dispatches stay one line: `Use $planr-work on item <id>` and `Use $planr-review on item <id>`. The map and logs are the loop memory, so any iteration can resume from zero context.
|
|
182
|
-
|
|
183
|
-
## Install For Codex
|
|
184
|
-
|
|
185
|
-
Install the Codex plugin for all ten workflow skills, then initialize and install the project integration:
|
|
186
|
-
|
|
187
|
-
```bash
|
|
188
|
-
codex plugin marketplace add instructa/planr
|
|
189
|
-
codex plugin add planr@planr
|
|
190
|
-
planr project init "Example Product" --client codex
|
|
191
|
-
planr install codex
|
|
192
|
-
planr doctor --client codex
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
The CLI writes the project MCP snippet and hooks. It does not copy project skills or agents; those skills are plugin-owned, and Codex has no Planr project-agent contract. `--no-mcp` leaves hooks only, while `--no-mcp --no-hooks` writes neither integration artifact.
|
|
196
|
-
|
|
197
|
-
## Install For Claude Code
|
|
198
|
-
|
|
199
|
-
Install the Claude Code plugin for all ten workflow skills and its plugin worker/reviewer agents, then install the project integration:
|
|
200
|
-
|
|
201
|
-
```text
|
|
202
|
-
/plugin marketplace add instructa/planr
|
|
203
|
-
/plugin install planr@planr
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
```bash
|
|
207
|
-
planr project init "Example Product" --client claude
|
|
208
|
-
planr install claude
|
|
209
|
-
planr doctor --client claude
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
The CLI writes project-scoped `.mcp.json`, standalone project worker/reviewer roles, and hooks. It does not copy project skills. `--no-mcp` retains the standalone roles and hooks; add `--no-hooks` to omit hooks.
|
|
213
|
-
|
|
214
|
-
## Install For Cursor
|
|
215
|
-
|
|
216
|
-
One command wires everything — MCP, the skills, and the subagent roles:
|
|
217
|
-
|
|
218
|
-
```bash
|
|
219
|
-
planr project init "Example Product" --client cursor
|
|
220
|
-
planr install cursor
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
`planr install cursor` writes `.cursor/mcp.json`, copies the ten skills to `.cursor/skills/`, provisions `.cursor/agents/planr-worker.md` and `planr-reviewer.md`, reconciles hooks, and prints a one-click deeplink for user-level MCP install. `planr install cursor --no-mcp` retains the agents, skills, and hooks while omitting MCP; add `--no-hooks` to omit hooks. Invoke the public router with `/planr` in Agent chat, and dispatch subagents with `/planr-worker` and `/planr-reviewer`. Use `planr serve --port 7526` and `planr prompt http --client cursor` if a Cursor workflow should inspect the local HTTP/review workspace. Subagent multitasking and worktree guidance: [Cursor](CURSOR.md).
|
|
224
|
-
|
|
225
|
-
## MCP-Only Clients
|
|
226
|
-
|
|
227
|
-
Any MCP-capable coding agent can run:
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
planr mcp
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
Use these commands for setup text without editing global config:
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
planr prompt mcp --client all
|
|
237
|
-
planr prompt cli --client all
|
|
238
|
-
planr prompt http --client all
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
## What The Skills Do
|
|
242
|
-
|
|
243
|
-
The skills are client-neutral and use only Planr-owned commands:
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
planr project show --json
|
|
247
|
-
planr plan new "App idea"
|
|
248
|
-
planr map build --from <plan-id>
|
|
249
|
-
planr pick --json
|
|
250
|
-
planr done <item-id> --summary "..." --files a --files b --cmd "..." --review --next
|
|
251
|
-
planr review close <review-id> --verdict complete --close-target
|
|
252
|
-
planr approval list --open
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
The granular commands (`log add`, `review request`, `close`, `pick heartbeat`) remain available; `done` chains them with identical evidence.
|
|
256
|
-
|
|
257
|
-
See also:
|
|
258
|
-
|
|
259
|
-
- [Operating Model](OPERATING_MODEL.md)
|
|
260
|
-
- [Task Graph Model](TASK_GRAPH_MODEL.md)
|
|
261
|
-
- [Handoffs And Stories](HANDOFFS_AND_STORIES.md)
|