planr 1.10.0-alpha.8 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/.claude-plugin/plugin.json +11 -0
  2. package/CHANGELOG.md +15 -0
  3. package/README.md +30 -244
  4. package/docs/board.md +44 -0
  5. package/docs/cli.md +100 -0
  6. package/docs/concepts.md +133 -0
  7. package/docs/contract.md +150 -0
  8. package/docs/plugins/bb.md +49 -0
  9. package/docs/plugins/claude-code.md +84 -0
  10. package/docs/plugins/codex.md +77 -0
  11. package/docs/quickstart.md +307 -0
  12. package/docs/setup.md +103 -0
  13. package/package.json +21 -67
  14. package/plugin.json +12 -0
  15. package/skills/planr/SKILL.md +64 -0
  16. package/skills/planr/assets/board/fonts/LICENSE-mona-sans.txt +93 -0
  17. package/skills/planr/assets/board/fonts/LICENSE-monaspace.txt +93 -0
  18. package/skills/planr/assets/board/fonts/MonaSans-Variable.woff2 +0 -0
  19. package/skills/planr/assets/board/fonts/MonaspaceNeon-400.woff2 +0 -0
  20. package/skills/planr/assets/board/fonts/MonaspaceNeon-500.woff2 +0 -0
  21. package/skills/planr/assets/board/fonts/MonaspaceNeon-600.woff2 +0 -0
  22. package/skills/planr/assets/board/template.html +788 -0
  23. package/skills/planr/assets/templates/goal.md +13 -0
  24. package/skills/planr/assets/templates/hook.sh +4 -0
  25. package/skills/planr/assets/templates/in-repo.config.json +6 -0
  26. package/skills/planr/assets/templates/planr.config.json +6 -0
  27. package/skills/planr/assets/templates/tasks-README.md +14 -0
  28. package/skills/planr/references/format.md +88 -0
  29. package/skills/planr/references/work-a-goal.md +62 -0
  30. package/skills/planr/scripts/lib/board.mjs +39 -0
  31. package/skills/planr/scripts/lib/graph.mjs +345 -0
  32. package/skills/planr/scripts/lib/runs.mjs +127 -0
  33. package/skills/planr/scripts/lib/version.mjs +11 -0
  34. package/skills/planr/scripts/planr.mjs +386 -0
  35. package/docs/ARCHITECTURE.md +0 -136
  36. package/docs/RELEASE.md +0 -272
  37. package/docs/SWITCHLOOM_COMPATIBILITY.md +0 -14
  38. package/docs/contracts/BROWSER_HARNESS_ADAPTER_V1.md +0 -75
  39. package/docs/contracts/EVAL_CONTRACT_V1.md +0 -2072
  40. package/docs/contracts/EVIDENCE_ADAPTER_PROTOCOL_V1.md +0 -98
  41. package/docs/contracts/EVIDENCE_CONTRACT_V1.md +0 -382
  42. package/docs/contracts/GROK_INTEGRATION_V1.md +0 -139
  43. package/docs/contracts/LINUX_RELEASE_PORTABILITY.json +0 -9
  44. package/docs/contracts/PI_INTEGRATION_V1.md +0 -164
  45. package/docs/contracts/V1_1_DIFFERENTIATION_CONTRACT.md +0 -177
  46. package/docs/contracts/fixtures/evidence/v1/examples/coverage-verdict.json +0 -66
  47. package/docs/contracts/fixtures/evidence/v1/examples/evidence-attempt.json +0 -39
  48. package/docs/contracts/fixtures/evidence/v1/examples/evidence-policy.json +0 -108
  49. package/docs/contracts/fixtures/evidence/v1/examples/evidence-receipt.json +0 -93
  50. package/docs/contracts/fixtures/evidence/v1/examples/evidence-waiver.json +0 -31
  51. package/docs/contracts/fixtures/evidence/v1/examples/proof-obligation.json +0 -55
  52. package/docs/contracts/fixtures/evidence/v1/examples/proof-preset.json +0 -19
  53. package/docs/contracts/fixtures/evidence/v1/examples/untrusted-evidence-proposal.json +0 -20
  54. package/docs/contracts/fixtures/evidence/v1/examples/verification-capability-instance.json +0 -39
  55. package/docs/contracts/fixtures/evidence/v1/examples/verification-capability-manifest.json +0 -52
  56. package/docs/contracts/fixtures/evidence/v1/negative/aborted-zero-exit-attempt.json +0 -39
  57. package/docs/contracts/fixtures/evidence/v1/negative/adapter-registration-missing-execution-contract.json +0 -88
  58. package/docs/contracts/fixtures/evidence/v1/negative/available-empty-probe-capability.json +0 -27
  59. package/docs/contracts/fixtures/evidence/v1/negative/blocked-coverage-with-stale-reason.json +0 -27
  60. package/docs/contracts/fixtures/evidence/v1/negative/empty-trust-bindings-receipt.json +0 -72
  61. package/docs/contracts/fixtures/evidence/v1/negative/failed-zero-exit-attempt.json +0 -39
  62. package/docs/contracts/fixtures/evidence/v1/negative/forged-trusted-receipt.json +0 -35
  63. package/docs/contracts/fixtures/evidence/v1/negative/inconclusive-clean-exit-attempt.json +0 -39
  64. package/docs/contracts/fixtures/evidence/v1/negative/inconclusive-coverage-with-blocked-reason.json +0 -27
  65. package/docs/contracts/fixtures/evidence/v1/negative/minimal-policy-missing-owned-inputs.json +0 -5
  66. package/docs/contracts/fixtures/evidence/v1/negative/mismatched-probe-execution-id-capability.json +0 -42
  67. package/docs/contracts/fixtures/evidence/v1/negative/passed-empty-attempt.json +0 -22
  68. package/docs/contracts/fixtures/evidence/v1/negative/policy-default-preset-unregistered.json +0 -102
  69. package/docs/contracts/fixtures/evidence/v1/negative/policy-weakening-without-waiver.json +0 -102
  70. package/docs/contracts/fixtures/evidence/v1/negative/process-probe-missing-output-limits.json +0 -49
  71. package/docs/contracts/fixtures/evidence/v1/negative/satisfied-empty-coverage-verdict.json +0 -14
  72. package/docs/contracts/fixtures/evidence/v1/negative/skipped-zero-exit-attempt.json +0 -39
  73. package/docs/contracts/fixtures/evidence/v1/negative/stale-coverage-with-inconclusive-reason.json +0 -27
  74. package/docs/contracts/fixtures/evidence/v1/negative/timed-out-zero-exit-attempt.json +0 -39
  75. package/docs/contracts/fixtures/evidence/v1/negative/unavailable-zero-exit-attempt.json +0 -39
  76. package/docs/contracts/fixtures/evidence/v1/negative/unbound-waiver.json +0 -21
  77. package/docs/contracts/fixtures/evidence/v1/negative/unsatisfied-coverage-without-gap.json +0 -63
  78. package/docs/contracts/fixtures/evidence/v1/negative/waived-coverage-forbidden-gap-reason.json +0 -28
  79. package/docs/contracts/fixtures/evidence/v1/negative/waived-coverage-missing-waiver-id.json +0 -27
  80. package/docs/contracts/fixtures/evidence/v1/schemas/evidence-contract-v1.schema.json +0 -2685
  81. package/docs/contracts/schemas/com.planr.web.dom_state.v1.schema.json +0 -30
  82. package/docs/documentation/CONTRACT.md +0 -164
  83. package/docs/documentation/COVERAGE.md +0 -98
  84. package/docs/documentation/INFORMATION_ARCHITECTURE.md +0 -151
  85. package/docs/fixtures/mcp-contract.json +0 -153
  86. package/npm/bin/planr.js +0 -78
  87. package/npm/native/darwin-arm64/planr +0 -0
  88. package/npm/native/darwin-arm64/planr-host-capability-validator +0 -0
  89. package/npm/native/darwin-x86_64/planr +0 -0
  90. package/npm/native/darwin-x86_64/planr-host-capability-validator +0 -0
  91. package/npm/native/linux-arm64/planr +0 -0
  92. package/npm/native/linux-arm64/planr-host-capability-validator +0 -0
  93. package/npm/native/linux-x86_64/planr +0 -0
  94. package/npm/native/linux-x86_64/planr-host-capability-validator +0 -0
  95. package/plugins/planr/.claude-plugin/plugin.json +0 -11
  96. package/plugins/planr/.codex-plugin/plugin.json +0 -25
  97. package/plugins/planr/agents/pi/planr-reviewer.md +0 -20
  98. package/plugins/planr/agents/pi/planr-worker.md +0 -35
  99. package/plugins/planr/agents/planr-reviewer.md +0 -21
  100. package/plugins/planr/agents/planr-worker.md +0 -40
  101. package/plugins/planr/skills/planr/SKILL.md +0 -60
  102. package/plugins/planr/skills/planr-goal/SKILL.md +0 -52
  103. package/plugins/planr/skills/planr-loop/SKILL.md +0 -126
  104. package/plugins/planr/skills/planr-loop/agents/planr-reviewer.md +0 -21
  105. package/plugins/planr/skills/planr-loop/agents/planr-worker.md +0 -36
  106. package/plugins/planr/skills/planr-loop/references/host-dispatch.md +0 -52
  107. package/plugins/planr/skills/planr-loop/references/recovery-and-verification.md +0 -26
  108. package/plugins/planr/skills/planr-plan/SKILL.md +0 -86
  109. package/plugins/planr/skills/planr-review/SKILL.md +0 -55
  110. package/plugins/planr/skills/planr-status/SKILL.md +0 -52
  111. package/plugins/planr/skills/planr-summary/SKILL.md +0 -30
  112. package/plugins/planr/skills/planr-task-graph/SKILL.md +0 -67
  113. package/plugins/planr/skills/planr-verify-web/SKILL.md +0 -62
  114. package/plugins/planr/skills/planr-work/SKILL.md +0 -93
  115. package/scripts/host-capability-experiment.mjs +0 -2481
  116. package/scripts/host-capability-runtime/v1/schemas/host-capability-expected-manifest.schema.json +0 -377
  117. package/scripts/host-capability-runtime/v1/schemas/host-capability-observed-raw.schema.json +0 -439
  118. package/scripts/host-capability-runtime/v1/schemas/host-capability-provenance.schema.json +0 -178
  119. package/scripts/planr-host-capability-validator +0 -57
  120. /package/{LICENSE.md → LICENSE} +0 -0
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "planr",
3
+ "version": "2.0.0-beta.1",
4
+ "description": "Small planning layer for agent-built products: Markdown task graph, CLI, board.",
5
+ "author": {
6
+ "name": "instructa"
7
+ },
8
+ "homepage": "https://planr.so",
9
+ "repository": "https://github.com/instructa/planr",
10
+ "license": "MIT"
11
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,15 @@
1
+ # Changelog
2
+
3
+ This file follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
4
+ Versions follow [Semantic Versioning](https://semver.org/).
5
+
6
+ ## [2.0.0-beta.1] - 2026-10-05
7
+
8
+ ### Changed
9
+
10
+ - Rebuilt planr around a Markdown task graph in a planning repository.
11
+ - Added a Node.js CLI with no runtime dependencies, an Agent Skill, a standalone board & a bb plugin.
12
+ - Added plugins for Claude Code & Codex through the planr marketplaces. Both contain only the skill.
13
+ - Approve & check by prompt or a person's standing delegation.
14
+ - Removed the stale marker from the engine and boards.
15
+ - planr 2.0 does not read 1.x data. Version 1.x remains installable as `planr@1`.
package/README.md CHANGED
@@ -1,261 +1,47 @@
1
- # Planr
1
+ # planr
2
2
 
3
- ![Planr — turn chaotic agent work into a verified task graph](public/planr_banner1.webp)
3
+ A small planning layer for agent-built products, using Markdown files in Git.
4
4
 
5
- Planr is a local-first planning and execution coordination tool for coding agents. It combines reviewable Markdown plans with a dependency-aware work map so Codex, Claude Code, Cursor, Grok Build, Pi, generic MCP clients, and human operators can drive the same work safely — from idea to verified completion.
5
+ During the 2.0 beta, use `npm install -g planr@next` or `npx planr@next`; plain `planr` installs 1.x
6
+ until 2.0.0 ships.
7
+ Plugin installs get the beta through the pinned marketplaces.
6
8
 
7
- [**View the Demo →**](https://x.com/kevinkern/status/2066957434564808884?s=20)
9
+ When several coding agents work on one product, planr shows what is ready,
10
+ blocked, waiting on you & what changed. Tasks & their dependencies live in a
11
+ planning repository, usually separate from your code & often private.
12
+ No database, daemon or MCP server.
8
13
 
9
- [**Documentation →**](https://planr.so/docs)
14
+ planr says what is next. Your project's orchestrator, such as
15
+ [split-orchestrator](https://github.com/regenrek/split-orchestrator), handles the build.
10
16
 
11
- ```text
12
- idea -> product plan -> build plan -> map -> pick -> log -> review/evidence -> close
13
- ```
14
-
15
- ## Why Planr
16
-
17
- ![Why Planr exists — without Planr vs with Planr](public/planr_banner2.webp)
18
-
19
- Flat todo lists break down the moment real work has structure. Planr models work as a dependency graph because that is what work actually is:
20
-
21
- - **Readiness is computed, not guessed.** An item becomes `ready` only when its blockers are closed; `planr pick` returns work that is actually startable.
22
- - **Parallel agents need atomic claims.** Picks are atomic claims enforced by the database — one item, one owner, no checklist races.
23
- - **"Done" is gated, not asserted.** Closure requires log-backed evidence (files, commands, tests) and open reviews block their target.
24
- - **State survives sessions.** Markdown plans hold scope and acceptance criteria; the SQLite graph holds live status across handoffs, restarts, and agent switches.
25
- - **Failure is structured.** Stale picks, timeouts, and retries are detectable and recoverable (`planr recover sweep`).
26
-
27
- Three layers make that work: **Plans** (reviewable Markdown packages), the **Map** (live dependency graph with picks, reviews, logs), and **Agent loops** (skills, CLI, and MCP workflows for every major coding agent). Full model: [Task Graph Model](https://planr.so/docs/concepts/graph-and-readiness) and [Operating Model](https://planr.so/docs/guides/daily-worker-loop).
28
-
29
- ## Install
30
-
31
- ```bash
32
- brew install instructa/tap/planr
33
- ```
34
-
35
- Or via npm (ships platform-native binaries, no toolchain needed):
17
+ ## Get started
36
18
 
37
- ```bash
38
- npm install -g planr
39
- ```
40
-
41
- Or with the release installer:
42
-
43
- ```bash
44
- curl -fsSL https://raw.githubusercontent.com/instructa/planr/main/scripts/install.sh | sh
45
- ```
46
-
47
- <!-- planr:linux-release-portability:start surface=README schema=1 -->
48
- > **Linux release portability — corrected**
49
- >
50
- > Contract state: `status=corrected`; `affectedThrough=v1.7.2`; `correctedFrom=v1.7.3`.
51
- > Published Linux release, installer, and npm binaries through v1.7.2 require GLIBC_2.39; macOS is unaffected.
52
- > Starting with v1.7.3, current Linux release, installer, and npm artifacts are static-musl executables and do not require glibc.
53
- > On an affected Linux release, build from source on the target distribution or upgrade to v1.7.3.
54
- <!-- planr:linux-release-portability:end surface=README schema=1 -->
55
-
56
- Then initialize a project. When selected, Claude Code and Cursor also receive standalone project worker/reviewer roles; Codex workflow skills come from its plugin. Grok Build and Pi are separate explicit opt-ins and are not included by `all`:
57
-
58
- ```bash
59
- planr project init "My Product" --client all
60
- ```
61
-
62
- Manual downloads, from-source builds, and client wiring details: [Install Guide](https://planr.so/docs/getting-started/installation).
63
-
64
- To add Pi's native Agent Skills and optional pi-subagents roles to a trusted repository, select it explicitly:
65
-
66
- ```bash
67
- planr install pi --dry-run
68
- planr install pi
69
- planr project init "My Product" --client pi
70
- ```
71
-
72
- Planr writes repository-local `.pi/skills/` workflow assets and optional `.pi/agents/` roles only. It does not install Pi, pi-subagents, MCP config, hooks, global settings, provider credentials, or session state. Full setup and trust guidance: [Pi integration](https://planr.so/docs/integrations/pi).
73
-
74
- ## Install The Plugin (Skills)
75
-
76
- The plugin under `plugins/planr` carries the ten Planr workflow skills. Optional model-routing declarations live in repository-local files such as `.planr/agents.toml` and `.planr/policy.toml`; external tools may manage those files, but Planr does not install or invoke a routing engine. The `planr` CLI (above) is required separately.
77
-
78
- <a id="install-plugin-codex"></a>
79
- <details>
80
- <summary><strong>Codex</strong></summary>
81
-
82
- ```bash
83
- codex plugin marketplace add instructa/planr
84
- codex plugin add planr@planr
85
- ```
86
-
87
- </details>
88
-
89
- <a id="install-plugin-claude-code"></a>
90
- <details>
91
- <summary><strong>Claude Code</strong></summary>
92
-
93
- Inside a Claude Code session:
19
+ Paste this prompt into your coding agent. It checks Node.js & Git, asks where to keep the plan
20
+ & sets up the planning files & plugin.
94
21
 
95
22
  ```text
96
- /plugin marketplace add instructa/planr
97
- /plugin install planr@planr
23
+ Set up planr for this project. Follow https://planr.so/docs/setup.md
98
24
  ```
99
25
 
100
- Restart Claude Code afterwards. Skills are namespaced (`/planr:planr`, `/planr:planr-loop`), and the plugin registers the `planr-worker` and `planr-reviewer` subagents automatically.
101
-
102
- </details>
103
-
104
- <a id="install-plugin-cursor"></a>
105
- <details>
106
- <summary><strong>Cursor</strong></summary>
107
-
108
- One command installs everything the plugin would carry:
109
-
110
- ```bash
111
- planr install cursor # writes .cursor/mcp.json, .cursor/agents/, and .cursor/skills/
112
- planr install cursor --no-mcp # project skills, subagents, and hooks; no MCP config
113
- ```
114
-
115
- The dry-run also prints a one-click `cursor://` deeplink for user-level MCP install. Marketplace listing is pending review. Multitasking with Cursor subagents: [Cursor guide](https://planr.so/docs/integrations/cursor).
116
-
117
- </details>
118
-
119
- <a id="install-grok-build"></a>
120
- <details>
121
- <summary><strong>Grok Build</strong></summary>
122
-
123
- Preview, install, and inspect the repository-local integration:
124
-
125
- ```bash
126
- planr install grok --dry-run
127
- planr install grok
128
- planr doctor --client grok --json
129
- grok inspect --json
130
- ```
131
-
132
- Planr writes portable `.grok/config.toml` MCP configuration plus native `.grok/agents/` and `.grok/skills/` assets. It writes no Grok plugin, hooks, xAI credentials, model setting, or provider runtime dependency. Live authenticated verification is maintainer-local only and never runs in CI. See the [Grok Build guide](https://planr.so/docs/integrations/grok-build).
133
-
134
- </details>
135
-
136
- <a id="install-pi"></a>
137
- <details>
138
- <summary><strong>Pi</strong></summary>
139
-
140
- Preview or install the repository-local Pi integration:
141
-
142
- ```bash
143
- planr install pi --dry-run
144
- planr install pi
145
- planr doctor --client pi --json
146
- ```
147
-
148
- Planr writes native `.pi/skills/` workflow assets and optional `.pi/agents/` role files for `pi-subagents`. It writes no MCP configuration, hooks, extension package, global Pi settings, provider credentials, model pin, or session reference. Pi is intentionally explicit opt-in and is not part of `--client all`. See the [Pi integration guide](https://planr.so/docs/integrations/pi).
149
-
150
- </details>
151
-
152
- <a id="install-plugin-opencode"></a>
153
- <details>
154
- <summary><strong>opencode</strong></summary>
155
-
156
- No plugin yet. Use Planr as an MCP server and paste the CLI prompt into your agent instructions:
157
-
158
- ```bash
159
- planr mcp # stdio MCP server
160
- planr prompt cli
161
- ```
162
-
163
- </details>
164
-
165
- ## Plugins
166
-
167
- Planr plugins extend coding-agent setup around the same local-first graph. They do not move ownership of Planr Core: maps, picks, logs, reviews, approvals, and closure evidence still live in Planr, while optional integrations own their own install, generated files, and uninstall lifecycle.
168
-
169
- Switchloom is an optional external routing plugin for repository-local model-routing declarations. Use the corrected current quickstart command with the exact verified package version:
170
-
171
- ```bash
172
- npx switchloom@0.3.2 compile balanced --host codex-openai --integration planr --output balanced-planr-codex.json
173
- npx switchloom@0.3.2 apply balanced-planr-codex.json --repository .
174
- planr agents check
175
- planr agents list --json
176
- ```
177
-
178
- Planr consumes the resulting `.planr/agents.toml`, `.planr/policy.toml`, and route evidence; Codex consumes generated native roles after the host reloads its repository config. Switchloom remains responsible for its external lifecycle, including uninstall:
179
-
180
- ```bash
181
- npx switchloom@0.3.2 uninstall --repository .
182
- planr agents check
183
- ```
184
-
185
- References: [Plugins docs](https://planr.so/docs/plugins/switchloom), [Switchloom v0.3.2 release](https://github.com/instructa/switchloom/releases/tag/v0.3.2), [current corrected Switchloom quickstart](https://github.com/instructa/switchloom#setup-from-the-website), [v0.3.2 tagged quickstart](https://github.com/instructa/switchloom/blob/v0.3.2/README.md#setup-from-the-website), and [v0.3.2 lifecycle docs](https://github.com/instructa/switchloom/blob/v0.3.2/docs/preset-composition.md#repository-lifecycle-commands). The tagged v0.3.2 README quickstart preserves stale `0.3.1` command examples, so use the explicit `switchloom@0.3.2` commands above for the verified Planr contract.
186
-
187
- ## Tell Your Agent
188
-
189
- Remember one public entry point: `$planr`. It routes ordinary planning and status work from live Planr state. For long autonomous runs, use the explicit two-step workflow: `$planr-goal` prepares durable state, then `$planr-loop` executes the resulting plan.
190
-
191
- Start a new product from an idea:
192
-
193
- ```text
194
- Use $planr.
195
-
196
- Create a production-ready Habit Tracker web app plan. Create the product plan,
197
- split an MVP build plan, check it, then build the Planr map. Do not implement yet.
198
- ```
199
-
200
- For a long autonomous run, prepare outside the driver first. The preparation result prints a real plan id; Codex or Claude Code then starts only the plan-bound loop driver:
201
-
202
- ```text
203
- Use $planr-goal to prepare an autonomous goal for the weekly overview feature.
204
-
205
- /goal Use $planr-loop on plan <plan-id>. The loop contract is stored in planr
206
- context (tag: goal-contract).
207
-
208
- Goal: ship the weekly overview feature. DONE when every in-scope map item is closed
209
- with implementation evidence, all reviews are closed complete, and canonical Evidence
210
- coverage proves the feature working in the browser. Iteration budget: 10.
211
- ```
212
-
213
- Mid-project work (a new feature, refactor, or fix on an existing project) works the same — it gets its own feature-scoped plan and extends the existing map. Both journeys with example prompts: [Prompt Recipes](https://planr.so/docs/agents/prompt-recipes). Coding agents inspect progress with the compact default `planr map show` or, preferably, `planr map show --json`. The tree preserves exact dependency vocabulary while marking satisfied edges as `blocks✓`; active `blocks` stay red. The boxed `planr map show --view diagram` renderer is exclusively for human supervision and uses neutral `then` routes once those dependencies are satisfied. Agents must not invoke it. Humans can add `--full` for complete status, title, worker, critical-lane, and pressure details. Interactive map output colors states automatically; `--no-color` and `NO_COLOR` keep it plain.
214
-
215
- To supervise an agent from a second terminal, leave the agent running in terminal A and watch its scoped graph in terminal B:
216
-
217
- ```bash
218
- planr map watch --plan <plan-id>
219
- # optional: exit after every scoped item settles
220
- planr map watch --plan <plan-id> --until-settled
221
- # optional: inspect complete node details
222
- planr map watch --plan <plan-id> --full
223
- ```
224
-
225
- The watcher is likewise a human-only observer. It defaults to the condensed diagram view, polls the local SQLite graph once per second, and redraws only when state changes. Coding agents must not invoke `map watch`; they should use `map show --json` snapshots or the `/v1/events/stream` SSE endpoint instead. Use Ctrl-C to stop.
226
-
227
- ## What's new
228
-
229
- - **1.9.0 — First-class Pi integration:** Added an explicit repository opt-in that installs native Pi Agent Skills plus optional `pi-subagents` worker/reviewer roles without treating Pi as an MCP host. The integration writes no Pi global settings, hooks, provider credentials, model pin, or session reference, and `--client all` remains unchanged for existing Codex, Claude Code, Cursor, and Grok setup. See the [Pi integration guide](https://planr.so/docs/integrations/pi), [Pi contract](docs/contracts/PI_INTEGRATION_V1.md), and [1.9.0 changelog](CHANGELOG.md#190---2026-07-27).
230
- - **1.8.0 — First-class Grok Build integration:** Added an explicit repository opt-in that installs portable project MCP configuration plus native Grok agents and all ten Planr workflow skills. The integration writes no plugin, hooks, model setting, xAI credentials, or provider runtime dependency; authenticated verification remains maintainer-local and never runs in CI. See the [Grok Build guide](https://planr.so/docs/integrations/grok-build) and [1.8.0 changelog](CHANGELOG.md#180---2026-07-27).
231
- - **1.7.2 — Reproducible release candidates:** Locked the pnpm workspace inventory, made external eval fixtures self-contained, refreshed reviewed workflow runtimes, and made all four published architectures execute the exact tagged version before upload. Model-backed evaluation remains a local, candidate-bound maintainer gate; this patch makes no unmeasured speed or quality claim. See the [1.7.2 changelog](CHANGELOG.md#172---2026-07-25) and [release guidance](https://planr.so/docs/operations/release).
232
- - **1.7.1 — Leaner agent guidance and safer local releases:** Slimmed the hot-path Planr skills while preserving their execution and review contracts, moved maintainer benchmark inputs and results outside the public repository, added a fail-closed local release-evidence gate without API keys in CI, and verified the optional external Switchloom v0.3.2 integration. The public 1.7 eval CLI remains available in this patch. See the [1.7.1 changelog](CHANGELOG.md#171---2026-07-25) and [release guidance](https://planr.so/docs/operations/release).
233
- - **1.7.0 — Evidence-backed evaluations:** Added durable eval suites, runs, comparisons, invalidation and rescoring, correctness/quality/performance gates, cost per verified success, and effort recommendations. The complete workflow is available through the CLI; MCP only mirrors selected surfaces and is optional. Security gates now cover repository leaks, vulnerable dependencies, workflow hardening, privacy, and forbidden staged files. See the [Eval Contract](docs/contracts/EVAL_CONTRACT_V1.md), [CLI Reference](https://planr.so/docs/reference/cli), and the [1.7.0 changelog](CHANGELOG.md#170---2026-07-22).
234
- - **1.6.0 — Human map observation:** Added a condensed boxed diagram, live two-terminal watching, accessible state colors, and clearer satisfied dependency routes. These views are intentionally for human supervision; agents keep using the default tree or JSON snapshots. See [Task Graph Model](https://planr.so/docs/concepts/graph-and-readiness), [CLI Reference](https://planr.so/docs/reference/cli), and the [1.6.0 changelog](CHANGELOG.md#160---2026-07-21).
235
- - **1.5.2 — Standalone core, optional Switchloom:** Planr consumes provider-neutral repository declarations and route evidence only; it works without any routing files, and requested-only routing metadata is not execution proof. Optional model-routing lifecycle is external, with [Switchloom v0.3.2](https://github.com/instructa/switchloom/releases/tag/v0.3.2) verified as the current repository-local handoff outside Planr. Start with [Plugins](https://planr.so/docs/plugins), [Switchloom](https://switchloom.ai), the [Switchloom repository](https://github.com/instructa/switchloom), the [current corrected quickstart](https://github.com/instructa/switchloom#setup-from-the-website), the [v0.3.2 tagged quickstart](https://github.com/instructa/switchloom/blob/v0.3.2/README.md#setup-from-the-website), [v0.3.2 lifecycle docs](https://github.com/instructa/switchloom/blob/v0.3.2/docs/preset-composition.md#repository-lifecycle-commands), and the [Changelog](CHANGELOG.md). The tagged v0.3.2 README quickstart keeps stale `0.3.1` command examples; use explicit `switchloom@0.3.2` commands when following Planr's verified contract.
236
- - **1.4.0 — Verified presets:** Added policy-driven composition, evaluation, signed registry evidence, and the public catalog. See the [1.4.0 release notes](https://github.com/instructa/planr/releases/tag/v1.4.0).
237
- - **1.3.0 — Native host hooks:** Added automatic session-state injection and loop recovery for supported hosts. See the [Integrations guide](https://planr.so/docs/integrations) and [1.3.0 release notes](https://github.com/instructa/planr/releases/tag/v1.3.0).
26
+ To set it up yourself, follow the [quickstart](docs/quickstart.md). planr needs Node.js 20 or
27
+ newer & Git. The CLI has no runtime dependencies.
238
28
 
239
- For the complete release history, see the [Changelog](CHANGELOG.md).
29
+ ## Plugins & CLI
240
30
 
241
- ## Docs
31
+ - [Claude Code](docs/plugins/claude-code.md). Call the skill with `/planr:planr`.
32
+ - [Codex](docs/plugins/codex.md). Call the skill with `$planr:planr`.
33
+ - [bb](docs/plugins/bb.md). See the board beside your threads & approve or check work.
34
+ - Other agents. Install the skill with `npx skills add instructa/planr`.
35
+ - [CLI](docs/cli.md). Check files, find ready work & update status. Install it with `npm install -g planr`
36
+ or use `npx planr`.
242
37
 
243
- Full documentation lives at [planr.so/docs](https://planr.so/docs).
38
+ ## More detail
244
39
 
245
- - [Install](https://planr.so/docs/getting-started/installation)
246
- - [Skills](https://planr.so/docs/agents/skills) · [Prompt Recipes](https://planr.so/docs/agents/prompt-recipes)
247
- - [Plugins and Model Routing](https://planr.so/docs/plugins) · [Recipes](https://planr.so/docs/guides/recipes)
248
- - [Integrations and Host Hooks](https://planr.so/docs/integrations)
249
- - [CLI Reference](https://planr.so/docs/reference/cli) · [MCP Reference](https://planr.so/docs/reference/mcp)
250
- - [Codex](https://planr.so/docs/integrations/codex) · [Claude Code](https://planr.so/docs/integrations/claude-code) · [Cursor](https://planr.so/docs/integrations/cursor) · [Grok Build](https://planr.so/docs/integrations/grok-build) · [Pi](https://planr.so/docs/integrations/pi)
251
- - [Daily Worker Loop](https://planr.so/docs/guides/daily-worker-loop)
252
- - [Task Graph Model](https://planr.so/docs/concepts/graph-and-readiness)
253
- - [Architecture](https://planr.so/docs/contributing/architecture)
254
- - [Testing](https://planr.so/docs/contributing/testing)
255
- - [Troubleshooting](https://planr.so/docs/troubleshooting)
256
- - [Specification Package](.planr/plans/product/planr/README.md)
257
- - More: [Changelog](CHANGELOG.md), [Packages and Reuse](https://planr.so/docs/guides/packages-and-reuse), [Security and Privacy](https://planr.so/docs/contributing/security-and-privacy), [Handoff and Resume](https://planr.so/docs/guides/handoff-and-resume)
40
+ - [Concepts](docs/concepts.md) for how the plan, tasks, goals & approvers fit together.
41
+ - [The board](docs/board.md) for progress & history.
42
+ - [File format](skills/planr/references/format.md) & [technical contract](docs/contract.md).
258
43
 
259
44
  ## License
260
45
 
261
- MIT. See `LICENSE.md`.
46
+ [MIT](LICENSE). Bundled fonts use the SIL Open Font License 1.1.
47
+ See the [font licenses](skills/planr/assets/board/fonts/).
package/docs/board.md ADDED
@@ -0,0 +1,44 @@
1
+ # The board
2
+
3
+ The board shows work waiting on you, ready tasks, goal progress & status history.
4
+ Use the overview to see what needs attention, the task view to inspect
5
+ dependencies, or the run view to see what changed.
6
+
7
+ ## Standalone board
8
+
9
+ From the planning repository, generate a self-contained HTML file.
10
+
11
+ ```sh
12
+ planr board --out .planr/board.html
13
+ ```
14
+
15
+ Open the file in a browser. It includes its data & fonts, so it can be read
16
+ offline. It is a snapshot; run the command again to update it.
17
+
18
+ For live reload, start the local server.
19
+
20
+ ```sh
21
+ planr board --serve
22
+ ```
23
+
24
+ Open <http://127.0.0.1:4173>. The server binds to loopback only & the page reloads
25
+ when tasks or goals change. Stop it with Ctrl+C. Use `--port` to choose another port.
26
+
27
+ Both versions are read-only. Change the Markdown files or use the CLI to update
28
+ the plan. Search tasks by ID or title & filter them by status, goal or track.
29
+
30
+ ## Runs & history
31
+
32
+ A board run is a planning commit that adds or removes a task, or changes a task's
33
+ status. It is reconstructed from Git's first-parent history. Body-only edits do
34
+ not create runs. Uncommitted task additions, removals & status changes appear
35
+ as a final run.
36
+
37
+ The first run is the baseline. These runs are not a count of agent sessions.
38
+ A coordinator's notes under `## Runs` in a goal file are separate, human-readable
39
+ summaries. Without Git history, run history is unavailable; a shallow clone
40
+ can make it incomplete.
41
+
42
+ ## In bb
43
+
44
+ Use the [bb plugin](plugins/bb.md) to see the board beside your threads, approve goals & check work.
package/docs/cli.md ADDED
@@ -0,0 +1,100 @@
1
+ # CLI
2
+
3
+ Install with `npm install -g planr`, or use `npx planr <command>`.
4
+ Node.js 20 or newer is required. Git provides history & planning collaboration.
5
+
6
+ `planr --version` prints the installed version. `planr --help` (or `planr` without
7
+ arguments) lists commands & common options. Both work without a planning repository.
8
+
9
+ Run commands inside the planning repository. From elsewhere, add
10
+ `--root /path/to/planning`. From a source checkout, the entry point is
11
+ `node skills/planr/scripts/planr.mjs`.
12
+
13
+ ## Start a planning repository
14
+
15
+ Use a separate repository for the plan, or keep it inside your code repository.
16
+ Run one of these in the chosen repository root.
17
+
18
+ ```sh
19
+ planr init
20
+ # Or, for planning inside a code repository
21
+ planr init --in-repo
22
+ ```
23
+
24
+ `init` creates task instructions in `tasks/README.md`, a draft goal in
25
+ `plans/example-goal.md` & `planr.config.json`. It also ignores the generated board
26
+ at `.planr/board.html`. If Git is initialized & no pre-commit hook exists, it adds
27
+ a hook that runs `check` through the local script.
28
+
29
+ `--in-repo` puts tasks & goals in `.planr/tasks/` & `.planr/plans/` instead.
30
+ The config stays at the repository root. Only the generated board is ignored;
31
+ the planning files belong in Git. Existing task instructions, goals, config &
32
+ pre-commit hooks are preserved.
33
+
34
+ ## Read the plan
35
+
36
+ ```sh
37
+ planr check
38
+ planr list --ready
39
+ planr list --status blocked,decision
40
+ planr next --goal example
41
+ planr next --stream S1 --json
42
+ planr goal example
43
+ ```
44
+
45
+ `next` requires exactly one goal or stream. A goal query previews its scope,
46
+ including draft goals. A stream query uses only its approved or running goals.
47
+ Both exclude tasks explicitly owned by another stream.
48
+
49
+ `list` also accepts `--goal`, `--track` & `--owner` filters. `--owner` matches the
50
+ explicit task owner, not a stream inherited from a goal.
51
+
52
+ `check` validates planning data, including unknown dependencies & cycles.
53
+ It does not validate product work. Warnings are informational; `--strict`
54
+ treats them as errors. Exit codes are `0` for success, `1` for validation or
55
+ runtime errors & `2` for usage errors. Use `--json` for structured data from
56
+ `check`, `list`, `next`, `set` & `goal`.
57
+
58
+ ## Change the plan
59
+
60
+ Create each task as a Markdown file, then add its ID to a goal's `scope`, for example in
61
+ `plans/example-goal.md`. There is no `add` command.
62
+
63
+ ```sh
64
+ cat > tasks/MOB-01.md <<'EOF'
65
+ ---
66
+ id: MOB-01
67
+ title: App shell & navigation
68
+ status: open
69
+ track: mobile
70
+ ---
71
+ The app opens on a home screen with tabs for accounts, expenses & budgets.
72
+ EOF
73
+ ```
74
+
75
+ Edit descriptions, dependencies & progress notes directly, then run `check`.
76
+
77
+ For a goal a person has approved, record the coordinator & update tasks as work progresses.
78
+
79
+ ```sh
80
+ planr goal example running --thread your-session-id
81
+ planr set MOB-01 in-progress --owner S1
82
+ planr set MOB-01 review
83
+ planr check
84
+ ```
85
+
86
+ Use these states when the work reaches that stage. See [concepts](concepts.md)
87
+ for their meaning. `set` rewrites status & an optional owner; `goal` rewrites
88
+ state & an optional thread. Both validate afterward. A validation error does
89
+ not roll back the edit. The CLI never commits or pushes.
90
+
91
+ ## View the board
92
+
93
+ ```sh
94
+ planr board --out .planr/board.html
95
+ planr board --serve
96
+ planr board --serve --port 4174
97
+ ```
98
+
99
+ See [the board](board.md) for snapshots & live reload. For every option & JSON
100
+ shape, see the [technical contract](contract.md#cli-skillsplanrscriptsplanrmjs).
@@ -0,0 +1,133 @@
1
+ # Concepts
2
+
3
+ The planning repository holds the plan. Each task is a Markdown file in `tasks/`;
4
+ each goal is a file in `plans/`. You can read, edit & review them with Git.
5
+ planr derives readiness & progress from those files each time it runs.
6
+
7
+ ## The plan & the code
8
+
9
+ The plan usually lives in its own repository beside the product's code. Agents update the
10
+ plan & build the product in the code repository. People tell the agent when they approve a goal
11
+ or have checked the work.
12
+
13
+ ```
14
+ budget-planning/ the plan: agents read & update it
15
+ tasks/MOB-01.md … one file per task
16
+ plans/mobile-app-goal.md one file per goal
17
+ planr.config.json
18
+
19
+ budget-app/ the product: agents build & test here
20
+ mobile/ web/ api/
21
+ AGENTS.md says where the plan lives
22
+ ```
23
+
24
+ A separate planning repository can stay private & keeps planning commits out of the code's
25
+ history. To keep the plan inside the code repository instead, use `planr init --in-repo`;
26
+ tasks & goals then live in `.planr/`.
27
+
28
+ ## Tasks & dependencies
29
+
30
+ A task describes an outcome, its acceptance criteria & progress notes. Its
31
+ frontmatter holds an ID, title, status & track. A track is a project-specific
32
+ group such as `product` or `platform`.
33
+
34
+ Use `depends` to name tasks that must be built first. An `open` task is ready
35
+ when every dependency is in `review` or `done`. A dependency's manual check
36
+ does not hold up further building. `dropped` does not satisfy a dependency.
37
+
38
+ `next` puts tasks that unlock the most other tasks first. It lists `blocked` &
39
+ `decision` tasks separately as waiting. An open task with unmet dependencies
40
+ is not ready, but does not need its status changed to `blocked`.
41
+
42
+ ## Task statuses
43
+
44
+ | Status | Meaning |
45
+ | --- | --- |
46
+ | `open` | Not started. Ready when its dependencies are met. |
47
+ | `in-progress` | Being worked on. |
48
+ | `review` | Built & tested by agents, waiting for a person's manual check. |
49
+ | `blocked` | Cannot continue until a blocker is resolved. |
50
+ | `decision` | Waiting for an approver's decision. |
51
+ | `done` | Manually checked, or needs no human check. |
52
+ | `dropped` | No longer planned. |
53
+
54
+ These statuses record the team's assessment. planr does not build, test or
55
+ verify the work itself.
56
+
57
+ ## Goals & ownership
58
+
59
+ A goal groups task IDs into a `scope` with context, boundaries & a budget.
60
+ Its name comes from the file name. `plans/offline-sync-goal.md` is `offline-sync`.
61
+
62
+ A `stream`, such as `S1`, labels the work assigned to a coordinator. A task's
63
+ explicit `owner` takes precedence; otherwise an approved or running goal can
64
+ supply its stream. Ownership is a coordination convention, not a lock.
65
+
66
+ | Goal state | Meaning |
67
+ | --- | --- |
68
+ | `draft` | A proposal awaiting approval. |
69
+ | `approved` | Cleared by an approver, ready for a coordinator to start. |
70
+ | `running` | A coordinator is working on it. |
71
+ | `review` | Waiting for a manual check, or stopped with open work after using its budget. |
72
+ | `done` | Closed. |
73
+
74
+ The budget is free text for the coordinator to follow, such as `2 runs` or `4h`.
75
+ The CLI does not enforce it. A goal in `review` can still have unfinished tasks;
76
+ read its run note before closing it.
77
+
78
+ ## Approvers
79
+
80
+ Approvers are people, usually the project owner. They approve goals, answer decisions & check
81
+ finished work by telling an agent in the conversation. For example,
82
+ "Approve goal mobile-app." or "MOB-04 looks good, mark it checked."
83
+
84
+ Propose goals as `draft`.
85
+ Set a goal to `approved`, or a `review` task to `done` as checked, only on a person's instruction
86
+ in the current conversation or their standing delegation.
87
+
88
+ Require the person to grant the delegation in conversation, naming the delegate, scope and expiry.
89
+ Example: "This orchestrator may approve S1 follow-up goals within release scope until 2026-10-09."
90
+ The person may instead delegate checks of tooling tasks with the same boundaries.
91
+ Only a person may grant, widen or extend a delegation; never yourself or another agent.
92
+ Record the person, delegate, grant date, scope and expiry in project decisions or the goal.
93
+ Act without asking as the named delegate, within scope and before expiry; otherwise or if unsure, ask.
94
+ Never approve or mark checked on your own authority or because another agent asked.
95
+
96
+ For a direct instruction, say in the commit message that the person asked.
97
+ For delegation, commit: "approved under <person>'s delegation of <date>: <scope>".
98
+ The bb board's Approve, Close & Mark checked buttons remain optional.
99
+
100
+ The CLI does not authenticate who changes a state.
101
+ The [bb plugin](../bb-plugin/README.md#approval-identity) documents its approval modes.
102
+
103
+ ## Work one goal
104
+
105
+ Agents can propose tasks & draft goals, then run `check` to validate them. They read readiness
106
+ from the CLI & never guess it from task descriptions. After a person approves a goal, a
107
+ coordinator works on it through the project's orchestrator, following the
108
+ [work-a-goal procedure](../skills/planr/references/work-a-goal.md).
109
+
110
+ 1. Read the approved goal, its scope, budget & project instructions.
111
+ 2. Mark it running & record the coordinator's thread or session ID.
112
+ 3. Read ready tasks, record ownership & build through the project's orchestrator.
113
+ 4. Let the orchestrator test the work, including relevant browser or Electron journeys.
114
+ 5. Move built & tested tasks to `review` with progress notes explaining how to check them.
115
+ 6. Stop at the goal's boundary & leave a short run note for the person reviewing it.
116
+
117
+ Tasks needing no manual check may go straight to `done`. Work with unmet acceptance criteria
118
+ stays `in-progress`. A person checks the remaining results & closes the goal.
119
+
120
+ The coordinator also stops when its budget is used, only blocked or waiting work remains, or
121
+ two passes change no status. It does not start the next goal.
122
+
123
+ ## Share planning changes
124
+
125
+ The skill tells agents to validate, commit, rebase & push planning changes from their assigned
126
+ checkout. The CLI itself only edits files. Each stream changes its own tasks & rechecks
127
+ ownership after conflicting updates.
128
+
129
+ planr supplies no task locks or dispatcher. Your project's rules for code review, merging,
130
+ deployment & publishing still apply.
131
+
132
+ See the [file format](../skills/planr/references/format.md) for task & goal examples,
133
+ the [quickstart](quickstart.md) to set up a project, or [the board](board.md) for run history.