goalbuddy 0.2.15 → 0.2.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/goalbuddy/SKILL.md +11 -11
- package/goalbuddy/agents/openai.yaml +3 -3
- package/internal/cli/goal-maker.mjs +14 -8
- package/package.json +1 -1
- package/plugins/goalbuddy/.codex-plugin/plugin.json +2 -4
- package/plugins/goalbuddy/README.md +1 -1
- package/plugins/goalbuddy/skills/goalbuddy/SKILL.md +11 -11
- package/plugins/goalbuddy/skills/goalbuddy/agents/openai.yaml +3 -3
package/README.md
CHANGED
|
@@ -31,10 +31,10 @@ npm i -g goalbuddy
|
|
|
31
31
|
Then restart Codex and invoke the installed skill:
|
|
32
32
|
|
|
33
33
|
```text
|
|
34
|
-
$
|
|
34
|
+
$goal-prep
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
`$
|
|
37
|
+
`$goal-prep` prepares the GoalBuddy board and prints the `/goal` command to run next. It does not start `/goal` automatically.
|
|
38
38
|
|
|
39
39
|
## Why GoalBuddy Exists
|
|
40
40
|
|
|
@@ -122,7 +122,7 @@ npx goalbuddy --codex-home /path/to/.codex
|
|
|
122
122
|
|
|
123
123
|
## Run A Goal
|
|
124
124
|
|
|
125
|
-
After `$
|
|
125
|
+
After `$goal-prep` creates or repairs the board, start the run with the printed command:
|
|
126
126
|
|
|
127
127
|
```text
|
|
128
128
|
/goal Follow docs/goals/<slug>/goal.md.
|
|
@@ -172,6 +172,7 @@ npx goalbuddy extend
|
|
|
172
172
|
npx goalbuddy extend github-pr-workflow
|
|
173
173
|
npx goalbuddy extend install github-pr-workflow --dry-run
|
|
174
174
|
npx goalbuddy extend install --all --dry-run
|
|
175
|
+
npx goalbuddy extend install --all
|
|
175
176
|
```
|
|
176
177
|
|
|
177
178
|
`goalbuddy extend` shows available extensions plus local install state, activation state, credential requirements, safe-by-default status, and missing environment variables.
|
package/goalbuddy/SKILL.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Use for broad, long-running, stalled, vague, detailed, planned, or unhealthy Codex work that needs a structured /goal intake, autonomous task discovery, role-tagged Scout/Judge/Worker delegation, one active task, durable receipts, and a PM-owned rolling board that maximizes the chance of a successful goal run.
|
|
2
|
+
name: goal-prep
|
|
3
|
+
description: Goal Prep for GoalBuddy. Use for broad, long-running, stalled, vague, detailed, planned, or unhealthy Codex work that needs a structured /goal intake, autonomous task discovery, role-tagged Scout/Judge/Worker delegation, one active task, durable receipts, and a PM-owned rolling board that maximizes the chance of a successful goal run.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Goal Prep
|
|
7
7
|
|
|
8
|
-
`$
|
|
8
|
+
`$goal-prep` prepares a GoalBuddy board. It does not start `/goal` automatically, but the board and starter `/goal` command must be shaped so the next run continues into safe execution by default.
|
|
9
9
|
|
|
10
10
|
GoalBuddy is for autonomous, long-running Codex work where the PM thread may need to discover the work, define tasks, sequence them, delegate them, execute them, verify them, and keep going without the human decomposing every step.
|
|
11
11
|
|
|
@@ -19,14 +19,14 @@ raw user intent -> intake compiler -> discovery/plan validation/execution board
|
|
|
19
19
|
|
|
20
20
|
There are two different modes:
|
|
21
21
|
|
|
22
|
-
- `$
|
|
22
|
+
- `$goal-prep`: prepare intake, `goal.md`, `state.yaml`, and the starter `/goal` command, then stop.
|
|
23
23
|
- `/goal Follow docs/goals/<slug>/goal.md.`: execute the board, including Scout/Judge/Worker work.
|
|
24
24
|
|
|
25
|
-
This boundary is strict. `$
|
|
25
|
+
This boundary is strict. `$goal-prep` is not a lightweight `/goal`; it is a board compiler.
|
|
26
26
|
|
|
27
|
-
During a `$
|
|
27
|
+
During a `$goal-prep` 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
28
|
|
|
29
|
-
Allowed `$
|
|
29
|
+
Allowed `$goal-prep` actions:
|
|
30
30
|
|
|
31
31
|
- ask diagnostic intake questions and wait when required;
|
|
32
32
|
- create or repair only `docs/goals/<slug>/goal.md`, `docs/goals/<slug>/state.yaml`, and `docs/goals/<slug>/notes/`;
|
|
@@ -35,7 +35,7 @@ Allowed `$goalbuddy` actions:
|
|
|
35
35
|
- print exactly `/goal Follow docs/goals/<slug>/goal.md.`;
|
|
36
36
|
- ask whether to start `/goal`, refine the board, or stop.
|
|
37
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 `$
|
|
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 `$goal-prep`.
|
|
39
39
|
|
|
40
40
|
## Intake Compiler
|
|
41
41
|
|
|
@@ -125,7 +125,7 @@ If the raw input is detailed and already contains a plan, the first board task s
|
|
|
125
125
|
|
|
126
126
|
The target is not literal certainty. It is the highest practical likelihood of a successful goal run: preserve the user's intent, avoid the likely misfire, pick the earliest responsible phase, require proof, and keep advancing safe work until a final audit proves the full outcome.
|
|
127
127
|
|
|
128
|
-
## What `$
|
|
128
|
+
## What `$goal-prep` Does
|
|
129
129
|
|
|
130
130
|
When invoked directly, run intake first. For vague, strategic, improvement-oriented, or open-ended input, run the diagnostic intake and stop before creating or repairing the board until enough material answers are known. For sufficiently clear, planned, recovery, audit, or explicitly-defaulted input, prepare or repair the board and stop for user choice.
|
|
131
131
|
|
|
@@ -157,7 +157,7 @@ Do not:
|
|
|
157
157
|
|
|
158
158
|
## `/goal` Default Bias: Users Want Work Done
|
|
159
159
|
|
|
160
|
-
This section applies after the user starts `/goal Follow docs/goals/<slug>/goal.md.` It does not apply to the initial `$
|
|
160
|
+
This section applies after the user starts `/goal Follow docs/goals/<slug>/goal.md.` It does not apply to the initial `$goal-prep` board-preparation turn.
|
|
161
161
|
|
|
162
162
|
Unless the user explicitly asks for planning only, treat a `/goal` run as a request for work to happen.
|
|
163
163
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
4
|
-
default_prompt: "Use
|
|
2
|
+
display_name: "Goal Prep"
|
|
3
|
+
short_description: "Prepare GoalBuddy boards before running /goal."
|
|
4
|
+
default_prompt: "Use goal-prep to run diagnostic intake on my rough or detailed goal. If the goal is vague or improvement-oriented, ask one guided question at a time, surface likely blind spots, and do not create files until intent, proof, scope, and board handling are clear or explicitly defaulted. If it is clear or already planned, prepare or repair goal.md, state.yaml, and notes/, then print the /goal Follow command instead of starting /goal automatically."
|
|
5
5
|
policy:
|
|
6
6
|
allow_implicit_invocation: true
|
|
@@ -19,10 +19,12 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
19
19
|
const packageRoot = resolve(__dirname, "../..");
|
|
20
20
|
const canonicalProductName = "GoalBuddy";
|
|
21
21
|
const canonicalCliName = "goalbuddy";
|
|
22
|
-
const
|
|
22
|
+
const pluginName = "goalbuddy";
|
|
23
|
+
const canonicalSkillName = "goal-prep";
|
|
24
|
+
const canonicalSkillDirectory = "goalbuddy";
|
|
23
25
|
const legacyCliName = "goal-maker";
|
|
24
26
|
const legacySkillName = "goal-maker";
|
|
25
|
-
const skillSource = join(packageRoot,
|
|
27
|
+
const skillSource = join(packageRoot, canonicalSkillDirectory);
|
|
26
28
|
const packageInfo = JSON.parse(readFileSync(join(packageRoot, "package.json"), "utf8"));
|
|
27
29
|
const defaultCodexHome = process.env.CODEX_HOME || join(homedir(), ".codex");
|
|
28
30
|
const defaultCatalogUrl = "https://raw.githubusercontent.com/tolibear/goalbuddy/main/extend/catalog.json";
|
|
@@ -364,7 +366,7 @@ Default source:
|
|
|
364
366
|
|
|
365
367
|
function installPlugin() {
|
|
366
368
|
const source = optionValue("--source") || "tolibear/goalbuddy";
|
|
367
|
-
const pluginSource = join(packageRoot, "plugins",
|
|
369
|
+
const pluginSource = join(packageRoot, "plugins", pluginName);
|
|
368
370
|
const pluginManifestPath = join(pluginSource, ".codex-plugin", "plugin.json");
|
|
369
371
|
if (!existsSync(pluginManifestPath)) {
|
|
370
372
|
throw new Error(`Plugin manifest not found: ${pluginManifestPath}`);
|
|
@@ -384,7 +386,7 @@ function installPlugin() {
|
|
|
384
386
|
|
|
385
387
|
const report = {
|
|
386
388
|
installed: true,
|
|
387
|
-
plugin: `${
|
|
389
|
+
plugin: `${pluginName}@${pluginName}`,
|
|
388
390
|
version: pluginManifest.version,
|
|
389
391
|
codex_home: codexHome(),
|
|
390
392
|
marketplace_source: source,
|
|
@@ -404,16 +406,20 @@ function installPlugin() {
|
|
|
404
406
|
console.log("");
|
|
405
407
|
console.log("Restart Codex, then use:");
|
|
406
408
|
console.log(` $${canonicalSkillName}`);
|
|
409
|
+
console.log("");
|
|
410
|
+
console.log("Optional extensions:");
|
|
411
|
+
console.log(` npx ${canonicalCliName} extend`);
|
|
412
|
+
console.log(` npx ${canonicalCliName} extend install --all`);
|
|
407
413
|
}
|
|
408
414
|
|
|
409
415
|
function pluginCacheRoot(version) {
|
|
410
|
-
return join(codexHome(), "plugins", "cache",
|
|
416
|
+
return join(codexHome(), "plugins", "cache", pluginName, pluginName, version);
|
|
411
417
|
}
|
|
412
418
|
|
|
413
419
|
function enablePluginConfig() {
|
|
414
420
|
const configPath = join(codexHome(), "config.toml");
|
|
415
421
|
mkdirSync(dirname(configPath), { recursive: true });
|
|
416
|
-
const header = `[plugins."${
|
|
422
|
+
const header = `[plugins."${pluginName}@${pluginName}"]`;
|
|
417
423
|
const existing = existsSync(configPath) ? readFileSync(configPath, "utf8") : "";
|
|
418
424
|
const updated = upsertTomlEnabled(existing, header);
|
|
419
425
|
writeFileSync(configPath, updated);
|
|
@@ -794,7 +800,7 @@ function extendDoctor() {
|
|
|
794
800
|
}
|
|
795
801
|
|
|
796
802
|
function installedSkillRoot() {
|
|
797
|
-
return join(codexHome(), "skills",
|
|
803
|
+
return join(codexHome(), "skills", canonicalSkillDirectory);
|
|
798
804
|
}
|
|
799
805
|
|
|
800
806
|
function legacyInstalledSkillRoot() {
|
|
@@ -1087,7 +1093,7 @@ function printInstallReport(report) {
|
|
|
1087
1093
|
|
|
1088
1094
|
console.log("");
|
|
1089
1095
|
console.log("Next:");
|
|
1090
|
-
console.log(
|
|
1096
|
+
console.log(` $${canonicalSkillName}`);
|
|
1091
1097
|
console.log(` ${canonicalCliName} extend`);
|
|
1092
1098
|
console.log(` ${legacyCliName} remains a temporary compatibility alias.`);
|
|
1093
1099
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "goalbuddy",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.17",
|
|
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",
|
|
@@ -36,9 +36,7 @@
|
|
|
36
36
|
"privacyPolicyURL": "https://github.com/tolibear/goalbuddy#privacy",
|
|
37
37
|
"termsOfServiceURL": "https://github.com/tolibear/goalbuddy#license",
|
|
38
38
|
"defaultPrompt": [
|
|
39
|
-
"
|
|
40
|
-
"Audit this GoalBuddy board and continue safely",
|
|
41
|
-
"Install GoalBuddy extensions and verify setup"
|
|
39
|
+
"$goal-prep prepare a GoalBuddy board for this goal"
|
|
42
40
|
],
|
|
43
41
|
"brandColor": "#2563EB",
|
|
44
42
|
"composerIcon": "./assets/goalbuddy-icon.svg",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GoalBuddy Codex Plugin
|
|
2
2
|
|
|
3
|
-
GoalBuddy packages the canonical `$
|
|
3
|
+
GoalBuddy packages the canonical `$goal-prep` skill as a Codex plugin so teams can install the reusable workflow as a plugin while keeping the npm CLI for local setup, doctor checks, and extension management.
|
|
4
4
|
|
|
5
5
|
## What It Contains
|
|
6
6
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Use for broad, long-running, stalled, vague, detailed, planned, or unhealthy Codex work that needs a structured /goal intake, autonomous task discovery, role-tagged Scout/Judge/Worker delegation, one active task, durable receipts, and a PM-owned rolling board that maximizes the chance of a successful goal run.
|
|
2
|
+
name: goal-prep
|
|
3
|
+
description: Goal Prep for GoalBuddy. Use for broad, long-running, stalled, vague, detailed, planned, or unhealthy Codex work that needs a structured /goal intake, autonomous task discovery, role-tagged Scout/Judge/Worker delegation, one active task, durable receipts, and a PM-owned rolling board that maximizes the chance of a successful goal run.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Goal Prep
|
|
7
7
|
|
|
8
|
-
`$
|
|
8
|
+
`$goal-prep` prepares a GoalBuddy board. It does not start `/goal` automatically, but the board and starter `/goal` command must be shaped so the next run continues into safe execution by default.
|
|
9
9
|
|
|
10
10
|
GoalBuddy is for autonomous, long-running Codex work where the PM thread may need to discover the work, define tasks, sequence them, delegate them, execute them, verify them, and keep going without the human decomposing every step.
|
|
11
11
|
|
|
@@ -19,14 +19,14 @@ raw user intent -> intake compiler -> discovery/plan validation/execution board
|
|
|
19
19
|
|
|
20
20
|
There are two different modes:
|
|
21
21
|
|
|
22
|
-
- `$
|
|
22
|
+
- `$goal-prep`: prepare intake, `goal.md`, `state.yaml`, and the starter `/goal` command, then stop.
|
|
23
23
|
- `/goal Follow docs/goals/<slug>/goal.md.`: execute the board, including Scout/Judge/Worker work.
|
|
24
24
|
|
|
25
|
-
This boundary is strict. `$
|
|
25
|
+
This boundary is strict. `$goal-prep` is not a lightweight `/goal`; it is a board compiler.
|
|
26
26
|
|
|
27
|
-
During a `$
|
|
27
|
+
During a `$goal-prep` 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
28
|
|
|
29
|
-
Allowed `$
|
|
29
|
+
Allowed `$goal-prep` actions:
|
|
30
30
|
|
|
31
31
|
- ask diagnostic intake questions and wait when required;
|
|
32
32
|
- create or repair only `docs/goals/<slug>/goal.md`, `docs/goals/<slug>/state.yaml`, and `docs/goals/<slug>/notes/`;
|
|
@@ -35,7 +35,7 @@ Allowed `$goalbuddy` actions:
|
|
|
35
35
|
- print exactly `/goal Follow docs/goals/<slug>/goal.md.`;
|
|
36
36
|
- ask whether to start `/goal`, refine the board, or stop.
|
|
37
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 `$
|
|
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 `$goal-prep`.
|
|
39
39
|
|
|
40
40
|
## Intake Compiler
|
|
41
41
|
|
|
@@ -125,7 +125,7 @@ If the raw input is detailed and already contains a plan, the first board task s
|
|
|
125
125
|
|
|
126
126
|
The target is not literal certainty. It is the highest practical likelihood of a successful goal run: preserve the user's intent, avoid the likely misfire, pick the earliest responsible phase, require proof, and keep advancing safe work until a final audit proves the full outcome.
|
|
127
127
|
|
|
128
|
-
## What `$
|
|
128
|
+
## What `$goal-prep` Does
|
|
129
129
|
|
|
130
130
|
When invoked directly, run intake first. For vague, strategic, improvement-oriented, or open-ended input, run the diagnostic intake and stop before creating or repairing the board until enough material answers are known. For sufficiently clear, planned, recovery, audit, or explicitly-defaulted input, prepare or repair the board and stop for user choice.
|
|
131
131
|
|
|
@@ -157,7 +157,7 @@ Do not:
|
|
|
157
157
|
|
|
158
158
|
## `/goal` Default Bias: Users Want Work Done
|
|
159
159
|
|
|
160
|
-
This section applies after the user starts `/goal Follow docs/goals/<slug>/goal.md.` It does not apply to the initial `$
|
|
160
|
+
This section applies after the user starts `/goal Follow docs/goals/<slug>/goal.md.` It does not apply to the initial `$goal-prep` board-preparation turn.
|
|
161
161
|
|
|
162
162
|
Unless the user explicitly asks for planning only, treat a `/goal` run as a request for work to happen.
|
|
163
163
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "
|
|
3
|
-
short_description: "
|
|
4
|
-
default_prompt: "Use
|
|
2
|
+
display_name: "Goal Prep"
|
|
3
|
+
short_description: "Prepare GoalBuddy boards before running /goal."
|
|
4
|
+
default_prompt: "Use goal-prep to run diagnostic intake on my rough or detailed goal. If the goal is vague or improvement-oriented, ask one guided question at a time, surface likely blind spots, and do not create files until intent, proof, scope, and board handling are clear or explicitly defaulted. If it is clear or already planned, prepare or repair goal.md, state.yaml, and notes/, then print the /goal Follow command instead of starting /goal automatically."
|
|
5
5
|
policy:
|
|
6
6
|
allow_implicit_invocation: true
|