goalbuddy 0.2.11 → 0.2.13

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.
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "goalbuddy",
3
+ "interface": {
4
+ "displayName": "GoalBuddy"
5
+ },
6
+ "plugins": [
7
+ {
8
+ "name": "goalbuddy",
9
+ "source": {
10
+ "source": "local",
11
+ "path": "./plugins/goalbuddy"
12
+ },
13
+ "policy": {
14
+ "installation": "AVAILABLE",
15
+ "authentication": "ON_INSTALL"
16
+ },
17
+ "category": "Coding"
18
+ }
19
+ ]
20
+ }
package/CONTRIBUTING.md CHANGED
@@ -12,8 +12,6 @@ cd goalbuddy
12
12
  npm run check
13
13
  ```
14
14
 
15
- Until the GitHub repository rename is complete, use the current local clone or the existing `tolibear/goal-maker` remote.
16
-
17
15
  ## Local Install Test
18
16
 
19
17
  Use a temporary Codex home so local testing does not overwrite your real install:
@@ -33,7 +31,7 @@ Before opening a PR, verify the npm package contents:
33
31
  npm pack --dry-run
34
32
  ```
35
33
 
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/`.
34
+ The package should include `README.md`, `internal/assets/`, `package.json`, `internal/cli/`, the canonical `goalbuddy/` skill directory, and `plugins/goalbuddy/`. The temporary `$goal-maker` compatibility skill is generated by the installer; do not add a second tracked skill payload.
37
35
 
38
36
  ## Releases
39
37
 
@@ -43,7 +41,7 @@ GoalBuddy publishes from GitHub Actions with npm trusted publishing. See [RELEAS
43
41
 
44
42
  - Keep the runtime dependency-free unless there is a strong reason.
45
43
  - Keep `goalbuddy/` installable as the canonical Codex skill directory.
46
- - Keep `goal-maker/` working as a temporary compatibility skill directory until the migration window ends.
44
+ - Keep `$goal-maker` working as a generated compatibility alias until the migration window ends.
47
45
  - Prefer small, reviewable changes.
48
46
  - Update README or templates when behavior changes.
49
47
  - Run `npm run check` before submitting changes.
package/README.md CHANGED
@@ -1,81 +1,127 @@
1
1
  # GoalBuddy
2
2
 
3
- Turn open-ended Codex work into a living Scout/Judge/Worker board with receipts, verification, and optional extensions.
3
+ <p align="center">
4
+ <a href="https://goalbuddy.dev">
5
+ <img src="internal/assets/goalbuddy-readme-hero.png" alt="GoalBuddy turns vague Codex goals into structured progress with Scout, Judge, Worker, receipts, and verification." width="100%">
6
+ </a>
7
+ </p>
8
+
9
+ <p align="center">
10
+ <strong>Turn open-ended Codex work into one reviewable goal board.</strong>
11
+ </p>
12
+
13
+ <p align="center">
14
+ <a href="https://www.npmjs.com/package/goalbuddy"><img alt="npm" src="https://img.shields.io/npm/v/goalbuddy?style=flat-square&color=684cff"></a>
15
+ <a href="LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-071236?style=flat-square"></a>
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
+ </p>
18
+
19
+ GoalBuddy is a local Codex companion for work that is too broad to trust to a single prompt. It turns a vague request into a `goal.md` charter, a machine-readable `state.yaml` board, role-tagged Scout/Judge/Worker tasks, compact receipts, and verification before completion.
4
20
 
5
21
  ```bash
6
22
  npx goalbuddy
7
23
  ```
8
24
 
9
- Then invoke the skill inside Codex:
25
+ Then invoke the installed skill inside Codex:
10
26
 
11
27
  ```text
12
28
  $goalbuddy
13
29
  ```
14
30
 
15
- `$goalbuddy` creates a local goal charter and task board, then prints the `/goal` command to run next. It does not start `/goal` automatically.
31
+ `$goalbuddy` prepares the board and prints the `/goal` command to run next. It does not start `/goal` automatically.
16
32
 
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:
33
+ ## Why GoalBuddy Exists
18
34
 
19
- ```bash
20
- codex login status
21
- codex features enable goals
22
- npx goalbuddy doctor --goal-ready
23
- ```
35
+ Long Codex goals drift. A request like "improve this project" can turn into unbounded edits, stale verification, and premature completion claims.
24
36
 
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)
37
+ GoalBuddy gives Codex a durable loop:
26
38
 
27
- ## Why It Exists
39
+ ```text
40
+ vague goal -> Scout -> Judge -> Worker -> receipt -> verify -> repeat
41
+ ```
28
42
 
29
- Long Codex goals drift. A broad request like “improve this project” can turn into unbounded edits, stale verification, and premature completion claims.
43
+ The main `/goal` thread acts as PM. It owns the board, keeps exactly one active task, delegates when useful, records receipts, and only completes after a Judge or PM audit proves the original outcome is done.
30
44
 
31
- GoalBuddy gives Codex an operating loop for that kind of work:
45
+ ## What You Get Locally
32
46
 
33
47
  ```text
34
- vague goal -> discovery -> task board -> one active task -> receipt -> board update -> repeat
48
+ docs/goals/<slug>/
49
+ goal.md
50
+ state.yaml
51
+ notes/
35
52
  ```
36
53
 
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.
54
+ - `goal.md` is the editable charter: objective, constraints, tranche, and stop rule.
55
+ - `state.yaml` is the board truth: task status, active task, receipts, and verification.
56
+ - `notes/` holds longer Scout, Judge, or PM findings when a task receipt would be too large.
57
+
58
+ ## The Operating Model
38
59
 
39
- ## Core Features
60
+ GoalBuddy uses four primitives:
40
61
 
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.
62
+ - **Charter**: states what this goal is trying to accomplish and what must stay true.
63
+ - **Board**: tracks tasks, status, receipts, and verification freshness.
64
+ - **Task**: exactly one active Scout, Judge, Worker, or PM task.
65
+ - **Receipt**: compact proof for every completed, blocked, or escalated task.
47
66
 
48
- ## The Model
67
+ The default agents are installed with the skill:
49
68
 
50
- GoalBuddy uses four primitives:
69
+ - **Scout** maps repo evidence, workflows, constraints, risks, and candidate next tasks.
70
+ - **Judge** resolves ambiguity, scope, risk, task selection, and completion claims.
71
+ - **Worker** performs one bounded implementation or recovery slice with explicit files and checks.
51
72
 
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.
73
+ ## Install And Check Readiness
56
74
 
57
- Scout, Judge, and Worker are installed by default:
75
+ Install or refresh the Codex skill and bundled agents:
58
76
 
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.
77
+ ```bash
78
+ npx goalbuddy
79
+ npx goalbuddy update
80
+ ```
62
81
 
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.
82
+ 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:
64
83
 
65
- ## Goal Folder
84
+ ```bash
85
+ codex login status
86
+ codex features enable goals
87
+ npx goalbuddy doctor --goal-ready
88
+ ```
66
89
 
67
- For each goal, `$goalbuddy` prepares:
90
+ Repair only the bundled agent definitions:
91
+
92
+ ```bash
93
+ npx goalbuddy agents
94
+ ```
95
+
96
+ Check the local install:
97
+
98
+ ```bash
99
+ npx goalbuddy doctor
100
+ ```
101
+
102
+ Use a non-default Codex home:
103
+
104
+ ```bash
105
+ npx goalbuddy install --codex-home /path/to/.codex
106
+ ```
107
+
108
+ `install`, `update`, and `doctor` also support `--json` when an agent or script needs structured output.
109
+
110
+ ## Run A Goal
111
+
112
+ After `$goalbuddy` creates or repairs the board, start the run with the printed command:
68
113
 
69
114
  ```text
70
- docs/goals/<slug>/
71
- goal.md
72
- state.yaml
73
- notes/
115
+ /goal Follow docs/goals/<slug>/goal.md.
74
116
  ```
75
117
 
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.
118
+ Check board health at any time:
119
+
120
+ ```bash
121
+ node ~/.codex/skills/goalbuddy/scripts/check-goal-state.mjs docs/goals/<slug>/state.yaml
122
+ ```
77
123
 
78
- For a broad prompt like Improve my project,” the first task should usually be Scout, not Worker:
124
+ For a broad prompt like "Improve my project," the first active task should usually be Scout, not Worker:
79
125
 
80
126
  ```yaml
81
127
  tasks:
@@ -104,50 +150,9 @@ tasks:
104
150
  receipt: null
105
151
  ```
106
152
 
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
- Release automation for future npm publishes is documented in [RELEASE.md](RELEASE.md).
129
-
130
- Repair only the agent definitions:
131
-
132
- ```bash
133
- npx goalbuddy agents
134
- ```
135
-
136
- Check what is installed:
137
-
138
- ```bash
139
- npx goalbuddy doctor
140
- ```
141
-
142
- Strictly check whether the native Codex `/goal` runtime is ready too:
143
-
144
- ```bash
145
- npx goalbuddy doctor --goal-ready
146
- ```
147
-
148
- `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.
153
+ ## Extensions
149
154
 
150
- Discover optional extensions from the GitHub-hosted catalog:
155
+ The npm package is the stable core. Optional extensions live under `extend/` and are discovered from the GitHub-hosted `extend/catalog.json`, so users do not need a new npm release for every integration.
151
156
 
152
157
  ```bash
153
158
  npx goalbuddy extend
@@ -156,51 +161,44 @@ npx goalbuddy extend install github-pr-workflow --dry-run
156
161
  npx goalbuddy extend install --all --dry-run
157
162
  ```
158
163
 
159
- Use a non-default Codex home:
160
-
161
- ```bash
162
- npx goalbuddy install --codex-home /path/to/.codex
163
- ```
164
-
165
- ## Extensions
164
+ `goalbuddy extend` shows available extensions plus local install state, activation state, credential requirements, safe-by-default status, and missing environment variables.
166
165
 
167
- 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
+ Current catalog examples include:
168
167
 
169
- `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
+ - `github-pr-workflow`: prepares receipt-aligned commit and PR handoff text.
169
+ - `github-projects`: mirrors GoalBuddy boards into GitHub Projects.
170
+ - `ai-diff-risk-review`: summarizes risk in the current diff.
171
+ - `ci-failure-triage`: maps failing CI back to likely causes and next tasks.
172
+ - `docs-drift-audit`: checks whether docs still match implementation.
173
+ - `codebase-onboarding-map`: creates a concise repo map from files and conventions.
174
+ - `release-readiness`: checks whether a goal is ready to publish.
170
175
 
171
- Extensions are not board truth. They may publish, report, intake, or add role guidance, but `state.yaml` remains authoritative.
176
+ Extensions can publish, report, intake, or add role guidance. They are not board truth. `state.yaml` remains authoritative.
172
177
 
173
- 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`.
178
+ ## Compatibility Window
174
179
 
175
- ## Running A Goal
176
-
177
- After `$goalbuddy` creates or repairs the board, start `/goal` with the printed command:
180
+ 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:
178
181
 
179
- ```text
180
- /goal Follow docs/goals/<slug>/goal.md.
182
+ ```bash
183
+ npx goalbuddy
181
184
  ```
182
185
 
183
- 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.
184
-
185
- 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.
186
-
187
- Check board health:
186
+ Machine-readable commands such as `npx goal-maker install --json` keep JSON output clean so existing automation can migrate safely.
188
187
 
189
- ```bash
190
- node ~/.codex/skills/goalbuddy/scripts/check-goal-state.mjs docs/goals/<slug>/state.yaml
191
- ```
188
+ Release automation for future npm publishes is documented in [RELEASE.md](RELEASE.md).
192
189
 
193
- ## Example
190
+ ## Examples
194
191
 
195
- 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.
192
+ - `examples/improve-goal-maker/`: a small completed reliability run.
193
+ - `examples/extend-catalog-workflow/`: a larger run from product framing through implementation and cleanup.
194
+ - `examples/github-pr-workflow-extension/pr-handoff.md`: an extension-generated PR handoff artifact.
196
195
 
197
- ## Repo Contents
196
+ ## Repo Map
198
197
 
199
- - `goalbuddy/SKILL.md`: the canonical Codex skill
198
+ - `goalbuddy/SKILL.md`: canonical Codex skill
200
199
  - `goalbuddy/agents/`: Scout, Judge, and Worker definitions
201
200
  - `goalbuddy/templates/`: `goal.md`, `state.yaml`, and `note.md`
202
201
  - `goalbuddy/scripts/check-goal-state.mjs`: v2 board checker
203
- - `goal-maker/`: temporary compatibility skill payload for existing users
204
202
  - `internal/cli/goal-maker.mjs`: npm installer CLI
205
203
  - `plugins/goalbuddy/`: repo-local Codex plugin package scaffold
206
204
  - `extend/` and `extend/catalog.json`: GitHub-hosted extension surface
@@ -208,9 +206,9 @@ See `examples/improve-goal-maker/` for a small completed reliability run, `examp
208
206
 
209
207
  ## Status
210
208
 
211
- `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.
209
+ `0.2.x` is the v2 board and receipt model. It intentionally rejects old v1 `gate`, `units`, `artifacts`, and `evidence.jsonl` goal folders instead of auto-migrating them.
212
210
 
213
- Use this to structure autonomous Codex work. Keep relying on repo-specific `AGENTS.md`, tests, and CI for repo facts.
211
+ Use GoalBuddy to structure autonomous Codex work. Keep relying on repo-specific `AGENTS.md`, tests, and CI for repo facts.
214
212
 
215
213
  ## License
216
214
 
@@ -15,6 +15,28 @@ The loop is:
15
15
  raw user intent -> intake compiler -> discovery/plan validation/execution board -> one active task -> receipt -> board update -> repeat
16
16
  ```
17
17
 
18
+ ## Invocation Boundary
19
+
20
+ There are two different modes:
21
+
22
+ - `$goalbuddy`: prepare intake, `goal.md`, `state.yaml`, and the starter `/goal` command, then stop.
23
+ - `/goal Follow docs/goals/<slug>/goal.md.`: execute the board, including Scout/Judge/Worker work.
24
+
25
+ This boundary is strict. `$goalbuddy` is not a lightweight `/goal`; it is a board compiler.
26
+
27
+ During a `$goalbuddy` turn, do not perform the user's requested work, even if the work looks read-only, preparatory, or obviously useful. Do not refresh or load named skills, inspect implementation files, browse reference repos, research design inspiration, generate design plans, generate images/assets, run app-specific checks, start servers, or edit product files. Put those actions into Scout, Judge, Worker, or PM tasks for the later `/goal` run.
28
+
29
+ Allowed `$goalbuddy` actions:
30
+
31
+ - ask diagnostic intake questions and wait when required;
32
+ - create or repair only `docs/goals/<slug>/goal.md`, `docs/goals/<slug>/state.yaml`, and `docs/goals/<slug>/notes/`;
33
+ - optionally run the GoalBuddy board checker against that `state.yaml`;
34
+ - verify that the GoalBuddy agents are installed, if this can be done without touching implementation work;
35
+ - print exactly `/goal Follow docs/goals/<slug>/goal.md.`;
36
+ - ask whether to start `/goal`, refine the board, or stop.
37
+
38
+ If the prompt names another skill or tool, such as "use the taste skill", "refresh the taste skill", "look at this repo", "use browser", or "generate assets", record that requirement in the charter and seed tasks. Do not load that skill, browse that repo, or generate those assets during `$goalbuddy`.
39
+
18
40
  ## Intake Compiler
19
41
 
20
42
  Before creating, repairing, or running a board, privately translate the user's input into a Goal Intake. The input may be vague, specific, or detailed with an existing plan. Do not dump the intake to the user unless they ask for it.
@@ -124,6 +146,8 @@ Do:
124
146
  Do not:
125
147
 
126
148
  - start `/goal` automatically;
149
+ - use, refresh, inspect, or load named skills requested by the goal; schedule that as `/goal` work instead;
150
+ - browse links, inspect reference repos, read implementation files, generate design plans, generate images, or create assets for the requested outcome;
127
151
  - create or repair a board from vague/open-ended input before diagnostic intake is complete;
128
152
  - create `evidence.jsonl`, `units/`, or `artifacts/` for new v2 goals;
129
153
  - edit implementation files before the board exists;
@@ -131,9 +155,11 @@ Do not:
131
155
  - discard a user-provided plan; preserve it as facts and validate it before execution;
132
156
  - treat `goal.md` as board truth when it conflicts with `state.yaml`.
133
157
 
134
- ## Default Bias: Users Want Work Done
158
+ ## `/goal` Default Bias: Users Want Work Done
159
+
160
+ This section applies after the user starts `/goal Follow docs/goals/<slug>/goal.md.` It does not apply to the initial `$goalbuddy` board-preparation turn.
135
161
 
136
- Unless the user explicitly asks for planning only, treat a GoalBuddy request as a request for work to happen.
162
+ Unless the user explicitly asks for planning only, treat a `/goal` run as a request for work to happen.
137
163
 
138
164
  Planning, Scout findings, Judge decisions, and a queued Worker task are not terminal outcomes when the user's original ask is for a working capability, automation, fix, cleanup, or backend/frontend behavior. They are setup for execution.
139
165
 
@@ -0,0 +1,21 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 190" role="img" aria-labelledby="title desc">
2
+ <title id="title">GoalBuddy logo</title>
3
+ <desc id="desc">GoalBuddy wordmark with lavender cloud mark.</desc>
4
+ <defs>
5
+ <radialGradient id="logoMarkGrad" cx="34%" cy="18%" r="92%">
6
+ <stop offset="0" stop-color="#f8f2ff"/>
7
+ <stop offset="0.46" stop-color="#b6a9ff"/>
8
+ <stop offset="1" stop-color="#5361ff"/>
9
+ </radialGradient>
10
+ <filter id="logoShadow" x="-20%" y="-25%" width="140%" height="160%">
11
+ <feDropShadow dx="0" dy="12" stdDeviation="10" flood-color="#4d48b8" flood-opacity=".24"/>
12
+ </filter>
13
+ </defs>
14
+ <g filter="url(#logoShadow)">
15
+ <path d="M72 141c-30 0-54-24-54-54 0-26 18-48 43-53C65 15 82 0 103 0c18 0 34 10 42 24 12-8 27-13 43-13 36 0 66 26 72 61 22 11 37 33 37 59 0 36-30 66-66 66H93c-8 0-15-2-21-6z" transform="translate(0 4) scale(.82)" fill="url(#logoMarkGrad)"/>
16
+ <ellipse cx="82" cy="81" rx="8" ry="12" fill="#061238"/>
17
+ <ellipse cx="132" cy="81" rx="8" ry="12" fill="#061238"/>
18
+ <path d="M99 101c8 9 18 9 27 0" fill="none" stroke="#061238" stroke-width="7" stroke-linecap="round"/>
19
+ </g>
20
+ <text x="230" y="116" fill="#071236" font-family="Geist, Avenir Next, Arial, sans-serif" font-size="82" font-weight="800" letter-spacing="-1">GoalBuddy</text>
21
+ </svg>
Binary file
@@ -188,9 +188,8 @@ function installSkill({ force = true, quiet = false } = {}) {
188
188
 
189
189
  mkdirSync(dirname(legacyTarget), { recursive: true });
190
190
  rmSync(legacyTarget, { recursive: true, force: true });
191
- cpSync(skillSource, legacyTarget, {
192
- recursive: true,
193
- });
191
+ mkdirSync(legacyTarget, { recursive: true });
192
+ writeFileSync(join(legacyTarget, "SKILL.md"), compatibilitySkillBody());
194
193
  restoreInstalledExtensions(legacyTarget, extensionTempPath);
195
194
  writeInstallMetadata(legacyTarget, previousMetadata);
196
195
  cleanupPreservedExtensions([extensionTempPath]);
@@ -211,6 +210,28 @@ function installSkill({ force = true, quiet = false } = {}) {
211
210
  };
212
211
  }
213
212
 
213
+ function compatibilitySkillBody() {
214
+ return `---
215
+ name: ${legacySkillName}
216
+ description: Compatibility alias for GoalBuddy. Use $${canonicalSkillName} as the canonical skill.
217
+ ---
218
+
219
+ # GoalBuddy Compatibility Alias
220
+
221
+ $${legacySkillName} is the previous name for $${canonicalSkillName}.
222
+
223
+ Use $${canonicalSkillName} for new work. This compatibility skill exists so older prompts and local installs do not fail after the rebrand.
224
+
225
+ When invoked through $${legacySkillName}:
226
+
227
+ 1. Tell the user Goal Maker has been rebranded to GoalBuddy.
228
+ 2. Show the canonical command: $${canonicalSkillName}.
229
+ 3. If the user wants to continue immediately, follow the same workflow as $${canonicalSkillName}: run diagnostic intake, create or repair \`docs/goals/<slug>/goal.md\` and \`state.yaml\`, preserve one active task, and print \`/goal Follow docs/goals/<slug>/goal.md.\` without starting \`/goal\` automatically.
230
+
231
+ This alias has the same invocation boundary as \`$${canonicalSkillName}\`: prepare the board only. Do not use or refresh named skills, inspect implementation files, browse references, research, generate assets, or perform the requested work until the user starts the printed \`/goal\` command.
232
+ `;
233
+ }
234
+
214
235
  function installAgents({ quiet = false } = {}) {
215
236
  const source = join(skillSource, "agents");
216
237
  const target = join(codexHome(), "agents");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "goalbuddy",
3
- "version": "0.2.11",
3
+ "version": "0.2.13",
4
4
  "description": "Turn open-ended Codex goals into a GoalBuddy Scout/Judge/Worker board with receipts, verification, and optional extensions.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,6 +8,7 @@
8
8
  "goal-maker": "internal/cli/goal-maker.mjs"
9
9
  },
10
10
  "files": [
11
+ ".agents/plugins/marketplace.json",
11
12
  "README.md",
12
13
  "CONTRIBUTING.md",
13
14
  "examples",
@@ -17,14 +18,10 @@
17
18
  "goalbuddy/SKILL.md",
18
19
  "goalbuddy/agents",
19
20
  "goalbuddy/scripts",
20
- "goalbuddy/templates",
21
- "goal-maker/SKILL.md",
22
- "goal-maker/agents",
23
- "goal-maker/scripts",
24
- "goal-maker/templates"
21
+ "goalbuddy/templates"
25
22
  ],
26
23
  "scripts": {
27
- "check": "node --check internal/cli/goal-maker.mjs goal-maker/scripts/*.mjs goalbuddy/scripts/*.mjs && node --test internal/test/*.test.mjs",
24
+ "check": "node --check internal/cli/goal-maker.mjs goalbuddy/scripts/*.mjs && node --test internal/test/*.test.mjs",
28
25
  "test": "node --test internal/test/*.test.mjs",
29
26
  "pack:dry-run": "npm pack --dry-run",
30
27
  "publish:check": "node internal/cli/check-publish-version.mjs && npm run pack:dry-run",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "goalbuddy",
3
- "version": "0.2.10",
3
+ "version": "0.2.13",
4
4
  "description": "Turn broad Codex work into verified GoalBuddy boards with Scout, Judge, Worker, receipts, and optional extensions.",
5
5
  "author": {
6
6
  "name": "tolibear",
@@ -17,6 +17,16 @@ npm run check
17
17
  npx goalbuddy doctor
18
18
  ```
19
19
 
20
+ ## Native Codex Install
21
+
22
+ Add the repository as a Codex plugin marketplace:
23
+
24
+ ```bash
25
+ codex plugin marketplace add tolibear/goalbuddy
26
+ ```
27
+
28
+ Then enable the `goalbuddy` plugin from that marketplace in Codex. The npm CLI remains useful for `doctor`, project-local agent setup, and optional GoalBuddy extension management.
29
+
20
30
  For local CLI testing before npm publish:
21
31
 
22
32
  ```bash
@@ -26,4 +36,4 @@ node internal/cli/goal-maker.mjs doctor
26
36
 
27
37
  ## Release Notes
28
38
 
29
- The plugin is prepared for the `tolibear/goalbuddy` repo and `goalbuddy` npm package. Do not publish this plugin until the owner completes the GitHub and npm handoff steps in `docs/goals/goalbuddy-rebrand-plugin/state.yaml`.
39
+ The plugin is prepared for the `tolibear/goalbuddy` repo and `goalbuddy` npm package. Keep `.codex-plugin/plugin.json` aligned with `package.json` before publishing a new package release.
@@ -15,6 +15,28 @@ The loop is:
15
15
  raw user intent -> intake compiler -> discovery/plan validation/execution board -> one active task -> receipt -> board update -> repeat
16
16
  ```
17
17
 
18
+ ## Invocation Boundary
19
+
20
+ There are two different modes:
21
+
22
+ - `$goalbuddy`: prepare intake, `goal.md`, `state.yaml`, and the starter `/goal` command, then stop.
23
+ - `/goal Follow docs/goals/<slug>/goal.md.`: execute the board, including Scout/Judge/Worker work.
24
+
25
+ This boundary is strict. `$goalbuddy` is not a lightweight `/goal`; it is a board compiler.
26
+
27
+ During a `$goalbuddy` turn, do not perform the user's requested work, even if the work looks read-only, preparatory, or obviously useful. Do not refresh or load named skills, inspect implementation files, browse reference repos, research design inspiration, generate design plans, generate images/assets, run app-specific checks, start servers, or edit product files. Put those actions into Scout, Judge, Worker, or PM tasks for the later `/goal` run.
28
+
29
+ Allowed `$goalbuddy` actions:
30
+
31
+ - ask diagnostic intake questions and wait when required;
32
+ - create or repair only `docs/goals/<slug>/goal.md`, `docs/goals/<slug>/state.yaml`, and `docs/goals/<slug>/notes/`;
33
+ - optionally run the GoalBuddy board checker against that `state.yaml`;
34
+ - verify that the GoalBuddy agents are installed, if this can be done without touching implementation work;
35
+ - print exactly `/goal Follow docs/goals/<slug>/goal.md.`;
36
+ - ask whether to start `/goal`, refine the board, or stop.
37
+
38
+ If the prompt names another skill or tool, such as "use the taste skill", "refresh the taste skill", "look at this repo", "use browser", or "generate assets", record that requirement in the charter and seed tasks. Do not load that skill, browse that repo, or generate those assets during `$goalbuddy`.
39
+
18
40
  ## Intake Compiler
19
41
 
20
42
  Before creating, repairing, or running a board, privately translate the user's input into a Goal Intake. The input may be vague, specific, or detailed with an existing plan. Do not dump the intake to the user unless they ask for it.
@@ -124,6 +146,8 @@ Do:
124
146
  Do not:
125
147
 
126
148
  - start `/goal` automatically;
149
+ - use, refresh, inspect, or load named skills requested by the goal; schedule that as `/goal` work instead;
150
+ - browse links, inspect reference repos, read implementation files, generate design plans, generate images, or create assets for the requested outcome;
127
151
  - create or repair a board from vague/open-ended input before diagnostic intake is complete;
128
152
  - create `evidence.jsonl`, `units/`, or `artifacts/` for new v2 goals;
129
153
  - edit implementation files before the board exists;
@@ -131,9 +155,11 @@ Do not:
131
155
  - discard a user-provided plan; preserve it as facts and validate it before execution;
132
156
  - treat `goal.md` as board truth when it conflicts with `state.yaml`.
133
157
 
134
- ## Default Bias: Users Want Work Done
158
+ ## `/goal` Default Bias: Users Want Work Done
159
+
160
+ This section applies after the user starts `/goal Follow docs/goals/<slug>/goal.md.` It does not apply to the initial `$goalbuddy` board-preparation turn.
135
161
 
136
- Unless the user explicitly asks for planning only, treat a GoalBuddy request as a request for work to happen.
162
+ Unless the user explicitly asks for planning only, treat a `/goal` run as a request for work to happen.
137
163
 
138
164
  Planning, Scout findings, Judge decisions, and a queued Worker task are not terminal outcomes when the user's original ask is for a working capability, automation, fix, cleanup, or backend/frontend behavior. They are setup for execution.
139
165
 
@@ -1,18 +0,0 @@
1
- ---
2
- name: goal-maker
3
- description: Compatibility alias for GoalBuddy during the rebrand migration window. Use $goalbuddy as the canonical skill.
4
- ---
5
-
6
- # GoalBuddy Compatibility Alias
7
-
8
- `$goal-maker` is the previous name for `$goalbuddy`.
9
-
10
- Use `$goalbuddy` for new work. This compatibility skill exists so older prompts and local installs do not fail during the 60-90 day migration window.
11
-
12
- When invoked through `$goal-maker`:
13
-
14
- 1. Tell the user Goal Maker has been rebranded to GoalBuddy.
15
- 2. Show the canonical command: `$goalbuddy`.
16
- 3. If the user wants to continue immediately, follow the same workflow as `$goalbuddy`: run diagnostic intake, create or repair `docs/goals/<slug>/goal.md` and `state.yaml`, preserve one active task, and print `/goal Follow docs/goals/<slug>/goal.md.` without starting `/goal` automatically.
17
-
18
- Do not remove support for existing Goal Maker boards. GoalBuddy remains compatible with v2 `state.yaml` boards, existing `goal_*` agent role files, and installed extensions.
@@ -1,23 +0,0 @@
1
- # Goal Maker Agents
2
-
3
- This directory contains both skill metadata and bundled agent definitions.
4
-
5
- - `openai.yaml` stays with the skill as metadata.
6
- - `goal_*.toml` files can be copied into `.codex/agents/` for project-scoped agents or `~/.codex/agents/` for personal agents.
7
-
8
- | Agent | File | Reasoning effort | Sandbox |
9
- |---|---|---:|---|
10
- | Scout | `goal_scout.toml` | medium | read-only |
11
- | Worker | `goal_worker.toml` | low | workspace-write |
12
- | Judge | `goal_judge.toml` | high | read-only |
13
-
14
- Recommended config:
15
-
16
- ```toml
17
- [agents]
18
- max_threads = 4
19
- max_depth = 1
20
- job_max_runtime_seconds = 1800
21
- ```
22
-
23
- Only the main `/goal` PM loop may select the active task, mark tasks done, update board truth, or mark the goal complete.