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,45 @@
1
+ # Contributing
2
+
3
+ Thanks for improving `goalbuddy`.
4
+
5
+ ## Local Setup
6
+
7
+ Clone the repo and run the checks:
8
+
9
+ ```bash
10
+ git clone https://github.com/tolibear/goalbuddy.git
11
+ cd goalbuddy
12
+ npm run check
13
+ ```
14
+
15
+ Until the GitHub repository rename is complete, use the current local clone or the existing `tolibear/goal-maker` remote.
16
+
17
+ ## Local Install Test
18
+
19
+ Use a temporary Codex home so local testing does not overwrite your real install:
20
+
21
+ ```bash
22
+ tmp=$(mktemp -d)
23
+ node internal/cli/goal-maker.mjs install --codex-home "$tmp"
24
+ node internal/cli/goal-maker.mjs doctor --codex-home "$tmp"
25
+ rm -rf "$tmp"
26
+ ```
27
+
28
+ ## Package Check
29
+
30
+ Before opening a PR, verify the npm package contents:
31
+
32
+ ```bash
33
+ npm pack --dry-run
34
+ ```
35
+
36
+ The package should include `README.md`, `internal/assets/`, `package.json`, `internal/cli/`, the canonical `goalbuddy/` skill directory, the temporary `goal-maker/` compatibility skill directory, and `plugins/goalbuddy/`.
37
+
38
+ ## Contribution Guidelines
39
+
40
+ - Keep the runtime dependency-free unless there is a strong reason.
41
+ - Keep `goalbuddy/` installable as the canonical Codex skill directory.
42
+ - Keep `goal-maker/` working as a temporary compatibility skill directory until the migration window ends.
43
+ - Prefer small, reviewable changes.
44
+ - Update README or templates when behavior changes.
45
+ - Run `npm run check` before submitting changes.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 tolibear
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,215 @@
1
+ # GoalBuddy
2
+
3
+ Turn open-ended Codex work into a living Scout/Judge/Worker board with receipts, verification, and optional extensions.
4
+
5
+ ```bash
6
+ npx goalbuddy
7
+ ```
8
+
9
+ Then invoke the skill inside Codex:
10
+
11
+ ```text
12
+ $goalbuddy
13
+ ```
14
+
15
+ `$goalbuddy` creates a local goal charter and task board, then prints the `/goal` command to run next. It does not start `/goal` automatically.
16
+
17
+ Native Codex `/goal` is still an under-development Codex feature. Before relying on the printed command, confirm your local Codex runtime is logged in and has goals enabled:
18
+
19
+ ```bash
20
+ codex login status
21
+ codex features enable goals
22
+ npx goalbuddy doctor --goal-ready
23
+ ```
24
+
25
+ ![A simple hand-drawn diagram showing a vague goal becoming a GoalBuddy board with Scout, Judge, Worker, and a receipt.](internal/assets/goal-maker-flow.png)
26
+
27
+ ## Why It Exists
28
+
29
+ Long Codex goals drift. A broad request like “improve this project” can turn into unbounded edits, stale verification, and premature completion claims.
30
+
31
+ GoalBuddy gives Codex an operating loop for that kind of work:
32
+
33
+ ```text
34
+ vague goal -> discovery -> task board -> one active task -> receipt -> board update -> repeat
35
+ ```
36
+
37
+ The main Codex thread is the PM. It owns the board, chooses the active task, delegates when useful, records receipts, and only completes after a Judge or PM audit.
38
+
39
+ ## Core Features
40
+
41
+ - **Local board truth**: `goal.md` is the editable charter; `state.yaml` is the machine-readable board; `notes/` holds long receipts.
42
+ - **Default role agents**: Scout discovers evidence, Judge resolves risk and completion claims, Worker performs one bounded implementation task.
43
+ - **One active task**: keeps autonomous work sequenced and reviewable instead of turning a vague goal into a pile of parallel edits.
44
+ - **Task receipts**: every completed, blocked, or escalated task records what changed, what was learned, and what verification ran.
45
+ - **Board checker**: validates v2 goal folders and rejects old `gate`, `units`, `artifacts`, and `evidence.jsonl` layouts.
46
+ - **Extensions**: optional add-ons are discovered from `extend/catalog.json` without requiring npm updates for every integration.
47
+
48
+ ## The Model
49
+
50
+ GoalBuddy uses four primitives:
51
+
52
+ - **Charter**: `goal.md` states the objective, constraints, current tranche, and stop rule.
53
+ - **Board**: `state.yaml` is machine truth for tasks, status, receipts, and verification freshness.
54
+ - **Task**: exactly one active task is worked at a time.
55
+ - **Receipt**: every completed, blocked, or escalated task leaves compact proof of what happened.
56
+
57
+ Scout, Judge, and Worker are installed by default:
58
+
59
+ - **Scout** maps repo/source/spec evidence and candidate tasks.
60
+ - **Judge** resolves ambiguity, scope, risk, and completion claims.
61
+ - **Worker** performs one bounded implementation or recovery task.
62
+
63
+ The main `/goal` thread is the PM. Use medium thinking for specific bounded goals, high for open-ended/recovery/audit goals, and reserve xhigh for exceptional high-risk or multi-day final audits.
64
+
65
+ ## Goal Folder
66
+
67
+ For each goal, `$goalbuddy` prepares:
68
+
69
+ ```text
70
+ docs/goals/<slug>/
71
+ goal.md
72
+ state.yaml
73
+ notes/
74
+ ```
75
+
76
+ Most task results live inline as receipts in `state.yaml`. Use `notes/<task-id>-<slug>.md` only when a Scout, Judge, or PM result is too large for the task card.
77
+
78
+ For a broad prompt like “Improve my project,” the first task should usually be Scout, not Worker:
79
+
80
+ ```yaml
81
+ tasks:
82
+ - id: T001
83
+ type: scout
84
+ assignee: Scout
85
+ status: active
86
+ objective: "Map repo health and identify improvement candidates."
87
+ receipt: null
88
+ - id: T002
89
+ type: judge
90
+ assignee: Judge
91
+ status: queued
92
+ objective: "Choose the next safe implementation task."
93
+ receipt: null
94
+ - id: T003
95
+ type: worker
96
+ assignee: Worker
97
+ status: queued
98
+ objective: "Execute the safe implementation task selected by Judge."
99
+ allowed_files: []
100
+ verify: []
101
+ stop_if:
102
+ - "Need files outside allowed_files."
103
+ - "Verification fails twice."
104
+ receipt: null
105
+ ```
106
+
107
+ ## Commands
108
+
109
+ Install or update the Codex skill and bundled agents:
110
+
111
+ ```bash
112
+ npx goalbuddy
113
+ npx goalbuddy update
114
+ ```
115
+
116
+ `install` and `update` print a compact summary of the skill, agent files, preserved installed extensions, and extension catalog recommendations. Use `--json` when an agent or script needs structured output.
117
+
118
+ ### Compatibility Window
119
+
120
+ 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:
121
+
122
+ ```bash
123
+ npx goalbuddy
124
+ ```
125
+
126
+ Machine-readable commands such as `npx goal-maker install --json` keep JSON output clean so existing automation can migrate safely.
127
+
128
+ Repair only the agent definitions:
129
+
130
+ ```bash
131
+ npx goalbuddy agents
132
+ ```
133
+
134
+ Check what is installed:
135
+
136
+ ```bash
137
+ npx goalbuddy doctor
138
+ ```
139
+
140
+ Strictly check whether the native Codex `/goal` runtime is ready too:
141
+
142
+ ```bash
143
+ npx goalbuddy doctor --goal-ready
144
+ ```
145
+
146
+ `doctor` reports missing or stale bundled agents, Codex login status, and whether the `goals` feature is enabled. `update` refreshes the installed skill and bundled agents.
147
+
148
+ Discover optional extensions from the GitHub-hosted catalog:
149
+
150
+ ```bash
151
+ npx goalbuddy extend
152
+ npx goalbuddy extend github-pr-workflow
153
+ npx goalbuddy extend install github-pr-workflow --dry-run
154
+ npx goalbuddy extend install --all --dry-run
155
+ ```
156
+
157
+ Use a non-default Codex home:
158
+
159
+ ```bash
160
+ npx goalbuddy install --codex-home /path/to/.codex
161
+ ```
162
+
163
+ ## Extensions
164
+
165
+ The npm package is the stable core. Extensions live under `extend/` and move through the GitHub-hosted `extend/catalog.json`, so users do not need a new npm release for every optional integration.
166
+
167
+ `goalbuddy extend` reads the catalog and shows available extensions plus operational state such as activation, install/configuration status, approval requirements, safe-by-default status, and missing environment variables. `goalbuddy extend <id>` shows what an extension reads, writes, requires, supports, and a local-use prompt. `goalbuddy extend install <id>` copies a pinned, checksum-verified extension into the local GoalBuddy install. `goalbuddy extend install --all` installs every cataloged extension.
168
+
169
+ Extensions are not board truth. They may publish, report, intake, or add role guidance, but `state.yaml` remains authoritative.
170
+
171
+ The first cataloged extension, `github-pr-workflow`, prepares receipt-aligned commit boundaries and GitHub PR handoff text from goal receipts without requiring GitHub credentials or making GitHub authoritative. The catalog also includes GitHub Projects sync plus local-first review, recovery, planning, documentation, audit, and credential-gated handoff extensions such as `github-projects`, `ai-diff-risk-review`, `ci-failure-triage`, `docs-drift-audit`, `test-gap-planner`, `release-readiness`, `dependency-upgrade-planner`, `security-review-brief`, `codebase-onboarding-map`, `slack-standup-digest`, and `linear-ticket-handoff`.
172
+
173
+ ## Running A Goal
174
+
175
+ After `$goalbuddy` creates or repairs the board, start `/goal` with the printed command:
176
+
177
+ ```text
178
+ /goal Follow docs/goals/<slug>/goal.md.
179
+ ```
180
+
181
+ The detailed run instructions live in that goal's `goal.md`, so the kickoff prompt can stay short while the board carries the full stop rule, intake, and PM loop.
182
+
183
+ By default, GoalBuddy treats broad goals as requests for continuous work, not plan-only or one-slice exercises. Missing credentials or owner input are blockers for specific tasks, not reasons to stop the goal. A queued or active Worker task blocks `goal.status: done`; finish it, block it with a receipt, or replace it with a smaller safe Worker task before final audit. For continuous execution boards, a final audit must prove the full original outcome is complete, not merely that the latest slice passed.
184
+
185
+ Check board health:
186
+
187
+ ```bash
188
+ node ~/.codex/skills/goalbuddy/scripts/check-goal-state.mjs docs/goals/<slug>/state.yaml
189
+ ```
190
+
191
+ ## Example
192
+
193
+ See `examples/improve-goal-maker/` for a small completed reliability run, `examples/extend-catalog-workflow/` for a larger run that moves from product framing through implementation and repo cleanup, and `examples/github-pr-workflow-extension/pr-handoff.md` for an extension-generated PR handoff artifact.
194
+
195
+ ## Repo Contents
196
+
197
+ - `goalbuddy/SKILL.md`: the canonical Codex skill
198
+ - `goalbuddy/agents/`: Scout, Judge, and Worker definitions
199
+ - `goalbuddy/templates/`: `goal.md`, `state.yaml`, and `note.md`
200
+ - `goalbuddy/scripts/check-goal-state.mjs`: v2 board checker
201
+ - `goal-maker/`: temporary compatibility skill payload for existing users
202
+ - `internal/cli/goal-maker.mjs`: npm installer CLI
203
+ - `plugins/goalbuddy/`: repo-local Codex plugin package scaffold
204
+ - `extend/` and `extend/catalog.json`: GitHub-hosted extension surface
205
+ - `examples/`: completed sample runs
206
+
207
+ ## Status
208
+
209
+ `0.2.x` is the v2 board/receipt model. It intentionally rejects old v1 `gate`, `units`, `artifacts`, and `evidence.jsonl` goal folders instead of auto-migrating them.
210
+
211
+ Use this to structure autonomous Codex work. Keep relying on repo-specific `AGENTS.md`, tests, and CI for repo facts.
212
+
213
+ ## License
214
+
215
+ MIT
@@ -0,0 +1,53 @@
1
+ # Extend Catalog Workflow
2
+
3
+ ## Objective
4
+
5
+ Design and implement Goal Maker's extension catalog workflow so optional features can move through GitHub-hosted extension metadata without requiring frequent npm package releases.
6
+
7
+ ## Goal Kind
8
+
9
+ `open_ended`
10
+
11
+ ## Current Tranche
12
+
13
+ Decide the product language and architecture for optional extensions, implement the first catalog-backed `extend` CLI workflow, add a visible root `extend/` surface, clean the skill/package layout, and leave a reviewable completion audit.
14
+
15
+ ## Non-Negotiable Constraints
16
+
17
+ - `state.yaml` remains the only board truth.
18
+ - Extensions are optional support surfaces, not the control plane.
19
+ - Use `extend` as the repo surface and `extensions` as the item name.
20
+ - Avoid implying bidirectional sync with external services.
21
+ - Keep npm as the stable core; catalog entries should be updateable from GitHub.
22
+ - Keep package-only infrastructure out of the installable skill payload.
23
+ - Do not require provider credentials for discovery or dry-run installation.
24
+
25
+ ## Stop Rule
26
+
27
+ Stop when the extension/catalog UX is implemented, the repo layout reflects the skill/package boundary, verification passes, and the final audit maps the shipped changes to receipts and commits.
28
+
29
+ ## Canonical Board
30
+
31
+ Machine truth lives at:
32
+
33
+ `examples/extend-catalog-workflow/state.yaml`
34
+
35
+ If this charter and `state.yaml` disagree, `state.yaml` wins for task status, active task, receipts, verification freshness, and completion truth.
36
+
37
+ ## Run Command
38
+
39
+ ```text
40
+ /goal Follow examples/extend-catalog-workflow/goal.md
41
+ ```
42
+
43
+ ## PM Loop
44
+
45
+ On every `/goal` continuation:
46
+
47
+ 1. Read this charter.
48
+ 2. Read `state.yaml`.
49
+ 3. Work only on the active board task.
50
+ 4. Assign Scout, Judge, Worker, or PM according to the task.
51
+ 5. Write a compact task receipt.
52
+ 6. Update the board.
53
+ 7. Select the next active task or finish with a Judge/PM audit receipt.
@@ -0,0 +1,47 @@
1
+ # T001: Extension Model Map
2
+
3
+ Task: `T001`
4
+ Kind: `scout`
5
+ Status: `done`
6
+
7
+ ## Summary
8
+
9
+ The scalable frame is `extend`: optional extension folders live at the repo root under `extend/`, and catalog metadata lives at `extend/catalog.json`. The npm CLI should read the GitHub-hosted catalog so extension discovery can change without publishing a new npm version.
10
+
11
+ Board publishing is the first likely extension family, but the extension surface should also support unrelated add-ons such as role guidance, reports, intake tools, and external channel publishing.
12
+
13
+ ## Recommended Vocabulary
14
+
15
+ - Repo surface: `extend/`
16
+ - Items inside `extend/`: extensions
17
+ - Catalog file: `extend/catalog.json`
18
+ - Public action for external surfaces: publish
19
+ - Avoid umbrella words: export, sync, capabilities
20
+
21
+ ## Architecture Notes
22
+
23
+ Core should own:
24
+
25
+ - skill installation;
26
+ - agent installation;
27
+ - board checker scripts;
28
+ - extension catalog discovery;
29
+ - checksum-verified extension installation;
30
+ - extension doctor checks.
31
+
32
+ Extensions should own:
33
+
34
+ - provider-specific behavior;
35
+ - provider docs;
36
+ - auth requirements;
37
+ - fixtures and tests;
38
+ - optional role or reporting guidance.
39
+
40
+ No extension may define a second meaning of `state.yaml`.
41
+
42
+ ## Candidate Tasks
43
+
44
+ - Add a catalog-backed `goal-maker extend` command.
45
+ - Add root `extend/` documentation.
46
+ - Keep package-only CLI/tests out of the installable skill folder.
47
+ - Add repo agent guidance so future improvements consider docs, skill instructions, CLI, tests, examples, and extensions together.
@@ -0,0 +1,48 @@
1
+ # T002: Architecture Decision
2
+
3
+ Task: `T002`
4
+ Kind: `judge`
5
+ Status: `done`
6
+
7
+ ## Decision
8
+
9
+ Use `extend` as the high-level optional surface and call each item an extension. Keep the default catalog GitHub-hosted at:
10
+
11
+ ```text
12
+ https://raw.githubusercontent.com/tolibear/goal-maker/main/extend/catalog.json
13
+ ```
14
+
15
+ The npm package should contain the stable core and CLI. The catalog can change on GitHub without requiring users to update npm for every optional integration.
16
+
17
+ ## CLI Shape
18
+
19
+ Use one top-level extension command instead of separate browse/list/show verbs:
20
+
21
+ ```bash
22
+ goal-maker extend
23
+ goal-maker extend <extension-id>
24
+ goal-maker extend install <extension-id>
25
+ goal-maker extend doctor [extension-id]
26
+ ```
27
+
28
+ This keeps the UX simple:
29
+
30
+ - no argument means "show the catalog";
31
+ - an id means "show this extension";
32
+ - `install` copies checksum-verified files into the local Goal Maker install;
33
+ - `doctor` verifies installed extension files and required environment.
34
+
35
+ ## Repo Shape
36
+
37
+ Keep the root relatively clean:
38
+
39
+ ```text
40
+ goal-maker/ # installable skill payload
41
+ internal/ # package/dev infrastructure
42
+ extend/ # optional extension folders
43
+ examples/ # completed sample runs
44
+ extend/catalog.json # GitHub-hosted extension catalog
45
+ AGENTS.md # repo-specific agent guidance
46
+ ```
47
+
48
+ `goal-maker/scripts/` stays inside the skill because installed skill docs call those scripts directly.
@@ -0,0 +1,43 @@
1
+ # T003: Catalog CLI Implementation
2
+
3
+ Task: `T003`
4
+ Kind: `worker`
5
+ Status: `done`
6
+
7
+ ## Summary
8
+
9
+ Implemented the first catalog-backed `goal-maker extend` workflow.
10
+
11
+ Commit:
12
+
13
+ - `105850e Add extension catalog workflow`
14
+
15
+ ## Shipped Behavior
16
+
17
+ - `goal-maker extend` reads the GitHub-hosted catalog and reports available/install/configuration state.
18
+ - `goal-maker extend <id>` shows extension details.
19
+ - `goal-maker extend install <id>` installs checksum-verified extension files.
20
+ - `goal-maker extend doctor [id]` validates installed extension files and required environment.
21
+ - Root `catalog.json` provides an initially empty GitHub-hosted catalog.
22
+ - README documents the extension discovery/install flow.
23
+
24
+ ## Files Touched
25
+
26
+ At this point in the run, the CLI still lived under `goal-maker/bin/`. A later cleanup task moved it to `internal/cli/`.
27
+
28
+ - `README.md`
29
+ - `catalog.json`
30
+ - `goal-maker/bin/goal-maker.mjs`
31
+ - `goal-maker/test/goal-maker-cli.test.mjs`
32
+ - `package.json`
33
+
34
+ ## Verification
35
+
36
+ Commands passed:
37
+
38
+ ```bash
39
+ npm run check
40
+ git diff --check
41
+ node goal-maker/bin/goal-maker.mjs extend --catalog-url catalog.json --json
42
+ npm publish --dry-run --json
43
+ ```
@@ -0,0 +1,24 @@
1
+ # T004: Root Extend Folder
2
+
3
+ Task: `T004`
4
+ Kind: `pm`
5
+ Status: `done`
6
+
7
+ ## Summary
8
+
9
+ Added a visible root `extend/` folder with documentation so GitHub shows the extension surface even before real extensions exist.
10
+
11
+ Commit:
12
+
13
+ - `17c65c9 Document extension folder`
14
+
15
+ ## Files Touched
16
+
17
+ - `README.md`
18
+ - `extend/README.md`
19
+
20
+ ## Receipt Notes
21
+
22
+ The folder intentionally contains only documentation for now. Git cannot track an empty directory, and the product decision was to avoid bundling sample extensions until a real extension is ready.
23
+
24
+ The README now says extensions live under `extend/` and move through the GitHub-hosted `extend/catalog.json`.
@@ -0,0 +1,46 @@
1
+ # T005: Skill Package Layout Cleanup
2
+
3
+ Task: `T005`
4
+ Kind: `worker`
5
+ Status: `done`
6
+
7
+ ## Summary
8
+
9
+ Separated package-only infrastructure from the installable skill payload while keeping the repo root clean.
10
+
11
+ Commit:
12
+
13
+ - `6faa5de Clean skill package layout`
14
+
15
+ ## Files Touched
16
+
17
+ - `AGENTS.md`
18
+ - `CONTRIBUTING.md`
19
+ - `README.md`
20
+ - `extend/README.md`
21
+ - `goal-maker/SKILL.md`
22
+ - `goal-maker/bin/goal-maker.mjs` -> `internal/cli/goal-maker.mjs`
23
+ - `goal-maker/test/*.test.mjs` -> `internal/test/*.test.mjs`
24
+ - `package.json`
25
+
26
+ ## Result
27
+
28
+ The installable skill payload is now focused:
29
+
30
+ ```text
31
+ goal-maker/
32
+ SKILL.md
33
+ agents/
34
+ scripts/
35
+ templates/
36
+ ```
37
+
38
+ Package/dev infrastructure is grouped under:
39
+
40
+ ```text
41
+ internal/
42
+ cli/
43
+ test/
44
+ ```
45
+
46
+ Root `AGENTS.md` now tells future agents to consider README, SKILL.md, templates, checker behavior, CLI UX, examples, package contents, and extension catalog design when improving this repo.
@@ -0,0 +1,50 @@
1
+ # T006: Catalog Location
2
+
3
+ Task: `T006`
4
+ Kind: `worker`
5
+ Status: `done`
6
+
7
+ ## Summary
8
+
9
+ Moved the hosted catalog from the repo root to `extend/catalog.json`.
10
+
11
+ Commit:
12
+
13
+ - This example/catalog-location commit.
14
+
15
+ ## Why
16
+
17
+ The repo root should stay relatively clean, and `catalog.json` is part of the extension surface. Keeping it under `extend/` makes the shape easier to understand:
18
+
19
+ ```text
20
+ extend/
21
+ README.md
22
+ catalog.json
23
+ <extension-id>/
24
+ ```
25
+
26
+ The npm CLI still reads the catalog from GitHub raw, now at:
27
+
28
+ ```text
29
+ https://raw.githubusercontent.com/tolibear/goal-maker/main/extend/catalog.json
30
+ ```
31
+
32
+ ## Files Touched
33
+
34
+ - `catalog.json` -> `extend/catalog.json`
35
+ - `internal/cli/goal-maker.mjs`
36
+ - `README.md`
37
+ - `AGENTS.md`
38
+ - `extend/README.md`
39
+ - `examples/extend-catalog-workflow/`
40
+
41
+ ## Verification
42
+
43
+ Commands to verify this task:
44
+
45
+ ```bash
46
+ npm run check
47
+ git diff --check
48
+ node internal/cli/goal-maker.mjs extend --catalog-url extend/catalog.json --json
49
+ npm publish --dry-run --json
50
+ ```
@@ -0,0 +1,36 @@
1
+ # T999: Completion Audit
2
+
3
+ Task: `T999`
4
+ Kind: `judge`
5
+ Status: `done`
6
+
7
+ ## Decision
8
+
9
+ Complete.
10
+
11
+ ## Audit
12
+
13
+ | Requirement | Evidence | Status |
14
+ |---|---|---|
15
+ | Use `extend` as the high-level surface | `extend/README.md`, `README.md`, `AGENTS.md` | Complete |
16
+ | Items inside `extend` are extensions | `extend/README.md`, `README.md`, catalog terminology | Complete |
17
+ | Avoid frequent npm releases for catalog updates | `extend/catalog.json` and default raw GitHub catalog URL | Complete |
18
+ | Keep extension discovery credential-free | `goal-maker extend` and `goal-maker extend <id>` inspect catalog metadata only | Complete |
19
+ | Verify installed extensions safely | checksum validation and `.installed.json` manifest in CLI implementation | Complete |
20
+ | Keep root reasonably clean | package/dev files grouped under `internal/` | Complete |
21
+ | Keep skill payload clean | `goal-maker/` contains skill, agents, scripts, and templates only | Complete |
22
+ | Teach future agents about improvement surfaces | root `AGENTS.md` and SKILL.md note | Complete |
23
+
24
+ ## Verification
25
+
26
+ Commands passed during the implementation tranche:
27
+
28
+ ```bash
29
+ npm run check
30
+ git diff --check
31
+ node internal/cli/goal-maker.mjs extend --catalog-url extend/catalog.json --json
32
+ npm publish --dry-run --json
33
+ node goal-maker/scripts/check-goal-state.mjs examples/extend-catalog-workflow/state.yaml
34
+ ```
35
+
36
+ The final state is reviewable and maps to actual commits rather than simulated history.