goalbuddy 0.3.1 → 0.3.5
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 +58 -180
- package/RELEASE-0.3.5.md +324 -0
- package/goalbuddy/SKILL.md +8 -2
- package/goalbuddy/agents/goal_judge.toml +29 -17
- package/goalbuddy/agents/goal_scout.toml +34 -14
- package/goalbuddy/agents/goal_worker.toml +32 -15
- package/goalbuddy/extend/local-goal-board/README.md +8 -4
- package/goalbuddy/extend/local-goal-board/examples/subgoal-parent/goal.md +3 -0
- package/goalbuddy/extend/local-goal-board/examples/subgoal-parent/notes/.gitkeep +1 -0
- package/goalbuddy/extend/local-goal-board/examples/subgoal-parent/state.yaml +60 -0
- package/goalbuddy/extend/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/goal.md +3 -0
- package/goalbuddy/extend/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/notes/.gitkeep +1 -0
- package/goalbuddy/extend/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/state.yaml +52 -0
- package/goalbuddy/extend/local-goal-board/extension.yaml +6 -4
- package/goalbuddy/extend/local-goal-board/scripts/lib/goal-board.mjs +940 -24
- package/goalbuddy/extend/local-goal-board/scripts/local-goal-board.mjs +389 -54
- package/goalbuddy/extend/local-goal-board/test/local-goal-board.test.mjs +420 -4
- package/goalbuddy/scripts/check-goal-state.mjs +116 -6
- package/goalbuddy/scripts/parallel-plan.mjs +191 -0
- package/goalbuddy/scripts/render-task-prompt.mjs +248 -0
- package/goalbuddy/templates/agents.md +2 -2
- package/goalbuddy/templates/state.yaml +8 -0
- package/internal/assets/goalbuddy-v0.3.0-release.png +0 -0
- package/internal/assets/goalbuddy-v0.3.5-release.png +0 -0
- package/internal/cli/goal-maker.mjs +70 -2
- package/package.json +3 -2
- package/plugins/goalbuddy/.claude-plugin/plugin.json +2 -2
- package/plugins/goalbuddy/.codex-plugin/plugin.json +4 -4
- package/plugins/goalbuddy/README.md +5 -3
- package/plugins/goalbuddy/agents/goal-judge.md +31 -16
- package/plugins/goalbuddy/agents/goal-scout.md +38 -13
- package/plugins/goalbuddy/agents/goal-worker.md +35 -14
- package/plugins/goalbuddy/skills/goalbuddy/SKILL.md +8 -2
- package/plugins/goalbuddy/skills/goalbuddy/agents/goal_judge.toml +29 -17
- package/plugins/goalbuddy/skills/goalbuddy/agents/goal_scout.toml +34 -14
- package/plugins/goalbuddy/skills/goalbuddy/agents/goal_worker.toml +32 -15
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/README.md +8 -4
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/examples/subgoal-parent/goal.md +3 -0
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/examples/subgoal-parent/notes/.gitkeep +1 -0
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/examples/subgoal-parent/state.yaml +60 -0
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/goal.md +3 -0
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/notes/.gitkeep +1 -0
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/state.yaml +52 -0
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/extension.yaml +6 -4
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/scripts/lib/goal-board.mjs +940 -24
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/scripts/local-goal-board.mjs +389 -54
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/test/local-goal-board.test.mjs +420 -4
- package/plugins/goalbuddy/skills/goalbuddy/scripts/check-goal-state.mjs +116 -6
- package/plugins/goalbuddy/skills/goalbuddy/scripts/parallel-plan.mjs +191 -0
- package/plugins/goalbuddy/skills/goalbuddy/scripts/render-task-prompt.mjs +248 -0
- package/plugins/goalbuddy/skills/goalbuddy/templates/agents.md +2 -2
- package/plugins/goalbuddy/skills/goalbuddy/templates/state.yaml +8 -0
package/README.md
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<a href="https://goalbuddy.dev">
|
|
5
|
-
<img src="internal/assets/goalbuddy-
|
|
5
|
+
<img src="internal/assets/goalbuddy-v0.3.5-release.png" alt="GoalBuddy v0.3.5 release: Subgoals, parallel agents, and dark mode." width="100%">
|
|
6
6
|
</a>
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<strong>A
|
|
10
|
+
<strong>A simple operating loop for long <code>/goal</code> runs.</strong>
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
@@ -16,243 +16,121 @@
|
|
|
16
16
|
<a href="https://goalbuddy.dev"><img alt="goalbuddy.dev" src="https://img.shields.io/badge/site-goalbuddy.dev-684cff?style=flat-square"></a>
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
|
-
GoalBuddy
|
|
19
|
+
GoalBuddy helps Codex and Claude Code stay oriented during long coding tasks, especially when the work branches into subgoals, parallel agents, and long-running verification.
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
npx goalbuddy # installs for Codex and Claude Code
|
|
23
|
-
npx goalbuddy --target codex # installs for Codex only
|
|
24
|
-
npx goalbuddy --target claude # installs for Claude Code only
|
|
25
|
-
```
|
|
21
|
+
It gives `/goal` a small local workspace: a charter, a board, notes, receipts, and a clear next task. The work stays in your repo, so a run can pause, resume, verify, and keep going without re-inventing the plan every turn.
|
|
26
22
|
|
|
27
|
-
|
|
23
|
+
## Start Here
|
|
24
|
+
|
|
25
|
+
Run one command:
|
|
28
26
|
|
|
29
27
|
```bash
|
|
30
|
-
|
|
28
|
+
npx goalbuddy
|
|
31
29
|
```
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
Restart Codex or Claude Code.
|
|
32
|
+
|
|
33
|
+
Then prepare a goal:
|
|
34
34
|
|
|
35
35
|
```text
|
|
36
|
-
$goal-prep
|
|
37
|
-
/goal-prep # in Claude Code
|
|
36
|
+
$goal-prep
|
|
38
37
|
```
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
## Why GoalBuddy Exists
|
|
43
|
-
|
|
44
|
-
Long-running goals in Codex and Claude Code drift. A request like "improve this project" can turn into unbounded edits, stale verification, and premature completion claims.
|
|
45
|
-
|
|
46
|
-
GoalBuddy gives your AI coding agent a durable loop:
|
|
39
|
+
In Claude Code, use:
|
|
47
40
|
|
|
48
41
|
```text
|
|
49
|
-
|
|
42
|
+
/goal-prep
|
|
50
43
|
```
|
|
51
44
|
|
|
52
|
-
|
|
45
|
+
Goal Prep creates the board and prints the exact `/goal` command to run next. That is the whole path.
|
|
53
46
|
|
|
54
|
-
## What
|
|
47
|
+
## What It Creates
|
|
55
48
|
|
|
56
49
|
```text
|
|
57
|
-
docs/goals/<
|
|
50
|
+
docs/goals/<your-goal>/
|
|
58
51
|
goal.md
|
|
59
52
|
state.yaml
|
|
60
53
|
notes/
|
|
54
|
+
subgoals/ # optional depth-1 child boards
|
|
61
55
|
```
|
|
62
56
|
|
|
63
|
-
|
|
64
|
-
- `state.yaml` is the board truth: task status, active task, receipts, and verification.
|
|
65
|
-
- `notes/` holds longer Scout, Judge, or PM findings when a task receipt would be too large.
|
|
57
|
+
`goal.md` says what you want.
|
|
66
58
|
|
|
67
|
-
|
|
59
|
+
`state.yaml` tracks the board.
|
|
68
60
|
|
|
69
|
-
|
|
61
|
+
`notes/` keeps longer findings out of the main thread.
|
|
70
62
|
|
|
71
|
-
|
|
72
|
-
- **Board**: tracks tasks, status, receipts, and verification freshness.
|
|
73
|
-
- **Task**: exactly one active Scout, Judge, Worker, or PM task.
|
|
74
|
-
- **Receipt**: compact proof for every completed, blocked, or escalated task.
|
|
63
|
+
`subgoals/` holds optional child boards when one parent task needs a bounded branch of work.
|
|
75
64
|
|
|
76
|
-
|
|
65
|
+
## How It Thinks
|
|
77
66
|
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
npx goalbuddy agents --target claude # Claude Code markdown subagents
|
|
67
|
+
```text
|
|
68
|
+
rough idea -> goal prep -> /goal -> scout -> judge -> worker -> receipt -> verify
|
|
81
69
|
```
|
|
82
70
|
|
|
83
|
-
|
|
84
|
-
- **Judge** resolves ambiguity, scope, risk, task selection, and completion claims.
|
|
85
|
-
- **Worker** performs one bounded implementation or recovery slice with explicit files and checks.
|
|
71
|
+
Scout maps the repo.
|
|
86
72
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
npx goalbuddy
|
|
91
|
-
```
|
|
73
|
+
Judge chooses the next bounded slice.
|
|
92
74
|
|
|
93
|
-
|
|
75
|
+
Worker changes code and leaves a receipt.
|
|
94
76
|
|
|
95
|
-
|
|
77
|
+
`/goal` keeps the loop honest until the original goal is actually done.
|
|
96
78
|
|
|
97
|
-
|
|
98
|
-
npm i -g goalbuddy
|
|
99
|
-
goalbuddy
|
|
100
|
-
```
|
|
79
|
+
## Subgoals, Parallel Agents, and Dark Mode
|
|
101
80
|
|
|
102
|
-
|
|
81
|
+
GoalBuddy keeps the model small:
|
|
103
82
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
83
|
+
- `state.yaml` is the source of truth.
|
|
84
|
+
- A board is a view of one `state.yaml`.
|
|
85
|
+
- The local hub is a switchboard for many boards.
|
|
86
|
+
- A subgoal is one depth-1 `state.yaml` linked from a parent task.
|
|
87
|
+
- Settings are viewer preferences, not workflow state.
|
|
109
88
|
|
|
110
|
-
|
|
89
|
+
Use subgoals for bounded child work that belongs to a parent task. Use multiple local boards when parallel agents or separate goal runs are active at the same time. Keep the board open in light or dark mode while the work moves.
|
|
111
90
|
|
|
112
|
-
|
|
91
|
+
## Execution Quality
|
|
113
92
|
|
|
114
|
-
|
|
115
|
-
npx goalbuddy --target codex
|
|
116
|
-
npx goalbuddy --target claude
|
|
117
|
-
```
|
|
93
|
+
GoalBuddy can prepare safe parallel work; it does not run a parallel org chart.
|
|
118
94
|
|
|
119
|
-
|
|
95
|
+
Use `goalbuddy prompt docs/goals/<slug>` to render a compact prompt for the active task without dumping the whole state file. Use `goalbuddy parallel-plan docs/goals/<slug>` to inspect read-only or disjoint write-scope work that can be handed to native Codex or Claude Code agent flows. The command reports recommendations only; it does not mutate state or spawn agents.
|
|
120
96
|
|
|
121
|
-
|
|
122
|
-
/goal-prep
|
|
123
|
-
```
|
|
97
|
+
## Update
|
|
124
98
|
|
|
125
|
-
|
|
99
|
+
When a new GoalBuddy version ships:
|
|
126
100
|
|
|
127
101
|
```bash
|
|
128
|
-
npx goalbuddy
|
|
102
|
+
npx goalbuddy update
|
|
129
103
|
```
|
|
130
104
|
|
|
131
|
-
|
|
105
|
+
That updates both Codex and Claude Code.
|
|
132
106
|
|
|
133
|
-
|
|
134
|
-
npx goalbuddy --codex-home /path/to/.codex --claude-home /path/to/.claude
|
|
135
|
-
npx goalbuddy --target codex --codex-home /path/to/.codex
|
|
136
|
-
npx goalbuddy --target claude --claude-home /path/to/.claude
|
|
137
|
-
```
|
|
107
|
+
## Live Boards
|
|
138
108
|
|
|
139
|
-
|
|
109
|
+
GoalBuddy can open a local board while the work is running, so you can see the plan, active task, receipts, subgoals, and verification status without digging through the chat.
|
|
140
110
|
|
|
141
|
-
|
|
111
|
+
Multiple local boards reuse one readable `goalbuddy.localhost` hub with an in-header board switcher. The viewer also supports dark mode, compact mode, completed-task collapse, active-work motion, and reduced-motion handling.
|
|
142
112
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
```text
|
|
146
|
-
/goal Follow docs/goals/<slug>/goal.md.
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
Check board health at any time:
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
# Codex
|
|
153
|
-
node ~/.codex/skills/goalbuddy/scripts/check-goal-state.mjs docs/goals/<slug>/state.yaml
|
|
154
|
-
# Claude Code
|
|
155
|
-
node ~/.claude/skills/goalbuddy/scripts/check-goal-state.mjs docs/goals/<slug>/state.yaml
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
For a broad prompt like "Improve my project," the first active task should usually be Scout, not Worker:
|
|
159
|
-
|
|
160
|
-
```yaml
|
|
161
|
-
tasks:
|
|
162
|
-
- id: T001
|
|
163
|
-
type: scout
|
|
164
|
-
assignee: Scout
|
|
165
|
-
status: active
|
|
166
|
-
objective: "Map repo health and identify improvement candidates."
|
|
167
|
-
receipt: null
|
|
168
|
-
- id: T002
|
|
169
|
-
type: judge
|
|
170
|
-
assignee: Judge
|
|
171
|
-
status: queued
|
|
172
|
-
objective: "Choose the next safe implementation task."
|
|
173
|
-
receipt: null
|
|
174
|
-
- id: T003
|
|
175
|
-
type: worker
|
|
176
|
-
assignee: Worker
|
|
177
|
-
status: queued
|
|
178
|
-
objective: "Execute the safe implementation task selected by Judge."
|
|
179
|
-
allowed_files: []
|
|
180
|
-
verify: []
|
|
181
|
-
stop_if:
|
|
182
|
-
- "Need files outside allowed_files."
|
|
183
|
-
- "Verification fails twice."
|
|
184
|
-
receipt: null
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## Visual Boards
|
|
188
|
-
|
|
189
|
-
GoalBuddy can show progress as the goal runs. `goal-prep` can open a local live board inside your AI coding agent before the task list is finished, or prepare a GitHub Projects sync when stakeholders need an external board.
|
|
113
|
+
See [GoalBuddy 0.3.5: Subgoals, Parallel Agents, and Dark Mode](RELEASE-0.3.5.md) for the release notes.
|
|
190
114
|
|
|
191
115
|
<p align="center">
|
|
192
116
|
<img src="internal/assets/goalbuddy-live-board.jpg" alt="GoalBuddy local live board open next to Codex while Scout, Judge, and Worker tasks populate." width="100%">
|
|
193
117
|
</p>
|
|
194
118
|
|
|
195
|
-
##
|
|
196
|
-
|
|
197
|
-
The npm package is the stable core. Local Board and GitHub Projects are bundled into the installed GoalBuddy skill so `goal-prep` can offer a visual board immediately. Other optional extensions live under `extend/` and are discovered from the GitHub-hosted `extend/catalog.json`, so users do not need a new npm release for every integration.
|
|
198
|
-
|
|
199
|
-
```bash
|
|
200
|
-
npx goalbuddy board docs/goals/<slug>
|
|
201
|
-
npx goalbuddy extend github-projects
|
|
202
|
-
npx goalbuddy extend
|
|
203
|
-
npx goalbuddy extend github-pr-workflow
|
|
204
|
-
npx goalbuddy extend install github-pr-workflow --dry-run
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
`goalbuddy extend` shows available extensions and detail commands. `goalbuddy extend <id>` shows local install state, activation state, credential requirements, safe-by-default status, and missing environment variables.
|
|
208
|
-
|
|
209
|
-
Current catalog examples include:
|
|
210
|
-
|
|
211
|
-
- `github-pr-workflow`: prepares receipt-aligned commit and PR handoff text.
|
|
212
|
-
- `github-projects`: mirrors GoalBuddy boards into GitHub Projects.
|
|
213
|
-
- `local-goal-board`: serves a local live board that updates from `state.yaml` and `notes/`.
|
|
214
|
-
- `ai-diff-risk-review`: summarizes risk in the current diff.
|
|
215
|
-
- `ci-failure-triage`: maps failing CI back to likely causes and next tasks.
|
|
216
|
-
- `docs-drift-audit`: checks whether docs still match implementation.
|
|
217
|
-
- `codebase-onboarding-map`: creates a concise repo map from files and conventions.
|
|
218
|
-
- `release-readiness`: checks whether a goal is ready to publish.
|
|
219
|
-
|
|
220
|
-
Extensions can publish, report, intake, or add role guidance. They are not board truth. `state.yaml` remains authoritative.
|
|
221
|
-
|
|
222
|
-
## Compatibility Window
|
|
223
|
-
|
|
224
|
-
GoalBuddy was previously published as `goal-maker`. During the migration window, `npx goal-maker` remains available as a compatibility alias and prints the new command:
|
|
225
|
-
|
|
226
|
-
```bash
|
|
227
|
-
npx goalbuddy
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
Machine-readable commands such as `npx goal-maker install --json` keep JSON output clean so existing automation can migrate safely.
|
|
231
|
-
|
|
232
|
-
Release automation for future npm publishes is documented in [RELEASE.md](RELEASE.md).
|
|
233
|
-
|
|
234
|
-
## Examples
|
|
235
|
-
|
|
236
|
-
- `examples/improve-goal-maker/`: a small completed reliability run.
|
|
237
|
-
- `examples/extend-catalog-workflow/`: a larger run from product framing through implementation and cleanup.
|
|
238
|
-
- `examples/github-pr-workflow-extension/pr-handoff.md`: an extension-generated PR handoff artifact.
|
|
119
|
+
## Good For
|
|
239
120
|
|
|
240
|
-
|
|
121
|
+
- broad project improvements
|
|
122
|
+
- release prep
|
|
123
|
+
- bug hunts that need evidence
|
|
124
|
+
- refactors with verification steps
|
|
125
|
+
- anything too large for one prompt
|
|
241
126
|
|
|
242
|
-
|
|
243
|
-
- `goalbuddy/agents/`: Scout, Judge, and Worker agent definitions (Codex TOML; Claude Code markdown lives under `plugins/goalbuddy/agents/`)
|
|
244
|
-
- `goalbuddy/templates/`: `goal.md`, `state.yaml`, and `note.md`
|
|
245
|
-
- `goalbuddy/scripts/check-goal-state.mjs`: v2 board checker
|
|
246
|
-
- `internal/cli/goal-maker.mjs`: npm installer CLI for Codex and Claude Code
|
|
247
|
-
- `plugins/goalbuddy/`: Codex plugin (`.codex-plugin/`) and Claude Code plugin (`.claude-plugin/`) scaffolds
|
|
248
|
-
- `extend/` and `extend/catalog.json`: GitHub-hosted extension surface
|
|
249
|
-
- `examples/`: completed sample runs
|
|
127
|
+
## For This Repo
|
|
250
128
|
|
|
251
|
-
|
|
129
|
+
GoalBuddy is MIT licensed and published on npm.
|
|
252
130
|
|
|
253
|
-
|
|
131
|
+
The implementation lives in this repo, but the happy path is intentionally tiny: install it, run Goal Prep, then let `/goal` work from the generated files.
|
|
254
132
|
|
|
255
|
-
|
|
133
|
+
For release process details, see [RELEASE.md](RELEASE.md).
|
|
256
134
|
|
|
257
135
|
## Star History
|
|
258
136
|
|
package/RELEASE-0.3.5.md
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
# GoalBuddy 0.3.5: Subgoals, Parallel Agents, and Dark Mode
|
|
2
|
+
|
|
3
|
+
Release date: 2026-05-12
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
This is the release where GoalBuddy starts feeling less like a single board and more like a calm local workspace for serious agent work.
|
|
8
|
+
|
|
9
|
+
0.3.5 adds three big things:
|
|
10
|
+
|
|
11
|
+
- **Subgoals**: depth-1 child boards for branching work.
|
|
12
|
+
- **Parallel agents**: safe, explicit surfaces for parallel Scout, Judge, and bounded Worker handoffs.
|
|
13
|
+
- **Dark mode**: a cleaner local board that can stay open all day without punishing your eyes.
|
|
14
|
+
|
|
15
|
+
Under the hood, this release also hardens GoalBuddy's execution model: stricter agent contracts, deterministic task prompts, conservative parallel planning, stronger checker rules, and safer child-board rendering.
|
|
16
|
+
|
|
17
|
+
Update with:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx goalbuddy update
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## The Headline
|
|
24
|
+
|
|
25
|
+
GoalBuddy still has one simple job: keep long `/goal` runs oriented until the real outcome is done.
|
|
26
|
+
|
|
27
|
+
0.3.5 makes that loop much easier to run when the work branches, when more than one agent is helping, or when you want a live board open beside Codex or Claude Code.
|
|
28
|
+
|
|
29
|
+
The model stays intentionally small:
|
|
30
|
+
|
|
31
|
+
- `goal.md` is the charter.
|
|
32
|
+
- `state.yaml` is the ledger.
|
|
33
|
+
- A board is a view of one `state.yaml`.
|
|
34
|
+
- A subgoal is one depth-1 child `state.yaml` linked from a parent task.
|
|
35
|
+
- The local hub is navigation, not workflow truth.
|
|
36
|
+
- Viewer settings are preferences, not state.
|
|
37
|
+
|
|
38
|
+
## Subgoals
|
|
39
|
+
|
|
40
|
+
Subgoals give GoalBuddy a clean way to branch without turning into project-management software.
|
|
41
|
+
|
|
42
|
+
A parent task can now link to a child board under `subgoals/`:
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
subgoal:
|
|
46
|
+
status: active
|
|
47
|
+
path: subgoals/T004-board-view/state.yaml
|
|
48
|
+
owner: Worker
|
|
49
|
+
created_from: T004
|
|
50
|
+
depth: 1
|
|
51
|
+
rollup_receipt: null
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The local board renders that child board inside the parent task detail, so you can open one task and see the focused child workflow underneath it.
|
|
55
|
+
|
|
56
|
+
What this is good for:
|
|
57
|
+
|
|
58
|
+
- a parent task that needs a focused implementation branch
|
|
59
|
+
- a verification slice that deserves its own mini-board
|
|
60
|
+
- a Scout/Judge/Worker path that should stay bounded
|
|
61
|
+
- parallel work that needs a visible surface without losing the parent context
|
|
62
|
+
|
|
63
|
+
What it is not:
|
|
64
|
+
|
|
65
|
+
- recursive planning
|
|
66
|
+
- nested subgoals
|
|
67
|
+
- a separate project hierarchy
|
|
68
|
+
- a new source of truth
|
|
69
|
+
|
|
70
|
+
One parent task can have one depth-1 child board. That is the whole trick.
|
|
71
|
+
|
|
72
|
+
## Parallel Agents
|
|
73
|
+
|
|
74
|
+
GoalBuddy 0.3.5 is parallel-agent-ready, but deliberately not an automatic scheduler.
|
|
75
|
+
|
|
76
|
+
That distinction matters.
|
|
77
|
+
|
|
78
|
+
GoalBuddy now helps you prepare safe parallel work surfaces:
|
|
79
|
+
|
|
80
|
+
- Scouts are read-only and safe to run in parallel by default.
|
|
81
|
+
- Judges are read-only and safe on separate board decisions.
|
|
82
|
+
- Workers are only safe when they are on separate boards or have provably disjoint `allowed_files`.
|
|
83
|
+
- Ambiguous Worker write scopes fail closed.
|
|
84
|
+
|
|
85
|
+
Use the new planner:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
goalbuddy parallel-plan docs/goals/<slug>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
It reports active tasks across the parent board and linked child boards:
|
|
92
|
+
|
|
93
|
+
- board path
|
|
94
|
+
- task id
|
|
95
|
+
- role
|
|
96
|
+
- recommended agent
|
|
97
|
+
- reasoning hint
|
|
98
|
+
- whether it is safe to parallelize
|
|
99
|
+
- why
|
|
100
|
+
- the exact prompt-render command
|
|
101
|
+
|
|
102
|
+
It does not mutate state. It does not spawn agents. It does not pretend overlap is safe.
|
|
103
|
+
|
|
104
|
+
That keeps GoalBuddy in the sweet spot: it makes parallel execution easier to see and safer to hand off, while native Codex or Claude Code agent flows still do the actual dispatch.
|
|
105
|
+
|
|
106
|
+
## Dark Mode
|
|
107
|
+
|
|
108
|
+
The local board now has real dark mode.
|
|
109
|
+
|
|
110
|
+
Not "the background changed and half the text disappeared" dark mode. The board, task cards, modals, settings, detail sections, receipt text, and embedded child boards all get readable dark styling.
|
|
111
|
+
|
|
112
|
+
The board also adds global viewer settings:
|
|
113
|
+
|
|
114
|
+
- Theme: system, light, dark
|
|
115
|
+
- Density: comfortable, compact
|
|
116
|
+
- Completed column: show, collapse
|
|
117
|
+
- Open boards: last viewed, newest
|
|
118
|
+
- Motion: system, reduce, allow
|
|
119
|
+
|
|
120
|
+
Settings are local viewer preferences and live at:
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
~/.goalbuddy/local-board-settings.json
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Tests can override that path with:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
GOALBUDDY_LOCAL_BOARD_SETTINGS_PATH=/tmp/goalbuddy-settings.json
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## The Local Board Got Sharper
|
|
133
|
+
|
|
134
|
+
The board header now matches the GoalBuddy site style more closely:
|
|
135
|
+
|
|
136
|
+
- GoalBuddy mark and wordmark
|
|
137
|
+
- green live blip beside the wordmark
|
|
138
|
+
- board selector only when multiple boards are running
|
|
139
|
+
- GitHub stars link that opens in a new window
|
|
140
|
+
- cleaner settings gear
|
|
141
|
+
|
|
142
|
+
Multiple boards now share one readable local hub:
|
|
143
|
+
|
|
144
|
+
```text
|
|
145
|
+
http://goalbuddy.localhost:41737/
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Each board gets its own path:
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
http://goalbuddy.localhost:41737/subgoal-parent-board/
|
|
152
|
+
http://goalbuddy.localhost:41737/local-kanban-board-extension/
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Launch another board while the hub is already running and GoalBuddy registers it with the existing local server instead of replacing the first board.
|
|
156
|
+
|
|
157
|
+
If port `41737` is occupied by something that is not GoalBuddy, the CLI says so clearly.
|
|
158
|
+
|
|
159
|
+
## Active Work Is Easier To See
|
|
160
|
+
|
|
161
|
+
Active cards now have a visible in-progress treatment: a subtle moving border that makes the current task obvious at a glance.
|
|
162
|
+
|
|
163
|
+
The motion respects:
|
|
164
|
+
|
|
165
|
+
- `prefers-reduced-motion`
|
|
166
|
+
- the board Motion setting
|
|
167
|
+
|
|
168
|
+
So the board can feel alive without becoming noisy.
|
|
169
|
+
|
|
170
|
+
## Better Agent Contracts
|
|
171
|
+
|
|
172
|
+
Scout, Judge, and Worker now have sharper contracts.
|
|
173
|
+
|
|
174
|
+
Scout:
|
|
175
|
+
|
|
176
|
+
- read-only
|
|
177
|
+
- compact evidence
|
|
178
|
+
- no edits
|
|
179
|
+
- no task selection
|
|
180
|
+
- receipt-shaped output
|
|
181
|
+
|
|
182
|
+
Judge:
|
|
183
|
+
|
|
184
|
+
- read-only
|
|
185
|
+
- phase gates and risky decisions only
|
|
186
|
+
- completion skepticism
|
|
187
|
+
- parallel-safety decisions
|
|
188
|
+
- subgoal approval boundaries
|
|
189
|
+
|
|
190
|
+
Worker:
|
|
191
|
+
|
|
192
|
+
- edits only `allowed_files`
|
|
193
|
+
- runs listed verification
|
|
194
|
+
- stops when scope expands
|
|
195
|
+
- returns changed files and verification results
|
|
196
|
+
- treats parallel Worker safety conservatively
|
|
197
|
+
|
|
198
|
+
This is the durable GoalBuddy model:
|
|
199
|
+
|
|
200
|
+
```text
|
|
201
|
+
Scout maps. Judge gates. Worker patches. Receipts prove. state.yaml decides.
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Deterministic Prompt Rendering
|
|
205
|
+
|
|
206
|
+
New command:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
goalbuddy prompt docs/goals/<slug>
|
|
210
|
+
goalbuddy prompt docs/goals/<slug> --task T004
|
|
211
|
+
goalbuddy prompt --board docs/goals/<slug>/state.yaml --task T004
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
The renderer emits compact task-specific prompts with:
|
|
215
|
+
|
|
216
|
+
- board path
|
|
217
|
+
- task id
|
|
218
|
+
- task type
|
|
219
|
+
- objective
|
|
220
|
+
- inputs
|
|
221
|
+
- constraints
|
|
222
|
+
- allowed files
|
|
223
|
+
- verify commands
|
|
224
|
+
- stop conditions
|
|
225
|
+
- reasoning hint
|
|
226
|
+
- recommended agent
|
|
227
|
+
- expected receipt shape
|
|
228
|
+
|
|
229
|
+
It avoids the bad handoff pattern where a subagent gets the entire state file, chat history assumptions, and too much inherited context.
|
|
230
|
+
|
|
231
|
+
## Checker And Durability
|
|
232
|
+
|
|
233
|
+
The checker now understands 0.3.5 branching.
|
|
234
|
+
|
|
235
|
+
It accepts:
|
|
236
|
+
|
|
237
|
+
- depth-1 subgoals under the parent goal root
|
|
238
|
+
- child boards with `goal.md`, `state.yaml`, and `notes/`
|
|
239
|
+
- parent tasks linked to valid child boards
|
|
240
|
+
- Worker changed files that match simple `allowed_files` globs
|
|
241
|
+
|
|
242
|
+
It rejects:
|
|
243
|
+
|
|
244
|
+
- child paths outside the parent root
|
|
245
|
+
- child paths that do not point to `state.yaml`
|
|
246
|
+
- missing child state files
|
|
247
|
+
- nested child subgoals
|
|
248
|
+
- invalid child board state
|
|
249
|
+
- done Workers with changed files outside scope
|
|
250
|
+
- final completion without the expected verification and audit evidence
|
|
251
|
+
|
|
252
|
+
The board renderer also fails closed on invalid child paths, so a malformed subgoal cannot make the local board read a `state.yaml` outside the parent goal root.
|
|
253
|
+
|
|
254
|
+
## Demo
|
|
255
|
+
|
|
256
|
+
Run the bundled parent/child board:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
node goalbuddy/extend/local-goal-board/scripts/local-goal-board.mjs \
|
|
260
|
+
--goal goalbuddy/extend/local-goal-board/examples/subgoal-parent
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Then try:
|
|
264
|
+
|
|
265
|
+
- switch to dark mode from the gear menu
|
|
266
|
+
- open task `T004` to see the embedded child board
|
|
267
|
+
- launch another board and use the header selector
|
|
268
|
+
- run `goalbuddy parallel-plan goalbuddy/extend/local-goal-board/examples/subgoal-parent`
|
|
269
|
+
- run `goalbuddy prompt goalbuddy/extend/local-goal-board/examples/subgoal-parent`
|
|
270
|
+
|
|
271
|
+
## Tests
|
|
272
|
+
|
|
273
|
+
0.3.5 adds or expands coverage for:
|
|
274
|
+
|
|
275
|
+
- parent task subgoal payloads
|
|
276
|
+
- embedded child boards
|
|
277
|
+
- missing child state files
|
|
278
|
+
- outside-root child paths
|
|
279
|
+
- live child-state updates over SSE
|
|
280
|
+
- multi-board hub registration
|
|
281
|
+
- settings persistence and normalization
|
|
282
|
+
- dark-mode readability surfaces
|
|
283
|
+
- prompt rendering
|
|
284
|
+
- read-only parallel planning
|
|
285
|
+
- overlapping Worker write scopes
|
|
286
|
+
- overlapping Worker glob patterns
|
|
287
|
+
- checker rejection for outside-root, missing, and nested subgoals
|
|
288
|
+
- plugin/source mirror consistency
|
|
289
|
+
|
|
290
|
+
Verified locally with:
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
npm run check
|
|
294
|
+
git diff --check
|
|
295
|
+
npm run publish:check
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Release Boundaries
|
|
299
|
+
|
|
300
|
+
This release intentionally does not add:
|
|
301
|
+
|
|
302
|
+
- automatic parallel-agent spawning
|
|
303
|
+
- a parallel Worker scheduler
|
|
304
|
+
- automatic receipt application
|
|
305
|
+
- UI controls for creating or editing subgoals
|
|
306
|
+
- recursive/nested subgoals
|
|
307
|
+
- cloud-hosted board state
|
|
308
|
+
|
|
309
|
+
The principle is Karpathy-level simple:
|
|
310
|
+
|
|
311
|
+
```text
|
|
312
|
+
One board owns one state file. A subgoal is one child state file. Parallel work is allowed only when the write boundaries are clear.
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
That gives GoalBuddy a stronger execution loop without making it heavy.
|
|
316
|
+
|
|
317
|
+
## Package Notes
|
|
318
|
+
|
|
319
|
+
This release updates:
|
|
320
|
+
|
|
321
|
+
- npm package version: `0.3.5`
|
|
322
|
+
- Codex plugin version: `0.3.5`
|
|
323
|
+
- Claude Code plugin version: `0.3.5`
|
|
324
|
+
- mirrored GoalBuddy skill files under `plugins/goalbuddy/skills/goalbuddy/`
|
package/goalbuddy/SKILL.md
CHANGED
|
@@ -85,7 +85,7 @@ Recommended options:
|
|
|
85
85
|
2. GitHub Projects - best when stakeholders need a shared external board and the user can approve GitHub credentials/project details.
|
|
86
86
|
3. No visual board - best for quick or private goals where the file board is enough.
|
|
87
87
|
|
|
88
|
-
If the user chooses the local live board, create the goal directory, `notes/`, and an initial minimal `state.yaml` as soon as the slug is known, then run `npx goalbuddy board docs/goals/<slug>` and open the printed local URL in the AI coding agent's in-app browser (the Codex in-app Browser, the Claude Code preview, or the user's regular browser). In short: start the local board before filling the task list so the board pops up right away and cards populate live as `state.yaml` changes.
|
|
88
|
+
If the user chooses the local live board, create the goal directory, `notes/`, and an initial minimal `state.yaml` as soon as the slug is known, then run `npx goalbuddy board docs/goals/<slug>` and open the printed local URL in the AI coding agent's in-app browser (the Codex in-app Browser, the Claude Code preview, or the user's regular browser). The default local hub is `http://goalbuddy.localhost:41737/`, and board URLs normally look like `http://goalbuddy.localhost:41737/<slug>/`. In short: start the local board before filling the task list so the board pops up right away and cards populate live as `state.yaml` changes. Include the printed board URL in the final prep response as the operator fallback, but do not make the URL the primary experience.
|
|
89
89
|
|
|
90
90
|
If the user chooses GitHub Projects, ask for approval and the required project target before any live write. Create or sync the GitHub Project at the same early point as the local board: after the goal root and skeleton `state.yaml` exist, before the detailed task list is finished, then sync again as tasks populate. Run a dry-run sync first when possible. Missing GitHub credentials or project details should not block local board creation or goal prep; record the missing requirement in `visual_board.github_projects` and seed a PM setup task.
|
|
91
91
|
|
|
@@ -506,7 +506,7 @@ Non-`installed` states are warnings, not false failures, because the main `/goal
|
|
|
506
506
|
|
|
507
507
|
| Agent | Thinking level | Write access | Use for |
|
|
508
508
|
|---|---:|---:|---|
|
|
509
|
-
| Scout |
|
|
509
|
+
| Scout | low | no | targeted source/spec/repo evidence mapping |
|
|
510
510
|
| Worker | low | yes, bounded | one exact implementation or recovery task |
|
|
511
511
|
| Judge | high | no | strategic review, ambiguity, scope, completion skepticism |
|
|
512
512
|
|
|
@@ -538,6 +538,12 @@ reasoning_hint: default # default | low | medium | high | xhigh
|
|
|
538
538
|
|
|
539
539
|
Treat `reasoning_hint` as PM guidance. It does not override task scope, write permissions, stop conditions, or the one-active-task rule.
|
|
540
540
|
|
|
541
|
+
## Execution Quality Commands
|
|
542
|
+
|
|
543
|
+
Use `goalbuddy prompt docs/goals/<slug>` to render a compact prompt for the active task. The prompt includes only task-specific material, safe agent metadata, and the expected receipt shape. It should not include broad chat history or dump the whole state file.
|
|
544
|
+
|
|
545
|
+
Use `goalbuddy parallel-plan docs/goals/<slug>` when the user explicitly asks for parallel agent work. It is read-only: it recommends safe Scout/Judge handoffs and Worker handoffs only when write scopes are known and disjoint. It does not mutate `state.yaml`, create sub-goals, apply receipts, or spawn agents.
|
|
546
|
+
|
|
541
547
|
## Completion
|
|
542
548
|
|
|
543
549
|
Never complete because work looks substantial.
|