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.
- package/CHANGELOG.md +39 -1
- package/README.md +51 -62
- package/assets/beth-questioning.png +0 -0
- package/assets/yellowstone-beth.png +0 -0
- package/bin/cli.js +19 -410
- package/dist/__tests__/inject-skills.test.d.ts +9 -0
- package/dist/__tests__/inject-skills.test.d.ts.map +1 -0
- package/dist/__tests__/inject-skills.test.js +143 -0
- package/dist/__tests__/inject-skills.test.js.map +1 -0
- package/dist/__tests__/skills/disambiguation.test.d.ts +10 -0
- package/dist/__tests__/skills/disambiguation.test.d.ts.map +1 -0
- package/dist/__tests__/skills/disambiguation.test.js +192 -0
- package/dist/__tests__/skills/disambiguation.test.js.map +1 -0
- package/dist/__tests__/skills/hook-injection.test.d.ts +11 -0
- package/dist/__tests__/skills/hook-injection.test.d.ts.map +1 -0
- package/dist/__tests__/skills/hook-injection.test.js +173 -0
- package/dist/__tests__/skills/hook-injection.test.js.map +1 -0
- package/dist/__tests__/skills/mapping-completeness.test.d.ts +17 -0
- package/dist/__tests__/skills/mapping-completeness.test.d.ts.map +1 -0
- package/dist/__tests__/skills/mapping-completeness.test.js +281 -0
- package/dist/__tests__/skills/mapping-completeness.test.js.map +1 -0
- package/dist/__tests__/skills/pipeline-integration.test.d.ts +18 -0
- package/dist/__tests__/skills/pipeline-integration.test.d.ts.map +1 -0
- package/dist/__tests__/skills/pipeline-integration.test.js +234 -0
- package/dist/__tests__/skills/pipeline-integration.test.js.map +1 -0
- package/dist/__tests__/skills/skill-routing.test.d.ts +15 -0
- package/dist/__tests__/skills/skill-routing.test.d.ts.map +1 -0
- package/dist/__tests__/skills/skill-routing.test.js +723 -0
- package/dist/__tests__/skills/skill-routing.test.js.map +1 -0
- package/dist/__tests__/skills/trigger-coverage.test.d.ts +24 -0
- package/dist/__tests__/skills/trigger-coverage.test.d.ts.map +1 -0
- package/dist/__tests__/skills/trigger-coverage.test.js +746 -0
- package/dist/__tests__/skills/trigger-coverage.test.js.map +1 -0
- package/dist/__tests__/smoke.test.js +13 -0
- package/dist/__tests__/smoke.test.js.map +1 -1
- package/dist/__tests__/verify-skills.test.d.ts +9 -0
- package/dist/__tests__/verify-skills.test.d.ts.map +1 -0
- package/dist/__tests__/verify-skills.test.js +78 -0
- package/dist/__tests__/verify-skills.test.js.map +1 -0
- package/dist/cli/commands/beads.e2e.test.d.ts +4 -2
- package/dist/cli/commands/beads.e2e.test.d.ts.map +1 -1
- package/dist/cli/commands/beads.e2e.test.js +97 -38
- package/dist/cli/commands/beads.e2e.test.js.map +1 -1
- package/dist/cli/commands/cli-edge-cases.e2e.test.js +1 -1
- package/dist/cli/commands/cli-edge-cases.e2e.test.js.map +1 -1
- package/dist/cli/commands/close.d.ts +11 -46
- package/dist/cli/commands/close.d.ts.map +1 -1
- package/dist/cli/commands/close.e2e.test.d.ts +4 -20
- package/dist/cli/commands/close.e2e.test.d.ts.map +1 -1
- package/dist/cli/commands/close.e2e.test.js +23 -204
- package/dist/cli/commands/close.e2e.test.js.map +1 -1
- package/dist/cli/commands/close.js +26 -240
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/close.test.d.ts +7 -9
- package/dist/cli/commands/close.test.d.ts.map +1 -1
- package/dist/cli/commands/close.test.js +44 -424
- package/dist/cli/commands/close.test.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +5 -22
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.e2e.test.js +3 -59
- package/dist/cli/commands/doctor.e2e.test.js.map +1 -1
- package/dist/cli/commands/doctor.js +38 -111
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/doctor.test.js +32 -234
- package/dist/cli/commands/doctor.test.js.map +1 -1
- package/dist/cli/commands/framework-isolation.test.d.ts +1 -1
- package/dist/cli/commands/framework-isolation.test.js +2 -3
- package/dist/cli/commands/framework-isolation.test.js.map +1 -1
- package/dist/cli/commands/help.e2e.test.js +1 -5
- package/dist/cli/commands/help.e2e.test.js.map +1 -1
- package/dist/cli/commands/init-logic.e2e.test.js +12 -2
- package/dist/cli/commands/init-logic.e2e.test.js.map +1 -1
- package/dist/cli/commands/init.test.js +4 -21
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/cli/commands/land.d.ts +3 -15
- package/dist/cli/commands/land.d.ts.map +1 -1
- package/dist/cli/commands/land.js +13 -68
- package/dist/cli/commands/land.js.map +1 -1
- package/dist/cli/commands/land.test.d.ts +0 -1
- package/dist/cli/commands/land.test.d.ts.map +1 -1
- package/dist/cli/commands/land.test.js +2 -57
- package/dist/cli/commands/land.test.js.map +1 -1
- package/dist/cli/commands/mcp.e2e.test.js +3 -3
- package/dist/cli/commands/mcp.e2e.test.js.map +1 -1
- package/dist/cli/commands/pipeline.e2e.test.js +23 -26
- package/dist/cli/commands/pipeline.e2e.test.js.map +1 -1
- package/dist/cli/commands/pre-push-guard.d.ts +2 -12
- package/dist/cli/commands/pre-push-guard.d.ts.map +1 -1
- package/dist/cli/commands/pre-push-guard.e2e.test.js +1 -1
- package/dist/cli/commands/pre-push-guard.e2e.test.js.map +1 -1
- package/dist/cli/commands/pre-push-guard.js +2 -47
- package/dist/cli/commands/pre-push-guard.js.map +1 -1
- package/dist/cli/commands/pre-push-guard.test.d.ts +0 -1
- package/dist/cli/commands/pre-push-guard.test.d.ts.map +1 -1
- package/dist/cli/commands/pre-push-guard.test.js +15 -98
- package/dist/cli/commands/pre-push-guard.test.js.map +1 -1
- package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts +1 -1
- package/dist/cli/commands/quickstart-expanded.e2e.test.js +3 -30
- package/dist/cli/commands/quickstart-expanded.e2e.test.js.map +1 -1
- package/dist/cli/commands/quickstart.d.ts +0 -1
- package/dist/cli/commands/quickstart.d.ts.map +1 -1
- package/dist/cli/commands/quickstart.js +2 -60
- package/dist/cli/commands/quickstart.js.map +1 -1
- package/dist/cli/commands/quickstart.test.js +10 -104
- package/dist/cli/commands/quickstart.test.js.map +1 -1
- package/dist/cli/commands/update.d.ts +35 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.e2e.test.d.ts +24 -0
- package/dist/cli/commands/update.e2e.test.d.ts.map +1 -0
- package/dist/cli/commands/update.e2e.test.js +240 -0
- package/dist/cli/commands/update.e2e.test.js.map +1 -0
- package/dist/cli/commands/update.js +255 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/core/agents/frontmatter.test.js +1 -1
- package/dist/core/agents/frontmatter.test.js.map +1 -1
- package/dist/core/agents/handoffs.test.js +1 -1
- package/dist/core/agents/handoffs.test.js.map +1 -1
- package/dist/core/agents/loader.d.ts +4 -2
- package/dist/core/agents/loader.d.ts.map +1 -1
- package/dist/core/agents/loader.js +5 -3
- package/dist/core/agents/loader.js.map +1 -1
- package/dist/core/agents/loader.test.js +42 -4
- package/dist/core/agents/loader.test.js.map +1 -1
- package/dist/core/agents/suite.test.js +8 -7
- package/dist/core/agents/suite.test.js.map +1 -1
- package/dist/core/agents/tools.test.js +10 -8
- package/dist/core/agents/tools.test.js.map +1 -1
- package/dist/core/agents/types.test.js +1 -1
- package/dist/core/agents/types.test.js.map +1 -1
- package/dist/core/skills/loader.test.js +1 -1
- package/dist/core/skills/loader.test.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/pathValidation.d.ts +0 -5
- package/dist/lib/pathValidation.d.ts.map +1 -1
- package/dist/lib/pathValidation.js +0 -11
- package/dist/lib/pathValidation.js.map +1 -1
- package/dist/lib/pathValidation.test.js +2 -14
- package/dist/lib/pathValidation.test.js.map +1 -1
- package/package.json +3 -6
- package/sbom.json +259 -371
- package/templates/.github/agents/beth.agent.md +194 -122
- package/templates/.github/agents/developer.agent.md +30 -22
- package/templates/.github/agents/product-manager.agent.md +15 -6
- package/templates/.github/agents/researcher.agent.md +10 -7
- package/templates/.github/agents/security-reviewer.agent.md +16 -7
- package/templates/.github/agents/tester.agent.md +16 -8
- package/templates/.github/agents/ux-designer.agent.md +12 -9
- package/templates/.github/copilot-instructions.md +33 -4
- package/templates/.github/copilot-mcp-config.json +12 -0
- package/templates/.github/dependabot.yml +68 -0
- package/templates/.github/hooks/scripts/inject-skills.mjs +139 -0
- package/templates/.github/hooks/scripts/verify-skills.mjs +47 -0
- package/templates/.github/hooks/skill-enforcement.json +18 -0
- package/templates/.github/pull_request_template.md +48 -0
- package/templates/.github/skills/framer-components/SKILL.md +0 -0
- package/templates/.github/skills/prd/SKILL.md +0 -0
- package/templates/.github/skills/security-analysis/SKILL.md +798 -798
- package/templates/.github/skills/shadcn-ui/SKILL.md +561 -561
- package/templates/.github/skills/vercel-react-best-practices/AGENTS.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/SKILL.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-parallel.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
- package/templates/.github/skills/vercel-react-best-practices/rules/server-serialization.md +0 -0
- package/templates/.github/skills/web-design-guidelines/SKILL.md +0 -0
- package/templates/.vscode/settings.json +16 -16
- package/templates/AGENTS.md +59 -98
- package/templates/Backlog.md +80 -80
- package/assets/beth-portrait-small.txt +0 -13
- package/assets/beth-portrait.txt +0 -60
- package/bin/beth-animation.sh +0 -155
- package/bin/lib/animation.js +0 -189
- package/bin/lib/pathValidation.js +0 -233
- 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
|
|
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
|
|
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
|
-
**
|
|
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
|
|
59
|
-
| **Task Tracking** |
|
|
60
|
-
| **Package Manager** |
|
|
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`).
|
|
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,
|
|
84
|
-
beth quickstart # Init + doctor
|
|
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,
|
|
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,
|
|
98
|
-
| `beth quickstart` | Run init + doctor
|
|
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-
|
|
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
|
|
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 -.->|
|
|
127
|
-
|
|
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
|
-
| **
|
|
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
|
|
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** —
|
|
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
|
|
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,
|
|
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
|
-
| **
|
|
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 ·
|
|
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,
|
|
319
|
-
- `beth doctor` — Validate Node.js,
|
|
320
|
-
- `beth quickstart` — Run init + doctor
|
|
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
|
-
│ │ │ ├──
|
|
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
|
-
|
|
|
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,
|
|
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
|