beth-copilot 1.1.0 → 2.1.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 (228) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/README.md +121 -132
  3. package/assets/beth-questioning.png +0 -0
  4. package/assets/yellowstone-beth.png +0 -0
  5. package/bin/cli.js +359 -445
  6. package/dist/__tests__/inject-skills.test.d.ts +9 -0
  7. package/dist/__tests__/inject-skills.test.d.ts.map +1 -0
  8. package/dist/__tests__/inject-skills.test.js +143 -0
  9. package/dist/__tests__/inject-skills.test.js.map +1 -0
  10. package/dist/__tests__/skills/disambiguation.test.d.ts +10 -0
  11. package/dist/__tests__/skills/disambiguation.test.d.ts.map +1 -0
  12. package/dist/__tests__/skills/disambiguation.test.js +192 -0
  13. package/dist/__tests__/skills/disambiguation.test.js.map +1 -0
  14. package/dist/__tests__/skills/hook-injection.test.d.ts +11 -0
  15. package/dist/__tests__/skills/hook-injection.test.d.ts.map +1 -0
  16. package/dist/__tests__/skills/hook-injection.test.js +173 -0
  17. package/dist/__tests__/skills/hook-injection.test.js.map +1 -0
  18. package/dist/__tests__/skills/mapping-completeness.test.d.ts +17 -0
  19. package/dist/__tests__/skills/mapping-completeness.test.d.ts.map +1 -0
  20. package/dist/__tests__/skills/mapping-completeness.test.js +281 -0
  21. package/dist/__tests__/skills/mapping-completeness.test.js.map +1 -0
  22. package/dist/__tests__/skills/pipeline-integration.test.d.ts +18 -0
  23. package/dist/__tests__/skills/pipeline-integration.test.d.ts.map +1 -0
  24. package/dist/__tests__/skills/pipeline-integration.test.js +234 -0
  25. package/dist/__tests__/skills/pipeline-integration.test.js.map +1 -0
  26. package/dist/__tests__/skills/skill-routing.test.d.ts +15 -0
  27. package/dist/__tests__/skills/skill-routing.test.d.ts.map +1 -0
  28. package/dist/__tests__/skills/skill-routing.test.js +723 -0
  29. package/dist/__tests__/skills/skill-routing.test.js.map +1 -0
  30. package/dist/__tests__/skills/trigger-coverage.test.d.ts +24 -0
  31. package/dist/__tests__/skills/trigger-coverage.test.d.ts.map +1 -0
  32. package/dist/__tests__/skills/trigger-coverage.test.js +746 -0
  33. package/dist/__tests__/skills/trigger-coverage.test.js.map +1 -0
  34. package/dist/__tests__/smoke.test.js +13 -0
  35. package/dist/__tests__/smoke.test.js.map +1 -1
  36. package/dist/__tests__/verify-skills.test.d.ts +9 -0
  37. package/dist/__tests__/verify-skills.test.d.ts.map +1 -0
  38. package/dist/__tests__/verify-skills.test.js +78 -0
  39. package/dist/__tests__/verify-skills.test.js.map +1 -0
  40. package/dist/cli/commands/beads.e2e.test.d.ts +4 -2
  41. package/dist/cli/commands/beads.e2e.test.d.ts.map +1 -1
  42. package/dist/cli/commands/beads.e2e.test.js +97 -38
  43. package/dist/cli/commands/beads.e2e.test.js.map +1 -1
  44. package/dist/cli/commands/cli-edge-cases.e2e.test.js +1 -1
  45. package/dist/cli/commands/cli-edge-cases.e2e.test.js.map +1 -1
  46. package/dist/cli/commands/close.d.ts +11 -46
  47. package/dist/cli/commands/close.d.ts.map +1 -1
  48. package/dist/cli/commands/close.e2e.test.d.ts +4 -20
  49. package/dist/cli/commands/close.e2e.test.d.ts.map +1 -1
  50. package/dist/cli/commands/close.e2e.test.js +23 -204
  51. package/dist/cli/commands/close.e2e.test.js.map +1 -1
  52. package/dist/cli/commands/close.js +26 -240
  53. package/dist/cli/commands/close.js.map +1 -1
  54. package/dist/cli/commands/close.test.d.ts +7 -9
  55. package/dist/cli/commands/close.test.d.ts.map +1 -1
  56. package/dist/cli/commands/close.test.js +44 -424
  57. package/dist/cli/commands/close.test.js.map +1 -1
  58. package/dist/cli/commands/doctor.d.ts +16 -22
  59. package/dist/cli/commands/doctor.d.ts.map +1 -1
  60. package/dist/cli/commands/doctor.e2e.test.js +3 -59
  61. package/dist/cli/commands/doctor.e2e.test.js.map +1 -1
  62. package/dist/cli/commands/doctor.js +87 -103
  63. package/dist/cli/commands/doctor.js.map +1 -1
  64. package/dist/cli/commands/doctor.test.js +120 -229
  65. package/dist/cli/commands/doctor.test.js.map +1 -1
  66. package/dist/cli/commands/framework-isolation.test.d.ts +1 -1
  67. package/dist/cli/commands/framework-isolation.test.js +2 -3
  68. package/dist/cli/commands/framework-isolation.test.js.map +1 -1
  69. package/dist/cli/commands/help.e2e.test.js +1 -5
  70. package/dist/cli/commands/help.e2e.test.js.map +1 -1
  71. package/dist/cli/commands/init-logic.e2e.test.js +114 -2
  72. package/dist/cli/commands/init-logic.e2e.test.js.map +1 -1
  73. package/dist/cli/commands/init.test.js +4 -21
  74. package/dist/cli/commands/init.test.js.map +1 -1
  75. package/dist/cli/commands/land.d.ts +3 -15
  76. package/dist/cli/commands/land.d.ts.map +1 -1
  77. package/dist/cli/commands/land.js +13 -68
  78. package/dist/cli/commands/land.js.map +1 -1
  79. package/dist/cli/commands/land.test.d.ts +0 -1
  80. package/dist/cli/commands/land.test.d.ts.map +1 -1
  81. package/dist/cli/commands/land.test.js +2 -57
  82. package/dist/cli/commands/land.test.js.map +1 -1
  83. package/dist/cli/commands/mcp.e2e.test.js +28 -3
  84. package/dist/cli/commands/mcp.e2e.test.js.map +1 -1
  85. package/dist/cli/commands/pipeline.e2e.test.js +23 -26
  86. package/dist/cli/commands/pipeline.e2e.test.js.map +1 -1
  87. package/dist/cli/commands/pre-push-guard.d.ts +2 -12
  88. package/dist/cli/commands/pre-push-guard.d.ts.map +1 -1
  89. package/dist/cli/commands/pre-push-guard.e2e.test.js +1 -1
  90. package/dist/cli/commands/pre-push-guard.e2e.test.js.map +1 -1
  91. package/dist/cli/commands/pre-push-guard.js +2 -47
  92. package/dist/cli/commands/pre-push-guard.js.map +1 -1
  93. package/dist/cli/commands/pre-push-guard.test.d.ts +0 -1
  94. package/dist/cli/commands/pre-push-guard.test.d.ts.map +1 -1
  95. package/dist/cli/commands/pre-push-guard.test.js +15 -98
  96. package/dist/cli/commands/pre-push-guard.test.js.map +1 -1
  97. package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts +1 -1
  98. package/dist/cli/commands/quickstart-expanded.e2e.test.js +3 -30
  99. package/dist/cli/commands/quickstart-expanded.e2e.test.js.map +1 -1
  100. package/dist/cli/commands/quickstart.d.ts +0 -1
  101. package/dist/cli/commands/quickstart.d.ts.map +1 -1
  102. package/dist/cli/commands/quickstart.js +2 -60
  103. package/dist/cli/commands/quickstart.js.map +1 -1
  104. package/dist/cli/commands/quickstart.test.js +10 -104
  105. package/dist/cli/commands/quickstart.test.js.map +1 -1
  106. package/dist/cli/commands/uninstall.test.d.ts +5 -0
  107. package/dist/cli/commands/uninstall.test.d.ts.map +1 -0
  108. package/dist/cli/commands/uninstall.test.js +223 -0
  109. package/dist/cli/commands/uninstall.test.js.map +1 -0
  110. package/dist/cli/commands/update.d.ts +35 -0
  111. package/dist/cli/commands/update.d.ts.map +1 -0
  112. package/dist/cli/commands/update.e2e.test.d.ts +24 -0
  113. package/dist/cli/commands/update.e2e.test.d.ts.map +1 -0
  114. package/dist/cli/commands/update.e2e.test.js +238 -0
  115. package/dist/cli/commands/update.e2e.test.js.map +1 -0
  116. package/dist/cli/commands/update.js +255 -0
  117. package/dist/cli/commands/update.js.map +1 -0
  118. package/dist/core/agents/frontmatter.test.js +1 -1
  119. package/dist/core/agents/frontmatter.test.js.map +1 -1
  120. package/dist/core/agents/handoffs.test.js +1 -1
  121. package/dist/core/agents/handoffs.test.js.map +1 -1
  122. package/dist/core/agents/loader.d.ts +4 -2
  123. package/dist/core/agents/loader.d.ts.map +1 -1
  124. package/dist/core/agents/loader.js +5 -3
  125. package/dist/core/agents/loader.js.map +1 -1
  126. package/dist/core/agents/loader.test.js +42 -4
  127. package/dist/core/agents/loader.test.js.map +1 -1
  128. package/dist/core/agents/suite.test.js +8 -7
  129. package/dist/core/agents/suite.test.js.map +1 -1
  130. package/dist/core/agents/tools.test.js +10 -8
  131. package/dist/core/agents/tools.test.js.map +1 -1
  132. package/dist/core/agents/types.test.js +1 -1
  133. package/dist/core/agents/types.test.js.map +1 -1
  134. package/dist/core/skills/loader.test.js +1 -1
  135. package/dist/core/skills/loader.test.js.map +1 -1
  136. package/dist/index.d.ts +0 -1
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +0 -2
  139. package/dist/index.js.map +1 -1
  140. package/dist/lib/pathValidation.d.ts +0 -5
  141. package/dist/lib/pathValidation.d.ts.map +1 -1
  142. package/dist/lib/pathValidation.js +0 -11
  143. package/dist/lib/pathValidation.js.map +1 -1
  144. package/dist/lib/pathValidation.test.js +2 -14
  145. package/dist/lib/pathValidation.test.js.map +1 -1
  146. package/package.json +3 -6
  147. package/sbom.json +259 -371
  148. package/templates/.github/agents/beth.agent.md +194 -122
  149. package/templates/.github/agents/developer.agent.md +30 -22
  150. package/templates/.github/agents/product-manager.agent.md +15 -6
  151. package/templates/.github/agents/researcher.agent.md +10 -7
  152. package/templates/.github/agents/security-reviewer.agent.md +16 -7
  153. package/templates/.github/agents/tester.agent.md +16 -8
  154. package/templates/.github/agents/ux-designer.agent.md +12 -9
  155. package/templates/.github/copilot-instructions.md +33 -4
  156. package/templates/.github/copilot-mcp-config.json +12 -0
  157. package/templates/.github/dependabot.yml +68 -0
  158. package/templates/.github/hooks/scripts/inject-skills.mjs +139 -0
  159. package/templates/.github/hooks/scripts/verify-skills.mjs +47 -0
  160. package/templates/.github/hooks/skill-enforcement.json +18 -0
  161. package/templates/.github/pull_request_template.md +48 -0
  162. package/templates/.github/skills/framer-components/SKILL.md +0 -0
  163. package/templates/.github/skills/prd/SKILL.md +0 -0
  164. package/templates/.github/skills/security-analysis/SKILL.md +798 -798
  165. package/templates/.github/skills/shadcn-ui/SKILL.md +561 -561
  166. package/templates/.github/skills/vercel-react-best-practices/AGENTS.md +0 -0
  167. package/templates/.github/skills/vercel-react-best-practices/SKILL.md +0 -0
  168. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
  169. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
  170. package/templates/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -0
  171. package/templates/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -0
  172. package/templates/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -0
  173. package/templates/.github/skills/vercel-react-best-practices/rules/async-parallel.md +0 -0
  174. package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
  175. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
  176. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
  177. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
  178. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
  179. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -0
  180. package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
  181. package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
  182. package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
  183. package/templates/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
  184. package/templates/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
  185. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
  186. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
  187. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
  188. package/templates/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
  189. package/templates/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -0
  190. package/templates/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
  191. package/templates/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -0
  192. package/templates/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
  193. package/templates/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
  194. package/templates/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
  195. package/templates/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
  196. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -0
  197. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
  198. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
  199. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
  200. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
  201. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
  202. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
  203. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
  204. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
  205. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
  206. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
  207. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
  208. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -0
  209. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -0
  210. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
  211. package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
  212. package/templates/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -0
  213. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
  214. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -0
  215. package/templates/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -0
  216. package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
  217. package/templates/.github/skills/vercel-react-best-practices/rules/server-serialization.md +0 -0
  218. package/templates/.github/skills/web-design-guidelines/SKILL.md +0 -0
  219. package/templates/.vscode/settings.json +16 -16
  220. package/templates/AGENTS.md +59 -98
  221. package/templates/Backlog.md +80 -80
  222. package/templates/mcp.json.example +8 -0
  223. package/assets/beth-portrait-small.txt +0 -13
  224. package/assets/beth-portrait.txt +0 -60
  225. package/bin/beth-animation.sh +0 -155
  226. package/bin/lib/animation.js +0 -189
  227. package/bin/lib/pathValidation.js +0 -233
  228. package/bin/lib/pathValidation.test.js +0 -280
package/CHANGELOG.md CHANGED
@@ -6,6 +6,56 @@ All notable changes to Beth are documented here. Format based on [Keep a Changel
6
6
 
7
7
  ---
8
8
 
9
+ ## [Unreleased]
10
+
11
+ ## [2.1.0] - 2026-03-16
12
+
13
+ ### Added
14
+ - **`npx beth-copilot uninstall` command** — Cleanly removes all Beth-installed files from a project: `.github/agents/`, `.github/skills/`, `.github/hooks/`, `AGENTS.md`, `Backlog.md`, `.github/copilot-instructions.md`, `.vscode/settings.json`, `mcp.json.example`, and `backlog/` directory. Removes Beth guard block from pre-push hook (preserving non-Beth content). Cleans up empty `.github/` and `.vscode/` directories. 17 tests covering all removal paths.
15
+ - **Auto-derived backlog prefix** — `backlog init` during `beth-copilot init` now automatically derives a 6-letter prefix from the project name (e.g., `my-app` → `MYAPP`), eliminating the interactive prompt that blocked agent workflows.
16
+
17
+ ### Fixed
18
+ - **Shell command injection in backlog init** — Fixed GHAS-flagged command injection vulnerability where unsanitized project directory names were interpolated into shell commands. Now validates input against a strict allowlist pattern before use.
19
+
20
+ ### Changed
21
+ - **885 tests** — Up from 860 in v2.0.0. Added uninstall command tests and init prefix derivation coverage.
22
+
23
+ ## [2.0.0] - 2026-03-16
24
+
25
+ ### Breaking Changes
26
+ - **Beads removed — Backlog.md is the sole task tracker.** The entire beads/Dolt database layer has been removed. All agent instructions, hooks, and CLI commands now use `backlog` CLI exclusively. If you were using `bd` commands in scripts, they will no longer be referenced by Beth agents.
27
+ - **`npx beth-copilot close` command removed** (~560 lines deleted). This command enforced beads-specific close logic (blocker deps, child issues, mandatory test subtasks via `bd`). The workflow is now handled by `backlog task edit BETH-X -s "Done" --plain`.
28
+
29
+ ### Added
30
+ - **Backlog.md CLI integration** — All agent instructions now reference `backlog task create`, `backlog task edit`, `backlog task list`, `backlog board`, and `backlog overview` commands. The `--plain` flag is enforced everywhere to prevent TUI mode in agent contexts.
31
+ - **`npx beth-copilot update` command** — Updates project files to latest templates without full re-init. Supports `--check-only` for dry-run inspection.
32
+ - **Behavioral skill tests** — 302 E2E skill routing tests across 3 files validating deterministic hook injection, trigger coverage, and mapping completeness.
33
+ - **SubagentStart/SubagentStop hook enforcement** — `inject-skills.mjs` deterministically maps agent types to required skills. `verify-skills.mjs` gates subagent completion on both skill compliance and task tracking.
34
+ - **Hub-and-spoke agent coordination** — Replaced 15 lateral handoffs across 6 agents with single "Escalate to Beth" handoff per agent. All agents now report to Beth.
35
+ - **Community skills** — Added brainstorming, framer-components, frontend-design, proof, rclone, feature-video, and other community-contributed skill modules.
36
+ - **27+ Azure skills** — Full Azure skill suite: compute, storage, AI, messaging, diagnostics, compliance, RBAC, cost optimization, cloud migration, resource lookup/visualizer, Entra ID, Copilot SDK, Foundry, and more.
37
+ - **860 tests** — Up from 438 in v1.1.0. Comprehensive coverage for CLI commands, skill routing, hook injection, pipeline integration, and path validation.
38
+
39
+ ### Changed
40
+ - **Agent instructions rewritten for Backlog.md** — All 7 agent files (`beth.agent.md`, `developer.agent.md`, etc.) and `AGENTS.md` updated to reference `backlog` CLI instead of `bd` commands.
41
+ - **Hook enforcement updated** — `verify-skills.mjs` now checks for `backlog task edit` compliance instead of `bd` commands.
42
+ - **Templates synced** — All template files in `templates/` now match live `.github/` configuration.
43
+ - **Test framework consolidated** — Migrated from mixed `node:test`/vitest to vitest-only imports across all test files.
44
+
45
+ ### Removed
46
+ - **`beth-copilot close` command** — Entire close command and its 560-line implementation deleted.
47
+ - **Beads stub functions** — Removed `bd`-related stubs from `bin/cli.js`.
48
+ - **Dead code cleanup** — Removed 8 redundant/deprecated skills, unused `bs-buster` dependency, dead `bin/lib` files, legacy test scripts, empty barrel exports, and orphaned documentation.
49
+ - **Dolt/beads references** — Purged from all production source code, agent instructions, templates, and documentation.
50
+
51
+ ### Fixed
52
+ - **Template drift** — Templates now stay in sync with live `.github/` config via the `update` command.
53
+ - **Duplicate tools in beth.agent.md** — Removed duplicate tool entries in frontmatter.
54
+ - **Dead pathValidation.ts exports** — Cleaned unused exports that inflated the public API surface.
55
+ - **Pre-push guard test isolation** — Removed unused `child_process` mock that caused CI failures.
56
+
57
+ ---
58
+
9
59
  ## [1.1.0] - 2026-03-10
10
60
 
11
61
  ### Added
@@ -13,7 +63,7 @@ All notable changes to Beth are documented here. Format based on [Keep a Changel
13
63
  - **`npx beth-copilot close` enforcement** — 3-layer close enforcement: (1) open blocker dependencies via `bd dep list`, (2) open children via `bd children`, (3) mandatory test subtasks (unit/e2e/security) for epics. `--force` bypasses all checks.
14
64
  - **Pre-push hook** — Git pre-push hook enforcing branch discipline: blocks pushes from `main`/`master` (exit 1), warns on non-epic branch names. Pure shell hook (no Node overhead). Auto-installed during `npx beth-copilot init`. Bypass with `BETH_SKIP_PUSH_GUARD=1`.
15
65
  - **Quality gate infrastructure** — `npm run test:gate` generates markdown test reports to `docs/test-reports/`. `scripts/quality-gate.mjs` runs vitest + legacy tests, parses results, generates report, exits non-zero on failure.
16
- - **Comprehensive CLI test suite** — 7 new test files: `close.e2e.test.ts`, `pre-push-guard.e2e.test.ts`, `quickstart-expanded.e2e.test.ts`, `cli-edge-cases.e2e.test.ts`, `framework-isolation.test.ts`, `init-logic.e2e.test.ts`, `doctor.e2e.test.ts`. 438 tests total (up from 485).
66
+ - **Comprehensive CLI test suite** — 7 new test files: `close.e2e.test.ts`, `pre-push-guard.e2e.test.ts`, `quickstart-expanded.e2e.test.ts`, `cli-edge-cases.e2e.test.ts`, `framework-isolation.test.ts`, `init-logic.e2e.test.ts`, `doctor.e2e.test.ts`. 438 tests total.
17
67
  - **Doctor: Dolt database hygiene** — `checkDoltDatabases()` detects orphaned `*test*` databases and warns when user DB count exceeds threshold. Extracted `parseDoltDatabases()` with 18 unit tests.
18
68
  - **Session startup drift-prevention** — Mandatory 4-step session startup checklist in AGENTS.md: check uncommitted changes, unpushed commits, spot-check closed work, sync beads state.
19
69
  - **Beads disaster recovery docs** — `docs/BD-BACKUP-PARSER-FAILURE.md` with exact parser error, root cause, repro steps, and 3 recovery paths.
package/README.md CHANGED
@@ -21,12 +21,12 @@ She commands seven specialized agents, each with their own expertise, tools, and
21
21
  | Layer | What It Does | Status |
22
22
  |-------|-------------|--------|
23
23
  | **Copilot Agents** | `.agent.md` definitions running in VS Code Agent Mode | Live |
24
- | **CLI Toolchain** | `beth init`, `beth doctor`, `beth quickstart` — TypeScript commands | Live |
24
+ | **CLI Toolchain** | `beth init`, `beth doctor`, `beth land`, `beth update` — TypeScript commands | Live |
25
25
  | **Orchestration Engine** | Fan-out routing, tool calling loop, subagent spawning, handoffs | Live |
26
- | **Tool Abstraction** | 6 CLI tools + MCP bridge uniform interface for all agent capabilities | Live |
26
+ | **Agent Tools** | Copilot built-ins (codebase, readFile, editFiles, runSubagent) + optional MCP servers | Live |
27
27
  | **LLM Provider** | Azure OpenAI with Entra ID auth, streaming, retry, tool calling | Live |
28
28
 
29
- **814 tests.** 813 pass, 1 skip, 0 fail.
29
+ **860 tests.** All passing.
30
30
 
31
31
  ---
32
32
 
@@ -55,11 +55,11 @@ flowchart LR
55
55
  | **LLM Provider** | Azure OpenAI via `openai` SDK | Entra ID auth (no API keys), streaming + tool calling |
56
56
  | **Auth** | `@azure/identity` DefaultAzureCredential | az login, managed identity, VS Code creds |
57
57
  | **Frontmatter** | `gray-matter` | Parses `.agent.md` and `SKILL.md` YAML |
58
- | **Testing** | Node.js built-in test runner | 814 tests — unit, integration, E2E |
59
- | **Task Tracking** | beads (`bd` CLI) | Dependency-aware issue tracking for agents |
60
- | **Package Manager** | pnpm | Lockfile committed |
58
+ | **Testing** | vitest | 860 tests — unit, integration, E2E |
59
+ | **Task Tracking** | Backlog.md (`backlog` CLI) | Markdown-based task tracking for agents and humans |
60
+ | **Package Manager** | npm | Lockfile committed |
61
61
 
62
- **Production dependencies:** 1 (`gray-matter`). That's it. Minimal attack surface by design.
62
+ **Production dependencies:** 1 (`gray-matter`). Minimal attack surface by design.
63
63
 
64
64
  ---
65
65
 
@@ -80,8 +80,8 @@ Then open VS Code, switch Copilot Chat to **Agent mode**, and type `@Beth`.
80
80
 
81
81
  **Verify everything works:**
82
82
  ```bash
83
- beth doctor # Health check: Node.js, beads, agents, skills
84
- beth quickstart # Init + doctor + beads setup in one shot
83
+ beth doctor # Health check: Node.js, agents, skills
84
+ beth quickstart # Init + doctor in one shot
85
85
  ```
86
86
 
87
87
  For detailed setup (prerequisites, task tracking, MCP servers): [docs/INSTALLATION.md](docs/INSTALLATION.md)
@@ -92,19 +92,21 @@ For detailed setup (prerequisites, task tracking, MCP servers): [docs/INSTALLATI
92
92
 
93
93
  | Command | What It Does |
94
94
  |---------|-------------|
95
- | `beth init` | Install agents, skills, VS Code settings, beads tracking |
95
+ | `beth init` | Install agents, skills, VS Code settings, Backlog.md tracking, pre-push hook |
96
96
  | `beth init --force` | Overwrite existing files |
97
- | `beth doctor` | Validate Node.js ≥18, beads CLI, agents frontmatter, skills directories |
98
- | `beth quickstart` | Run init + doctor + beads init in one shot |
97
+ | `beth doctor` | Validate Node.js ≥18, agents frontmatter, skills |
98
+ | `beth quickstart` | Run init + doctor in one shot |
99
+ | `beth land` | Automate session completion: tests, commit, push, verify sync |
100
+ | `beth update` | Update project files to latest templates without full re-init |
99
101
  | `beth help` | Show all commands and options |
100
102
 
101
- **Flags:** `--force`, `--skip-backlog`, `--skip-mcp`, `--skip-beads`, `--verbose`
103
+ **Flags:** `--force`, `--skip-backlog`, `--skip-mcp`, `--verbose`, `--skip-tests`, `--message/-m`, `--dry-run`, `--check-only`
102
104
 
103
105
  ---
104
106
 
105
107
  ## Agent Orchestration
106
108
 
107
- Beth doesn't micromanage. She delegates to specialists over **subagent** and **handoff** channels, tracks dependencies with beads, and holds every agent accountable.
109
+ Beth doesn't micromanage. She delegates to specialists over **subagent** and **handoff** channels, tracks work in Backlog.md, and holds every agent accountable.
108
110
 
109
111
  ### The Family
110
112
 
@@ -118,17 +120,23 @@ Beth doesn't micromanage. She delegates to specialists over **subagent** and **h
118
120
  | **@tester** | The Enforcer | Quality assurance, accessibility, performance |
119
121
  | **@security-reviewer** | The Bodyguard | OWASP, compliance, threat modeling |
120
122
 
121
- ### Delegation Model
123
+ ### Delegation Model (Hub-and-Spoke)
122
124
 
123
125
  ```mermaid
124
126
  flowchart LR
125
127
  Beth["@Beth"] -->|subagent| PM["PM"] & UX["UX"] & Dev["Dev"] & Sec["Sec"] & Test["Test"] & Res["Research"]
126
- PM -.->|handoff| UX & Dev
127
- Dev -.->|handoff| Test & UX
128
+ PM -.->|escalate| Beth
129
+ UX -.->|escalate| Beth
130
+ Dev -.->|escalate| Beth
131
+ Sec -.->|escalate| Beth
132
+ Test -.->|escalate| Beth
133
+ Res -.->|escalate| Beth
128
134
 
129
135
  style Beth fill:#1e3a5f,color:#fff
130
136
  ```
131
137
 
138
+ All agents escalate exclusively to Beth — no lateral handoffs. Beth routes, agents execute.
139
+
132
140
  ### Subagent vs Handoff
133
141
 
134
142
  | Mechanism | Control | Use When |
@@ -216,24 +224,37 @@ Full details: [docs/MCP-SETUP.md](docs/MCP-SETUP.md)
216
224
 
217
225
  ## Skills (On-Demand Knowledge)
218
226
 
219
- Skills are domain-knowledge modules that agents load automatically when trigger phrases match. Each skill lives in `.github/skills/<name>/SKILL.md`.
227
+ Skills are domain-knowledge modules that agents load automatically when trigger phrases match. Each skill lives in `.github/skills/<name>/SKILL.md` or `.github/prompts/<name>/PROMPT.md`.
220
228
 
221
229
  | Skill | Triggers On | Used By |
222
230
  |-------|------------|---------|
223
231
  | **PRD Generation** | "create a prd", "product requirements" | Product Manager |
224
- | **Framer Components** | "framer component", "property controls" | UX Designer |
232
+ | **UI UX Pro Max** | "design system", "color palette", "style guide" | UX Designer, Developer |
233
+ | **Web Design Guidelines** | "review my UI", "check accessibility" | UX Designer, Tester |
234
+ | **Framer Components** | "framer component", "property controls" | UX Designer, Developer |
225
235
  | **React/Next.js Best Practices** | React performance, Next.js patterns | Developer |
226
- | **Web Design Guidelines** | "review my UI", "check accessibility" | UX Designer |
227
236
  | **shadcn/ui** | "shadcn", "ui component" | Developer |
228
237
  | **Security Analysis** | "security review", "OWASP", "threat model" | Security Reviewer |
229
- | **Azure Operations** | Azure resource management | Developer |
238
+ | **Azure Operations** | Azure resource management (27+ Azure skills) | Developer |
230
239
  | **Web Search** | Internet research via Brave | Researcher |
231
240
 
241
+ ### Design & UI Skills
242
+
243
+ Three complementary skills cover the full design-to-code pipeline. They don't overlap — each solves a different problem.
244
+
245
+ | Skill | What It Does | When You Need It |
246
+ |-------|-------------|------------------|
247
+ | **[UI UX Pro Max](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)** | Design system generator — picks styles, colors, typography, and layout patterns from a searchable database of 67 styles, 161 color palettes, 57 font pairings, and 161 industry-specific reasoning rules. | Starting a new project or page. "What should this look like?" |
248
+ | **Web Design Guidelines** | Code auditor — fetches live [Vercel Web Interface Guidelines](https://github.com/vercel-labs/web-interface-guidelines) and checks your actual files for accessibility, focus, form, and performance violations with `file:line` output. | Reviewing implemented code. "Is this built correctly?" |
249
+ | **Framer Components** | Framer platform SDK reference — `addPropertyControls`, `ControlType`, code overrides, `RenderTarget`, auto-sizing, and Framer Motion integration. | Building custom components inside Framer. "How do I make this work in Framer?" |
250
+
251
+ **Typical flow:** UI UX Pro Max generates the design system → Developer builds it → Web Design Guidelines audits the result. Framer Components is loaded only when targeting the Framer platform.
252
+
232
253
  ---
233
254
 
234
255
  ## How It Works
235
256
 
236
- Beth runs inside VS Code Copilot Agent Mode. The `@Beth` agent parses requests, delegates to specialist agents via subagent spawning, and tracks work through beads.
257
+ Beth runs inside VS Code Copilot Agent Mode. The `@Beth` agent parses requests, delegates to specialist agents via subagent spawning, and tracks work through Backlog.md.
237
258
 
238
259
  ```mermaid
239
260
  flowchart LR
@@ -249,12 +270,12 @@ flowchart LR
249
270
  **Key capabilities:**
250
271
  - **Agent routing** — `@mention` parsing, subagent spawning, handoff chains
251
272
  - **Skill injection** — Domain knowledge loaded on trigger phrases
252
- - **Task tracking** — beads (`bd`) for epics, subtasks, dependencies
273
+ - **Task tracking** — Backlog.md (`backlog`) for tasks, milestones, and progress
253
274
  - **MCP integration** — Optional external tool servers (shadcn, Playwright, Azure)
254
275
 
255
276
  ```
256
277
  @Beth implement the login page
257
- → Beth routes to @developer, tracks work in beads
278
+ → Beth routes to @developer, tracks work in Backlog.md
258
279
 
259
280
  @Beth review this PR for security vulnerabilities
260
281
  → Beth routes to @security-reviewer, injects security-analysis skill
@@ -267,19 +288,21 @@ flowchart LR
267
288
 
268
289
  ---
269
290
 
270
- ## Tool Abstraction Layer
291
+ ## Agent Tools
271
292
 
272
- A uniform interface for all agent capabilities file I/O, terminal, search, beads, subagent spawning, and MCP server tools. Tools expose OpenAI-compatible function calling schemas so the LLM can invoke them directly.
293
+ Beth's agents leverage VS Code Copilot's built-in tools alongside task tracking through the `backlog` CLI. The orchestration layer delegates to these capabilities:
273
294
 
274
- | Tool | What It Does | Key Features |
275
- |------|-------------|-------------- |
276
- | **readFile** | Read file contents | Line ranges, path validation, traversal guards |
277
- | **editFile** | Atomic string replacement | Single-match enforcement, whitespace-safe |
278
- | **search** | Ripgrep search | Node.js fallback, regex support, file filtering |
279
- | **terminal** | Execute shell commands | `execFile('/bin/sh')` — no shell injection, timeouts |
280
- | **beads** | Issue tracking | `bd create`, `npx beth-copilot close`, `bd list` via CLI wrapper |
281
- | **subagent** | Spawn nested agents | Returns structured result for orchestrator to process |
282
- | **MCP Bridge** | External tool servers | JSON-RPC 2.0 over stdio, JSONC config, namespaced tools |
295
+ | Tool | What It Does |
296
+ |------|-------------|
297
+ | **codebase** | Semantic code search across the workspace |
298
+ | **readFile** | Read file contents with line ranges |
299
+ | **editFiles** | Atomic file modifications |
300
+ | **runInTerminal** | Shell command execution |
301
+ | **runSubagent** | Spawn specialist agents autonomously |
302
+ | **backlog CLI** | `backlog task create`, `backlog board`, `backlog task edit` for tracking |
303
+ | **MCP servers** | Optional external tools (shadcn, Playwright, Azure, Brave Search) |
304
+
305
+ ### Public API
283
306
 
284
307
  ```typescript
285
308
  import { loadAgents, loadSkills, getInferableAgents, buildTriggerMap } from 'beth-copilot';
@@ -309,112 +332,105 @@ flowchart LR
309
332
  CLI["beth"] --> Init["init"]
310
333
  CLI --> Doctor["doctor"]
311
334
  CLI --> QS["quickstart"]
335
+ CLI --> Land["land"]
336
+ CLI --> Update["update"]
312
337
  Init --> Templates[".agent.md · SKILL.md · settings"]
313
- Doctor --> Checks["Node ≥18 · beads · agents · skills"]
338
+ Doctor --> Checks["Node ≥18 · agents · skills"]
314
339
  QS --> Init & Doctor
340
+ Update --> Diff["Template diffing"]
315
341
  ```
316
342
 
317
343
  **Commands:**
318
- - `beth init` — Scaffold agents, skills, VS Code settings, beads tracking
319
- - `beth doctor` — Validate Node.js, beads CLI, agent frontmatter, skill directories
320
- - `beth quickstart` — Run init + doctor + beads init in one shot
344
+ - `beth init` — Scaffold agents, skills, VS Code settings, Backlog.md tracking
345
+ - `beth doctor` — Validate Node.js, agent frontmatter, skill directories
346
+ - `beth quickstart` — Run init + doctor in one shot
347
+ - `beth land` — Automated session completion: tests, commit, push, verify sync
348
+ - `beth update` — Update project files to latest templates (supports `--check-only`)
321
349
 
322
350
  ---
323
351
 
324
352
  ## TypeScript Core
325
353
 
326
- The engine that powers everything. Parses agent and skill definitions, manages conversations, routes requests, executes tools, and provides typed APIs for the full agentic loop.
354
+ The engine that powers Beth. Parses agent and skill definitions, provides typed APIs for the agentic loop, and drives the CLI toolchain.
327
355
 
328
356
  ### Project Structure
329
357
 
330
358
  ```
331
359
  beth/
332
360
  ├── bin/
333
- │ └── cli.js # CLI entry point (init, doctor, quickstart, help)
361
+ │ └── cli.js # CLI entry point (init, doctor, quickstart, land, update, help)
334
362
  ├── src/
335
363
  │ ├── index.ts # Barrel exports (all public API)
336
364
  │ ├── cli/commands/
337
365
  │ │ ├── doctor.ts # System health validation
338
- │ │ └── quickstart.ts # Guided setup flow
366
+ │ │ ├── land.ts # Automated session completion
367
+ │ │ ├── pre-push-guard.ts # Branch discipline enforcement
368
+ │ │ ├── quickstart.ts # Guided setup flow
369
+ │ │ └── update.ts # Template update diffing
339
370
  │ ├── core/
340
- │ │ ├── orchestrator.ts # Agentic loop: route → LLM → tools → response
341
- │ │ ├── router.ts # @mention routing, skill matching, agent lookup
342
- │ │ ├── context.ts # Conversation state, token truncation, skill injection
343
- │ │ ├── handoffs.ts # Agent handoff transfers, loop detection
344
371
  │ │ ├── agents/
345
372
  │ │ │ ├── types.ts # AgentDefinition, AgentFrontmatter, AgentHandoff
346
373
  │ │ │ └── loader.ts # Parse .agent.md → typed definitions
347
374
  │ │ └── skills/
348
375
  │ │ ├── types.ts # SkillDefinition, TriggerMap
349
376
  │ │ └── loader.ts # Parse SKILL.md, extract triggers, match queries
350
- ├── lib/
351
- └── pathValidation.ts # Traversal/injection guards
352
- │ ├── tools/
353
- │ │ ├── interface.ts # Tool interface + toToolDefinition()
354
- │ │ ├── types.ts # ToolError, ToolResult, ToolContext, ToolPermissions
355
- │ │ ├── registry.ts # ToolRegistry: register, get, list, getDefinitions
356
- │ │ ├── cli/
357
- │ │ │ ├── readFile.ts # File reading with line ranges
358
- │ │ │ ├── editFile.ts # Atomic string replacement
359
- │ │ │ ├── search.ts # Ripgrep with Node.js fallback
360
- │ │ │ ├── terminal.ts # Secure command execution
361
- │ │ │ ├── beads.ts # Issue tracking via bd CLI
362
- │ │ │ └── subagent.ts # Agent spawning interface
363
- │ │ └── mcp/
364
- │ │ ├── client.ts # JSON-RPC 2.0 over stdio
365
- │ │ └── bridge.ts # JSONC config, tool namespacing
366
- │ └── providers/
367
- │ ├── interface.ts # LLMProviderBase abstract class
368
- │ ├── azure.ts # AzureOpenAIProvider (Entra ID, streaming, tools)
369
- │ ├── types.ts # 17 types: ChatMessage, ToolCall, LLMError, etc.
370
- │ ├── retry.ts # Exponential backoff with jitter
371
- │ ├── config.ts # Environment + dotfile config loader
372
- │ └── streaming.ts # StreamAccumulator, collectStream, mapStream
377
+ └── lib/
378
+ └── pathValidation.ts # Traversal/injection guards
373
379
  ├── templates/
374
380
  │ └── .github/
375
381
  │ ├── agents/ # 7 agent definitions (.agent.md)
376
- │ └── skills/ # 8 skill modules (SKILL.md)
382
+ │ └── skills/ # 6 core skill modules (SKILL.md)
377
383
  └── docs/
378
384
  ├── INSTALLATION.md
379
385
  ├── MCP-SETUP.md
380
386
  ├── CLI-ARCHITECTURE.md
381
- └── SYSTEM-FLOW.md
387
+ ├── SYSTEM-FLOW.md
388
+ ├── HOOKS-AND-HANDOFF-ENFORCEMENT.md
389
+ ├── E2E-SKILL-TESTS.md
390
+ ├── PR-REVIEW-PROCESS.md
391
+ └── SWARM-ARCHITECTURE.md
382
392
  ```
383
393
 
384
394
  ### Test Coverage
385
395
 
386
- **814 tests** (813 pass, 1 skip, 0 fail):
396
+ **860 tests** (860 pass, 0 fail):
387
397
 
388
398
  | Suite | Tests | What It Covers |
389
399
  |-------|-------|---------------|
390
- | **Orchestration** | | |
391
- | Orchestrator | 30+ | Agentic loop, tool calling, subagent spawning, iteration limits |
392
- | AgentRouter | 30+ | @mention routing, skill matching, agent resolution |
393
- | ConversationContext | 30+ | Token truncation, skill injection, tool call repair |
394
- | HandoffManager | 30+ | Context transfer, depth limits, ping-pong detection |
395
- | **Tools** | | |
396
- | Tool interface | 20+ | Tool ToolDefinition conversion, schema validation |
397
- | ToolRegistry | 20+ | Register, get, list, definitions, duplicate detection |
398
- | readFile | 30+ | Line ranges, path validation, encoding |
399
- | editFile | 30+ | String replacement, single-match enforcement |
400
- | search | 30+ | Ripgrep, Node.js fallback, regex, file filtering |
401
- | terminal | 30+ | Command execution, timeouts, output capture |
402
- | beads | 30+ | bd CLI wrapper, create/close/list/ready |
403
- | subagent | 30+ | Spawn interface, result marking, agent validation |
404
- | MCP client | 30+ | JSON-RPC 2.0, protocol handshake, tool listing |
405
- | MCP bridge | 30+ | JSONC parsing, tool namespacing, error handling |
406
- | Tool suite | 10+ | createDefaultRegistry, integration tests |
407
- | **Providers** | | |
408
- | Provider types | 40+ | LLMError codes, ChatMessage shapes, ToolDefinition schemas |
409
- | Provider retry | 40+ | Exponential backoff, jitter, transient error detection |
410
- | Provider config | 30+ | Env precedence, dotenv parsing, URL validation |
411
- | Provider streaming | 40+ | Chunk accumulation, tool call delta assembly |
412
- | Provider Azure | 30+ | Message mapping, response mapping, error wrapping |
413
- | **Core & CLI** | | |
414
- | Agent loader | 30+ | Frontmatter parsing, validation, code fence stripping, handoffs |
415
- | Skill loader | 30+ | Trigger extraction, query matching, trigger map building |
416
- | CLI E2E | 52 | Init/doctor pipeline, MCP template validation, help output |
417
- | Path validation | 33 | Traversal detection, injection prevention, allowlists |
400
+ | **Skill Routing** | | |
401
+ | Hook injection | 51 | Deterministic skill injection via SubagentStart hook |
402
+ | Skill routing | 223 | Agent skill mapping, trigger phrase matching |
403
+ | Trigger coverage | 147 | All trigger phrases resolve to correct skills |
404
+ | Disambiguation | 28 | Overlapping trigger phrase resolution |
405
+ | Mapping completeness | 12 | Every agent has required skills mapped |
406
+ | Pipeline integration | 41 | End-to-end skill loading through full pipeline |
407
+ | Inject-skills hook | 20 | `inject-skills.mjs` unit tests |
408
+ | Verify-skills hook | 9 | `verify-skills.mjs` compliance gate |
409
+ | Smoke tests | 7 | Package exports, barrel imports |
410
+ | **Core** | | |
411
+ | Agent loader | 13 | `.agent.md` parsing, validation, code fence stripping |
412
+ | Agent frontmatter | 32 | YAML frontmatter extraction, required fields |
413
+ | Agent handoffs | 18 | Handoff chain validation, escalation patterns |
414
+ | Agent tools | 25 | Tool declarations, permission schemas |
415
+ | Agent types | 13 | Type definitions, discriminated unions |
416
+ | Agent suite | 18 | Integration: load all 7 agents, validate consistency |
417
+ | Skill loader | 20 | SKILL.md parsing, trigger extraction, query matching |
418
+ | Path validation | 26 | Traversal detection, injection prevention, allowlists |
419
+ | **CLI** | | |
420
+ | Init | 24 | File scaffolding, template copying, idempotency |
421
+ | Doctor | 15 | Node.js version, agent validation, skill checks |
422
+ | Land | 62 | Test commit → push pipeline, branch discipline |
423
+ | Pre-push guard | 46 | Branch protection, main/master blocking |
424
+ | Quickstart | 10 | Init + Doctor combined flow |
425
+ | **CLI E2E** | | |
426
+ | Init logic | 20 | End-to-end init with real filesystem |
427
+ | Doctor | 21 | Health checks against real project structure |
428
+ | Pipeline | 14 | Init → Doctor pipeline validation |
429
+ | Help | 24 | Help output format, command listing |
430
+ | MCP | 13 | MCP template validation and copying |
431
+ | Edge cases | 13 | Flag combinations, error scenarios |
432
+ | Pre-push guard | 11 | Git hook integration with temp repos |
433
+ | Quickstart expanded | 11 | Full quickstart flow E2E |
418
434
 
419
435
  ---
420
436
 
@@ -500,37 +516,6 @@ Is it magic? No. It's just competence with very good hair.
500
516
  - **Node.js** ≥ 18
501
517
  - **VS Code** with GitHub Copilot extension
502
518
  - **GitHub Copilot Chat** in Agent mode
503
- - [**beads**](https://github.com/steveyegge/beads) for task tracking (`bd` CLI)
504
-
505
- ### Installing Beads
506
-
507
- ```bash
508
- curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
509
- ```
510
-
511
- **CGO Troubleshooting (Linux/WSL):** Beads uses Dolt (a Git-for-data database) which requires CGO. If `bd init` or `bd doctor` fails with CGO-related errors:
512
-
513
- ```bash
514
- # Install C compiler toolchain (required for CGO)
515
- sudo apt-get update && sudo apt-get install -y build-essential gcc
516
-
517
- # Verify CGO is available
518
- export CGO_ENABLED=1
519
- go env CGO_ENABLED # should print 1
520
-
521
- # Re-install beads
522
- curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
523
- ```
524
-
525
- **Common beads issues:**
526
- - `bd: command not found` — Add `~/.local/bin` to your PATH: `export PATH="$HOME/.local/bin:$PATH"`
527
- - `bd doctor` warnings about metadata — Run `bd doctor --fix` to auto-repair
528
- - Dolt migration errors — Delete `.beads/` and re-initialize with `bd init`
529
-
530
- ```bash
531
- # Verify beads is working
532
- bd doctor
533
- ```
534
519
 
535
520
  ### Optional: MCP Servers
536
521
 
@@ -542,10 +527,14 @@ See [MCP Integrations](#mcp-integrations) above or [docs/MCP-SETUP.md](docs/MCP-
542
527
 
543
528
  | Doc | Purpose |
544
529
  |-----|---------|
545
- | [Installation Guide](docs/INSTALLATION.md) | Full setup: prerequisites, VS Code config, beads |
530
+ | [Installation Guide](docs/INSTALLATION.md) | Full setup: prerequisites, VS Code config, Backlog.md |
546
531
  | [MCP Setup](docs/MCP-SETUP.md) | Optional server integrations |
547
532
  | [CLI Architecture](docs/CLI-ARCHITECTURE.md) | Dual-interface design, implementation phases |
548
533
  | [System Flow](docs/SYSTEM-FLOW.md) | Agent orchestration diagrams |
534
+ | [Hooks & Handoffs](docs/HOOKS-AND-HANDOFF-ENFORCEMENT.md) | Skill injection hooks, hub-and-spoke enforcement |
535
+ | [E2E Skill Tests](docs/E2E-SKILL-TESTS.md) | Behavioral skill routing test plan |
536
+ | [PR Review Process](docs/PR-REVIEW-PROCESS.md) | Code review checklist and workflow |
537
+ | [Swarm Architecture](docs/SWARM-ARCHITECTURE.md) | Multi-agent swarm design (planned) |
549
538
  | [Contributing Guide](CONTRIBUTING.md) | How to contribute (PR process, review checklist) |
550
539
  | [Changelog](CHANGELOG.md) | Version history |
551
540
  | [Security Policy](SECURITY.md) | Vulnerability reporting |
File without changes
File without changes