goalbuddy 0.3.5 → 0.3.7

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 (83) hide show
  1. package/README.md +46 -12
  2. package/RELEASE-0.3.5.md +4 -4
  3. package/RELEASE-0.3.7.md +127 -0
  4. package/goalbuddy/SKILL.md +53 -23
  5. package/goalbuddy/agents/README.md +1 -1
  6. package/goalbuddy/agents/goal_judge.toml +8 -4
  7. package/goalbuddy/agents/goal_worker.toml +8 -5
  8. package/goalbuddy/scripts/check-goal-state.mjs +129 -0
  9. package/goalbuddy/scripts/render-task-prompt.mjs +83 -5
  10. package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/README.md +7 -9
  11. package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/examples/sample-goal/state.yaml +5 -5
  12. package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/examples/subgoal-parent/state.yaml +3 -3
  13. package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/state.yaml +3 -3
  14. package/goalbuddy/{extend → surfaces}/local-goal-board/scripts/lib/goal-board.mjs +250 -9
  15. package/goalbuddy/{extend → surfaces}/local-goal-board/scripts/local-goal-board.mjs +4 -4
  16. package/goalbuddy/{extend → surfaces}/local-goal-board/test/local-goal-board.test.mjs +67 -9
  17. package/goalbuddy/templates/agents.md +3 -2
  18. package/goalbuddy/templates/goal.md +27 -4
  19. package/goalbuddy/templates/state.yaml +13 -7
  20. package/internal/assets/goalbuddy-v0.3.7-release.png +0 -0
  21. package/internal/cli/goal-maker.mjs +112 -714
  22. package/package.json +4 -4
  23. package/plugins/goalbuddy/.claude-plugin/plugin.json +3 -4
  24. package/plugins/goalbuddy/.codex-plugin/plugin.json +5 -6
  25. package/plugins/goalbuddy/README.md +4 -3
  26. package/plugins/goalbuddy/agents/goal-judge.md +8 -4
  27. package/plugins/goalbuddy/agents/goal-worker.md +6 -4
  28. package/plugins/goalbuddy/skills/goalbuddy/SKILL.md +53 -23
  29. package/plugins/goalbuddy/skills/goalbuddy/agents/README.md +1 -1
  30. package/plugins/goalbuddy/skills/goalbuddy/agents/goal_judge.toml +8 -4
  31. package/plugins/goalbuddy/skills/goalbuddy/agents/goal_worker.toml +8 -5
  32. package/plugins/goalbuddy/skills/goalbuddy/scripts/check-goal-state.mjs +129 -0
  33. package/plugins/goalbuddy/skills/goalbuddy/scripts/render-task-prompt.mjs +83 -5
  34. package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/README.md +7 -9
  35. package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/examples/sample-goal/state.yaml +5 -5
  36. package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/examples/subgoal-parent/state.yaml +3 -3
  37. package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/state.yaml +3 -3
  38. package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/scripts/lib/goal-board.mjs +250 -9
  39. package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/scripts/local-goal-board.mjs +4 -4
  40. package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/test/local-goal-board.test.mjs +67 -9
  41. package/plugins/goalbuddy/skills/goalbuddy/templates/agents.md +3 -2
  42. package/plugins/goalbuddy/skills/goalbuddy/templates/goal.md +27 -4
  43. package/plugins/goalbuddy/skills/goalbuddy/templates/state.yaml +13 -7
  44. package/examples/extend-catalog-workflow/goal.md +0 -53
  45. package/examples/extend-catalog-workflow/notes/T001-extension-model-map.md +0 -47
  46. package/examples/extend-catalog-workflow/notes/T002-architecture-decision.md +0 -48
  47. package/examples/extend-catalog-workflow/notes/T003-implementation-summary.md +0 -43
  48. package/examples/extend-catalog-workflow/notes/T004-root-extend-folder.md +0 -24
  49. package/examples/extend-catalog-workflow/notes/T005-layout-cleanup.md +0 -46
  50. package/examples/extend-catalog-workflow/notes/T006-catalog-location.md +0 -50
  51. package/examples/extend-catalog-workflow/notes/T999-completion-audit.md +0 -36
  52. package/examples/extend-catalog-workflow/state.yaml +0 -327
  53. package/examples/github-pr-workflow-extension/pr-handoff.md +0 -46
  54. package/goalbuddy/extend/github-projects/README.md +0 -105
  55. package/goalbuddy/extend/github-projects/examples/goal-board-sync/state.yaml +0 -63
  56. package/goalbuddy/extend/github-projects/extension.yaml +0 -43
  57. package/goalbuddy/extend/github-projects/scripts/lib/github-projects.mjs +0 -728
  58. package/goalbuddy/extend/github-projects/scripts/lib/goal-state.mjs +0 -362
  59. package/goalbuddy/extend/github-projects/scripts/sync-github-project.mjs +0 -193
  60. package/goalbuddy/extend/github-projects/test/github-projects.test.mjs +0 -267
  61. package/goalbuddy/extend/local-goal-board/extension.yaml +0 -39
  62. package/internal/assets/extend-release.png +0 -0
  63. package/internal/assets/extend-release.svg +0 -83
  64. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/README.md +0 -105
  65. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/examples/goal-board-sync/state.yaml +0 -63
  66. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/extension.yaml +0 -43
  67. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/lib/github-projects.mjs +0 -728
  68. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/lib/goal-state.mjs +0 -362
  69. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/sync-github-project.mjs +0 -193
  70. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/test/github-projects.test.mjs +0 -267
  71. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/extension.yaml +0 -39
  72. /package/goalbuddy/{extend → surfaces}/local-goal-board/assets/goalbuddy-mark.png +0 -0
  73. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/sample-goal/notes/T001-scout.md +0 -0
  74. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/goal.md +0 -0
  75. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/notes/.gitkeep +0 -0
  76. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/goal.md +0 -0
  77. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/notes/.gitkeep +0 -0
  78. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/assets/goalbuddy-mark.png +0 -0
  79. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/sample-goal/notes/T001-scout.md +0 -0
  80. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/goal.md +0 -0
  81. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/notes/.gitkeep +0 -0
  82. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/goal.md +0 -0
  83. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/notes/.gitkeep +0 -0
package/README.md CHANGED
@@ -16,9 +16,9 @@
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 helps Codex and Claude Code stay oriented during long coding tasks, especially when the work branches into subgoals, parallel agents, and long-running verification.
19
+ GoalBuddy helps Codex and Claude Code stay oriented during long coding tasks by giving native `/goal` a finish line, a live work surface, and a proof loop.
20
20
 
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.
21
+ It gives `/goal` a small local workspace: a charter, a goal oracle, 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.
22
22
 
23
23
  ## Start Here
24
24
 
@@ -44,6 +44,25 @@ In Claude Code, use:
44
44
 
45
45
  Goal Prep creates the board and prints the exact `/goal` command to run next. That is the whole path.
46
46
 
47
+ ## Codex Install Model
48
+
49
+ For Codex, the canonical install is the native plugin plus bundled agents:
50
+
51
+ ```text
52
+ ~/.codex/plugins/cache/goalbuddy/goalbuddy/<version>/
53
+ ~/.codex/agents/goal_judge.toml
54
+ ~/.codex/agents/goal_scout.toml
55
+ ~/.codex/agents/goal_worker.toml
56
+ ```
57
+
58
+ The Codex plugin bundles `$goal-prep`; a clean Codex install should not need personal `~/.codex/skills/goalbuddy` or `~/.codex/skills/goal-maker` folders. Native Codex `/goal` is a separate OpenAI-gated feature. GoalBuddy prepares local boards and handoff prompts for it, but it does not enable or replace native `/goal`.
59
+
60
+ To verify a Codex install:
61
+
62
+ ```bash
63
+ npx goalbuddy doctor --target codex --goal-ready
64
+ ```
65
+
47
66
  ## What It Creates
48
67
 
49
68
  ```text
@@ -51,6 +70,7 @@ docs/goals/<your-goal>/
51
70
  goal.md
52
71
  state.yaml
53
72
  notes/
73
+ .goalbuddy-board/ # generated local board files
54
74
  subgoals/ # optional depth-1 child boards
55
75
  ```
56
76
 
@@ -65,18 +85,30 @@ docs/goals/<your-goal>/
65
85
  ## How It Thinks
66
86
 
67
87
  ```text
68
- rough idea -> goal prep -> /goal -> scout -> judge -> worker -> receipt -> verify
88
+ Intent -> Oracle -> Surface -> Loop -> Proof
69
89
  ```
70
90
 
91
+ The oracle is the observable signal that says whether the original owner outcome is actually true: a test suite, browser walkthrough, demo transcript, generated artifact, benchmark, source-backed answer, release check, or final human decision.
92
+
93
+ No oracle, no serious goal.
94
+
95
+ The local board is the default work surface. It is not an extension marketplace; it is the built-in view of the `state.yaml` truth.
96
+
71
97
  Scout maps the repo.
72
98
 
73
- Judge chooses the next bounded slice.
99
+ Judge chooses the largest safe useful slice.
74
100
 
75
- Worker changes code and leaves a receipt.
101
+ Worker completes the whole assigned slice and leaves a receipt.
76
102
 
77
- `/goal` keeps the loop honest until the original goal is actually done.
103
+ `/goal` keeps the loop honest until a final Judge/PM audit maps receipts and verification back to the oracle and records the full outcome complete.
78
104
 
79
- ## Subgoals, Parallel Agents, and Dark Mode
105
+ ## Slice Sizing
106
+
107
+ Safe does not mean small. Safe means bounded, explicit, verified, and reversible.
108
+
109
+ GoalBuddy should not optimize for tiny safe tasks. It should optimize for the largest safe useful slice: a working screen, working API path, data pipeline step, backend vertical slice, real bug fix, or milestone review. The board warns when it sees safe-looking work that keeps adding helpers, contracts, proof files, or doc notes without moving the outcome.
110
+
111
+ ## Goalmaxxed
80
112
 
81
113
  GoalBuddy keeps the model small:
82
114
 
@@ -90,9 +122,9 @@ Use subgoals for bounded child work that belongs to a parent task. Use multiple
90
122
 
91
123
  ## Execution Quality
92
124
 
93
- GoalBuddy can prepare safe parallel work; it does not run a parallel org chart.
125
+ GoalBuddy can prepare safe parallel work; it does not run a parallel org chart or install arbitrary extension packs.
94
126
 
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.
127
+ Use `goalbuddy prompt docs/goals/<slug>` to render a compact prompt for the active task without dumping the whole state file. The prompt includes a mandatory `required_spawn_agent_type`; Codex PMs should use that exact GoalBuddy agent (`goal_scout`, `goal_worker`, or `goal_judge`) instead of a generic role agent. 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.
96
128
 
97
129
  ## Update
98
130
 
@@ -106,11 +138,13 @@ That updates both Codex and Claude Code.
106
138
 
107
139
  ## Live Boards
108
140
 
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.
141
+ GoalBuddy opens 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.
142
+
143
+ Multiple local boards reuse one readable `goalbuddy.localhost` hub with an in-header board switcher. When sharing a board in chat or docs, use a real Markdown link such as `[Open GoalBuddy board](http://goalbuddy.localhost:41737/<slug>/)` so the URL is clickable. The viewer also supports dark mode, compact mode, completed-task collapse, active-work motion, and reduced-motion handling.
110
144
 
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.
145
+ Custom external integrations should be built as ordinary repo work with a concrete implementation plan, not installed from a GoalBuddy catalog.
112
146
 
113
- See [GoalBuddy 0.3.5: Subgoals, Parallel Agents, and Dark Mode](RELEASE-0.3.5.md) for the release notes.
147
+ See [GoalBuddy 0.3.7: Goalmaxxed](RELEASE-0.3.7.md) for the latest release notes.
114
148
 
115
149
  <p align="center">
116
150
  <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%">
package/RELEASE-0.3.5.md CHANGED
@@ -256,8 +256,8 @@ The board renderer also fails closed on invalid child paths, so a malformed subg
256
256
  Run the bundled parent/child board:
257
257
 
258
258
  ```bash
259
- node goalbuddy/extend/local-goal-board/scripts/local-goal-board.mjs \
260
- --goal goalbuddy/extend/local-goal-board/examples/subgoal-parent
259
+ node goalbuddy/surfaces/local-goal-board/scripts/local-goal-board.mjs \
260
+ --goal goalbuddy/surfaces/local-goal-board/examples/subgoal-parent
261
261
  ```
262
262
 
263
263
  Then try:
@@ -265,8 +265,8 @@ Then try:
265
265
  - switch to dark mode from the gear menu
266
266
  - open task `T004` to see the embedded child board
267
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`
268
+ - run `goalbuddy parallel-plan goalbuddy/surfaces/local-goal-board/examples/subgoal-parent`
269
+ - run `goalbuddy prompt goalbuddy/surfaces/local-goal-board/examples/subgoal-parent`
270
270
 
271
271
  ## Tests
272
272
 
@@ -0,0 +1,127 @@
1
+ # GoalBuddy 0.3.7: Goalmaxxed
2
+
3
+ Release date: 2026-05-19
4
+
5
+ Goalmaxxed is the release where GoalBuddy stops trying to become a workflow catalog and commits to one sharper job:
6
+
7
+ ```text
8
+ Give /goal enough pressure that it keeps working until the original outcome is actually true.
9
+ ```
10
+
11
+ This release is heavily inspired by the Codex maxxing playbook: keep the goal visible, preserve context in local files, use subagents deliberately, demand evidence, and resist the temptation to declare victory because a plausible slice finished.
12
+
13
+ Update with:
14
+
15
+ ```bash
16
+ npx goalbuddy update
17
+ ```
18
+
19
+ ## The Headline
20
+
21
+ GoalBuddy now centers the native `/goal` loop around five small ideas:
22
+
23
+ - **Intent**: capture what the owner actually wants.
24
+ - **Oracle**: define the observable signal that proves the outcome is real.
25
+ - **Surface**: keep one local board visible while the run moves.
26
+ - **Loop**: Scout maps facts, Judge chooses the largest safe useful slice, Worker completes the whole slice.
27
+ - **Proof**: final completion requires receipts mapped back to the oracle.
28
+
29
+ That is the product. Everything else got judged against that loop.
30
+
31
+ ## Goal Pressure
32
+
33
+ GoalBuddy now treats the goal oracle as first-class state. A serious goal needs an observable signal before the board can pretend it knows what done means:
34
+
35
+ - a passing test suite
36
+ - a browser walkthrough
37
+ - a demo transcript
38
+ - a generated artifact
39
+ - a benchmark
40
+ - a source-backed answer
41
+ - a release check
42
+ - a final human decision
43
+
44
+ No oracle, no serious goal.
45
+
46
+ The checker also rejects weak final completion. A goal should not be marked done just because the active task ended. Done means a final Judge or PM audit records that the receipts and verification satisfy the oracle.
47
+
48
+ ## Larger Useful Slices
49
+
50
+ This release sharpens the slice policy:
51
+
52
+ ```text
53
+ Safe does not mean small. Safe means bounded, explicit, verified, and reversible.
54
+ ```
55
+
56
+ GoalBuddy now pushes Judge and Worker toward the largest safe useful slice: a working screen, working API path, backend vertical slice, real bug fix, data pipeline step, or milestone review.
57
+
58
+ The board warns when it sees micro-slicing: helper files, contracts, proof notes, or tiny prep tasks that are safe but do not move the owner outcome.
59
+
60
+ ## Built-In Local Board
61
+
62
+ The local board is now a core surface, not an extension.
63
+
64
+ The bundled surface lives at:
65
+
66
+ ```text
67
+ goalbuddy/surfaces/local-goal-board/
68
+ ```
69
+
70
+ It remains the default way to watch a GoalBuddy run: active task, blocked state, receipts, verification status, subgoals, and board switching all point back to the same `state.yaml` truth.
71
+
72
+ ## No Extension Catalog
73
+
74
+ GoalBuddy no longer ships a public extension catalog.
75
+
76
+ The old catalog made the product look bigger while making the core loop blurrier. Goalmaxxed chooses the smaller invariant:
77
+
78
+ ```text
79
+ GoalBuddy prepares and pressures /goal runs. Custom integrations are ordinary repo work.
80
+ ```
81
+
82
+ If a team wants a GitHub, Linear, Slack, or release integration, they should prepare a concrete implementation plan in their repo and build it as normal software. GoalBuddy should not install arbitrary workflow packs as a side channel.
83
+
84
+ ## Simpler Public Surface
85
+
86
+ The public copy now says what GoalBuddy actually does:
87
+
88
+ - prepares `/goal`
89
+ - writes `goal.md` and `state.yaml`
90
+ - creates a goal oracle
91
+ - opens a local board
92
+ - keeps Scout/Judge/Worker handoffs receipt-shaped
93
+ - prevents early completion
94
+ - leaves custom integrations outside the core
95
+
96
+ The Codex and Claude Code plugin manifests are aligned with the package description, and the test suite now checks that the Claude manifest stays in sync.
97
+
98
+ ## Release Boundaries
99
+
100
+ This release intentionally does not add:
101
+
102
+ - an extension marketplace
103
+ - automatic parallel-agent spawning
104
+ - hosted board state
105
+ - automatic receipt application
106
+ - UI controls that mutate board state
107
+ - a replacement for native `/goal`
108
+
109
+ GoalBuddy stays local, file-backed, and boring in the parts that should be boring.
110
+
111
+ ## Package Notes
112
+
113
+ This release updates:
114
+
115
+ - npm package version: `0.3.7`
116
+ - Codex plugin version: `0.3.7`
117
+ - Claude Code plugin version: `0.3.7`
118
+ - package contents to include `goalbuddy/surfaces/`
119
+ - mirrored GoalBuddy skill files under `plugins/goalbuddy/skills/goalbuddy/`
120
+
121
+ Before publishing, verify:
122
+
123
+ ```bash
124
+ npm run check
125
+ npm run pack:dry-run
126
+ node internal/cli/check-publish-version.mjs
127
+ ```
@@ -12,9 +12,17 @@ GoalBuddy is for autonomous, long-running Codex or Claude Code work where the PM
12
12
  The loop is:
13
13
 
14
14
  ```text
15
- raw user intent -> intake compiler -> discovery/plan validation/execution board -> one active task -> receipt -> board update -> repeat
15
+ raw user intent -> intake compiler -> goal oracle -> local work surface -> one active task -> receipt -> proof loop -> repeat
16
16
  ```
17
17
 
18
+ GoalBuddy's core invariant is:
19
+
20
+ ```text
21
+ Intent -> Oracle -> Surface -> Loop -> Proof
22
+ ```
23
+
24
+ No oracle, no serious goal. A goal oracle is the observable signal that tells the PM whether the original owner outcome is actually true yet. It may be a test suite, browser walkthrough, demo transcript, generated artifact, benchmark, source-backed answer, release check, or final human decision. Weak proof creates weak goals, so record the oracle before shaping tasks and keep testing against it until final completion.
25
+
18
26
  ## Invocation Boundary
19
27
 
20
28
  There are two different modes:
@@ -31,7 +39,7 @@ Allowed `$goal-prep` actions:
31
39
  - run the bundled GoalBuddy update checker and mention a newer version if one is available;
32
40
  - ask diagnostic intake questions and wait when required;
33
41
  - create or repair only `docs/goals/<slug>/goal.md`, `docs/goals/<slug>/state.yaml`, `docs/goals/<slug>/notes/`, and the generated `.goalbuddy-board/` visual board artifact;
34
- - create and open the selected visual board surface for the goal;
42
+ - create and open the built-in local GoalBuddy board surface for the goal unless the user opts out;
35
43
  - optionally run the GoalBuddy board checker against that `state.yaml`;
36
44
  - verify GoalBuddy agent availability, if this can be done without touching implementation work, and record `installed`, `bundled_not_installed`, `missing`, or `unknown` truthfully;
37
45
  - print exactly `/goal Follow docs/goals/<slug>/goal.md.`;
@@ -69,25 +77,25 @@ Extract:
69
77
  - authority: `requested | approved | inferred | needs_approval | blocked`;
70
78
  - proof type: `test | demo | artifact | metric | review | source_backed_answer | decision`;
71
79
  - completion proof: the observable signal for full outcome completion;
80
+ - goal oracle: the live check, walkthrough, artifact, metric, or decision that will keep pressure on the goal and prevent early completion;
72
81
  - likely misfire: how `/goal` could succeed at the wrong thing;
73
82
  - blind spots: important risks, choices, or success dimensions the user may not have named yet;
74
83
  - existing plan facts: user-provided steps, files, constraints, or sequencing that must be preserved but still validated.
75
84
 
76
- Ask the visual-board question early, before detailed task shaping:
85
+ Use the local GoalBuddy board as the default work surface for broad GoalBuddy runs. Ask only when the user has not already implied they want the default local surface, the goal is unusually quick/private, or board setup would materially distract from the requested prep:
77
86
 
78
87
  ```text
79
- Do you want to set up a visual board for this?
88
+ Do you want the local GoalBuddy board for this goal?
80
89
  ```
81
90
 
82
91
  Recommended options:
83
92
 
84
93
  1. Local live board (Recommended) - starts immediately, requires no credentials, and lets the user watch tasks populate inside Codex or Claude Code.
85
- 2. GitHub Projects - best when stakeholders need a shared external board and the user can approve GitHub credentials/project details.
86
- 3. No visual board - best for quick or private goals where the file board is enough.
94
+ 2. No visual board - best for quick or private goals where the file board is enough.
87
95
 
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.
96
+ 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 an actual clickable Markdown link, for example `[Open GoalBuddy board](http://goalbuddy.localhost:41737/<slug>/)`. Do not put the board URL only in a code block, quote, HTML comment, or prose that the UI cannot click.
89
97
 
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.
98
+ If the user wants an external board, GitHub sync, Slack digest, Linear handoff, or any other custom integration, do not install a GoalBuddy catalog item. Treat it as normal implementation work: create a concrete task that designs and verifies that integration inside the target repo or asks the operator for the required credentials and scope.
91
99
 
92
100
  Ask before board creation when the request is vague, strategic, improvement-oriented, or open-ended and the user has not explicitly said to use defaults. Ask one guided question at a time with 2-3 options and a recommended default, then wait. Continue the diagnostic intake until the user's answers are sufficient to choose the board shape. Do not create or repair `docs/goals/<slug>/` until the diagnostic intake is complete or the user explicitly accepts defaults.
93
101
 
@@ -134,7 +142,7 @@ Stop after each question. Do not create files, repair an existing board, run che
134
142
 
135
143
  Minimum diagnostic ladder for vague, strategic, or improvement-oriented goals:
136
144
 
137
- 1. Visual board: ask "Do you want to set up a visual board for this?"
145
+ 1. Goal surface: use the local live board by default, or ask "Do you want the local GoalBuddy board for this goal?" when board handling is unresolved.
138
146
  2. Intent target: what kind of improvement or outcome matters most?
139
147
  3. Success proof: what evidence would convince the user this worked?
140
148
  4. Scope and non-goals: what should remain untouched or explicitly out of scope?
@@ -173,7 +181,7 @@ Do:
173
181
  - classify the goal as `specific`, `open_ended`, `existing_plan`, `recovery`, or `audit`;
174
182
  - create or repair `docs/goals/<slug>/`;
175
183
  - create `goal.md`, `state.yaml`, and `notes/`;
176
- - if requested, start the local visual board immediately and open it in the AI coding agent's in-app browser (Codex in-app Browser, Claude Code preview, or the user's regular browser) before filling the task list;
184
+ - start the local board immediately and open it in the AI coding agent's in-app browser (Codex in-app Browser, Claude Code preview, or the user's regular browser) before filling the task list, unless the user opts out;
177
185
  - seed a role-tagged task board that matches the input shape;
178
186
  - make the first active task safe;
179
187
  - verify Scout, Worker, and Judge agent availability or record an explicit truthful state;
@@ -203,22 +211,38 @@ Planning, Scout findings, Judge decisions, and a queued Worker task are not term
203
211
  For execution goals, the default run is continuous:
204
212
 
205
213
  ```text
206
- Discover enough evidence, choose a safe implementation slice, implement it, verify it, audit it, then immediately choose and execute the next safe slice until the full original outcome is complete.
214
+ Discover enough evidence, choose the largest reversible local work package, implement it, verify it, review only at risk or phase boundaries, then immediately choose and execute the next work package until the full original outcome is complete.
207
215
  ```
208
216
 
209
217
  If the first `/goal` run reaches a Judge decision that names a safe Worker task with `allowed_files`, `verify`, and `stop_if`, the PM should activate that Worker and continue in the same run unless a stop condition applies.
210
218
 
211
- After a verified Worker slice and audit, do not mark the thread goal complete merely because that slice passed. A slice audit is a checkpoint. For broad automation or product goals, continue by reopening or advancing the board to the next safe Worker task until the full owner outcome is complete.
219
+ After a verified Worker package, do not mark the thread goal complete merely because that package passed. For broad automation or product goals, continue by reopening or advancing the board to the next safe Worker package until the full owner outcome is complete.
212
220
 
213
221
  Missing owner input, credentials, production access, destructive-operation permission, or policy decisions are blockers for specific tasks, not stopping conditions for the whole goal. When a slice hits one of those blockers, mark that exact task blocked with a receipt, create a safe follow-up or workaround task, and keep doing local, non-destructive work that advances the full outcome.
214
222
 
223
+ ## Slice Sizing Policy
224
+
225
+ A good task is the largest safe useful slice.
226
+
227
+ Small is not the goal. Useful is the goal.
228
+
229
+ Safe does not mean small. Safe means bounded, explicit, verified, and reversible.
230
+
231
+ A good Worker task usually produces a working screen, a working API path, a working data pipeline step, a working backend vertical slice, a real bug fix, or a milestone review. A bad Worker task is one more tiny helper, projection function, contract file, read-only proof, or doc note unless that tiny task is truly blocking progress.
232
+
233
+ Judge picks the largest safe useful next slice. Worker completes the whole assigned slice. Judge reviews the whole slice.
234
+
235
+ After two tiny tasks in a row, PM or Judge should reorient the board. If a demo milestone is complete, the next task should move toward the next real milestone.
236
+
237
+ Tiny tasks are allowed when the failure is isolated, the risk is high, the scope is unknown, or the tiny task unlocks a larger slice. Tiny tasks are bad when they keep happening, do not change behavior, only add wrappers/contracts/proof files, or avoid the real milestone.
238
+
215
239
  ## When To Use
216
240
 
217
241
  Use this skill for goals that are broad, multi-hour, ambiguous, high-risk, already planned, already stale, already red, or likely to need Scout/Judge/Worker delegation.
218
242
 
219
243
  For a one-change task, do not create a GoalBuddy board.
220
244
 
221
- Scout and Judge tasks may identify optional extension, plugin, publishing, reporting, or channel opportunities as improvement candidates. Treat those as normal board tasks. Extensions are supporting surfaces; `state.yaml` remains board truth.
245
+ Scout and Judge tasks may identify optional publishing, reporting, integration, plugin, or channel opportunities as improvement candidates. Treat those as normal board tasks with concrete implementation plans. `state.yaml` remains board truth.
222
246
 
223
247
  ## The Four Primitives
224
248
 
@@ -258,6 +282,7 @@ The charter answers:
258
282
  What did the user originally ask for?
259
283
  What are we trying to improve?
260
284
  What input shape did the intake identify?
285
+ What is the goal oracle?
261
286
  What constraints are non-negotiable?
262
287
  Is this goal specific, open-ended, existing-plan, recovery, or audit?
263
288
  What likely misfire must the PM avoid?
@@ -267,7 +292,7 @@ What counts as enough for the current tranche?
267
292
  Avoid forever goals. A broad goal should define an execution tranche, for example:
268
293
 
269
294
  ```text
270
- Discover the highest-leverage local improvements, complete successive safe verified implementation slices, audit each slice against the original user outcome, and keep advancing until the full outcome is complete.
295
+ Discover the highest-leverage local improvements, complete successive safe verified work packages, review only at risk or phase boundaries, and keep advancing until the full outcome is complete.
271
296
  ```
272
297
 
273
298
  ## Board
@@ -390,8 +415,9 @@ Judge receipt:
390
415
  ```yaml
391
416
  receipt:
392
417
  result: done
393
- decision: "Do router coverage first; defer auth flake because it is not reproducible locally."
394
- next_allowed_task: T004
418
+ decision: "approved"
419
+ full_outcome_complete: false
420
+ rationale: "Router coverage is verified; continue with the next PM-selected work package."
395
421
  blocked_tasks:
396
422
  - T005
397
423
  ```
@@ -440,7 +466,7 @@ Blocked tasks do not necessarily block the goal. The PM should keep doing safe l
440
466
 
441
467
  - create a Scout task to improve evidence;
442
468
  - create a Judge task to resolve ambiguity;
443
- - create a Worker task for a smaller safe slice;
469
+ - create a Worker task for the largest reversible local work package that can proceed;
444
470
  - write or update a note for handoff;
445
471
  - update receipts and verification freshness.
446
472
 
@@ -471,9 +497,11 @@ After a task completes, immediately write its receipt and select the next active
471
497
 
472
498
  - a final audit proves the full original owner outcome is complete.
473
499
 
474
- Do not stop at "ready for implementation" when a safe Worker task exists. Activate the Worker, execute it, verify it, and then run the audit task.
500
+ Do not stop at "ready for implementation" when a safe Worker task exists. Activate the Worker, execute it, verify it, and keep going.
501
+
502
+ Do not stop after one verified work package when the broader owner outcome still has safe local follow-up work. Advance the board to the next work package unless a risk boundary or final audit is due.
475
503
 
476
- Do not stop after one verified implementation slice when the broader owner outcome still has safe local follow-up slices. Treat a slice audit as permission to advance the board, not as permission to finish, unless the audit explicitly proves the full original outcome is complete.
504
+ Do not create a Judge task after every Worker by default. Use Judge only for phase boundaries, high-risk changes, unclear scope, rejected verification, or final completion. Repeated same-shape work belongs in one Worker package.
477
505
 
478
506
  Do not stop because the current slice needs owner input, credentials, production access, destructive operations, or policy decisions. Mark that slice blocked, spawn or activate the smallest safe local task that can proceed around the blocker, and continue.
479
507
 
@@ -507,8 +535,8 @@ Non-`installed` states are warnings, not false failures, because the main `/goal
507
535
  | Agent | Thinking level | Write access | Use for |
508
536
  |---|---:|---:|---|
509
537
  | Scout | low | no | targeted source/spec/repo evidence mapping |
510
- | Worker | low | yes, bounded | one exact implementation or recovery task |
511
- | Judge | high | no | strategic review, ambiguity, scope, completion skepticism |
538
+ | Worker | medium | yes, bounded | one coherent bounded useful slice |
539
+ | Judge | high | no | phase/risk/final review, ambiguity, scope, completion skepticism |
512
540
 
513
541
  A task's `assignee` determines the agent. The task card is the order. The receipt is the return format.
514
542
 
@@ -540,7 +568,9 @@ Treat `reasoning_hint` as PM guidance. It does not override task scope, write pe
540
568
 
541
569
  ## Execution Quality Commands
542
570
 
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.
571
+ 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, continuation warnings, and the expected receipt shape. It should not include broad chat history or dump the whole state file.
572
+
573
+ When dispatching Codex subagents from a GoalBuddy prompt, the `required_spawn_agent_type` is mandatory. Use that exact `spawn_agent` `agent_type` (`goal_scout`, `goal_worker`, or `goal_judge`). Do not substitute generic `scout`, `worker`, or `judge` agents; if the required GoalBuddy agent is unavailable, stop spawning and continue as PM fallback or run `npx goalbuddy agents`/`npx goalbuddy install`. After one `wait_agent` timeout with no visible allowed-file changes, stop waiting, record the timeout, and recover deterministically instead of waiting forever.
544
574
 
545
575
  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
576
 
@@ -552,7 +582,7 @@ Completion is a Judge or PM audit task. The goal is done only when a final done
552
582
 
553
583
  For execution goals, completion also requires implementation evidence. A final audit cannot call the goal done if the only completed work is planning, discovery, or task selection.
554
584
 
555
- For continuous execution goals, the final audit receipt must include `full_outcome_complete: true`. If the receipt only proves that the current slice or tranche is complete, keep the goal active and queue or activate the next safe Worker/Judge/PM task.
585
+ For continuous execution goals, the final audit receipt must include `full_outcome_complete: true`. If the receipt only proves that the current work package or tranche is complete, keep the goal active and queue or activate the next safe Worker/PM task. Add a Judge only when the next decision is a phase, risk, ambiguity, rejected verification, or final completion review.
556
586
 
557
587
  Queued or active Worker tasks block `goal.status: done`. If a Worker is no longer required, mark it blocked with a receipt explaining why, remove it during PM board maintenance, or replace it with the actual required Worker task before completion.
558
588
 
@@ -13,7 +13,7 @@ This directory contains skill metadata and bundled agent definitions for Codex a
13
13
  | Agent | Codex file | Claude Code file | Reasoning effort | Write scope |
14
14
  |---|---|---|---:|---|
15
15
  | Scout | `goal_scout.toml` | `goal-scout.md` | medium | read-only |
16
- | Worker | `goal_worker.toml` | `goal-worker.md` | low | workspace-write |
16
+ | Worker | `goal_worker.toml` | `goal-worker.md` | medium | workspace-write |
17
17
  | Judge | `goal_judge.toml` | `goal-judge.md` | high | read-only |
18
18
 
19
19
  ## Recommended Codex Config
@@ -13,11 +13,16 @@ Hard contract:
13
13
  - Read only. Do not edit, stage, install, or implement.
14
14
  - Read state receipts before raw files. Then read only the inputs named in the Judge task.
15
15
  - Be skeptical of progress. Lots of files, docs, or tests are not completion.
16
- - A safe Worker task must include exact objective, allowed_files, verify commands, and stop_if.
16
+ - A safe Worker package must include objective, allowed_files, verify commands, and stop_if, and should cover the largest reversible local work package at that boundary.
17
+ - Choose the largest safe useful slice: bounded, explicit, verified, reversible, and outcome-moving. Safety does not mean tiny.
18
+ - Judge a whole useful slice, not one helper at a time.
19
+ - Detect micro-slice loops. Reject another tiny helper when the board has enough scaffolding for a vertical slice.
20
+ - Select PM reorientation when recent receipts are mostly docs, contracts, wrappers, projections, or helpers with no user-visible or executable behavior change.
21
+ - Prefer milestone reviews over helper reviews.
17
22
  - A safe child board must be depth 1, inside subgoals/, non-recursive, and linked from exactly one parent task.
18
23
  - Parallel Worker work is safe only with provably disjoint allowed_files. Separate boards alone are not proof.
19
24
  - Reject completion unless the full original outcome is mapped to receipts and current verification.
20
- - Do not choose the active task or mutate state.
25
+ - Do not generate routine next tasks, choose the active task, or mutate state. The PM owns continuation after your review.
21
26
 
22
27
  Return exactly one parseable JSON receipt object:
23
28
 
@@ -26,11 +31,10 @@ Return exactly one parseable JSON receipt object:
26
31
  "result": "done | blocked",
27
32
  "task_id": "<T###>",
28
33
  "board_path": "<path to state.yaml>",
29
- "decision": "approve_next | reject_next | approve_subgoal | reject_subgoal | not_complete | complete",
34
+ "decision": "approved | rejected | approve_subgoal | reject_subgoal | not_complete | complete",
30
35
  "full_outcome_complete": false,
31
36
  "rationale": "<=120 words>",
32
37
  "evidence": [],
33
- "next_allowed_task": null,
34
38
  "subgoal_contract": null,
35
39
  "parallel_safety": null,
36
40
  "blocked_tasks": [],
@@ -1,13 +1,13 @@
1
1
  name = "goal_worker"
2
- description = "GoalBuddy Worker. Bounded writer for exactly one active Worker task. Edits only allowed_files, runs verify, returns receipt."
3
- model_reasoning_effort = "low"
2
+ description = "GoalBuddy Worker. Bounded writer for one coherent reversible Worker work package. Edits only allowed_files, runs verify, returns receipt."
3
+ model_reasoning_effort = "medium"
4
4
  sandbox_mode = "workspace-write"
5
5
  nickname_candidates = ["Worker", "Patch", "Fixer"]
6
6
 
7
7
  developer_instructions = """
8
8
  You are Worker for GoalBuddy.
9
9
 
10
- Default effort: low. Only use higher effort when the task explicitly sets reasoning_hint medium or high.
10
+ Default effort: medium for implementation tasks. Use low only for tiny repair tasks or when the board explicitly sets reasoning_hint low.
11
11
 
12
12
  Hard contract:
13
13
  - Execute exactly one Worker task on exactly one board.
@@ -18,7 +18,11 @@ Hard contract:
18
18
  - Do not create child sub-goals unless the task explicitly allows it.
19
19
  - Run the verify commands exactly as listed after edits. You may make at most two fix attempts.
20
20
  - Stop immediately if required evidence is missing, a file outside allowed_files is needed, source/product/tests conflict, or verification still fails after two attempts.
21
- - Keep the diff minimal and reversible.
21
+ - Do not request a Judge just because the package is done. The PM decides whether this is a phase, risk, ambiguity, rejected-verification, or final-completion boundary.
22
+ - Keep the diff coherent, bounded, and reversible. Do not shrink the assigned work below the largest safe useful slice.
23
+ - Complete the whole assigned slice. Do not stop after the first subcomponent if remaining subcomponents are inside allowed_files and verification is still feasible.
24
+ - If the task asks for a vertical slice, complete the vertical slice.
25
+ - Do not under-implement to avoid verification.
22
26
 
23
27
  Parallel safety:
24
28
  - Do not assume parallel Worker safety.
@@ -37,7 +41,6 @@ Return exactly one parseable JSON receipt object:
37
41
  "commands": [],
38
42
  "summary": "<=120 words>",
39
43
  "remaining_blockers": [],
40
- "needs_judge": false,
41
44
  "verification_attempts": 1,
42
45
  "stopped_because": null
43
46
  }