goalbuddy 0.3.6 → 0.3.8

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 (81) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/CONTRIBUTING.md +2 -2
  3. package/README.md +27 -10
  4. package/{RELEASE-0.3.5.md → docs/releases/0.3.5.md} +4 -4
  5. package/docs/releases/0.3.7.md +129 -0
  6. package/docs/releases/0.3.8.md +40 -0
  7. package/docs/releases/README.md +83 -0
  8. package/goalbuddy/SKILL.md +21 -10
  9. package/goalbuddy/scripts/check-goal-state.mjs +53 -0
  10. package/goalbuddy/scripts/render-task-prompt.mjs +39 -4
  11. package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/README.md +7 -9
  12. package/goalbuddy/{extend → surfaces}/local-goal-board/examples/sample-goal/state.yaml +5 -5
  13. package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/examples/subgoal-parent/state.yaml +3 -3
  14. package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/state.yaml +3 -3
  15. package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/scripts/lib/goal-board.mjs +17 -13
  16. package/goalbuddy/{extend → surfaces}/local-goal-board/scripts/local-goal-board.mjs +27 -6
  17. package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/test/local-goal-board.test.mjs +63 -12
  18. package/goalbuddy/templates/goal.md +9 -0
  19. package/goalbuddy/templates/state.yaml +7 -6
  20. package/internal/assets/goalbuddy-v0.3.7-release.png +0 -0
  21. package/internal/cli/goal-maker.mjs +177 -717
  22. package/package.json +7 -8
  23. package/plugins/goalbuddy/.claude-plugin/plugin.json +3 -4
  24. package/plugins/goalbuddy/.codex-plugin/plugin.json +5 -6
  25. package/plugins/goalbuddy/README.md +4 -3
  26. package/plugins/goalbuddy/skills/goalbuddy/SKILL.md +21 -10
  27. package/plugins/goalbuddy/skills/goalbuddy/scripts/check-goal-state.mjs +53 -0
  28. package/plugins/goalbuddy/skills/goalbuddy/scripts/render-task-prompt.mjs +39 -4
  29. package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/README.md +7 -9
  30. package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/sample-goal/state.yaml +5 -5
  31. package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/examples/subgoal-parent/state.yaml +3 -3
  32. package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/state.yaml +3 -3
  33. package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/scripts/lib/goal-board.mjs +2 -2
  34. package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/scripts/local-goal-board.mjs +27 -6
  35. package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/test/local-goal-board.test.mjs +35 -8
  36. package/plugins/goalbuddy/skills/goalbuddy/templates/goal.md +9 -0
  37. package/plugins/goalbuddy/skills/goalbuddy/templates/state.yaml +7 -6
  38. package/examples/extend-catalog-workflow/goal.md +0 -53
  39. package/examples/extend-catalog-workflow/notes/T001-extension-model-map.md +0 -47
  40. package/examples/extend-catalog-workflow/notes/T002-architecture-decision.md +0 -48
  41. package/examples/extend-catalog-workflow/notes/T003-implementation-summary.md +0 -43
  42. package/examples/extend-catalog-workflow/notes/T004-root-extend-folder.md +0 -24
  43. package/examples/extend-catalog-workflow/notes/T005-layout-cleanup.md +0 -46
  44. package/examples/extend-catalog-workflow/notes/T006-catalog-location.md +0 -50
  45. package/examples/extend-catalog-workflow/notes/T999-completion-audit.md +0 -36
  46. package/examples/extend-catalog-workflow/state.yaml +0 -327
  47. package/examples/github-pr-workflow-extension/pr-handoff.md +0 -46
  48. package/examples/improve-goal-maker/goal.md +0 -51
  49. package/examples/improve-goal-maker/notes/T001-repo-map.md +0 -59
  50. package/examples/improve-goal-maker/notes/T002-risk-map.md +0 -37
  51. package/examples/improve-goal-maker/state.yaml +0 -224
  52. package/goalbuddy/extend/github-projects/README.md +0 -105
  53. package/goalbuddy/extend/github-projects/examples/goal-board-sync/state.yaml +0 -63
  54. package/goalbuddy/extend/github-projects/extension.yaml +0 -43
  55. package/goalbuddy/extend/github-projects/scripts/lib/github-projects.mjs +0 -728
  56. package/goalbuddy/extend/github-projects/scripts/lib/goal-state.mjs +0 -362
  57. package/goalbuddy/extend/github-projects/scripts/sync-github-project.mjs +0 -193
  58. package/goalbuddy/extend/github-projects/test/github-projects.test.mjs +0 -267
  59. package/goalbuddy/extend/local-goal-board/extension.yaml +0 -39
  60. package/internal/assets/extend-release.png +0 -0
  61. package/internal/assets/extend-release.svg +0 -83
  62. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/README.md +0 -105
  63. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/examples/goal-board-sync/state.yaml +0 -63
  64. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/extension.yaml +0 -43
  65. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/lib/github-projects.mjs +0 -728
  66. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/lib/goal-state.mjs +0 -362
  67. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/sync-github-project.mjs +0 -193
  68. package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/test/github-projects.test.mjs +0 -267
  69. package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/extension.yaml +0 -39
  70. /package/goalbuddy/{extend → surfaces}/local-goal-board/assets/goalbuddy-mark.png +0 -0
  71. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/sample-goal/notes/T001-scout.md +0 -0
  72. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/goal.md +0 -0
  73. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/notes/.gitkeep +0 -0
  74. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/goal.md +0 -0
  75. /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/notes/.gitkeep +0 -0
  76. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/assets/goalbuddy-mark.png +0 -0
  77. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/sample-goal/notes/T001-scout.md +0 -0
  78. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/goal.md +0 -0
  79. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/notes/.gitkeep +0 -0
  80. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/goal.md +0 -0
  81. /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/notes/.gitkeep +0 -0
@@ -1,224 +0,0 @@
1
- # Goal Maker v2 state.yaml
2
- # Board truth lives here. goal.md is the editable charter; notes/ holds long receipts only.
3
-
4
- version: 2
5
-
6
- goal:
7
- title: "Improve Goal Maker"
8
- slug: "improve-goal-maker"
9
- kind: open_ended # specific | open_ended | recovery | audit
10
- tranche: "Discover the highest-leverage local improvements to Goal Maker, complete the first safe implementation tranche, and leave a reviewable handoff for anything larger."
11
- status: done # active | blocked | done
12
-
13
- rules:
14
- pm_owns_state: true
15
- one_active_task: true
16
- max_write_workers: 1
17
- no_implementation_without_worker_or_pm_task: true
18
- no_completion_without_judge_or_pm_audit: true
19
-
20
- agents:
21
- scout: installed
22
- worker: installed
23
- judge: installed
24
-
25
- active_task: null
26
-
27
- tasks:
28
- - id: T001
29
- type: scout
30
- assignee: Scout
31
- status: done
32
- objective: "Map Goal Maker purpose, architecture, templates, scripts, tests, docs, verification commands, health signals, and improvement candidates."
33
- inputs:
34
- - README.md
35
- - CONTRIBUTING.md
36
- - package.json
37
- - goal-maker/SKILL.md
38
- - goal-maker/templates
39
- - goal-maker/scripts
40
- - goal-maker/test
41
- - docs
42
- constraints:
43
- - "Read-only."
44
- - "Do not edit implementation files."
45
- - "Prefer concrete file-path evidence over generic advice."
46
- - "Flag any mismatch between the skill contract, templates, checker, tests, and Codex agent behavior."
47
- expected_output:
48
- - "Repo map"
49
- - "Verification commands"
50
- - "Current failures or unknowns"
51
- - "Ranked improvement candidates"
52
- - "Candidate next tasks"
53
- receipt:
54
- result: done
55
- note: notes/T001-repo-map.md
56
- summary: "Repo map completed; verification is green, install/package checks work, and the top improvement area is Goal Maker workflow reliability around checker blind spots, agent installation assumptions, and template/skill drift."
57
- evidence:
58
- - README.md
59
- - CONTRIBUTING.md
60
- - package.json
61
- - goal-maker/SKILL.md
62
- - goal-maker/bin/goal-maker.mjs
63
- - goal-maker/scripts/check-goal-state.mjs
64
- - goal-maker/scripts/install-agents.mjs
65
- - goal-maker/templates/state.yaml
66
- - goal-maker/agents/goal_scout.toml
67
- - goal-maker/agents/goal_worker.toml
68
- - goal-maker/agents/goal_judge.toml
69
- - goal-maker/test/check-goal-state.test.mjs
70
- spawned_tasks:
71
- - T002
72
- - T003
73
- - id: T002
74
- type: scout
75
- assignee: Scout
76
- status: done
77
- objective: "Investigate Goal Maker workflow risks, stale instructions, checker blind spots, and agent-installation assumptions."
78
- inputs:
79
- - "T001 receipt"
80
- - goal-maker/agents
81
- - goal-maker/scripts/check-goal-state.mjs
82
- - goal-maker/scripts/install-agents.mjs
83
- - goal-maker/templates
84
- - goal-maker/test
85
- constraints:
86
- - "Read-only."
87
- - "Do not edit implementation files."
88
- - "Ground every risk in a file path, command result, or missing coverage."
89
- expected_output:
90
- - "Risk map"
91
- - "Checker or template gaps"
92
- - "Agent setup assumptions"
93
- - "Small safe implementation candidates"
94
- receipt:
95
- result: done
96
- note: notes/T002-risk-map.md
97
- summary: "Risk map completed; doctor exits green with missing agents, checker accepts type/assignee mismatches, and update leaves stale agents unless forced."
98
- evidence:
99
- - goal-maker/bin/goal-maker.mjs
100
- - goal-maker/scripts/check-goal-state.mjs
101
- - goal-maker/scripts/install-agents.mjs
102
- - goal-maker/test/check-goal-state.test.mjs
103
- - README.md
104
- spawned_tasks:
105
- - T003
106
- - id: T003
107
- type: judge
108
- assignee: Judge
109
- status: done
110
- objective: "Choose the first safe implementation tranche by impact, confidence, reversibility, and verification strength."
111
- inputs:
112
- - "T001 receipt"
113
- - "T002 receipt if available"
114
- - "Current dirty diff"
115
- constraints:
116
- - "Do not implement."
117
- - "Pick small reviewable work."
118
- - "Prefer changes that improve Goal Maker reliability or clarity without widening scope."
119
- expected_output:
120
- - "Decision"
121
- - "First Worker task with allowed_files and verify commands"
122
- - "Blocked or deferred tasks"
123
- receipt:
124
- result: done
125
- decision: "Implement the doctor missing-agent reliability fix first; it directly supports the Goal Maker setup contract, is small, reversible, and can be verified with focused CLI tests plus npm run check."
126
- evidence:
127
- - examples/improve-goal-maker/notes/T001-repo-map.md
128
- - examples/improve-goal-maker/notes/T002-risk-map.md
129
- - goal-maker/bin/goal-maker.mjs
130
- - package.json
131
- next_allowed_task: T004
132
- blocked_tasks:
133
- - "Checker type/assignee mismatch fix deferred until after doctor reliability tranche."
134
- - "Agent update overwrite semantics deferred because it may need owner policy on preserving local custom agents."
135
- required_board_updates:
136
- - "Set T004 active with allowed_files limited to the CLI and focused CLI test."
137
- - id: T004
138
- type: worker
139
- assignee: Worker
140
- status: done
141
- objective: "Make `goal-maker doctor` fail when any required bundled agent definition is missing, with focused CLI test coverage."
142
- allowed_files:
143
- - goal-maker/bin/goal-maker.mjs
144
- - goal-maker/test/goal-maker-cli.test.mjs
145
- verify:
146
- - npm run check
147
- - tmp=$(mktemp -d); node goal-maker/bin/goal-maker.mjs install --codex-home "$tmp" >/dev/null && rm "$tmp/agents/goal_worker.toml" && ! node goal-maker/bin/goal-maker.mjs doctor --codex-home "$tmp"; rc=$?; rm -rf "$tmp"; exit $rc
148
- stop_if:
149
- - "Need files outside allowed_files."
150
- - "Behavior is ambiguous."
151
- - "Verification fails twice."
152
- - "Need to touch unrelated asset changes in the dirty worktree."
153
- receipt:
154
- result: done
155
- changed_files:
156
- - goal-maker/bin/goal-maker.mjs
157
- - goal-maker/test/goal-maker-cli.test.mjs
158
- commands:
159
- - cmd: node --test goal-maker/test/goal-maker-cli.test.mjs
160
- status: fail_expected_red
161
- - cmd: node --test goal-maker/test/goal-maker-cli.test.mjs
162
- status: pass
163
- - cmd: node --check goal-maker/bin/goal-maker.mjs
164
- status: pass
165
- - cmd: npm run check
166
- status: pass
167
- - cmd: tmp=$(mktemp -d); node goal-maker/bin/goal-maker.mjs install --codex-home "$tmp" >/dev/null && rm "$tmp/agents/goal_worker.toml" && ! node goal-maker/bin/goal-maker.mjs doctor --codex-home "$tmp"; rc=$?; rm -rf "$tmp"; exit $rc
168
- status: pass
169
- - cmd: git diff --check
170
- status: pass
171
- summary: "`goal-maker doctor` now reports `missing_agents` and exits non-zero when any required bundled agent definition is absent; focused CLI coverage was added."
172
- - id: T999
173
- type: judge
174
- assignee: Judge
175
- status: done
176
- objective: "Audit whether the current tranche is complete."
177
- inputs:
178
- - "All done task receipts"
179
- - "Last verification"
180
- - "Current dirty diff"
181
- constraints:
182
- - "Do not implement."
183
- - "Completion requires evidence from receipts and verification."
184
- expected_output:
185
- - "complete | not_complete"
186
- - "missing evidence"
187
- - "next task if not complete"
188
- receipt:
189
- result: done
190
- decision: complete
191
- summary: "Current tranche is complete: Scout mapped the repo, Scout/Judge selected the doctor missing-agent reliability fix, Worker implemented it inside allowed files, and fresh verification passed."
192
- evidence:
193
- - examples/improve-goal-maker/notes/T001-repo-map.md
194
- - examples/improve-goal-maker/notes/T002-risk-map.md
195
- - goal-maker/bin/goal-maker.mjs
196
- - goal-maker/test/goal-maker-cli.test.mjs
197
- verification:
198
- - cmd: npm run check
199
- status: pass
200
- - cmd: tmp=$(mktemp -d); node goal-maker/bin/goal-maker.mjs install --codex-home "$tmp" >/dev/null && rm "$tmp/agents/goal_worker.toml" && ! node goal-maker/bin/goal-maker.mjs doctor --codex-home "$tmp"; rc=$?; rm -rf "$tmp"; exit $rc
201
- status: pass
202
- - cmd: git diff --check
203
- status: pass
204
- - cmd: node goal-maker/scripts/check-goal-state.mjs examples/improve-goal-maker/state.yaml
205
- status: pass
206
- deferred:
207
- - "Checker type/assignee mismatch validation."
208
- - "Agent update overwrite semantics."
209
- - "Optional checker validation for missing or invalid agents section."
210
-
211
- checks:
212
- dirty_fingerprint: unknown
213
- last_verification:
214
- result: pass
215
- task: T999
216
- commands:
217
- - cmd: npm run check
218
- status: pass
219
- - cmd: tmp=$(mktemp -d); node goal-maker/bin/goal-maker.mjs install --codex-home "$tmp" >/dev/null && rm "$tmp/agents/goal_worker.toml" && ! node goal-maker/bin/goal-maker.mjs doctor --codex-home "$tmp"; rc=$?; rm -rf "$tmp"; exit $rc
220
- status: pass
221
- - cmd: git diff --check
222
- status: pass
223
- - cmd: node goal-maker/scripts/check-goal-state.mjs examples/improve-goal-maker/state.yaml
224
- status: pass
@@ -1,105 +0,0 @@
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.
@@ -1,63 +0,0 @@
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
@@ -1,43 +0,0 @@
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