goalbuddy 0.2.10

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 (68) hide show
  1. package/CONTRIBUTING.md +45 -0
  2. package/LICENSE +21 -0
  3. package/README.md +215 -0
  4. package/examples/extend-catalog-workflow/goal.md +53 -0
  5. package/examples/extend-catalog-workflow/notes/T001-extension-model-map.md +47 -0
  6. package/examples/extend-catalog-workflow/notes/T002-architecture-decision.md +48 -0
  7. package/examples/extend-catalog-workflow/notes/T003-implementation-summary.md +43 -0
  8. package/examples/extend-catalog-workflow/notes/T004-root-extend-folder.md +24 -0
  9. package/examples/extend-catalog-workflow/notes/T005-layout-cleanup.md +46 -0
  10. package/examples/extend-catalog-workflow/notes/T006-catalog-location.md +50 -0
  11. package/examples/extend-catalog-workflow/notes/T999-completion-audit.md +36 -0
  12. package/examples/extend-catalog-workflow/state.yaml +327 -0
  13. package/examples/github-pr-workflow-extension/pr-handoff.md +46 -0
  14. package/examples/improve-goal-maker/goal.md +51 -0
  15. package/examples/improve-goal-maker/notes/T001-repo-map.md +59 -0
  16. package/examples/improve-goal-maker/notes/T002-risk-map.md +37 -0
  17. package/examples/improve-goal-maker/state.yaml +224 -0
  18. package/goal-maker/SKILL.md +18 -0
  19. package/goal-maker/agents/README.md +23 -0
  20. package/goal-maker/agents/config-snippet.toml +5 -0
  21. package/goal-maker/agents/goal_judge.toml +29 -0
  22. package/goal-maker/agents/goal_scout.toml +26 -0
  23. package/goal-maker/agents/goal_worker.toml +28 -0
  24. package/goal-maker/agents/openai.yaml +6 -0
  25. package/goal-maker/scripts/check-goal-state.mjs +370 -0
  26. package/goal-maker/scripts/install-agents.mjs +28 -0
  27. package/goal-maker/templates/agents.md +48 -0
  28. package/goal-maker/templates/goal-prompt.txt +1 -0
  29. package/goal-maker/templates/goal.md +71 -0
  30. package/goal-maker/templates/note.md +22 -0
  31. package/goal-maker/templates/state.yaml +125 -0
  32. package/goalbuddy/SKILL.md +484 -0
  33. package/goalbuddy/agents/README.md +23 -0
  34. package/goalbuddy/agents/config-snippet.toml +5 -0
  35. package/goalbuddy/agents/goal_judge.toml +29 -0
  36. package/goalbuddy/agents/goal_scout.toml +26 -0
  37. package/goalbuddy/agents/goal_worker.toml +28 -0
  38. package/goalbuddy/agents/openai.yaml +6 -0
  39. package/goalbuddy/scripts/check-goal-state.mjs +370 -0
  40. package/goalbuddy/scripts/install-agents.mjs +28 -0
  41. package/goalbuddy/templates/agents.md +48 -0
  42. package/goalbuddy/templates/goal-prompt.txt +1 -0
  43. package/goalbuddy/templates/goal.md +71 -0
  44. package/goalbuddy/templates/note.md +22 -0
  45. package/goalbuddy/templates/state.yaml +125 -0
  46. package/internal/assets/extend-release.png +0 -0
  47. package/internal/assets/extend-release.svg +83 -0
  48. package/internal/assets/goal-maker-flow.png +0 -0
  49. package/internal/cli/check-publish-version.mjs +86 -0
  50. package/internal/cli/goal-maker.mjs +1061 -0
  51. package/package.json +65 -0
  52. package/plugins/goalbuddy/.codex-plugin/plugin.json +48 -0
  53. package/plugins/goalbuddy/README.md +29 -0
  54. package/plugins/goalbuddy/assets/goalbuddy-icon.svg +8 -0
  55. package/plugins/goalbuddy/skills/goalbuddy/SKILL.md +484 -0
  56. package/plugins/goalbuddy/skills/goalbuddy/agents/README.md +23 -0
  57. package/plugins/goalbuddy/skills/goalbuddy/agents/config-snippet.toml +5 -0
  58. package/plugins/goalbuddy/skills/goalbuddy/agents/goal_judge.toml +29 -0
  59. package/plugins/goalbuddy/skills/goalbuddy/agents/goal_scout.toml +26 -0
  60. package/plugins/goalbuddy/skills/goalbuddy/agents/goal_worker.toml +28 -0
  61. package/plugins/goalbuddy/skills/goalbuddy/agents/openai.yaml +6 -0
  62. package/plugins/goalbuddy/skills/goalbuddy/scripts/check-goal-state.mjs +370 -0
  63. package/plugins/goalbuddy/skills/goalbuddy/scripts/install-agents.mjs +28 -0
  64. package/plugins/goalbuddy/skills/goalbuddy/templates/agents.md +48 -0
  65. package/plugins/goalbuddy/skills/goalbuddy/templates/goal-prompt.txt +1 -0
  66. package/plugins/goalbuddy/skills/goalbuddy/templates/goal.md +71 -0
  67. package/plugins/goalbuddy/skills/goalbuddy/templates/note.md +22 -0
  68. package/plugins/goalbuddy/skills/goalbuddy/templates/state.yaml +125 -0
@@ -0,0 +1,327 @@
1
+ # Goal Maker v2 state.yaml
2
+ # Board truth lives here. goal.md is the editable charter; notes/ holds long receipts only.
3
+
4
+ version: 2
5
+
6
+ goal:
7
+ title: "Extend Catalog Workflow"
8
+ slug: "extend-catalog-workflow"
9
+ kind: open_ended
10
+ tranche: "Design and implement the extension catalog workflow, root extend surface, and clean package/skill layout."
11
+ status: done
12
+
13
+ rules:
14
+ pm_owns_state: true
15
+ one_active_task: true
16
+ max_write_workers: 1
17
+ no_implementation_without_worker_or_pm_task: true
18
+ no_completion_without_judge_or_pm_audit: true
19
+
20
+ agents:
21
+ scout: installed
22
+ worker: installed
23
+ judge: installed
24
+
25
+ active_task: null
26
+
27
+ tasks:
28
+ - id: T001
29
+ type: scout
30
+ assignee: Scout
31
+ status: done
32
+ reasoning_hint: high
33
+ objective: "Map the product vocabulary, extension surfaces, catalog strategy, and repo boundaries for optional Goal Maker extensions."
34
+ inputs:
35
+ - README.md
36
+ - package.json
37
+ - goal-maker/SKILL.md
38
+ - goal-maker/scripts/check-goal-state.mjs
39
+ - docs/goals/board-publishing-surfaces/goal.md
40
+ constraints:
41
+ - "Read-only."
42
+ - "Do not implement."
43
+ - "Treat external services as generated views, not board truth."
44
+ - "Use extend as the high-level concept and extensions as item names."
45
+ expected_output:
46
+ - "Recommended vocabulary."
47
+ - "Catalog and extension repo shape."
48
+ - "Candidate implementation tasks."
49
+ receipt:
50
+ result: done
51
+ note: notes/T001-extension-model-map.md
52
+ summary: "Mapped `extend/` as the optional extension surface, `extend/catalog.json` as the GitHub-hosted catalog, and package/dev internals as separate from the installable skill payload."
53
+ evidence:
54
+ - README.md
55
+ - package.json
56
+ - goal-maker/SKILL.md
57
+ - goal-maker/scripts/check-goal-state.mjs
58
+ spawned_tasks:
59
+ - T002
60
+ - id: T002
61
+ type: judge
62
+ assignee: Judge
63
+ status: done
64
+ reasoning_hint: high
65
+ objective: "Choose the extension vocabulary, catalog source, CLI shape, and repo layout before implementation."
66
+ inputs:
67
+ - "T001 receipt"
68
+ - examples/extend-catalog-workflow/notes/T001-extension-model-map.md
69
+ constraints:
70
+ - "Do not implement."
71
+ - "Preserve Goal Maker's local-first model."
72
+ - "Keep the root relatively clean."
73
+ - "Avoid browse/list/show as separate user concepts."
74
+ expected_output:
75
+ - "Decision on extension language."
76
+ - "Decision on catalog hosting."
77
+ - "First implementation tranche."
78
+ receipt:
79
+ result: done
80
+ decision: "Use root `extend/`, `extend/catalog.json`, and `goal-maker extend` as the single discovery/details command; group package-only CLI and tests under `internal/` while keeping skill runtime scripts inside `goal-maker/scripts/`."
81
+ note: notes/T002-architecture-decision.md
82
+ evidence:
83
+ - examples/extend-catalog-workflow/notes/T001-extension-model-map.md
84
+ - README.md
85
+ - package.json
86
+ next_allowed_task: T003
87
+ - id: T003
88
+ type: worker
89
+ assignee: Worker
90
+ status: done
91
+ reasoning_hint: medium
92
+ objective: "Implement the first catalog-backed `goal-maker extend` workflow."
93
+ allowed_files:
94
+ - README.md
95
+ - catalog.json
96
+ - goal-maker/bin/goal-maker.mjs
97
+ - goal-maker/test/goal-maker-cli.test.mjs
98
+ - package.json
99
+ verify:
100
+ - npm run check
101
+ - git diff --check
102
+ - node goal-maker/bin/goal-maker.mjs extend --catalog-url catalog.json --json
103
+ - npm publish --dry-run --json
104
+ stop_if:
105
+ - "Need provider credentials."
106
+ - "Need files outside allowed_files."
107
+ - "Catalog or extension semantics become ambiguous."
108
+ - "Verification fails twice."
109
+ receipt:
110
+ result: done
111
+ changed_files:
112
+ - README.md
113
+ - catalog.json
114
+ - goal-maker/bin/goal-maker.mjs
115
+ - goal-maker/test/goal-maker-cli.test.mjs
116
+ - package.json
117
+ commands:
118
+ - cmd: npm run check
119
+ status: pass
120
+ - cmd: git diff --check
121
+ status: pass
122
+ - cmd: node goal-maker/bin/goal-maker.mjs extend --catalog-url catalog.json --json
123
+ status: pass
124
+ - cmd: npm publish --dry-run --json
125
+ status: pass
126
+ summary: "Implemented catalog-backed `goal-maker extend`, root `catalog.json`, checksum-verified extension install, extension doctor checks, and CLI test coverage."
127
+ note: notes/T003-implementation-summary.md
128
+ commits:
129
+ - 105850e
130
+ spawned_tasks:
131
+ - T004
132
+ - id: T004
133
+ type: pm
134
+ assignee: PM
135
+ status: done
136
+ reasoning_hint: medium
137
+ objective: "Add a visible root `extend/` folder without bundling placeholder extensions."
138
+ inputs:
139
+ - "T002 decision"
140
+ - "T003 receipt"
141
+ - "Owner feedback that the repo should show an `/extend` folder."
142
+ constraints:
143
+ - "Do not add fake bundled extensions."
144
+ - "Keep extensions as subfolders under root `extend/`."
145
+ - "Keep npm catalog behavior GitHub-hosted."
146
+ expected_output:
147
+ - "Root extend folder with documentation."
148
+ - "README wording that points to the extension surface."
149
+ receipt:
150
+ result: done
151
+ summary: "Added root `extend/README.md` so the repo has a visible extension surface while keeping the catalog empty until real extensions ship."
152
+ note: notes/T004-root-extend-folder.md
153
+ changed_files:
154
+ - README.md
155
+ - extend/README.md
156
+ commands:
157
+ - cmd: npm run check
158
+ status: pass
159
+ commits:
160
+ - 17c65c9
161
+ spawned_tasks:
162
+ - T005
163
+ - id: T005
164
+ type: worker
165
+ assignee: Worker
166
+ status: done
167
+ reasoning_hint: medium
168
+ objective: "Move package-only CLI/tests out of the installable skill folder and add repo-specific agent guidance."
169
+ allowed_files:
170
+ - AGENTS.md
171
+ - CONTRIBUTING.md
172
+ - README.md
173
+ - extend/README.md
174
+ - goal-maker/SKILL.md
175
+ - goal-maker/bin/goal-maker.mjs
176
+ - goal-maker/test/check-goal-state.test.mjs
177
+ - goal-maker/test/goal-maker-cli.test.mjs
178
+ - internal/cli/goal-maker.mjs
179
+ - internal/test/check-goal-state.test.mjs
180
+ - internal/test/goal-maker-cli.test.mjs
181
+ - package.json
182
+ verify:
183
+ - npm run check
184
+ - git diff --check
185
+ - tmp=$(mktemp -d); node internal/cli/goal-maker.mjs install --codex-home "$tmp"; node internal/cli/goal-maker.mjs doctor --codex-home "$tmp"; rm -rf "$tmp"
186
+ - npm publish --dry-run --json
187
+ stop_if:
188
+ - "Need to move skill runtime scripts out of `goal-maker/scripts/`."
189
+ - "Need root folders beyond `internal/`."
190
+ - "Verification fails twice."
191
+ receipt:
192
+ result: done
193
+ changed_files:
194
+ - AGENTS.md
195
+ - CONTRIBUTING.md
196
+ - README.md
197
+ - extend/README.md
198
+ - goal-maker/SKILL.md
199
+ - internal/cli/goal-maker.mjs
200
+ - internal/test/check-goal-state.test.mjs
201
+ - internal/test/goal-maker-cli.test.mjs
202
+ - package.json
203
+ commands:
204
+ - cmd: npm run check
205
+ status: pass
206
+ - cmd: git diff --check
207
+ status: pass
208
+ - cmd: tmp=$(mktemp -d); node internal/cli/goal-maker.mjs install --codex-home "$tmp"; node internal/cli/goal-maker.mjs doctor --codex-home "$tmp"; rm -rf "$tmp"
209
+ status: pass
210
+ - cmd: npm publish --dry-run --json
211
+ status: pass
212
+ summary: "Moved package-only CLI/tests under `internal/`, removed `goal-maker/bin` and `goal-maker/test` from the skill payload, added root `AGENTS.md`, and updated docs/package paths."
213
+ note: notes/T005-layout-cleanup.md
214
+ commits:
215
+ - 6faa5de
216
+ spawned_tasks:
217
+ - T006
218
+ - id: T006
219
+ type: worker
220
+ assignee: Worker
221
+ status: done
222
+ reasoning_hint: low
223
+ objective: "Move the hosted catalog into `extend/` and update the CLI/default docs to match."
224
+ allowed_files:
225
+ - AGENTS.md
226
+ - README.md
227
+ - extend/README.md
228
+ - catalog.json
229
+ - extend/catalog.json
230
+ - internal/cli/goal-maker.mjs
231
+ - package.json
232
+ - examples/extend-catalog-workflow
233
+ verify:
234
+ - npm run check
235
+ - git diff --check
236
+ - node internal/cli/goal-maker.mjs extend --catalog-url extend/catalog.json --json
237
+ - npm publish --dry-run --json
238
+ stop_if:
239
+ - "Need to add bundled extensions."
240
+ - "Need a separate extension registry."
241
+ - "Verification fails twice."
242
+ receipt:
243
+ result: done
244
+ changed_files:
245
+ - AGENTS.md
246
+ - README.md
247
+ - extend/README.md
248
+ - extend/catalog.json
249
+ - internal/cli/goal-maker.mjs
250
+ - package.json
251
+ - examples/extend-catalog-workflow/goal.md
252
+ - examples/extend-catalog-workflow/state.yaml
253
+ - examples/extend-catalog-workflow/notes/T006-catalog-location.md
254
+ commands:
255
+ - cmd: npm run check
256
+ status: pass
257
+ - cmd: git diff --check
258
+ status: pass
259
+ - cmd: node internal/cli/goal-maker.mjs extend --catalog-url extend/catalog.json --json
260
+ status: pass
261
+ - cmd: npm publish --dry-run --json
262
+ status: pass
263
+ summary: "Moved the GitHub-hosted catalog into `extend/catalog.json`, updated the CLI default raw URL, and adjusted docs/example references."
264
+ note: notes/T006-catalog-location.md
265
+ commits:
266
+ - "this example/catalog-location commit"
267
+ spawned_tasks:
268
+ - T999
269
+ - id: T999
270
+ type: judge
271
+ assignee: Judge
272
+ status: done
273
+ reasoning_hint: high
274
+ objective: "Audit whether the extension catalog and layout cleanup tranche is complete."
275
+ inputs:
276
+ - "All done task receipts"
277
+ - "Last verification"
278
+ - "Current package dry run"
279
+ constraints:
280
+ - "Do not implement."
281
+ - "Completion requires evidence from actual commits and verification commands."
282
+ expected_output:
283
+ - "complete | not_complete"
284
+ - "missing evidence"
285
+ - "next task if not complete"
286
+ receipt:
287
+ result: done
288
+ decision: complete
289
+ note: notes/T999-completion-audit.md
290
+ summary: "The tranche is complete: extension vocabulary, GitHub-hosted catalog, `extend` CLI workflow, root extension surface, package layout cleanup, and repo agent guidance are implemented and verified."
291
+ evidence:
292
+ - examples/extend-catalog-workflow/goal.md
293
+ - examples/extend-catalog-workflow/notes/T001-extension-model-map.md
294
+ - examples/extend-catalog-workflow/notes/T002-architecture-decision.md
295
+ - examples/extend-catalog-workflow/notes/T003-implementation-summary.md
296
+ - examples/extend-catalog-workflow/notes/T004-root-extend-folder.md
297
+ - examples/extend-catalog-workflow/notes/T005-layout-cleanup.md
298
+ - examples/extend-catalog-workflow/notes/T006-catalog-location.md
299
+ - AGENTS.md
300
+ - extend/catalog.json
301
+ - extend/README.md
302
+ - internal/cli/goal-maker.mjs
303
+ - package.json
304
+ verification:
305
+ - cmd: npm run check
306
+ status: pass
307
+ - cmd: git diff --check
308
+ status: pass
309
+ - cmd: npm publish --dry-run --json
310
+ status: pass
311
+ - cmd: node goal-maker/scripts/check-goal-state.mjs examples/extend-catalog-workflow/state.yaml
312
+ status: pass
313
+
314
+ checks:
315
+ dirty_fingerprint: unknown
316
+ last_verification:
317
+ result: pass
318
+ task: T999
319
+ commands:
320
+ - cmd: npm run check
321
+ status: pass
322
+ - cmd: git diff --check
323
+ status: pass
324
+ - cmd: npm publish --dry-run --json
325
+ status: pass
326
+ - cmd: node goal-maker/scripts/check-goal-state.mjs examples/extend-catalog-workflow/state.yaml
327
+ status: pass
@@ -0,0 +1,46 @@
1
+ # PR Handoff: Add GitHub PR Workflow Extension
2
+
3
+ ## Suggested Title
4
+
5
+ Add GitHub PR workflow extension
6
+
7
+ ## Summary
8
+
9
+ - Adds `github-pr-workflow` as a cataloged Goal Maker extension.
10
+ - Documents a local-first workflow for turning goal receipts into GitHub PR handoff text.
11
+ - Keeps `state.yaml` authoritative and treats GitHub PR content as generated review context.
12
+
13
+ ## Goal Context
14
+
15
+ - Original request: `$goal-maker add a new extension to goal-maker`
16
+ - Target outcome: a discoverable GitHub PR workflow integration extension with catalog metadata, docs, and example proof.
17
+ - Completion proof: catalog entry, extension documentation, example artifact, and local checks.
18
+
19
+ ## Changed Files
20
+
21
+ - `extend/catalog.json`
22
+ - `extend/README.md`
23
+ - `extend/github-pr-workflow/README.md`
24
+ - `extend/github-pr-workflow/extension.yaml`
25
+ - `examples/github-pr-workflow-extension/pr-handoff.md`
26
+ - `README.md`
27
+
28
+ ## Verification
29
+
30
+ ```bash
31
+ node internal/cli/goal-maker.mjs extend --catalog-url extend/catalog.json --json
32
+ node internal/cli/goal-maker.mjs extend github-pr-workflow --catalog-url extend/catalog.json --json
33
+ node internal/cli/goal-maker.mjs extend install github-pr-workflow --catalog-url extend/catalog.json --dry-run --json
34
+ npm run check
35
+ git diff --check
36
+ ```
37
+
38
+ ## Review Notes
39
+
40
+ - This is a local handoff workflow, not live GitHub automation.
41
+ - No GitHub token is required for discovery, details, or install dry-run.
42
+ - Future live PR creation should be a separate extension or explicitly approved follow-up task.
43
+
44
+ ## Follow-Up
45
+
46
+ - Consider a later command or template generator only after the cataloged workflow proves useful.
@@ -0,0 +1,51 @@
1
+ # Improve Goal Maker
2
+
3
+ ## Objective
4
+
5
+ Improve the local Goal Maker skill by discovering the highest-leverage repo-backed changes, completing the first safe implementation tranche, and leaving a reviewable handoff for anything larger.
6
+
7
+ ## Goal Kind
8
+
9
+ `open_ended`
10
+
11
+ ## Current Tranche
12
+
13
+ Map the current Goal Maker implementation, identify concrete improvement candidates with verification paths, select one small and reversible tranche, implement it, verify it, and finish with an audit receipt.
14
+
15
+ ## Non-Negotiable Constraints
16
+
17
+ - Keep Goal Maker v2 control-file semantics intact: `goal.md`, `state.yaml`, and `notes/` only at each goal root.
18
+ - Do not implement from assumptions; Scout evidence or Judge selection must precede Worker edits.
19
+ - Preserve compatibility with Codex agent roles and the existing checker unless a Judge task explicitly chooses otherwise.
20
+ - Keep changes small, reviewable, and backed by local verification commands.
21
+ - Do not use destructive git operations or require credentials.
22
+
23
+ ## Stop Rule
24
+
25
+ Stop when the tranche audit passes, all safe local work is blocked, or continuing would require owner input, credentials, destructive operations, or strategy the board cannot decide.
26
+
27
+ ## Canonical Board
28
+
29
+ Machine truth lives at:
30
+
31
+ `examples/improve-goal-maker/state.yaml`
32
+
33
+ If this charter and `state.yaml` disagree, `state.yaml` wins for task status, active task, receipts, verification freshness, and completion truth.
34
+
35
+ ## Run Command
36
+
37
+ ```text
38
+ /goal Follow examples/improve-goal-maker/goal.md
39
+ ```
40
+
41
+ ## PM Loop
42
+
43
+ On every `/goal` continuation:
44
+
45
+ 1. Read this charter.
46
+ 2. Read `state.yaml`.
47
+ 3. Work only on the active board task.
48
+ 4. Assign Scout, Judge, Worker, or PM according to the task.
49
+ 5. Write a compact task receipt.
50
+ 6. Update the board.
51
+ 7. Select the next active task or finish with a Judge/PM audit receipt.
@@ -0,0 +1,59 @@
1
+ # T001: Goal Maker Repo Map
2
+
3
+ Task: `T001`
4
+ Kind: `scout`
5
+ Status: `current`
6
+
7
+ ## Summary
8
+
9
+ Goal Maker is a small dependency-free npm package that installs a Codex skill, three agent role definitions, templates, and a v2 board checker. The core verification path is healthy: syntax checks and all current checker tests pass, a temporary install plus doctor run succeeds, and the package dry run includes the expected runtime files. The highest-leverage next investigation is not packaging correctness; it is workflow reliability around checker blind spots, agent-installation assumptions, and template/skill contract drift.
10
+
11
+ ## Repo Map
12
+
13
+ - `README.md` describes the package purpose, install commands, board model, repository layout, and status caveats.
14
+ - `CONTRIBUTING.md` defines the local verification contract: `npm run check`, temporary install/doctor, and `npm pack --dry-run`.
15
+ - `package.json` exposes the `goal-maker` bin, keeps runtime dependency-free, packages the skill runtime plus docs/assets, and defines `check`, `test`, and `pack:dry-run`.
16
+ - `goal-maker/SKILL.md` is the installed skill contract: direct `$goal-maker` creates or repairs a v2 board, stops for user choice, and `/goal` owns the PM loop.
17
+ - `goal-maker/bin/goal-maker.mjs` installs the skill and bundled `goal_*.toml` agents into a Codex home and supports `install`, `update`, `agents`, `doctor`, and help.
18
+ - `goal-maker/scripts/check-goal-state.mjs` validates v2 board shape with a lightweight line-oriented parser.
19
+ - `goal-maker/scripts/install-agents.mjs` is a secondary agent copy helper.
20
+ - `goal-maker/templates/goal.md`, `state.yaml`, and `note.md` seed new goal control files.
21
+ - `goal-maker/agents/goal_scout.toml`, `goal_worker.toml`, and `goal_judge.toml` define the intended role constraints.
22
+ - `goal-maker/test/check-goal-state.test.mjs` covers key checker invariants.
23
+
24
+ ## Verification Commands
25
+
26
+ - `npm run check` passed: Node syntax checks and 7 node:test cases passed.
27
+ - Temporary install plus doctor passed: `skill_installed: true`; installed agents were `goal_judge.toml`, `goal_scout.toml`, and `goal_worker.toml`.
28
+ - `npm pack --dry-run` passed and listed the expected package files, including `README.md`, `CONTRIBUTING.md`, `internal/assets/`, `package.json`, and `goal-maker/` runtime files.
29
+ - `node goal-maker/scripts/check-goal-state.mjs examples/improve-goal-maker/state.yaml` passed with `ok: true`.
30
+
31
+ ## Health Signals
32
+
33
+ - Current tests cover a valid Scout board, active Worker requirements, legacy v1 rejection, one-active-task enforcement, done-task receipt requirements, unexpected root entries, and final audit completion.
34
+ - The checker intentionally avoids dependencies, but it parses YAML with regular expressions and line indentation. This is acceptable for the template subset but creates likely blind spots for richer valid YAML or misleading strings inside quoted values.
35
+ - The package has two agent-installation paths: the CLI in `goal-maker/bin/goal-maker.mjs` and the helper in `goal-maker/scripts/install-agents.mjs`. They are similar but not identical.
36
+ - The direct skill contract says `$goal-maker` must verify Scout, Worker, and Judge agents are installed or explain what is missing; current templates mark them `installed`, while actual verification is behavior implemented by the PM thread, not the CLI/checker.
37
+
38
+ ## Ranked Improvement Candidates
39
+
40
+ 1. Add checker tests and fixes for root-path robustness and YAML parsing edge cases, especially misleading legacy markers inside quoted values or comments.
41
+ 2. Reconcile or document the two agent-installation paths so CLI behavior, helper behavior, and README guidance cannot drift.
42
+ 3. Make agent installation status less assumption-driven in generated boards or add checker warnings when agent status values are placeholders.
43
+ 4. Add tests for the CLI install/doctor/package path so the contributor verification contract is covered by `npm run check`, not just manual commands.
44
+ 5. Tighten docs/templates around what `/goal` PM may do in Codex environments where actual subagent dispatch is unavailable and roles are simulated in-thread.
45
+
46
+ ## Candidate Next Tasks
47
+
48
+ - Investigate checker blind spots with focused failing test candidates before choosing a fix.
49
+ - Compare `goal-maker/bin/goal-maker.mjs` and `goal-maker/scripts/install-agents.mjs` and decide whether to consolidate, test, or document the helper.
50
+ - Judge the first implementation tranche after the risk map, preferring a small test-backed checker or CLI reliability fix.
51
+
52
+ ## Board Receipt Snippet
53
+
54
+ ```yaml
55
+ receipt:
56
+ result: done
57
+ note: notes/T001-repo-map.md
58
+ summary: "Repo map completed; verification is green, install/package checks work, and the top improvement area is Goal Maker workflow reliability around checker blind spots, agent installation assumptions, and template/skill drift."
59
+ ```
@@ -0,0 +1,37 @@
1
+ # T002: Workflow Risk Map
2
+
3
+ Task: `T002`
4
+ Kind: `scout`
5
+ Status: `current`
6
+
7
+ ## Summary
8
+
9
+ The highest-confidence risks are small and testable. First, `goal-maker doctor` reports success when one of the required bundled agents is missing, which weakens the "verify Scout, Worker, and Judge agents" contract. Second, the board checker accepts mismatched task `type` and `assignee` values, even though Goal Maker semantics depend on those fields agreeing. A lower-priority drift risk is that `update` does not overwrite stale existing agent definitions unless `--force` is supplied, despite README wording that says install or update the skill and bundled agents.
10
+
11
+ ## Evidence
12
+
13
+ - `goal-maker/bin/goal-maker.mjs` `doctor()` exits based only on whether `skills/goal-maker/SKILL.md` exists. In a temp Codex home with `goal_worker.toml` removed, `doctor` exited 0 and reported only `goal_judge.toml` and `goal_scout.toml`.
14
+ - `goal-maker/scripts/check-goal-state.mjs` independently validates `task.type` and `task.assignee`, but does not validate pairs. A temp board with `type: scout` and `assignee: Worker` passed with `ok: true`.
15
+ - `goal-maker/scripts/check-goal-state.mjs` does not require or validate the `agents:` section. A temp board with the section omitted passed with `ok: true`.
16
+ - `goal-maker/bin/goal-maker.mjs` `installAgents()` skips existing `goal_*.toml` files unless `--force` is present. In a temp Codex home with a stale `goal_scout.toml`, `goal-maker update` left the stale file unchanged.
17
+ - `goal-maker/scripts/install-agents.mjs` copies any `.toml` except names containing `config-snippet`, while the CLI copies only `goal_*.toml`. Current files make this harmless, but it is a drift point.
18
+
19
+ ## Small Safe Implementation Candidates
20
+
21
+ 1. Add CLI tests for `doctor` and make `doctor` fail when any required agent file is missing. Allowed files would likely be `goal-maker/bin/goal-maker.mjs` and a new focused CLI test file.
22
+ 2. Add checker tests for task type/assignee mismatch and fix the checker to reject mismatches. Allowed files would be `goal-maker/scripts/check-goal-state.mjs` and `goal-maker/test/check-goal-state.test.mjs`.
23
+ 3. Add checker tests for missing or invalid `agents:` statuses and reject or warn. This is slightly more policy-heavy because templates currently treat agent status as PM-populated board metadata.
24
+ 4. Decide whether `update` should overwrite existing bundled agents or whether README/CLI wording should clarify that `--force` is required for agent refresh.
25
+
26
+ ## Recommended First Tranche
27
+
28
+ Prefer the `doctor` missing-agent fix. It directly supports the `$goal-maker` requirement to verify Scout, Worker, and Judge availability, has tight behavior, and can be verified with a new CLI test plus existing checks. The checker mismatch fix is also small, but it is less directly connected to the user-visible setup flow.
29
+
30
+ ## Board Receipt Snippet
31
+
32
+ ```yaml
33
+ receipt:
34
+ result: done
35
+ note: notes/T002-risk-map.md
36
+ summary: "Risk map completed; doctor exits green with missing agents, checker accepts type/assignee mismatches, and update leaves stale agents unless forced."
37
+ ```