goalbuddy 0.3.6 → 0.3.7
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 +17 -8
- package/RELEASE-0.3.5.md +4 -4
- package/RELEASE-0.3.7.md +127 -0
- package/goalbuddy/SKILL.md +19 -10
- package/goalbuddy/scripts/check-goal-state.mjs +53 -0
- package/goalbuddy/scripts/render-task-prompt.mjs +22 -1
- package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/README.md +7 -9
- package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/examples/sample-goal/state.yaml +5 -5
- package/{plugins/goalbuddy/skills/goalbuddy/extend → goalbuddy/surfaces}/local-goal-board/examples/subgoal-parent/state.yaml +3 -3
- package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/state.yaml +3 -3
- package/goalbuddy/{extend → surfaces}/local-goal-board/scripts/lib/goal-board.mjs +2 -2
- package/goalbuddy/{extend → surfaces}/local-goal-board/scripts/local-goal-board.mjs +4 -4
- package/goalbuddy/{extend → surfaces}/local-goal-board/test/local-goal-board.test.mjs +8 -8
- package/goalbuddy/templates/goal.md +9 -0
- package/goalbuddy/templates/state.yaml +7 -6
- package/internal/assets/goalbuddy-v0.3.7-release.png +0 -0
- package/internal/cli/goal-maker.mjs +9 -711
- package/package.json +4 -4
- package/plugins/goalbuddy/.claude-plugin/plugin.json +3 -4
- package/plugins/goalbuddy/.codex-plugin/plugin.json +5 -6
- package/plugins/goalbuddy/README.md +4 -3
- package/plugins/goalbuddy/skills/goalbuddy/SKILL.md +19 -10
- package/plugins/goalbuddy/skills/goalbuddy/scripts/check-goal-state.mjs +53 -0
- package/plugins/goalbuddy/skills/goalbuddy/scripts/render-task-prompt.mjs +22 -1
- package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/README.md +7 -9
- package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/examples/sample-goal/state.yaml +5 -5
- package/{goalbuddy/extend → plugins/goalbuddy/skills/goalbuddy/surfaces}/local-goal-board/examples/subgoal-parent/state.yaml +3 -3
- package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/state.yaml +3 -3
- package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/scripts/lib/goal-board.mjs +2 -2
- package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/scripts/local-goal-board.mjs +4 -4
- package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/test/local-goal-board.test.mjs +8 -8
- package/plugins/goalbuddy/skills/goalbuddy/templates/goal.md +9 -0
- package/plugins/goalbuddy/skills/goalbuddy/templates/state.yaml +7 -6
- package/examples/extend-catalog-workflow/goal.md +0 -53
- package/examples/extend-catalog-workflow/notes/T001-extension-model-map.md +0 -47
- package/examples/extend-catalog-workflow/notes/T002-architecture-decision.md +0 -48
- package/examples/extend-catalog-workflow/notes/T003-implementation-summary.md +0 -43
- package/examples/extend-catalog-workflow/notes/T004-root-extend-folder.md +0 -24
- package/examples/extend-catalog-workflow/notes/T005-layout-cleanup.md +0 -46
- package/examples/extend-catalog-workflow/notes/T006-catalog-location.md +0 -50
- package/examples/extend-catalog-workflow/notes/T999-completion-audit.md +0 -36
- package/examples/extend-catalog-workflow/state.yaml +0 -327
- package/examples/github-pr-workflow-extension/pr-handoff.md +0 -46
- package/goalbuddy/extend/github-projects/README.md +0 -105
- package/goalbuddy/extend/github-projects/examples/goal-board-sync/state.yaml +0 -63
- package/goalbuddy/extend/github-projects/extension.yaml +0 -43
- package/goalbuddy/extend/github-projects/scripts/lib/github-projects.mjs +0 -728
- package/goalbuddy/extend/github-projects/scripts/lib/goal-state.mjs +0 -362
- package/goalbuddy/extend/github-projects/scripts/sync-github-project.mjs +0 -193
- package/goalbuddy/extend/github-projects/test/github-projects.test.mjs +0 -267
- package/goalbuddy/extend/local-goal-board/extension.yaml +0 -39
- package/internal/assets/extend-release.png +0 -0
- package/internal/assets/extend-release.svg +0 -83
- package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/README.md +0 -105
- package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/examples/goal-board-sync/state.yaml +0 -63
- package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/extension.yaml +0 -43
- package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/lib/github-projects.mjs +0 -728
- package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/lib/goal-state.mjs +0 -362
- package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/scripts/sync-github-project.mjs +0 -193
- package/plugins/goalbuddy/skills/goalbuddy/extend/github-projects/test/github-projects.test.mjs +0 -267
- package/plugins/goalbuddy/skills/goalbuddy/extend/local-goal-board/extension.yaml +0 -39
- /package/goalbuddy/{extend → surfaces}/local-goal-board/assets/goalbuddy-mark.png +0 -0
- /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/sample-goal/notes/T001-scout.md +0 -0
- /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/goal.md +0 -0
- /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/notes/.gitkeep +0 -0
- /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/goal.md +0 -0
- /package/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/notes/.gitkeep +0 -0
- /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/assets/goalbuddy-mark.png +0 -0
- /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/sample-goal/notes/T001-scout.md +0 -0
- /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/goal.md +0 -0
- /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/notes/.gitkeep +0 -0
- /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/goal.md +0 -0
- /package/plugins/goalbuddy/skills/goalbuddy/{extend → surfaces}/local-goal-board/examples/subgoal-parent/subgoals/T004-board-view/notes/.gitkeep +0 -0
|
@@ -8,9 +8,9 @@ import { createBoardPayload, writeBoardApp } from "../scripts/lib/goal-board.mjs
|
|
|
8
8
|
import { parseArgs, startBoardServer } from "../scripts/local-goal-board.mjs";
|
|
9
9
|
|
|
10
10
|
test("normalizes a dense goal into local board columns", () => {
|
|
11
|
-
const payload = createBoardPayload(resolve("
|
|
11
|
+
const payload = createBoardPayload(resolve("goalbuddy/surfaces/local-goal-board/examples/sample-goal"));
|
|
12
12
|
|
|
13
|
-
assert.equal(payload.goal.title, "Local
|
|
13
|
+
assert.equal(payload.goal.title, "Local Goal Board Surface");
|
|
14
14
|
assert.equal(payload.goal.activeTask, "");
|
|
15
15
|
assert.equal(payload.counts.total, 14);
|
|
16
16
|
assert.equal(payload.counts.todo, 0);
|
|
@@ -24,7 +24,7 @@ test("normalizes a dense goal into local board columns", () => {
|
|
|
24
24
|
});
|
|
25
25
|
|
|
26
26
|
test("loads depth-1 subgoal boards into parent task payloads", () => {
|
|
27
|
-
const payload = createBoardPayload(resolve("goalbuddy/
|
|
27
|
+
const payload = createBoardPayload(resolve("goalbuddy/surfaces/local-goal-board/examples/subgoal-parent"));
|
|
28
28
|
const parentTask = payload.tasks.find((task) => task.id === "T004");
|
|
29
29
|
|
|
30
30
|
assert.equal(parentTask.subgoal.status, "active");
|
|
@@ -229,7 +229,7 @@ tasks:
|
|
|
229
229
|
});
|
|
230
230
|
|
|
231
231
|
test("writes a minimal GoalBuddy web app into the goal directory", () => {
|
|
232
|
-
const appDir = writeBoardApp(resolve("
|
|
232
|
+
const appDir = writeBoardApp(resolve("goalbuddy/surfaces/local-goal-board/examples/sample-goal"));
|
|
233
233
|
const html = readFileSync(join(appDir, "index.html"), "utf8");
|
|
234
234
|
const css = readFileSync(join(appDir, "styles.css"), "utf8");
|
|
235
235
|
const js = readFileSync(join(appDir, "app.js"), "utf8");
|
|
@@ -393,20 +393,20 @@ test("advertises goalbuddy.localhost while binding to loopback", async () => {
|
|
|
393
393
|
test("runs when installed under a symlinked temp path", () => {
|
|
394
394
|
const root = mkdtempSync(join(tmpdir(), "goalbuddy-local-board-direct-"));
|
|
395
395
|
try {
|
|
396
|
-
cpSync("
|
|
397
|
-
cpSync("
|
|
396
|
+
cpSync("goalbuddy/surfaces/local-goal-board/scripts", join(root, "scripts"), { recursive: true });
|
|
397
|
+
cpSync("goalbuddy/surfaces/local-goal-board/assets", join(root, "assets"), { recursive: true });
|
|
398
398
|
|
|
399
399
|
const result = spawnSync(process.execPath, [
|
|
400
400
|
join(root, "scripts", "local-goal-board.mjs"),
|
|
401
401
|
"--goal",
|
|
402
|
-
resolve("
|
|
402
|
+
resolve("goalbuddy/surfaces/local-goal-board/examples/sample-goal"),
|
|
403
403
|
"--once",
|
|
404
404
|
"--json",
|
|
405
405
|
], { encoding: "utf8" });
|
|
406
406
|
|
|
407
407
|
assert.equal(result.status, 0, result.stderr || result.stdout);
|
|
408
408
|
const report = JSON.parse(result.stdout);
|
|
409
|
-
assert.equal(report.board.goal.title, "Local
|
|
409
|
+
assert.equal(report.board.goal.title, "Local Goal Board Surface");
|
|
410
410
|
} finally {
|
|
411
411
|
rmSync(root, { recursive: true, force: true });
|
|
412
412
|
}
|
|
@@ -15,10 +15,19 @@
|
|
|
15
15
|
- Authority: `requested | approved | inferred | needs_approval | blocked`
|
|
16
16
|
- Proof type: `test | demo | artifact | metric | review | source_backed_answer | decision`
|
|
17
17
|
- Completion proof: <observable signal that closes the full original outcome>
|
|
18
|
+
- Goal oracle: <live check, walkthrough, artifact, metric, source-backed answer, or decision that keeps pressure on the goal>
|
|
18
19
|
- Likely misfire: <how GoalBuddy could succeed at the wrong thing>
|
|
19
20
|
- Blind spots considered: <risks, unstated choices, or success dimensions surfaced during diagnostic intake>
|
|
20
21
|
- Existing plan facts: <user-provided steps/files/constraints/sequencing to preserve and validate, or none>
|
|
21
22
|
|
|
23
|
+
## Goal Oracle
|
|
24
|
+
|
|
25
|
+
The oracle for this goal is:
|
|
26
|
+
|
|
27
|
+
`<specific observable signal>`
|
|
28
|
+
|
|
29
|
+
The PM must keep comparing task receipts to this oracle. Planning, discovery, a passing tiny slice, or a clean-looking board is not enough. The goal finishes only when a final Judge/PM audit maps receipts and verification back to this oracle and records `full_outcome_complete: true`.
|
|
30
|
+
|
|
22
31
|
## Goal Kind
|
|
23
32
|
|
|
24
33
|
`specific | open_ended | existing_plan | recovery | audit`
|
|
@@ -9,6 +9,10 @@ goal:
|
|
|
9
9
|
kind: open_ended # specific | open_ended | existing_plan | recovery | audit
|
|
10
10
|
tranche: "<continuous execution: complete successive safe verified slices until the full original outcome is complete>"
|
|
11
11
|
status: active # active | blocked | done
|
|
12
|
+
oracle:
|
|
13
|
+
signal: "<live check, walkthrough, artifact, metric, source-backed answer, or decision that proves the owner outcome>"
|
|
14
|
+
cadence: "after each Worker package and at final audit"
|
|
15
|
+
final_proof: "<receipt-backed evidence required before full_outcome_complete: true>"
|
|
12
16
|
intake:
|
|
13
17
|
original_request: "<shortest faithful user request>"
|
|
14
18
|
interpreted_outcome: "<one sentence>"
|
|
@@ -33,6 +37,8 @@ rules:
|
|
|
33
37
|
missing_input_or_credentials_do_not_stop_goal: true
|
|
34
38
|
preserve_and_validate_existing_plan: true
|
|
35
39
|
intake_misfire_must_be_audited: true
|
|
40
|
+
goal_pressure_requires_oracle: true
|
|
41
|
+
no_completion_on_weak_proof: true
|
|
36
42
|
slice_policy:
|
|
37
43
|
max_consecutive_tiny_tasks: 2
|
|
38
44
|
prefer_vertical_slices: true
|
|
@@ -47,17 +53,12 @@ agents:
|
|
|
47
53
|
judge: unknown
|
|
48
54
|
|
|
49
55
|
visual_board:
|
|
50
|
-
# none | local |
|
|
56
|
+
# none | local | unknown
|
|
51
57
|
selected: unknown
|
|
52
58
|
local:
|
|
53
59
|
status: not_requested # not_requested | starting | live | generated | blocked
|
|
54
60
|
url: null
|
|
55
61
|
command: "npx goalbuddy board docs/goals/<goal-slug>"
|
|
56
|
-
github_projects:
|
|
57
|
-
status: not_requested # not_requested | needs_approval | dry_run_ready | synced | blocked
|
|
58
|
-
url: null
|
|
59
|
-
command: "npx goalbuddy extend github-projects"
|
|
60
|
-
missing: []
|
|
61
62
|
|
|
62
63
|
active_task: T001
|
|
63
64
|
|
|
Binary file
|