goalbuddy 0.2.21 → 0.3.0

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 (51) hide show
  1. package/CONTRIBUTING.md +14 -5
  2. package/README.md +68 -55
  3. package/goalbuddy/SKILL.md +44 -14
  4. package/goalbuddy/agents/README.md +15 -8
  5. package/goalbuddy/extend/github-projects/README.md +105 -0
  6. package/goalbuddy/extend/github-projects/examples/goal-board-sync/state.yaml +63 -0
  7. package/goalbuddy/extend/github-projects/extension.yaml +43 -0
  8. package/goalbuddy/extend/github-projects/scripts/lib/github-projects.mjs +728 -0
  9. package/goalbuddy/extend/github-projects/scripts/lib/goal-state.mjs +362 -0
  10. package/goalbuddy/extend/github-projects/scripts/sync-github-project.mjs +193 -0
  11. package/goalbuddy/extend/github-projects/test/github-projects.test.mjs +267 -0
  12. package/goalbuddy/extend/local-goal-board/README.md +75 -0
  13. package/goalbuddy/extend/local-goal-board/assets/goalbuddy-mark.png +0 -0
  14. package/goalbuddy/extend/local-goal-board/examples/sample-goal/notes/T001-scout.md +3 -0
  15. package/goalbuddy/extend/local-goal-board/examples/sample-goal/state.yaml +124 -0
  16. package/goalbuddy/extend/local-goal-board/extension.yaml +37 -0
  17. package/goalbuddy/extend/local-goal-board/scripts/lib/goal-board.mjs +1225 -0
  18. package/goalbuddy/extend/local-goal-board/scripts/local-goal-board.mjs +258 -0
  19. package/goalbuddy/extend/local-goal-board/test/local-goal-board.test.mjs +146 -0
  20. package/goalbuddy/scripts/check-goal-state.mjs +24 -9
  21. package/goalbuddy/templates/state.yaml +18 -3
  22. package/internal/assets/goalbuddy-live-board.jpg +0 -0
  23. package/internal/cli/goal-maker.mjs +424 -31
  24. package/internal/cli/postinstall.mjs +3 -3
  25. package/package.json +7 -2
  26. package/plugins/goalbuddy/.claude-plugin/plugin.json +24 -0
  27. package/plugins/goalbuddy/.codex-plugin/plugin.json +5 -4
  28. package/plugins/goalbuddy/README.md +23 -13
  29. package/plugins/goalbuddy/agents/goal-judge.md +27 -0
  30. package/plugins/goalbuddy/agents/goal-scout.md +24 -0
  31. package/plugins/goalbuddy/agents/goal-worker.md +26 -0
  32. package/plugins/goalbuddy/commands/goal-prep.md +12 -0
  33. package/plugins/goalbuddy/skills/goalbuddy/SKILL.md +44 -14
  34. package/plugins/goalbuddy/skills/goalbuddy/agents/README.md +15 -8
  35. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/README.md +105 -0
  36. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/examples/goal-board-sync/state.yaml +63 -0
  37. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/extension.yaml +43 -0
  38. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/lib/github-projects.mjs +728 -0
  39. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/lib/goal-state.mjs +362 -0
  40. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/sync-github-project.mjs +193 -0
  41. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/test/github-projects.test.mjs +267 -0
  42. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/README.md +75 -0
  43. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/assets/goalbuddy-mark.png +0 -0
  44. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/examples/sample-goal/notes/T001-scout.md +3 -0
  45. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/examples/sample-goal/state.yaml +124 -0
  46. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/extension.yaml +37 -0
  47. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/scripts/lib/goal-board.mjs +1225 -0
  48. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/scripts/local-goal-board.mjs +258 -0
  49. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/test/local-goal-board.test.mjs +146 -0
  50. package/plugins/goalbuddy/skills/goalbuddy/scripts/check-goal-state.mjs +24 -9
  51. package/plugins/goalbuddy/skills/goalbuddy/templates/state.yaml +18 -3
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "goalbuddy",
3
+ "version": "0.3.0",
4
+ "description": "Turn broad Claude Code work into verified GoalBuddy boards with Scout, Judge, Worker, visual boards, and receipts.",
5
+ "author": {
6
+ "name": "tolibear",
7
+ "email": "support@tolibear.com",
8
+ "url": "https://github.com/tolibear"
9
+ },
10
+ "homepage": "https://goalbuddy.dev",
11
+ "repository": "https://github.com/tolibear/goalbuddy",
12
+ "license": "MIT",
13
+ "keywords": [
14
+ "claude-code",
15
+ "claude-code-plugin",
16
+ "claude-code-skill",
17
+ "goalbuddy",
18
+ "goal",
19
+ "task-board",
20
+ "receipts",
21
+ "workflow",
22
+ "extensions"
23
+ ]
24
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "goalbuddy",
3
- "version": "0.2.21",
4
- "description": "Turn broad Codex work into verified GoalBuddy boards with Scout, Judge, Worker, receipts, and optional extensions.",
3
+ "version": "0.3.0",
4
+ "description": "Turn broad Codex and Claude Code work into verified GoalBuddy boards with Scout, Judge, Worker, visual boards, and receipts.",
5
5
  "author": {
6
6
  "name": "tolibear",
7
7
  "email": "support@tolibear.com",
@@ -13,6 +13,7 @@
13
13
  "keywords": [
14
14
  "goalbuddy",
15
15
  "codex",
16
+ "claude-code",
16
17
  "skills",
17
18
  "goal",
18
19
  "task-board",
@@ -23,8 +24,8 @@
23
24
  "skills": "./skills/",
24
25
  "interface": {
25
26
  "displayName": "GoalBuddy",
26
- "shortDescription": "Turn broad Codex work into verified Scout/Judge/Worker boards",
27
- "longDescription": "GoalBuddy packages a structured Codex goal workflow for broad, long-running, or ambiguous engineering work. It creates durable goal charters, task boards, receipts, verification gates, extension handoffs, and compatibility guidance for teams moving from goal-maker.",
27
+ "shortDescription": "Turn broad Codex or Claude Code work into verified Scout/Judge/Worker boards",
28
+ "longDescription": "GoalBuddy packages a structured goal workflow for broad, long-running, or ambiguous engineering work in Codex or Claude Code. It creates durable goal charters, task boards, visual board surfaces, receipts, verification gates, extension handoffs, and compatibility guidance for teams moving from goal-maker.",
28
29
  "developerName": "tolibear",
29
30
  "category": "Coding",
30
31
  "capabilities": [
@@ -1,11 +1,14 @@
1
- # GoalBuddy Codex Plugin
1
+ # GoalBuddy Plugin (Codex + Claude Code)
2
2
 
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.
3
+ GoalBuddy packages the canonical `goal-prep` skill as a plugin so teams can install the reusable workflow in **Codex** and **Claude Code**, while keeping the npm CLI for local setup, doctor checks, and extension management.
4
4
 
5
5
  ## What It Contains
6
6
 
7
- - `.codex-plugin/plugin.json`: plugin metadata and Codex UI copy.
8
- - `skills/goalbuddy/`: the installable GoalBuddy skill payload.
7
+ - `.codex-plugin/plugin.json`: Codex plugin manifest and Codex UI copy.
8
+ - `.claude-plugin/plugin.json`: Claude Code plugin manifest.
9
+ - `skills/goalbuddy/`: the installable GoalBuddy skill payload (shared by both platforms).
10
+ - `agents/`: Claude Code subagent definitions (`goal-scout.md`, `goal-judge.md`, `goal-worker.md`).
11
+ - `commands/goal-prep.md`: Claude Code slash command entry point.
9
12
  - `assets/goalbuddy-icon.svg`: lightweight plugin icon.
10
13
 
11
14
  ## Local Testing
@@ -18,29 +21,36 @@ npx goalbuddy doctor
18
21
  npx goalbuddy check-update
19
22
  ```
20
23
 
21
- ## Native Codex Install
22
-
23
- Install and enable GoalBuddy:
24
+ ## Install Both Targets
24
25
 
25
26
  ```bash
26
27
  npx goalbuddy
27
28
  ```
28
29
 
29
- Restart Codex, then use `$goal-prep`. Optional extensions can be installed with:
30
+ This installs and enables the native Codex plugin in `~/.codex/`, then installs the GoalBuddy skill, Scout/Judge/Worker subagents, and `/goal-prep` slash command into `~/.claude/`.
31
+
32
+ ## Install One Target
30
33
 
31
34
  ```bash
32
- npx goalbuddy extend install --all
35
+ npx goalbuddy --target codex
36
+ npx goalbuddy --target claude
37
+ ```
38
+
39
+ This installs the GoalBuddy skill, the three Scout/Judge/Worker subagents, and the `/goal-prep` slash command into `~/.claude/`. Restart Claude Code, then run:
40
+
41
+ ```text
42
+ /goal-prep
33
43
  ```
34
44
 
35
45
  Or install the npm package globally:
36
46
 
37
47
  ```bash
38
48
  npm i -g goalbuddy
39
- goalbuddy
49
+ goalbuddy # installs for Codex and Claude Code
50
+ goalbuddy --target codex # installs for Codex only
51
+ goalbuddy --target claude # installs for Claude Code only
40
52
  ```
41
53
 
42
- The marketplace manifest is included for Codex discovery, but current Codex CLI builds only register the marketplace with `codex plugin marketplace add`; the npm CLI also caches and enables the plugin.
43
-
44
54
  For local CLI testing before npm publish:
45
55
 
46
56
  ```bash
@@ -50,4 +60,4 @@ node internal/cli/goal-maker.mjs doctor
50
60
 
51
61
  ## Release Notes
52
62
 
53
- 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.
63
+ The plugin is prepared for the `tolibear/goalbuddy` repo and `goalbuddy` npm package. Keep `.codex-plugin/plugin.json` and `.claude-plugin/plugin.json` aligned with `package.json` before publishing a new package release.
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: goal-judge
3
+ description: GoalBuddy Judge. High-thinking strategic reviewer for GoalBuddy escalation: ambiguity, risky scope, source/product conflicts, safety/API/live decisions, and tranche completion. Returns a compact Judge receipt for the PM to paste into state.yaml.
4
+ tools: Read, Grep, Glob, Bash
5
+ ---
6
+
7
+ You are Judge for GoalBuddy.
8
+
9
+ Thinking level: high.
10
+ Mode: strategic reviewer and escalation authority.
11
+
12
+ Think as a skeptical staff engineer and project-management systems designer. You decide and constrain; you do not broadly implement.
13
+
14
+ Use when source, tests, product behavior, API/live strategy, dirty scope, giant-file risk, safety/auth/money/persistence semantics, task priority, or completion readiness is ambiguous.
15
+
16
+ Do not approve based on lots of docs or lots of tests. Require coherent receipts and current verification.
17
+
18
+ Return a compact Judge receipt for the PM to paste into state.yaml:
19
+ - result
20
+ - decision
21
+ - evidence
22
+ - next_allowed_task when work may continue
23
+ - blocked_tasks when work should not proceed
24
+ - completion decision when auditing a tranche
25
+ - required board updates
26
+
27
+ Do not broadly implement, select the active task, or mark the goal complete yourself.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: goal-scout
3
+ description: GoalBuddy Scout. Read-only evidence mapper for one GoalBuddy task. Finds repo/source/spec evidence, verification commands, ambiguities, and candidate next tasks. Returns a compact Scout receipt for the PM to paste into state.yaml.
4
+ tools: Read, Grep, Glob, Bash
5
+ ---
6
+
7
+ You are Scout for GoalBuddy.
8
+
9
+ Thinking level: medium.
10
+ Mode: read-only evidence mapping.
11
+
12
+ You are read-only. Do not edit files, stage files, run destructive commands, or claim implementation is complete.
13
+
14
+ Given one active Scout task, map repo/source/spec evidence, verification commands, health signals, improvement candidates, target files, tests, and unresolved ambiguity.
15
+
16
+ Return a compact Scout receipt for the PM to paste into state.yaml:
17
+ - result
18
+ - summary
19
+ - evidence paths
20
+ - note path if findings are too large for the task card
21
+ - spawned_tasks when useful
22
+ - ambiguity requiring Judge
23
+
24
+ Do not select the active task or mark the goal complete.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: goal-worker
3
+ description: GoalBuddy Worker. Low-thinking bounded implementer for exactly one GoalBuddy Worker task with allowed files, verification commands, and stop conditions. Returns a compact Worker receipt for the PM to paste into state.yaml.
4
+ tools: Read, Edit, Write, Grep, Glob, Bash
5
+ ---
6
+
7
+ You are Worker for GoalBuddy.
8
+
9
+ Thinking level: low.
10
+ Mode: one bounded writer.
11
+
12
+ Execute exactly one active Worker task. Do not broaden scope.
13
+
14
+ You may edit only the task's allowed_files. You may update only explicitly named control files if the PM included them in scope. Do not decide product behavior, retained/excluded scope, API/live/deployment strategy, architecture direction, parity, or completion readiness.
15
+
16
+ Stop immediately if required evidence is missing, files outside scope are needed, source/tests/product conflict, verification fails twice, or the diff exceeds the task budget.
17
+
18
+ Return a compact Worker receipt for the PM to paste into state.yaml:
19
+ - result
20
+ - changed_files
21
+ - commands run with pass/fail
22
+ - summary
23
+ - remaining_blockers
24
+ - needs_judge when strategy or ambiguity remains
25
+
26
+ Do not select the next active task or mark the goal complete.
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Prepare a GoalBuddy board for a broad, long-running, or ambiguous goal. Compiles intake, writes goal.md/state.yaml, and prints the /goal command to run next. Does not start /goal automatically.
3
+ allowed-tools: Read, Write, Edit, Bash, Grep, Glob
4
+ ---
5
+
6
+ Invoke the GoalBuddy `goal-prep` skill to prepare a board for the user's goal.
7
+
8
+ Follow the canonical GoalBuddy invocation boundary: prepare intake, create or repair `docs/goals/<slug>/goal.md`, `state.yaml`, and `notes/`, optionally open a visual board, then print exactly `/goal Follow docs/goals/<slug>/goal.md.` and stop.
9
+
10
+ Do not perform the requested work during this turn, even if it looks read-only or obviously useful. Put implementation, research, asset generation, and named-skill loading into Scout, Judge, or Worker tasks for the later `/goal` run.
11
+
12
+ User goal: $ARGUMENTS
@@ -1,13 +1,13 @@
1
1
  ---
2
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.
3
+ description: Goal Prep for GoalBuddy. Use for broad, long-running, stalled, vague, detailed, planned, or unhealthy Codex or Claude Code 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
- `$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.
8
+ `$goal-prep` (Codex) or `/goal-prep` (Claude Code) 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
- 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.
10
+ GoalBuddy is for autonomous, long-running Codex or Claude Code 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
 
12
12
  The loop is:
13
13
 
@@ -24,15 +24,16 @@ There are two different modes:
24
24
 
25
25
  This boundary is strict. `$goal-prep` is not a lightweight `/goal`; it is a board compiler.
26
26
 
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.
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, or edit product files. Put those actions into Scout, Judge, Worker, or PM tasks for the later `/goal` run.
28
28
 
29
29
  Allowed `$goal-prep` actions:
30
30
 
31
31
  - run the bundled GoalBuddy update checker and mention a newer version if one is available;
32
32
  - ask diagnostic intake questions and wait when required;
33
- - create or repair only `docs/goals/<slug>/goal.md`, `docs/goals/<slug>/state.yaml`, and `docs/goals/<slug>/notes/`;
33
+ - create or repair only `docs/goals/<slug>/goal.md`, `docs/goals/<slug>/state.yaml`, `docs/goals/<slug>/notes/`, and the generated `.goalbuddy-board/` visual board artifact;
34
+ - create and open the selected visual board surface for the goal;
34
35
  - optionally run the GoalBuddy board checker against that `state.yaml`;
35
- - verify that the GoalBuddy agents are installed, if this can be done without touching implementation work;
36
+ - verify GoalBuddy agent availability, if this can be done without touching implementation work, and record `installed`, `bundled_not_installed`, `missing`, or `unknown` truthfully;
36
37
  - print exactly `/goal Follow docs/goals/<slug>/goal.md.`;
37
38
  - ask whether to start `/goal`, refine the board, or stop.
38
39
 
@@ -72,6 +73,22 @@ Extract:
72
73
  - blind spots: important risks, choices, or success dimensions the user may not have named yet;
73
74
  - existing plan facts: user-provided steps, files, constraints, or sequencing that must be preserved but still validated.
74
75
 
76
+ Ask the visual-board question early, before detailed task shaping:
77
+
78
+ ```text
79
+ Do you want to set up a visual board for this?
80
+ ```
81
+
82
+ Recommended options:
83
+
84
+ 1. Local live board (Recommended) - starts immediately, requires no credentials, and lets the user watch tasks populate inside Codex or Claude Code.
85
+ 2. GitHub Projects - best when stakeholders need a shared external board and the user can approve GitHub credentials/project details.
86
+ 3. No visual board - best for quick or private goals where the file board is enough.
87
+
88
+ If the user chooses the local live board, create the goal directory, `notes/`, and an initial minimal `state.yaml` as soon as the slug is known, then run `npx goalbuddy board docs/goals/<slug>` and open the printed local URL in the AI coding agent's in-app browser (the Codex in-app Browser, the Claude Code preview, or the user's regular browser). In short: start the local board before filling the task list so the board pops up right away and cards populate live as `state.yaml` changes. Keep the printed URL in the final prep response as a fallback, but do not make the URL the primary experience.
89
+
90
+ If the user chooses GitHub Projects, ask for approval and the required project target before any live write. Create or sync the GitHub Project at the same early point as the local board: after the goal root and skeleton `state.yaml` exist, before the detailed task list is finished, then sync again as tasks populate. Run a dry-run sync first when possible. Missing GitHub credentials or project details should not block local board creation or goal prep; record the missing requirement in `visual_board.github_projects` and seed a PM setup task.
91
+
75
92
  Ask before board creation when the request is vague, strategic, improvement-oriented, or open-ended and the user has not explicitly said to use defaults. Ask one guided question at a time with 2-3 options and a recommended default, then wait. Continue the diagnostic intake until the user's answers are sufficient to choose the board shape. Do not create or repair `docs/goals/<slug>/` until the diagnostic intake is complete or the user explicitly accepts defaults.
76
93
 
77
94
  For vague or strategic goals, one answer is rarely enough. After each answer, reflect what it implies, name one likely blind spot, and ask the next material question. The goal is to help the user discover what they mean, not merely collect a form value.
@@ -117,14 +134,15 @@ Stop after each question. Do not create files, repair an existing board, run che
117
134
 
118
135
  Minimum diagnostic ladder for vague, strategic, or improvement-oriented goals:
119
136
 
120
- 1. Intent target: what kind of improvement or outcome matters most?
121
- 2. Success proof: what evidence would convince the user this worked?
122
- 3. Scope and non-goals: what should remain untouched or explicitly out of scope?
123
- 4. Board handling: reuse an existing board, create a fresh board, or inspect first?
137
+ 1. Visual board: ask "Do you want to set up a visual board for this?"
138
+ 2. Intent target: what kind of improvement or outcome matters most?
139
+ 3. Success proof: what evidence would convince the user this worked?
140
+ 4. Scope and non-goals: what should remain untouched or explicitly out of scope?
141
+ 5. Goal handling: reuse an existing goal, create a fresh goal, or inspect first?
124
142
 
125
143
  Ask these one at a time. Skip a step only when the user's words already answer it clearly. After the user answers one step, do not assume the remaining steps; ask the next unresolved material question.
126
144
 
127
- For "make GoalBuddy better", a good first question is which improvement target matters most: intake clarity, board/execution reliability, completion proof/eval coverage, or user experience during long-running goals. A good second question asks what proof would convince the user it improved. A good third question asks whether to reuse an existing board, create a fresh board, or inspect first.
145
+ For "make GoalBuddy better", a good first question is which improvement target matters most: intake clarity, board/execution reliability, completion proof/eval coverage, or user experience during long-running goals. A good second question asks what proof would convince the user it improved. A good third question asks whether to reuse an existing goal, create a fresh goal, or inspect first.
128
146
 
129
147
  ## Direct `/goal` Entry
130
148
 
@@ -155,9 +173,10 @@ Do:
155
173
  - classify the goal as `specific`, `open_ended`, `existing_plan`, `recovery`, or `audit`;
156
174
  - create or repair `docs/goals/<slug>/`;
157
175
  - create `goal.md`, `state.yaml`, and `notes/`;
176
+ - if requested, start the local visual board immediately and open it in the AI coding agent's in-app browser (Codex in-app Browser, Claude Code preview, or the user's regular browser) before filling the task list;
158
177
  - seed a role-tagged task board that matches the input shape;
159
178
  - make the first active task safe;
160
- - verify Scout, Worker, and Judge agents are installed or explain what is missing;
179
+ - verify Scout, Worker, and Judge agent availability or record an explicit truthful state;
161
180
  - print the exact command `/goal Follow docs/goals/<slug>/goal.md.`;
162
181
  - ask whether to start now, refine `goal.md`, or stop.
163
182
 
@@ -221,7 +240,7 @@ docs/goals/<slug>/
221
240
  notes/
222
241
  ```
223
242
 
224
- The goal root may contain only `goal.md`, `state.yaml`, and `notes/`.
243
+ The goal root may contain only `goal.md`, `state.yaml`, `notes/`, and generated `.goalbuddy-board/` files when the local visual board is enabled.
225
244
 
226
245
  Most results live inline as task receipts in `state.yaml`. Only create `notes/<task-id>-<slug>.md` when Scout, Judge, or PM output is too large to fit on the task card.
227
246
 
@@ -472,7 +491,18 @@ If the checker and your judgment disagree, choose the more conservative state.
472
491
 
473
492
  ## Agents
474
493
 
475
- Scout, Worker, and Judge are default-installed roles.
494
+ Scout, Worker, and Judge templates are bundled with GoalBuddy. They may also be installed as user or project agent configs, but a board must not claim `installed` unless the preparer verified the matching agent files.
495
+
496
+ Use these `state.yaml` values:
497
+
498
+ | State | Meaning | Next action |
499
+ |---|---|---|
500
+ | `installed` | Matching Scout/Worker/Judge agent configs were found in the expected user or project agent location. | Continue. |
501
+ | `bundled_not_installed` | The bundled `goal_*.toml` template exists with the skill, but no matching installed agent config was verified. | `/goal` can proceed through PM fallback. If dedicated agents are required before `/goal`, run `npx goalbuddy agents`. |
502
+ | `missing` | Neither an installed config nor the bundled template was verified. | `/goal` can proceed through PM fallback. If dedicated agents are required before `/goal`, run `npx goalbuddy install`. |
503
+ | `unknown` | Agent availability could not be checked. | `/goal` can proceed through PM fallback. To check before `/goal`, run `npx goalbuddy doctor`. |
504
+
505
+ Non-`installed` states are warnings, not false failures, because the main `/goal` PM can perform Scout/Judge/Worker-shaped tasks directly when dedicated agents are unavailable.
476
506
 
477
507
  | Agent | Thinking level | Write access | Use for |
478
508
  |---|---:|---:|---|
@@ -1,17 +1,22 @@
1
1
  # GoalBuddy Agents
2
2
 
3
- This directory contains both skill metadata and bundled agent definitions.
3
+ This directory contains skill metadata and bundled agent definitions for Codex and Claude Code.
4
+
5
+ ## Files
4
6
 
5
7
  - `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.
8
+ - `goal_scout.toml`, `goal_judge.toml`, `goal_worker.toml` Codex agent configs. Copy into `.codex/agents/` for project-scoped agents or `~/.codex/agents/` for personal agents.
9
+ - Claude Code agent markdown lives in `plugins/goalbuddy/agents/` (installed to `~/.claude/agents/` by `npx goalbuddy --target claude`).
10
+
11
+ ## Agent Matrix
7
12
 
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
+ | Agent | Codex file | Claude Code file | Reasoning effort | Write scope |
14
+ |---|---|---|---:|---|
15
+ | Scout | `goal_scout.toml` | `goal-scout.md` | medium | read-only |
16
+ | Worker | `goal_worker.toml` | `goal-worker.md` | low | workspace-write |
17
+ | Judge | `goal_judge.toml` | `goal-judge.md` | high | read-only |
13
18
 
14
- Recommended config:
19
+ ## Recommended Codex Config
15
20
 
16
21
  ```toml
17
22
  [agents]
@@ -20,4 +25,6 @@ max_depth = 1
20
25
  job_max_runtime_seconds = 1800
21
26
  ```
22
27
 
28
+ ## Authority Boundary
29
+
23
30
  Only the main `/goal` PM loop may select the active task, mark tasks done, update board truth, or mark the goal complete.
@@ -0,0 +1,105 @@
1
+ # GitHub Projects
2
+
3
+ Mirror a GoalBuddy `state.yaml` board into GitHub Projects without making GitHub the source of truth.
4
+
5
+ This extension ports the GitHub Projects work from PR #1 into the catalog-based extension system. It keeps the package core dependency-free and optional, while giving teams a practical way to publish a GoalBuddy board into a familiar project surface.
6
+
7
+ ## Use When
8
+
9
+ - A long-running GoalBuddy board needs stakeholder visibility in GitHub Projects.
10
+ - A team wants one-way sync from `state.yaml` into ProjectV2 draft issues.
11
+ - The PM needs a dry-run plan before using GitHub credentials.
12
+ - Existing GoalBuddy receipts, verification commands, allowed files, owners, and dependencies should be visible in a board layout.
13
+
14
+ ## What It Creates
15
+
16
+ The live sync ensures a GitHub Project has:
17
+
18
+ - Draft issues keyed by `Task ID`, so reruns update existing cards instead of duplicating them.
19
+ - Status mapping: `queued -> Todo`, `active -> In Progress`, `blocked -> Blocked`, `done -> Done`.
20
+ - Single-select fields for `Status`, `Priority`, `Work Type`, and `Agent Lane`.
21
+ - Text fields for `Task ID`, `Owner`, `Goal Role`, `Agent Responsible`, `Credential Gate`, `Parent ID`, `Depends On`, `Receipt Summary`, `Verify`, `Allowed Files`, and `Goal Updated`.
22
+ - A `Goal Board` board-layout view for PM flow.
23
+
24
+ The extension must use the bundled sync script for live writes. Do not use Computer Use, browser automation, or the GitHub web UI to create or repair the board view. Do not replace the script with `gh project` commands; `gh project` does not expose the complete ProjectV2 view creation path this extension needs. The script uses GitHub GraphQL for projects, fields, items, and draft issues, plus the GitHub REST Project views endpoint for the `Goal Board` view.
25
+
26
+ The sync only creates or reuses `Goal Board`. It does not create a default Table view, an `Agent Workboard`, or extra role-specific views. GitHub may still show views that already existed on the Project.
27
+
28
+ The extension does not promise custom board grouping or sort order. GitHub's public Project views REST API currently accepts `name`, `layout`, `filter`, and `visible_fields` when creating a view, and GraphQL exposes grouping/sort fields for reading but not a public mutation for saving them. Because that display state cannot be written reliably through the public API, the sync only creates supported fields, cards, and the single `Goal Board` view.
29
+
30
+ ## Inputs
31
+
32
+ - `docs/goals/<slug>/state.yaml`
33
+ - Optional `GITHUB_PROJECT_ID`
34
+ - Optional `GITHUB_PROJECT_OWNER` and `GITHUB_PROJECT_NUMBER`
35
+ - `GITHUB_TOKEN` or `GH_TOKEN` for live sync
36
+
37
+ ## Dry Run
38
+
39
+ Dry-run mode does not call GitHub:
40
+
41
+ ```bash
42
+ node extend/github-projects/scripts/sync-github-project.mjs \
43
+ --state docs/goals/<slug>/state.yaml \
44
+ --dry-run
45
+ ```
46
+
47
+ For structured output:
48
+
49
+ ```bash
50
+ node extend/github-projects/scripts/sync-github-project.mjs \
51
+ --state docs/goals/<slug>/state.yaml \
52
+ --dry-run \
53
+ --json
54
+ ```
55
+
56
+ ## Live Sync
57
+
58
+ Always run the bundled script for live sync. It creates or reuses the `Goal Board` view as part of the same run that syncs fields and draft issues.
59
+
60
+ Use a ProjectV2 node ID:
61
+
62
+ ```bash
63
+ GITHUB_TOKEN=... node extend/github-projects/scripts/sync-github-project.mjs \
64
+ --state docs/goals/<slug>/state.yaml \
65
+ --project-id <project-node-id>
66
+ ```
67
+
68
+ Or use an owner and project number:
69
+
70
+ ```bash
71
+ GITHUB_TOKEN=... node extend/github-projects/scripts/sync-github-project.mjs \
72
+ --state docs/goals/<slug>/state.yaml \
73
+ --owner <user-or-org> \
74
+ --project-number <number>
75
+ ```
76
+
77
+ Environment alternatives:
78
+
79
+ - `GITHUB_PROJECT_ID`
80
+ - `GITHUB_PROJECT_OWNER`
81
+ - `GITHUB_PROJECT_NUMBER`
82
+ - `GITHUB_TOKEN` or `GH_TOKEN`
83
+
84
+ ## Verification
85
+
86
+ ```bash
87
+ node --test extend/github-projects/test/*.test.mjs
88
+ node extend/github-projects/scripts/sync-github-project.mjs \
89
+ --state extend/github-projects/examples/goal-board-sync/state.yaml \
90
+ --dry-run
91
+ node extend/github-projects/scripts/sync-github-project.mjs \
92
+ --state extend/github-projects/examples/goal-board-sync/state.yaml \
93
+ --dry-run \
94
+ --json
95
+ ```
96
+
97
+ ## Boundaries
98
+
99
+ - `state.yaml` remains authoritative.
100
+ - The sync is one-way from GoalBuddy to GitHub Projects.
101
+ - Missing GitHub credentials block only live sync, not local dry-run validation.
102
+ - Live sync creates or updates GitHub Project draft issues, fields, and the `Goal Board` view through the bundled script.
103
+ - Agents must not fall back to Computer Use, browser automation, or the GitHub web UI for Project setup.
104
+ - Agents must not claim ProjectV2 board views are UI-only; GitHub's REST Project views API supports creating board-layout views.
105
+ - Native GitHub issue hierarchy and dependencies are represented as fields because ProjectV2 draft issues do not provide full issue relationship semantics.
@@ -0,0 +1,63 @@
1
+ version: 2
2
+
3
+ goal:
4
+ title: "Goal board sync MVP"
5
+ slug: "goal-board-sync-mvp"
6
+ kind: specific
7
+ tranche: "Mirror a GoalBuddy board into an external Kanban surface."
8
+ status: active
9
+
10
+ rules:
11
+ pm_owns_state: true
12
+ one_active_task: true
13
+ max_write_workers: 1
14
+ no_implementation_without_worker_or_pm_task: true
15
+ no_completion_without_judge_or_pm_audit: true
16
+
17
+ active_task: T002
18
+
19
+ tasks:
20
+ - id: T001
21
+ type: scout
22
+ assignee: Scout
23
+ status: done
24
+ priority: P3
25
+ objective: "Map external board API requirements."
26
+ inputs:
27
+ - "Board API docs"
28
+ constraints:
29
+ - "Read-only."
30
+ expected_output:
31
+ - "Required scopes"
32
+ - "Field mapping"
33
+ receipt:
34
+ result: done
35
+ summary: "The board sync can read GoalBuddy state.yaml and mirror tasks into an external board."
36
+ - id: T002
37
+ type: worker
38
+ assignee: Worker
39
+ status: active
40
+ priority: P1
41
+ objective: "Implement one-way external board sync."
42
+ parent: T001
43
+ depends_on:
44
+ - T001
45
+ allowed_files:
46
+ - "extend/github-projects/scripts/**"
47
+ - "README.md"
48
+ verify:
49
+ - "node --test extend/github-projects/test/*.test.mjs"
50
+ - "node extend/github-projects/scripts/sync-github-project.mjs --state extend/github-projects/examples/goal-board-sync/state.yaml --dry-run"
51
+ stop_if:
52
+ - "Board API credentials are unavailable."
53
+ receipt: null
54
+ - id: T003
55
+ type: judge
56
+ assignee: Judge
57
+ status: queued
58
+ priority: P2
59
+ objective: "Audit whether the board sync MVP is ready to document."
60
+ parent: T002
61
+ depends_on:
62
+ - T002
63
+ receipt: null
@@ -0,0 +1,43 @@
1
+ id: github-projects
2
+ name: GitHub Projects
3
+ kind: integration
4
+ version: 0.1.1
5
+ source_of_truth: local
6
+ description: Mirror GoalBuddy state.yaml tasks into GitHub Projects with dry-run planning, ProjectV2 fields, draft issue upserts, and one Goal Board view.
7
+ local_use_prompt: Run the bundled GitHub Projects sync script for docs/goals/<slug>/state.yaml. Use --dry-run first unless the user has approved live GitHub writes, then run the same script with GITHUB_TOKEN or GH_TOKEN and --project-id or --owner plus --project-number. Do not use Computer Use, browser automation, the GitHub web UI, or gh project as a fallback.
8
+ use_when:
9
+ - A long-running GoalBuddy board needs stakeholder visibility in GitHub Projects.
10
+ - The team wants one-way sync from state.yaml into ProjectV2 draft issues.
11
+ - The PM needs a safe dry-run plan before using GitHub credentials.
12
+ - GoalBuddy receipts, verification commands, allowed files, owners, role/agent fields, credential gates, and dependencies should appear in a GitHub board.
13
+ activation: publish_handoff
14
+ outputs:
15
+ - GitHub Projects dry-run plan
16
+ - GitHub ProjectV2 draft issue sync
17
+ - Goal Board ProjectV2 view
18
+ requires_approval: true
19
+ safe_by_default: false
20
+ reads:
21
+ - docs/goals/<slug>/state.yaml
22
+ - GITHUB_PROJECT_ID
23
+ - GITHUB_PROJECT_OWNER
24
+ - GITHUB_PROJECT_NUMBER
25
+ writes:
26
+ - GitHub ProjectV2 draft issues
27
+ - GitHub ProjectV2 fields
28
+ - GitHub ProjectV2 Goal Board view
29
+ side_effects:
30
+ - Live sync creates or updates GitHub Project draft issues, fields, and views.
31
+ agent_instructions:
32
+ - Use the bundled sync script for all live GitHub Projects writes.
33
+ - Do not use Computer Use, browser automation, or the GitHub web UI to create or repair Project views.
34
+ - Do not replace the bundled script with gh project commands; the script uses GraphQL plus the REST Project views endpoint.
35
+ - Do not claim ProjectV2 board views are UI-only; the GitHub REST Project views API supports creating board-layout views.
36
+ auth:
37
+ env:
38
+ - GITHUB_TOKEN
39
+ supports:
40
+ dry_run: true
41
+ live_github_projects: true
42
+ credentials_required: true
43
+ one_way_sync: true