beth-copilot 1.1.0 → 2.0.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 (223) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/README.md +51 -62
  3. package/assets/beth-questioning.png +0 -0
  4. package/assets/yellowstone-beth.png +0 -0
  5. package/bin/cli.js +19 -410
  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 +5 -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 +38 -111
  63. package/dist/cli/commands/doctor.js.map +1 -1
  64. package/dist/cli/commands/doctor.test.js +32 -234
  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 +12 -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 +3 -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/update.d.ts +35 -0
  107. package/dist/cli/commands/update.d.ts.map +1 -0
  108. package/dist/cli/commands/update.e2e.test.d.ts +24 -0
  109. package/dist/cli/commands/update.e2e.test.d.ts.map +1 -0
  110. package/dist/cli/commands/update.e2e.test.js +240 -0
  111. package/dist/cli/commands/update.e2e.test.js.map +1 -0
  112. package/dist/cli/commands/update.js +255 -0
  113. package/dist/cli/commands/update.js.map +1 -0
  114. package/dist/core/agents/frontmatter.test.js +1 -1
  115. package/dist/core/agents/frontmatter.test.js.map +1 -1
  116. package/dist/core/agents/handoffs.test.js +1 -1
  117. package/dist/core/agents/handoffs.test.js.map +1 -1
  118. package/dist/core/agents/loader.d.ts +4 -2
  119. package/dist/core/agents/loader.d.ts.map +1 -1
  120. package/dist/core/agents/loader.js +5 -3
  121. package/dist/core/agents/loader.js.map +1 -1
  122. package/dist/core/agents/loader.test.js +42 -4
  123. package/dist/core/agents/loader.test.js.map +1 -1
  124. package/dist/core/agents/suite.test.js +8 -7
  125. package/dist/core/agents/suite.test.js.map +1 -1
  126. package/dist/core/agents/tools.test.js +10 -8
  127. package/dist/core/agents/tools.test.js.map +1 -1
  128. package/dist/core/agents/types.test.js +1 -1
  129. package/dist/core/agents/types.test.js.map +1 -1
  130. package/dist/core/skills/loader.test.js +1 -1
  131. package/dist/core/skills/loader.test.js.map +1 -1
  132. package/dist/index.d.ts +0 -1
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +0 -2
  135. package/dist/index.js.map +1 -1
  136. package/dist/lib/pathValidation.d.ts +0 -5
  137. package/dist/lib/pathValidation.d.ts.map +1 -1
  138. package/dist/lib/pathValidation.js +0 -11
  139. package/dist/lib/pathValidation.js.map +1 -1
  140. package/dist/lib/pathValidation.test.js +2 -14
  141. package/dist/lib/pathValidation.test.js.map +1 -1
  142. package/package.json +3 -6
  143. package/sbom.json +259 -371
  144. package/templates/.github/agents/beth.agent.md +194 -122
  145. package/templates/.github/agents/developer.agent.md +30 -22
  146. package/templates/.github/agents/product-manager.agent.md +15 -6
  147. package/templates/.github/agents/researcher.agent.md +10 -7
  148. package/templates/.github/agents/security-reviewer.agent.md +16 -7
  149. package/templates/.github/agents/tester.agent.md +16 -8
  150. package/templates/.github/agents/ux-designer.agent.md +12 -9
  151. package/templates/.github/copilot-instructions.md +33 -4
  152. package/templates/.github/copilot-mcp-config.json +12 -0
  153. package/templates/.github/dependabot.yml +68 -0
  154. package/templates/.github/hooks/scripts/inject-skills.mjs +139 -0
  155. package/templates/.github/hooks/scripts/verify-skills.mjs +47 -0
  156. package/templates/.github/hooks/skill-enforcement.json +18 -0
  157. package/templates/.github/pull_request_template.md +48 -0
  158. package/templates/.github/skills/framer-components/SKILL.md +0 -0
  159. package/templates/.github/skills/prd/SKILL.md +0 -0
  160. package/templates/.github/skills/security-analysis/SKILL.md +798 -798
  161. package/templates/.github/skills/shadcn-ui/SKILL.md +561 -561
  162. package/templates/.github/skills/vercel-react-best-practices/AGENTS.md +0 -0
  163. package/templates/.github/skills/vercel-react-best-practices/SKILL.md +0 -0
  164. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
  165. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
  166. package/templates/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -0
  167. package/templates/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -0
  168. package/templates/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -0
  169. package/templates/.github/skills/vercel-react-best-practices/rules/async-parallel.md +0 -0
  170. package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
  171. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
  172. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
  173. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
  174. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
  175. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -0
  176. package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
  177. package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
  178. package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
  179. package/templates/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
  180. package/templates/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
  181. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
  182. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
  183. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
  184. package/templates/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
  185. package/templates/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -0
  186. package/templates/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
  187. package/templates/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -0
  188. package/templates/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
  189. package/templates/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
  190. package/templates/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
  191. package/templates/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
  192. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -0
  193. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
  194. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
  195. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
  196. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
  197. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
  198. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
  199. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
  200. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
  201. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
  202. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
  203. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
  204. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -0
  205. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -0
  206. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
  207. package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
  208. package/templates/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -0
  209. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
  210. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -0
  211. package/templates/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -0
  212. package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
  213. package/templates/.github/skills/vercel-react-best-practices/rules/server-serialization.md +0 -0
  214. package/templates/.github/skills/web-design-guidelines/SKILL.md +0 -0
  215. package/templates/.vscode/settings.json +16 -16
  216. package/templates/AGENTS.md +59 -98
  217. package/templates/Backlog.md +80 -80
  218. package/assets/beth-portrait-small.txt +0 -13
  219. package/assets/beth-portrait.txt +0 -60
  220. package/bin/beth-animation.sh +0 -155
  221. package/bin/lib/animation.js +0 -189
  222. package/bin/lib/pathValidation.js +0 -233
  223. package/bin/lib/pathValidation.test.js +0 -280
package/CHANGELOG.md CHANGED
@@ -6,6 +6,44 @@ 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.0.0] - 2026-03-16
12
+
13
+ ### Breaking Changes
14
+ - **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.
15
+ - **`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`.
16
+
17
+ ### Added
18
+ - **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.
19
+ - **`npx beth-copilot update` command** — Updates project files to latest templates without full re-init. Supports `--check-only` for dry-run inspection.
20
+ - **Behavioral skill tests** — 302 E2E skill routing tests across 3 files validating deterministic hook injection, trigger coverage, and mapping completeness.
21
+ - **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.
22
+ - **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.
23
+ - **Community skills** — Added brainstorming, framer-components, frontend-design, proof, rclone, feature-video, and other community-contributed skill modules.
24
+ - **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.
25
+ - **860 tests** — Up from 438 in v1.1.0. Comprehensive coverage for CLI commands, skill routing, hook injection, pipeline integration, and path validation.
26
+
27
+ ### Changed
28
+ - **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.
29
+ - **Hook enforcement updated** — `verify-skills.mjs` now checks for `backlog task edit` compliance instead of `bd` commands.
30
+ - **Templates synced** — All template files in `templates/` now match live `.github/` configuration.
31
+ - **Test framework consolidated** — Migrated from mixed `node:test`/vitest to vitest-only imports across all test files.
32
+
33
+ ### Removed
34
+ - **`beth-copilot close` command** — Entire close command and its 560-line implementation deleted.
35
+ - **Beads stub functions** — Removed `bd`-related stubs from `bin/cli.js`.
36
+ - **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.
37
+ - **Dolt/beads references** — Purged from all production source code, agent instructions, templates, and documentation.
38
+
39
+ ### Fixed
40
+ - **Template drift** — Templates now stay in sync with live `.github/` config via the `update` command.
41
+ - **Duplicate tools in beth.agent.md** — Removed duplicate tool entries in frontmatter.
42
+ - **Dead pathValidation.ts exports** — Cleaned unused exports that inflated the public API surface.
43
+ - **Pre-push guard test isolation** — Removed unused `child_process` mock that caused CI failures.
44
+
45
+ ---
46
+
9
47
  ## [1.1.0] - 2026-03-10
10
48
 
11
49
  ### Added
@@ -13,7 +51,7 @@ All notable changes to Beth are documented here. Format based on [Keep a Changel
13
51
  - **`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
52
  - **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
53
  - **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).
54
+ - **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
55
  - **Doctor: Dolt database hygiene** — `checkDoltDatabases()` detects orphaned `*test*` databases and warns when user DB count exceeds threshold. Extracted `parseDoltDatabases()` with 18 unit tests.
18
56
  - **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
57
  - **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 close`, `beth land` — TypeScript commands | Live |
25
25
  | **Orchestration Engine** | Fan-out routing, tool calling loop, subagent spawning, handoffs | Live |
26
26
  | **Tool Abstraction** | 6 CLI tools + MCP bridge — uniform interface for all agent capabilities | 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
+ **478 tests.** 477 pass, 1 skip, 0 fail.
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 + Node.js test runner | 478 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,20 @@ 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 |
99
100
  | `beth help` | Show all commands and options |
100
101
 
101
- **Flags:** `--force`, `--skip-backlog`, `--skip-mcp`, `--skip-beads`, `--verbose`
102
+ **Flags:** `--force`, `--skip-backlog`, `--skip-mcp`, `--verbose`, `--skip-tests`, `--message/-m`, `--dry-run`
102
103
 
103
104
  ---
104
105
 
105
106
  ## Agent Orchestration
106
107
 
107
- Beth doesn't micromanage. She delegates to specialists over **subagent** and **handoff** channels, tracks dependencies with beads, and holds every agent accountable.
108
+ Beth doesn't micromanage. She delegates to specialists over **subagent** and **handoff** channels, tracks work in Backlog.md, and holds every agent accountable.
108
109
 
109
110
  ### The Family
110
111
 
@@ -118,17 +119,23 @@ Beth doesn't micromanage. She delegates to specialists over **subagent** and **h
118
119
  | **@tester** | The Enforcer | Quality assurance, accessibility, performance |
119
120
  | **@security-reviewer** | The Bodyguard | OWASP, compliance, threat modeling |
120
121
 
121
- ### Delegation Model
122
+ ### Delegation Model (Hub-and-Spoke)
122
123
 
123
124
  ```mermaid
124
125
  flowchart LR
125
126
  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
127
+ PM -.->|escalate| Beth
128
+ UX -.->|escalate| Beth
129
+ Dev -.->|escalate| Beth
130
+ Sec -.->|escalate| Beth
131
+ Test -.->|escalate| Beth
132
+ Res -.->|escalate| Beth
128
133
 
129
134
  style Beth fill:#1e3a5f,color:#fff
130
135
  ```
131
136
 
137
+ All agents escalate exclusively to Beth — no lateral handoffs. Beth routes, agents execute.
138
+
132
139
  ### Subagent vs Handoff
133
140
 
134
141
  | Mechanism | Control | Use When |
@@ -216,24 +223,37 @@ Full details: [docs/MCP-SETUP.md](docs/MCP-SETUP.md)
216
223
 
217
224
  ## Skills (On-Demand Knowledge)
218
225
 
219
- Skills are domain-knowledge modules that agents load automatically when trigger phrases match. Each skill lives in `.github/skills/<name>/SKILL.md`.
226
+ 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
227
 
221
228
  | Skill | Triggers On | Used By |
222
229
  |-------|------------|---------|
223
230
  | **PRD Generation** | "create a prd", "product requirements" | Product Manager |
224
- | **Framer Components** | "framer component", "property controls" | UX Designer |
231
+ | **UI UX Pro Max** | "design system", "color palette", "style guide" | UX Designer, Developer |
232
+ | **Web Design Guidelines** | "review my UI", "check accessibility" | UX Designer, Tester |
233
+ | **Framer Components** | "framer component", "property controls" | UX Designer, Developer |
225
234
  | **React/Next.js Best Practices** | React performance, Next.js patterns | Developer |
226
- | **Web Design Guidelines** | "review my UI", "check accessibility" | UX Designer |
227
235
  | **shadcn/ui** | "shadcn", "ui component" | Developer |
228
236
  | **Security Analysis** | "security review", "OWASP", "threat model" | Security Reviewer |
229
237
  | **Azure Operations** | Azure resource management | Developer |
230
238
  | **Web Search** | Internet research via Brave | Researcher |
231
239
 
240
+ ### Design & UI Skills
241
+
242
+ Three complementary skills cover the full design-to-code pipeline. They don't overlap — each solves a different problem.
243
+
244
+ | Skill | What It Does | When You Need It |
245
+ |-------|-------------|------------------|
246
+ | **[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?" |
247
+ | **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?" |
248
+ | **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?" |
249
+
250
+ **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.
251
+
232
252
  ---
233
253
 
234
254
  ## How It Works
235
255
 
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.
256
+ 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
257
 
238
258
  ```mermaid
239
259
  flowchart LR
@@ -249,12 +269,12 @@ flowchart LR
249
269
  **Key capabilities:**
250
270
  - **Agent routing** — `@mention` parsing, subagent spawning, handoff chains
251
271
  - **Skill injection** — Domain knowledge loaded on trigger phrases
252
- - **Task tracking** — beads (`bd`) for epics, subtasks, dependencies
272
+ - **Task tracking** — Backlog.md (`backlog`) for tasks, milestones, and progress
253
273
  - **MCP integration** — Optional external tool servers (shadcn, Playwright, Azure)
254
274
 
255
275
  ```
256
276
  @Beth implement the login page
257
- → Beth routes to @developer, tracks work in beads
277
+ → Beth routes to @developer, tracks work in Backlog.md
258
278
 
259
279
  @Beth review this PR for security vulnerabilities
260
280
  → Beth routes to @security-reviewer, injects security-analysis skill
@@ -269,7 +289,7 @@ flowchart LR
269
289
 
270
290
  ## Tool Abstraction Layer
271
291
 
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.
292
+ A uniform interface for all agent capabilities — file I/O, terminal, search, task tracking, subagent spawning, and MCP server tools. Tools expose OpenAI-compatible function calling schemas so the LLM can invoke them directly.
273
293
 
274
294
  | Tool | What It Does | Key Features |
275
295
  |------|-------------|-------------- |
@@ -277,7 +297,7 @@ A uniform interface for all agent capabilities — file I/O, terminal, search, b
277
297
  | **editFile** | Atomic string replacement | Single-match enforcement, whitespace-safe |
278
298
  | **search** | Ripgrep search | Node.js fallback, regex support, file filtering |
279
299
  | **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 |
300
+ | **backlog** | Task tracking | `backlog task create`, `backlog board`, `backlog task edit` via CLI |
281
301
  | **subagent** | Spawn nested agents | Returns structured result for orchestrator to process |
282
302
  | **MCP Bridge** | External tool servers | JSON-RPC 2.0 over stdio, JSONC config, namespaced tools |
283
303
 
@@ -310,14 +330,14 @@ flowchart LR
310
330
  CLI --> Doctor["doctor"]
311
331
  CLI --> QS["quickstart"]
312
332
  Init --> Templates[".agent.md · SKILL.md · settings"]
313
- Doctor --> Checks["Node ≥18 · beads · agents · skills"]
333
+ Doctor --> Checks["Node ≥18 · agents · skills"]
314
334
  QS --> Init & Doctor
315
335
  ```
316
336
 
317
337
  **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
338
+ - `beth init` — Scaffold agents, skills, VS Code settings, Backlog.md tracking
339
+ - `beth doctor` — Validate Node.js, agent frontmatter, skill directories
340
+ - `beth quickstart` — Run init + doctor in one shot
321
341
 
322
342
  ---
323
343
 
@@ -358,7 +378,7 @@ beth/
358
378
  │ │ │ ├── editFile.ts # Atomic string replacement
359
379
  │ │ │ ├── search.ts # Ripgrep with Node.js fallback
360
380
  │ │ │ ├── terminal.ts # Secure command execution
361
- │ │ │ ├── beads.ts # Issue tracking via bd CLI
381
+ │ │ │ ├── backlog.ts # Task tracking via backlog CLI
362
382
  │ │ │ └── subagent.ts # Agent spawning interface
363
383
  │ │ └── mcp/
364
384
  │ │ ├── client.ts # JSON-RPC 2.0 over stdio
@@ -399,7 +419,7 @@ beth/
399
419
  | editFile | 30+ | String replacement, single-match enforcement |
400
420
  | search | 30+ | Ripgrep, Node.js fallback, regex, file filtering |
401
421
  | terminal | 30+ | Command execution, timeouts, output capture |
402
- | beads | 30+ | bd CLI wrapper, create/close/list/ready |
422
+ | backlog | 30+ | Backlog.md CLI wrapper, task tracking |
403
423
  | subagent | 30+ | Spawn interface, result marking, agent validation |
404
424
  | MCP client | 30+ | JSON-RPC 2.0, protocol handshake, tool listing |
405
425
  | MCP bridge | 30+ | JSONC parsing, tool namespacing, error handling |
@@ -500,37 +520,6 @@ Is it magic? No. It's just competence with very good hair.
500
520
  - **Node.js** ≥ 18
501
521
  - **VS Code** with GitHub Copilot extension
502
522
  - **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
523
 
535
524
  ### Optional: MCP Servers
536
525
 
@@ -542,7 +531,7 @@ See [MCP Integrations](#mcp-integrations) above or [docs/MCP-SETUP.md](docs/MCP-
542
531
 
543
532
  | Doc | Purpose |
544
533
  |-----|---------|
545
- | [Installation Guide](docs/INSTALLATION.md) | Full setup: prerequisites, VS Code config, beads |
534
+ | [Installation Guide](docs/INSTALLATION.md) | Full setup: prerequisites, VS Code config, Backlog.md |
546
535
  | [MCP Setup](docs/MCP-SETUP.md) | Optional server integrations |
547
536
  | [CLI Architecture](docs/CLI-ARCHITECTURE.md) | Dual-interface design, implementation phases |
548
537
  | [System Flow](docs/SYSTEM-FLOW.md) | Agent orchestration diagrams |
File without changes
File without changes