# GoalBuddy 0.3.9: Marketplace and Board Runtime Polish GoalBuddy 0.3.9 prepares the package for cleaner Claude marketplace installs and tightens the runtime behavior around local boards, approval gates, and board-health stewardship. ## Highlights - **Claude marketplace wrapper.** The repo now includes a root `.claude-plugin/marketplace.json` so Claude Code can discover the existing `plugins/goalbuddy` plugin through marketplace install flow. - **Install-channel agnostic Goal Prep.** `/goal-prep` no longer assumes a global `goalbuddy` or `npx goalbuddy` binary for model-invoked board, prompt, and parallel-plan commands. It uses bundled skill scripts from `` instead. - **Better update and agent advice.** `check-update` detects common install channels and falls back to “use the install channel that installed GoalBuddy” instead of guessing wrong. Agent availability warnings now use the same channel-neutral language. - **Less board flicker.** Local board file watching now waits for rapid `state.yaml` transition writes to settle before rebuilding the streamed payload. - **Parallel active tasks render.** The local board can display multiple active tasks in the In Progress column, which keeps parallel/disjoint work visible instead of failing the entire board render. - **Exact approval wait state.** When the only remaining action is an exact human approval phrase, GoalBuddy now has an explicit terminal wait shape: ask once, preserve `required_reply`, set `waiting_for_user_approval: true`, and stop until the user replies. - **Board health stewardship.** The PM-owned stewardship contract is now documented: run the bundled state checker, compare the live board API when available, and repair only GoalBuddy control files unless an active task explicitly allows product-file edits. ## Why This Release Matters The Claude marketplace wrapper from 0.3.9 makes marketplace installs viable, but marketplace installs do not guarantee a shell-level `goalbuddy` binary. This release closes that gap by moving model-run commands onto the bundled scripts that ship inside the installed skill. The board changes also make GoalBuddy more honest during real runs: transient task switches do not flash false errors, and valid parallel work stays visible. ## Verification - `npm run check` - `git diff --check` - `node --check plugins/goalbuddy/skills/goalbuddy/scripts/check-update.mjs plugins/goalbuddy/skills/goalbuddy/scripts/check-goal-state.mjs` - `GOALBUDDY_TEST_NPM_LATEST_VERSION=99.0.0 GOALBUDDY_TEST_UPDATE_COMMAND='/plugin update goalbuddy@goalbuddy' node plugins/goalbuddy/skills/goalbuddy/scripts/check-update.mjs --json` - `npm pack --dry-run --json` ## Package Metadata - npm package version: `0.3.9` - Codex plugin version: `0.3.9` - Claude Code plugin version: `0.3.9` ## Install ```bash npx goalbuddy ``` For Claude Code marketplace installs: ```text /plugin marketplace add tolibear/goalbuddy /plugin install goalbuddy@goalbuddy ```