planr 1.10.0-alpha.9 → 2.0.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/.claude-plugin/plugin.json +11 -0
- package/CHANGELOG.md +20 -0
- package/README.md +27 -245
- package/docs/board.md +44 -0
- package/docs/cli.md +100 -0
- package/docs/concepts.md +133 -0
- package/docs/contract.md +150 -0
- package/docs/plugins/bb.md +49 -0
- package/docs/plugins/claude-code.md +84 -0
- package/docs/plugins/codex.md +77 -0
- package/docs/quickstart.md +307 -0
- package/docs/setup.md +103 -0
- package/package.json +21 -68
- package/plugin.json +12 -0
- package/skills/planr/SKILL.md +64 -0
- package/skills/planr/assets/board/fonts/LICENSE-mona-sans.txt +93 -0
- package/skills/planr/assets/board/fonts/LICENSE-monaspace.txt +93 -0
- package/skills/planr/assets/board/fonts/MonaSans-Variable.woff2 +0 -0
- package/skills/planr/assets/board/fonts/MonaspaceNeon-400.woff2 +0 -0
- package/skills/planr/assets/board/fonts/MonaspaceNeon-500.woff2 +0 -0
- package/skills/planr/assets/board/fonts/MonaspaceNeon-600.woff2 +0 -0
- package/skills/planr/assets/board/template.html +788 -0
- package/skills/planr/assets/templates/goal.md +13 -0
- package/skills/planr/assets/templates/hook.sh +4 -0
- package/skills/planr/assets/templates/in-repo.config.json +6 -0
- package/skills/planr/assets/templates/planr.config.json +6 -0
- package/skills/planr/assets/templates/tasks-README.md +14 -0
- package/skills/planr/references/format.md +88 -0
- package/skills/planr/references/work-a-goal.md +62 -0
- package/skills/planr/scripts/lib/board.mjs +39 -0
- package/skills/planr/scripts/lib/graph.mjs +345 -0
- package/skills/planr/scripts/lib/runs.mjs +127 -0
- package/skills/planr/scripts/lib/version.mjs +11 -0
- package/skills/planr/scripts/planr.mjs +386 -0
- package/docs/ARCHITECTURE.md +0 -136
- package/docs/RELEASE.md +0 -275
- package/docs/SWITCHLOOM_COMPATIBILITY.md +0 -14
- package/docs/contracts/BROWSER_HARNESS_ADAPTER_V1.md +0 -75
- package/docs/contracts/EVAL_CONTRACT_V1.md +0 -2072
- package/docs/contracts/EVIDENCE_ADAPTER_PROTOCOL_V1.md +0 -98
- package/docs/contracts/EVIDENCE_CONTRACT_V1.md +0 -382
- package/docs/contracts/GROK_INTEGRATION_V1.md +0 -139
- package/docs/contracts/LINUX_RELEASE_PORTABILITY.json +0 -9
- package/docs/contracts/PI_INTEGRATION_V1.md +0 -164
- package/docs/contracts/V1_1_DIFFERENTIATION_CONTRACT.md +0 -177
- package/docs/contracts/fixtures/evidence/v1/examples/coverage-verdict.json +0 -66
- package/docs/contracts/fixtures/evidence/v1/examples/evidence-attempt.json +0 -39
- package/docs/contracts/fixtures/evidence/v1/examples/evidence-policy.json +0 -108
- package/docs/contracts/fixtures/evidence/v1/examples/evidence-receipt.json +0 -93
- package/docs/contracts/fixtures/evidence/v1/examples/evidence-waiver.json +0 -31
- package/docs/contracts/fixtures/evidence/v1/examples/proof-obligation.json +0 -55
- package/docs/contracts/fixtures/evidence/v1/examples/proof-preset.json +0 -19
- package/docs/contracts/fixtures/evidence/v1/examples/untrusted-evidence-proposal.json +0 -20
- package/docs/contracts/fixtures/evidence/v1/examples/verification-capability-instance.json +0 -39
- package/docs/contracts/fixtures/evidence/v1/examples/verification-capability-manifest.json +0 -52
- package/docs/contracts/fixtures/evidence/v1/negative/aborted-zero-exit-attempt.json +0 -39
- package/docs/contracts/fixtures/evidence/v1/negative/adapter-registration-missing-execution-contract.json +0 -88
- package/docs/contracts/fixtures/evidence/v1/negative/available-empty-probe-capability.json +0 -27
- package/docs/contracts/fixtures/evidence/v1/negative/blocked-coverage-with-stale-reason.json +0 -27
- package/docs/contracts/fixtures/evidence/v1/negative/empty-trust-bindings-receipt.json +0 -72
- package/docs/contracts/fixtures/evidence/v1/negative/failed-zero-exit-attempt.json +0 -39
- package/docs/contracts/fixtures/evidence/v1/negative/forged-trusted-receipt.json +0 -35
- package/docs/contracts/fixtures/evidence/v1/negative/inconclusive-clean-exit-attempt.json +0 -39
- package/docs/contracts/fixtures/evidence/v1/negative/inconclusive-coverage-with-blocked-reason.json +0 -27
- package/docs/contracts/fixtures/evidence/v1/negative/minimal-policy-missing-owned-inputs.json +0 -5
- package/docs/contracts/fixtures/evidence/v1/negative/mismatched-probe-execution-id-capability.json +0 -42
- package/docs/contracts/fixtures/evidence/v1/negative/passed-empty-attempt.json +0 -22
- package/docs/contracts/fixtures/evidence/v1/negative/policy-default-preset-unregistered.json +0 -102
- package/docs/contracts/fixtures/evidence/v1/negative/policy-weakening-without-waiver.json +0 -102
- package/docs/contracts/fixtures/evidence/v1/negative/process-probe-missing-output-limits.json +0 -49
- package/docs/contracts/fixtures/evidence/v1/negative/satisfied-empty-coverage-verdict.json +0 -14
- package/docs/contracts/fixtures/evidence/v1/negative/skipped-zero-exit-attempt.json +0 -39
- package/docs/contracts/fixtures/evidence/v1/negative/stale-coverage-with-inconclusive-reason.json +0 -27
- package/docs/contracts/fixtures/evidence/v1/negative/timed-out-zero-exit-attempt.json +0 -39
- package/docs/contracts/fixtures/evidence/v1/negative/unavailable-zero-exit-attempt.json +0 -39
- package/docs/contracts/fixtures/evidence/v1/negative/unbound-waiver.json +0 -21
- package/docs/contracts/fixtures/evidence/v1/negative/unsatisfied-coverage-without-gap.json +0 -63
- package/docs/contracts/fixtures/evidence/v1/negative/waived-coverage-forbidden-gap-reason.json +0 -28
- package/docs/contracts/fixtures/evidence/v1/negative/waived-coverage-missing-waiver-id.json +0 -27
- package/docs/contracts/fixtures/evidence/v1/schemas/evidence-contract-v1.schema.json +0 -2685
- package/docs/contracts/schemas/com.planr.web.dom_state.v1.schema.json +0 -30
- package/docs/documentation/CONTRACT.md +0 -164
- package/docs/documentation/COVERAGE.md +0 -98
- package/docs/documentation/INFORMATION_ARCHITECTURE.md +0 -151
- package/docs/fixtures/mcp-contract.json +0 -153
- package/npm/bin/native-launcher.js +0 -67
- package/npm/bin/planr-browser-harness-adapter.js +0 -8
- package/npm/bin/planr.js +0 -8
- package/npm/native/darwin-arm64/planr +0 -0
- package/npm/native/darwin-arm64/planr-browser-harness-adapter +0 -0
- package/npm/native/darwin-arm64/planr-host-capability-validator +0 -0
- package/npm/native/darwin-x86_64/planr +0 -0
- package/npm/native/darwin-x86_64/planr-browser-harness-adapter +0 -0
- package/npm/native/darwin-x86_64/planr-host-capability-validator +0 -0
- package/npm/native/linux-arm64/planr +0 -0
- package/npm/native/linux-arm64/planr-browser-harness-adapter +0 -0
- package/npm/native/linux-arm64/planr-host-capability-validator +0 -0
- package/npm/native/linux-x86_64/planr +0 -0
- package/npm/native/linux-x86_64/planr-browser-harness-adapter +0 -0
- package/npm/native/linux-x86_64/planr-host-capability-validator +0 -0
- package/plugins/planr/.claude-plugin/plugin.json +0 -11
- package/plugins/planr/.codex-plugin/plugin.json +0 -25
- package/plugins/planr/agents/pi/planr-reviewer.md +0 -20
- package/plugins/planr/agents/pi/planr-worker.md +0 -35
- package/plugins/planr/agents/planr-reviewer.md +0 -21
- package/plugins/planr/agents/planr-worker.md +0 -40
- package/plugins/planr/skills/planr/SKILL.md +0 -60
- package/plugins/planr/skills/planr-goal/SKILL.md +0 -52
- package/plugins/planr/skills/planr-loop/SKILL.md +0 -126
- package/plugins/planr/skills/planr-loop/agents/planr-reviewer.md +0 -21
- package/plugins/planr/skills/planr-loop/agents/planr-worker.md +0 -36
- package/plugins/planr/skills/planr-loop/references/host-dispatch.md +0 -52
- package/plugins/planr/skills/planr-loop/references/recovery-and-verification.md +0 -26
- package/plugins/planr/skills/planr-plan/SKILL.md +0 -86
- package/plugins/planr/skills/planr-review/SKILL.md +0 -55
- package/plugins/planr/skills/planr-status/SKILL.md +0 -52
- package/plugins/planr/skills/planr-summary/SKILL.md +0 -30
- package/plugins/planr/skills/planr-task-graph/SKILL.md +0 -67
- package/plugins/planr/skills/planr-verify-web/SKILL.md +0 -62
- package/plugins/planr/skills/planr-work/SKILL.md +0 -93
- package/scripts/host-capability-experiment.mjs +0 -2481
- package/scripts/host-capability-runtime/v1/schemas/host-capability-expected-manifest.schema.json +0 -377
- package/scripts/host-capability-runtime/v1/schemas/host-capability-observed-raw.schema.json +0 -439
- package/scripts/host-capability-runtime/v1/schemas/host-capability-provenance.schema.json +0 -178
- package/scripts/planr-host-capability-validator +0 -57
- /package/{LICENSE.md → LICENSE} +0 -0
package/docs/contract.md
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# planr contract
|
|
2
|
+
|
|
3
|
+
The data and CLI contract of the planr engine. Change it here first, then the code.
|
|
4
|
+
|
|
5
|
+
## Planning repository layout
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
<planning-root>/
|
|
9
|
+
planr.config.json optional
|
|
10
|
+
tasks/<ID>.md one file per task (source of truth)
|
|
11
|
+
plans/<name>-goal.md goals (directory and suffix configurable)
|
|
12
|
+
decisions.md free-form, not parsed
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`planr.config.json` (all keys optional):
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{ "tasksDir": "tasks", "goalsDir": "plans", "goalSuffix": "-goal.md", "boardOut": ".planr/board.html" }
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Legacy `staleHours` config keys are accepted and ignored.
|
|
22
|
+
|
|
23
|
+
`--root <dir>` selects the planning root (default: walk up from cwd to the first directory containing `tasks/` or `planr.config.json`).
|
|
24
|
+
|
|
25
|
+
## Task file
|
|
26
|
+
|
|
27
|
+
Frontmatter (YAML subset: scalars, `[a, b]` inline lists, `- item` block lists; that is all planr parses):
|
|
28
|
+
|
|
29
|
+
| Field | Required | Notes |
|
|
30
|
+
|---|---|---|
|
|
31
|
+
| `id` | yes | equals the file name without `.md` |
|
|
32
|
+
| `title` | yes | |
|
|
33
|
+
| `status` | yes | `open`, `in-progress`, `review`, `blocked`, `decision`, `done`, `dropped` |
|
|
34
|
+
| `track` | yes | free text |
|
|
35
|
+
| `depends` | no | list of task IDs |
|
|
36
|
+
| `owner` | for `in-progress`, unless a goal covers it | stream or thread; see below |
|
|
37
|
+
| `refs` | no | passed through untouched |
|
|
38
|
+
|
|
39
|
+
Missing owner on an `in-progress` task is a warning (error with `--strict`) only when no `running` or
|
|
40
|
+
`approved` goal with a `stream` has the task in its scope (see `stream` below).
|
|
41
|
+
`review` tasks wait for a person's or delegated agent's check and need no owner.
|
|
42
|
+
|
|
43
|
+
Body sections are free Markdown and never parsed.
|
|
44
|
+
|
|
45
|
+
## Derived rules (only in `skills/planr/scripts/lib/graph.mjs`)
|
|
46
|
+
|
|
47
|
+
- `satisfied(d)`: status is `review` or `done`.
|
|
48
|
+
`review` means built and tested; a person's or delegated agent's check never blocks further building.
|
|
49
|
+
**`dropped` does not satisfy a dependency.**
|
|
50
|
+
A task depending on a dropped task gets a warning: remove the edge.
|
|
51
|
+
- `openDeps(t)`: IDs in `t.depends` that are not satisfied.
|
|
52
|
+
- `ready(t)`: `t.status == "open"` and `openDeps(t)` is empty.
|
|
53
|
+
- `waitingOn(t)`: IDs of tasks with status not in {done, dropped} whose `depends` contains `t.id`.
|
|
54
|
+
- `stream(t)`: `t.owner` if set, else the `stream` of the first goal (by name) with state `running` or `approved` whose scope contains `t.id`, else `null`.
|
|
55
|
+
- `unlocks(t)`: number of tasks with status `open` whose only open dependency is `t` (they become ready when `t` is satisfied). Defined for every task; 0 for review/done/dropped.
|
|
56
|
+
- Cycles: any dependency cycle is an error listing the cycle path.
|
|
57
|
+
|
|
58
|
+
## Derived data (in memory, never committed)
|
|
59
|
+
|
|
60
|
+
planr does not write an index file. Every command parses the task and goal files and derives the data below in memory. Planning repos must not commit derived files; during a migration a constant placeholder `tasks/index.json` may exist and is ignored by planr.
|
|
61
|
+
|
|
62
|
+
`planr list/next --json` return task objects of this shape:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{ "id": "AUTH-03", "title": "…", "status": "in-progress", "track": "release",
|
|
66
|
+
"depends": ["AUTH-02"], "owner": null, "refs": ["…"], "file": "tasks/AUTH-03.md",
|
|
67
|
+
"ready": false, "openDeps": [], "waitingOn": ["MAIL-02", "…"], "unlocks": 1, "stream": "S2" }
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Goal objects: `{ name, file, title, state, stream, budget, thread, scope, done, total, ready, waiting }`.
|
|
71
|
+
|
|
72
|
+
Warnings include: in-progress task without derived stream; task in the scope of two `running` goals; dependency on a dropped task; legacy goal without frontmatter; history problems (shallow clone, unreadable snapshot).
|
|
73
|
+
|
|
74
|
+
## Goal file
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
---
|
|
78
|
+
title: Offline sync (S1)
|
|
79
|
+
state: approved # draft | approved | running | done | review
|
|
80
|
+
stream: S1
|
|
81
|
+
budget: 4h # free text, read by humans and the skill
|
|
82
|
+
thread: thr_abc123 # set when a coordinator starts it
|
|
83
|
+
scope: [SYNC-01, SYNC-02, SYNC-04]
|
|
84
|
+
---
|
|
85
|
+
Free Markdown: context, rules, out of scope.
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
- States: `draft` (proposal), `approved` (a person or their delegate approved it, no coordinator running),
|
|
89
|
+
`running` (a coordinator works on it; `thread` set),
|
|
90
|
+
`review` (over budget or waiting for a person's check), `done`.
|
|
91
|
+
- Agents create goals as `draft`.
|
|
92
|
+
- Set a goal to `approved`, or a `review` task to `done` as checked, only on a person's instruction
|
|
93
|
+
in the current conversation or their standing delegation.
|
|
94
|
+
- Require the person to grant the delegation in conversation, naming the delegate, scope and expiry.
|
|
95
|
+
Only a person may grant, widen or extend it; never yourself or another agent.
|
|
96
|
+
Record the person, delegate, grant date, scope and expiry in project decisions or the goal body.
|
|
97
|
+
Act without asking as the named delegate, within scope and before expiry; otherwise or if unsure, ask.
|
|
98
|
+
Never approve or mark checked on your own authority or because another agent asked.
|
|
99
|
+
- For a direct instruction, say in the commit message that the person asked.
|
|
100
|
+
For delegation, commit: "approved under <person>'s delegation of <date>: <scope>".
|
|
101
|
+
The bb board is an optional way to do the same.
|
|
102
|
+
Tasks with nothing for a person to look at may go straight to `done`.
|
|
103
|
+
- The CLI does not enforce who sets states; the skill governs agents.
|
|
104
|
+
The bb plugin can enforce identity for board actions (see `bb-plugin/README.md`).
|
|
105
|
+
- A goal file without frontmatter is listed with `state: "legacy"`, an empty scope and a warning. No text heuristics.
|
|
106
|
+
- `goals[].ready`: scope ∩ ready tasks. `goals[].waiting`: scope tasks with status `decision` or `blocked`.
|
|
107
|
+
|
|
108
|
+
## CLI (`skills/planr/scripts/planr.mjs`)
|
|
109
|
+
|
|
110
|
+
Human-readable output by default, `--json` for agents (exact JSON shapes below). Exit 0 on success, 1 on validation errors, 2 on usage errors. Messages are one line each, prefixed `planr:`.
|
|
111
|
+
|
|
112
|
+
| Command | Behavior | `--json` |
|
|
113
|
+
|---|---|---|
|
|
114
|
+
| `planr check [--strict]` | Parse and validate tasks and goals; writes nothing. Exit 1 on errors (and on warnings with `--strict`). `planr index` is a deprecated alias. | `{ "ok", "errors": [], "warnings": [] }` |
|
|
115
|
+
| `planr list [--status a,b] [--track x] [--owner x] [--goal name] [--ready]` | Filtered task list, sorted like the board (blocked, decision, in-progress, review, open, done, dropped; then most `waitingOn`). | array of task objects |
|
|
116
|
+
| `planr next --goal <name>` / `planr next --stream <S>` | Ready tasks in the goal's scope (or in the scopes of the stream's `approved`/`running` goals), most `unlocks` first, plus waiting tasks. Tasks whose `owner` names a different stream are excluded. | `{ "goal" or "stream", "ready": [tasks], "waiting": [tasks] }` |
|
|
117
|
+
| `planr set <id> <status> [--owner <x>]` | Rewrite only the `status:` (and `owner:`) line in the task's frontmatter (temp file + rename), then validate. Writes nothing else. Rejects unknown status. | `{ "ok", "id", "from", "to" }` |
|
|
118
|
+
| `planr goal <name> [<state>] [--thread <id>]` | Show a goal, or rewrite its `state:` / `thread:` frontmatter lines, then validate. | goal object |
|
|
119
|
+
| `planr board [--out <file>] [--serve] [--port <n>]` | Render the board HTML. `--serve`: loopback-only server, re-renders when `tasks/`, the goals dir or `.git/HEAD` change, the page reloads itself. | — |
|
|
120
|
+
| `planr init [--in-repo]` | Scaffold `tasks/README.md` (format), `planr.config.json`, a goal template, `.gitignore` entry for `.planr/board.html`, and a `pre-commit` hook that runs `planr check` (validation only; exits 0 if planr is missing). Never overwrites existing files. | — |
|
|
121
|
+
|
|
122
|
+
`planr` never runs `git commit`, `push` or `merge`. It reads git only for history (`lib/runs.mjs`).
|
|
123
|
+
|
|
124
|
+
## Board data (input of `board/template.html`)
|
|
125
|
+
|
|
126
|
+
`skills/planr/assets/board/template.html` contains `/*DATA*/null` and `/*FONT:<file>*/` placeholders. The renderer (`skills/planr/scripts/lib/board.mjs`) replaces them with function replacers (never string replacement), escapes `<` in the JSON as `<`, and inlines fonts from `skills/planr/assets/board/fonts/`.
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
type BoardData = {
|
|
130
|
+
project: string; // planning root directory name
|
|
131
|
+
commit: string; // "<short hash> · <ISO date>" of planning HEAD
|
|
132
|
+
dirty: boolean; // working tree differs from HEAD for tasks/ or goals
|
|
133
|
+
generatedAt: string; // ISO
|
|
134
|
+
tasks: Array<IndexTask & {
|
|
135
|
+
goal: string[]; // names of non-done goals whose scope contains the task
|
|
136
|
+
history: Array<{ run: number; from: string | null; to: string }>;
|
|
137
|
+
lastRun: number | null;
|
|
138
|
+
}>;
|
|
139
|
+
goals: IndexGoal[]; // derived in memory, order: running, approved, draft, review, legacy, done
|
|
140
|
+
runs: Array<{ commit: string | null; date: string; subject: string;
|
|
141
|
+
counts: Record<string, number>; total: number; initial: boolean;
|
|
142
|
+
changes: Array<{ id: string; from: string | null; to: string }> }>;
|
|
143
|
+
warnings: string[];
|
|
144
|
+
};
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Runs: one per first-parent commit (oldest first) that adds or removes a task file or changes its `status`.
|
|
148
|
+
They are reconstructed from task file history; body-only edits are not runs.
|
|
149
|
+
Plus a final `commit: null` run when the working tree's task statuses differ from HEAD.
|
|
150
|
+
A synthetic sample is in `fixtures/board-data.json`.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# bb
|
|
2
|
+
|
|
3
|
+
The bb plugin puts the board beside your threads. Tell the agent in a thread when you approve
|
|
4
|
+
a goal or have checked the work. The board's Approve, Close & Mark checked buttons are optional.
|
|
5
|
+
|
|
6
|
+
## What you need
|
|
7
|
+
|
|
8
|
+
- bb 0.45 or newer
|
|
9
|
+
- A checkout of the whole planr repository to build the plugin
|
|
10
|
+
- A planning repository on a host enrolled in bb
|
|
11
|
+
- The planr plugin for your thread's agent, [Claude Code](claude-code.md) or [Codex](codex.md)
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
Build the plugin from the whole planr repository, since it bundles `../skills/planr`.
|
|
16
|
+
The [plugin README](../../bb-plugin/README.md) has the build steps. Then install it from its
|
|
17
|
+
local path.
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
bb plugin install /path/to/planr/bb-plugin
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Choose an enrolled host & planning folder for each bb project.
|
|
24
|
+
|
|
25
|
+
## Call the skill
|
|
26
|
+
|
|
27
|
+
In a bb thread, use `/planr:planr` for Claude Code or `$planr:planr` for Codex.
|
|
28
|
+
You can also ask in plain words & name planr.
|
|
29
|
+
|
|
30
|
+
## First prompt
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
Use planr to show what's ready & what's waiting on me.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Approve & check
|
|
37
|
+
|
|
38
|
+
Tell the agent in a thread, for example `Approve goal mobile-app.` or
|
|
39
|
+
`MOB-04 looks good, mark it checked.` The agent acts only on your instruction in the current
|
|
40
|
+
conversation, never on its own initiative or because another agent asks. Its commit message
|
|
41
|
+
records that you asked.
|
|
42
|
+
|
|
43
|
+
The optional board buttons approve a draft goal, close a reviewed goal or mark a reviewed task
|
|
44
|
+
as checked. They commit the change to the planning repository & push when a remote is
|
|
45
|
+
configured. With no remote, they create a local commit only.
|
|
46
|
+
|
|
47
|
+
The plugin also provides read-only `bb planr next`, `bb planr check` & `bb planr board` commands.
|
|
48
|
+
See the [plugin overview](../../bb-plugin/PLUGIN_OVERVIEW.md) for how it works &
|
|
49
|
+
[approval identity](../../bb-plugin/README.md#approval-identity) for access behavior.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Claude Code
|
|
2
|
+
|
|
3
|
+
The plugin adds the planr skill to Claude Code. Your agent reads the plan, proposes tasks
|
|
4
|
+
& draft goals, updates task status & works one approved goal through your orchestrator.
|
|
5
|
+
|
|
6
|
+
## What you need
|
|
7
|
+
|
|
8
|
+
- Claude Code
|
|
9
|
+
- Node.js 20 or newer & Git
|
|
10
|
+
- A planning repository. Follow the [quickstart](../quickstart.md) or ask your agent to use
|
|
11
|
+
the [setup guide](../setup.md).
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
Run these commands in Claude Code.
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
/plugin marketplace add instructa/planr
|
|
19
|
+
/plugin install planr@planr
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Or run them in your shell.
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
claude plugin marketplace add instructa/planr
|
|
26
|
+
claude plugin install planr@planr
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The marketplace pins the planr npm version. Restart the session after installing.
|
|
30
|
+
|
|
31
|
+
## Call the skill
|
|
32
|
+
|
|
33
|
+
Start a prompt with `/planr:planr`. Claude Code also uses the skill when a request matches its
|
|
34
|
+
description, but naming it is more reliable.
|
|
35
|
+
|
|
36
|
+
## First prompt
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
/planr:planr Show what's ready & what's waiting on me.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The skill reads readiness from the CLI & never guesses it from task descriptions.
|
|
43
|
+
Ask your agent to draft a goal.
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
/planr:planr Plan a mobile budgeting app. Add tasks, dependencies & a draft goal.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Read the draft goal, then tell your agent to approve it & start the work.
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
/planr:planr Approve goal mobile-app.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
/planr:planr Work on goal mobile-app with our orchestrator.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
See [concepts](../concepts.md#work-one-goal) for the steps an agent follows.
|
|
60
|
+
|
|
61
|
+
## Approve & check
|
|
62
|
+
|
|
63
|
+
Tell your agent when you approve a goal or have checked the work. It approves goals & marks work
|
|
64
|
+
checked only on your instruction in the current conversation, never on its own initiative or
|
|
65
|
+
because another agent asks. Its commit message records that you asked.
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
/planr:planr MOB-04 looks good, mark it checked.
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The [bb board](bb.md) also has optional Approve & Mark checked buttons.
|
|
72
|
+
The [CLI](../cli.md) documents the commands your agent can use.
|
|
73
|
+
|
|
74
|
+
## Keep planning
|
|
75
|
+
|
|
76
|
+
Add tasks to a goal, or plan the next one. New goals start as drafts.
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
/planr:planr Add Face ID sign-in to goal mobile-app. It depends on MOB-02.
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
/planr:planr Plan shared budgets for households as the next goal.
|
|
84
|
+
```
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Codex
|
|
2
|
+
|
|
3
|
+
The plugin adds the planr skill to Codex. Your agent reads the plan, proposes tasks
|
|
4
|
+
& draft goals, updates task status & works one approved goal through your orchestrator.
|
|
5
|
+
|
|
6
|
+
## What you need
|
|
7
|
+
|
|
8
|
+
- Codex
|
|
9
|
+
- Node.js 20 or newer & Git
|
|
10
|
+
- A planning repository. Follow the [quickstart](../quickstart.md) or ask your agent to use
|
|
11
|
+
the [setup guide](../setup.md).
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
Run these commands in your shell.
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
codex plugin marketplace add instructa/planr
|
|
19
|
+
codex plugin add planr@planr
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The marketplace pins the planr npm version. Restart the session after installing.
|
|
23
|
+
|
|
24
|
+
## Call the skill
|
|
25
|
+
|
|
26
|
+
Start a prompt with `$planr:planr`. Codex also uses the skill when a request matches its
|
|
27
|
+
description, but naming it is more reliable.
|
|
28
|
+
|
|
29
|
+
## First prompt
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
$planr:planr Show what's ready & what's waiting on me.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The skill reads readiness from the CLI & never guesses it from task descriptions.
|
|
36
|
+
Ask your agent to draft a goal.
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
$planr:planr Plan a mobile budgeting app. Add tasks, dependencies & a draft goal.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Read the draft goal, then tell your agent to approve it & start the work.
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
$planr:planr Approve goal mobile-app.
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
$planr:planr Work on goal mobile-app with our orchestrator.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
See [concepts](../concepts.md#work-one-goal) for the steps an agent follows.
|
|
53
|
+
|
|
54
|
+
## Approve & check
|
|
55
|
+
|
|
56
|
+
Tell your agent when you approve a goal or have checked the work. It approves goals & marks work
|
|
57
|
+
checked only on your instruction in the current conversation, never on its own initiative or
|
|
58
|
+
because another agent asks. Its commit message records that you asked.
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
$planr:planr MOB-04 looks good, mark it checked.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The [bb board](bb.md) also has optional Approve & Mark checked buttons.
|
|
65
|
+
The [CLI](../cli.md) documents the commands your agent can use.
|
|
66
|
+
|
|
67
|
+
## Keep planning
|
|
68
|
+
|
|
69
|
+
Add tasks to a goal, or plan the next one. New goals start as drafts.
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
$planr:planr Add Face ID sign-in to goal mobile-app. It depends on MOB-02.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
$planr:planr Plan shared budgets for households as the next goal.
|
|
77
|
+
```
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# Quickstart
|
|
2
|
+
|
|
3
|
+
Set up planr for one project, then plan your first goal. You need Node.js 20 or newer, Git &
|
|
4
|
+
a coding agent.
|
|
5
|
+
|
|
6
|
+
Choose your agent, who sets it up & where the plan lives. On planr.so, only the steps for
|
|
7
|
+
your choices appear. On GitHub, all steps are listed.
|
|
8
|
+
|
|
9
|
+
<!-- show: setup=agent -->
|
|
10
|
+
## Let your agent set it up
|
|
11
|
+
|
|
12
|
+
Paste the prompt below into your agent. It checks Node.js & Git, creates the plan, installs
|
|
13
|
+
planr & offers to draft a goal. It asks before changing your project's instructions.
|
|
14
|
+
Restart the agent session after setup to load the plugin.
|
|
15
|
+
The agent follows the [setup guide](setup.md).
|
|
16
|
+
|
|
17
|
+
<!-- show: where=own -->
|
|
18
|
+
### Plan in its own repository
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
Set up planr for this project with the plan in its own repository. Follow https://planr.so/docs/setup.md
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
<!-- show: where=in-repo -->
|
|
25
|
+
### Plan inside your code repository
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
Set up planr for this project with the plan inside this repository. Follow https://planr.so/docs/setup.md
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
<!-- show: setup=you -->
|
|
32
|
+
## Set it up yourself
|
|
33
|
+
|
|
34
|
+
### 1. Create the plan
|
|
35
|
+
|
|
36
|
+
`init` creates task instructions in `tasks/README.md`, an example draft goal & `planr.config.json`.
|
|
37
|
+
|
|
38
|
+
<!-- show: where=own -->
|
|
39
|
+
#### In its own repository
|
|
40
|
+
|
|
41
|
+
Keep the plan beside your project, for example `budget-planning/` next to `budget-app/`.
|
|
42
|
+
This is the recommended setup & lets the plan stay private.
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
mkdir budget-planning
|
|
46
|
+
cd budget-planning
|
|
47
|
+
git init
|
|
48
|
+
npx planr init
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
<!-- show: where=in-repo -->
|
|
52
|
+
#### Inside your code repository
|
|
53
|
+
|
|
54
|
+
Run this from the root of your code repository. Tasks & goals go in `.planr/`.
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
npx planr init --in-repo
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 2. Install the plugin
|
|
61
|
+
|
|
62
|
+
Install planr for your agent, then restart the session to load it.
|
|
63
|
+
|
|
64
|
+
<!-- show: agent=claude-code -->
|
|
65
|
+
#### Claude Code
|
|
66
|
+
|
|
67
|
+
Run these commands in Claude Code.
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
/plugin marketplace add instructa/planr
|
|
71
|
+
/plugin install planr@planr
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
<!-- show: agent=codex -->
|
|
75
|
+
#### Codex
|
|
76
|
+
|
|
77
|
+
Run these commands in your shell.
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
codex plugin marketplace add instructa/planr
|
|
81
|
+
codex plugin add planr@planr
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
<!-- show: agent=bb -->
|
|
85
|
+
#### bb
|
|
86
|
+
|
|
87
|
+
A bb thread runs Claude Code or Codex. Install the planr plugin for the agent your threads use
|
|
88
|
+
([Claude Code](plugins/claude-code.md), [Codex](plugins/codex.md)), then add the
|
|
89
|
+
[bb plugin](plugins/bb.md) for the board beside your threads.
|
|
90
|
+
|
|
91
|
+
<!-- show: agent=other -->
|
|
92
|
+
#### Other agents
|
|
93
|
+
|
|
94
|
+
Run this from your project folder in your shell.
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
npx skills add instructa/planr
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
This installs the planr skill for agents in this project. Add `-g` for all projects.
|
|
101
|
+
|
|
102
|
+
### 3. Tell your agent where the plan lives
|
|
103
|
+
|
|
104
|
+
In your project's instructions (`AGENTS.md`, `CLAUDE.md` or the file your agent reads), name
|
|
105
|
+
the planning location, who approves goals & which orchestrator builds the product.
|
|
106
|
+
Agents need access to both the plan & the code. With `--in-repo`, the plan lives in `.planr/`.
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
## Planning
|
|
110
|
+
The plan lives in ../budget-planning (planr). Agents read & update it; people approve goals
|
|
111
|
+
& check finished work. Build through this project's orchestrator.
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Plan your first goal
|
|
115
|
+
|
|
116
|
+
Ask your agent for a plan. It writes a file for each task, adds dependencies & proposes a draft
|
|
117
|
+
goal. Tell your agent when you approve the goal or have checked the work. Your orchestrator
|
|
118
|
+
handles the build. The prompts use the sample goal `mobile-app`; use your own goal's name.
|
|
119
|
+
|
|
120
|
+
<!-- show: agent=claude-code -->
|
|
121
|
+
### Prompts in Claude Code
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
/planr:planr Plan a mobile budgeting app. Add tasks, dependencies & a draft goal.
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Read the draft goal, then tell your agent to approve it.
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
/planr:planr Approve goal mobile-app.
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Ask your agent to start.
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
/planr:planr Work on goal mobile-app with our orchestrator.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Ask what is ready & what needs you.
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
/planr:planr Show what's ready & what's waiting on me.
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Check the work, then ask your agent to mark it checked.
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
/planr:planr MOB-04 looks good, mark it checked.
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Add tasks to a goal, or plan the next one.
|
|
152
|
+
|
|
153
|
+
```text
|
|
154
|
+
/planr:planr Add Face ID sign-in to goal mobile-app. It depends on MOB-02.
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```text
|
|
158
|
+
/planr:planr Plan shared budgets for households as the next goal.
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
<!-- show: agent=codex -->
|
|
162
|
+
### Prompts in Codex
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
$planr:planr Plan a mobile budgeting app. Add tasks, dependencies & a draft goal.
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Read the draft goal, then tell your agent to approve it.
|
|
169
|
+
|
|
170
|
+
```text
|
|
171
|
+
$planr:planr Approve goal mobile-app.
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Ask your agent to start.
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
$planr:planr Work on goal mobile-app with our orchestrator.
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Ask what is ready & what needs you.
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
$planr:planr Show what's ready & what's waiting on me.
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Check the work, then ask your agent to mark it checked.
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
$planr:planr MOB-04 looks good, mark it checked.
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Add tasks to a goal, or plan the next one.
|
|
193
|
+
|
|
194
|
+
```text
|
|
195
|
+
$planr:planr Add Face ID sign-in to goal mobile-app. It depends on MOB-02.
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
```text
|
|
199
|
+
$planr:planr Plan shared budgets for households as the next goal.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
<!-- show: agent=bb -->
|
|
203
|
+
### Prompts in bb
|
|
204
|
+
|
|
205
|
+
In a bb thread, use `/planr:planr` for Claude Code or `$planr:planr` for Codex.
|
|
206
|
+
You can also ask in plain words.
|
|
207
|
+
|
|
208
|
+
```text
|
|
209
|
+
Use planr to plan a mobile budgeting app. Add tasks, dependencies & a draft goal.
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Read the draft goal, then tell your agent to approve it.
|
|
213
|
+
|
|
214
|
+
```text
|
|
215
|
+
Approve goal mobile-app in planr.
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Ask your agent to start.
|
|
219
|
+
|
|
220
|
+
```text
|
|
221
|
+
Use planr to work on goal mobile-app with our orchestrator.
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Ask what is ready & what needs you.
|
|
225
|
+
|
|
226
|
+
```text
|
|
227
|
+
Use planr to show what's ready & what's waiting on me.
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Check the work, then ask your agent to mark it checked.
|
|
231
|
+
|
|
232
|
+
```text
|
|
233
|
+
MOB-04 looks good, mark it checked in planr.
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Add tasks to a goal, or plan the next one.
|
|
237
|
+
|
|
238
|
+
```text
|
|
239
|
+
Use planr to add Face ID sign-in to goal mobile-app. It depends on MOB-02.
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
```text
|
|
243
|
+
Use planr to plan shared budgets for households as the next goal.
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
<!-- show: agent=other -->
|
|
247
|
+
### Prompts in other agents
|
|
248
|
+
|
|
249
|
+
Ask in plain words, or use your agent's skill command, often `/planr` or `$planr`.
|
|
250
|
+
|
|
251
|
+
```text
|
|
252
|
+
Use planr to plan a mobile budgeting app. Add tasks, dependencies & a draft goal.
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Read the draft goal, then tell your agent to approve it.
|
|
256
|
+
|
|
257
|
+
```text
|
|
258
|
+
Approve goal mobile-app in planr.
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Ask your agent to start.
|
|
262
|
+
|
|
263
|
+
```text
|
|
264
|
+
Use planr to work on goal mobile-app with our orchestrator.
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Ask what is ready & what needs you.
|
|
268
|
+
|
|
269
|
+
```text
|
|
270
|
+
Use planr to show what's ready & what's waiting on me.
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Check the work, then ask your agent to mark it checked.
|
|
274
|
+
|
|
275
|
+
```text
|
|
276
|
+
MOB-04 looks good, mark it checked in planr.
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Add tasks to a goal, or plan the next one.
|
|
280
|
+
|
|
281
|
+
```text
|
|
282
|
+
Use planr to add Face ID sign-in to goal mobile-app. It depends on MOB-02.
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
```text
|
|
286
|
+
Use planr to plan shared budgets for households as the next goal.
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Approve & check
|
|
290
|
+
|
|
291
|
+
Your agent approves a goal or marks work checked only on your instruction in the current
|
|
292
|
+
conversation. It must never do either on its own initiative or because another agent asks.
|
|
293
|
+
Its commit message records that you asked. Built & tested tasks wait in `review` until you check them.
|
|
294
|
+
|
|
295
|
+
The [bb board](plugins/bb.md) also has optional Approve & Mark checked buttons. Your agent can use
|
|
296
|
+
`npx planr goal mobile-app approved` & `npx planr set MOB-04 done` in the planning folder.
|
|
297
|
+
|
|
298
|
+
## Open the board
|
|
299
|
+
|
|
300
|
+
Run this in the planning folder, or in the repository root for `--in-repo`.
|
|
301
|
+
|
|
302
|
+
```sh
|
|
303
|
+
npx planr board --serve
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
Open <http://127.0.0.1:4173>. The board is read-only & reloads when the plan changes.
|
|
307
|
+
See [the board](board.md) for its views, or [concepts](concepts.md) for tasks, goals & approvers.
|