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
@@ -1,16 +1,16 @@
1
- {
2
- // Beth Agent System - Recommended Settings
3
- // These settings enable full agent orchestration capabilities
4
-
5
- // Required: Allow Beth to delegate work to specialist agents
6
- "chat.customAgentInSubagent.enabled": true,
7
-
8
- // Enable agent mode in Copilot Chat
9
- "chat.agent.enabled": true,
10
-
11
- // Enable thinking/reasoning for complex tasks
12
- "github.copilot.chat.agent.thinkingTool": true,
13
-
14
- // Consistent locale for agent responses
15
- "github.copilot.chat.localeOverride": "en"
16
- }
1
+ {
2
+ // Beth Agent System - Recommended Settings
3
+ // These settings enable full agent orchestration capabilities
4
+
5
+ // Required: Allow Beth to delegate work to specialist agents
6
+ "chat.customAgentInSubagent.enabled": true,
7
+
8
+ // Enable agent mode in Copilot Chat
9
+ "chat.agent.enabled": true,
10
+
11
+ // Enable thinking/reasoning for complex tasks
12
+ "github.copilot.chat.agent.thinkingTool": true,
13
+
14
+ // Consistent locale for agent responses
15
+ "github.copilot.chat.localeOverride": "en"
16
+ }
@@ -1,51 +1,36 @@
1
1
  # Agent Instructions
2
2
 
3
- This project uses a **dual tracking system**:
3
+ This project uses [Backlog.md](Backlog.md) for task tracking — the single source of truth for both agents and humans.
4
4
 
5
- | Tool | Audience | Purpose |
6
- |------|----------|---------|
7
- | [beads](https://github.com/steveyegge/beads) (`bd`) | Agents | Active work, dependencies, blockers, structured memory |
8
- | [Backlog.md](Backlog.md) | Humans | Completed work archive, decisions, readable changelog |
9
-
10
- **The rule:** beads is always current. Backlog.md gets updated when work completes.
11
-
12
- ## Quick Setup
5
+ ## Backlog.md CLI Quick Reference
13
6
 
14
7
  ```bash
15
- # Install beads
16
- curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
17
-
18
- # Initialize in your project
19
- bd init
20
-
21
- # Run doctor to verify setup
22
- bd doctor
8
+ # See everything at once (use --plain where supported to avoid TUI)
9
+ backlog task list --plain # All tasks grouped by status
10
+ backlog task list -s "In Progress" --plain # Filter by status
11
+ backlog board # Kanban board (always plain-text)
12
+ backlog overview # Project health stats (always plain-text)
13
+
14
+ # Task lifecycle (--plain prevents TUI after mutation)
15
+ backlog task create "Title" -d "Description" --plain # Create
16
+ backlog task edit BETH-X -s "In Progress" --plain # Start
17
+ backlog task edit BETH-X -s "Done" --plain # Close
18
+ backlog task edit BETH-X --append-notes "text" --plain # Add notes
19
+
20
+ # Search
21
+ backlog search "query" --plain # Fuzzy search across tasks
23
22
  ```
24
23
 
25
- ## Quick Reference
26
-
27
- ```bash
28
- # Simple task
29
- bd create "Issue title" --description="What needs to be done" -l in_progress
24
+ **CRITICAL:** Always use `--plain` flag on commands that support it (`task list`, `task create`, `task edit`, `search`) — without it, these commands open a TUI that agents cannot interact with. Commands like `board` and `overview` are already plain-text.
30
25
 
31
- # Epic for complex work
32
- bd create "Feature name" --type epic -p 1
33
-
34
- # Subtask with parent
35
- bd create "Subtask" --parent <epic-id>
36
-
37
- # Task with dependency
38
- bd create "Blocked task" --deps "<blocker-id>"
39
-
40
- # List issues / see what's ready
41
- bd list
42
- bd ready
26
+ ## Quick Setup
43
27
 
44
- # View dependencies
45
- bd dep tree <id>
28
+ ```bash
29
+ # Initialize Beth in your project
30
+ npx beth-copilot init
46
31
 
47
- # Close an issue (enforced — checks for open children)
48
- npx beth-copilot close <id>
32
+ # Check system health
33
+ npx beth-copilot doctor
49
34
  ```
50
35
 
51
36
  ## Session Startup (MANDATORY)
@@ -67,67 +52,50 @@ git log --oneline origin/$(git branch --show-current)..HEAD
67
52
  ```
68
53
  If there are unpushed commits from a previous session, push them or understand why they weren't pushed.
69
54
 
70
- ### 3. Spot-check closed work is intact
71
- Pick 1-2 issues closed in the last session and verify the changes are actually in the code:
55
+ ### 3. Review task status
72
56
  ```bash
73
- # Example: verify an import was actually added
74
- grep -r "import.*ComponentName" src/
57
+ backlog task list --plain # See all tasks what's open, done, in progress
58
+ backlog task list -s "In Progress" --plain # What's supposed to be active?
75
59
  ```
76
- If beads says "done" but the code disagrees, reopen the issue and re-apply the fix.
60
+ If a task says "In Progress" but the work is done, close it: `backlog task edit BETH-X -s "Done"`
61
+ If a task says "Done" but the code disagrees, reopen it: `backlog task edit BETH-X -s "In Progress"`
77
62
 
78
- ### 4. Sync beads state
63
+ ### 4. Spot-check closed work is intact
64
+ Pick 1-2 tasks closed in the last session and verify the changes are actually in the code:
79
65
  ```bash
80
- bd list
81
- bd ready
66
+ # Example: verify an import was actually added
67
+ grep -r "import.*ComponentName" src/
82
68
  ```
83
- Verify beads reflects reality before creating new work.
69
+ If the tracker says "done" but the code disagrees, re-apply the fix.
84
70
 
85
71
  ### The principle: Trust the code, not the tracker
86
72
 
87
- > **War story (March 7, 2026):** A formatter reverted a critical routing file back to importing an old component. The tracking issue said "routing wired up" but the code was back to the previous state. It was caught and fixed — but only because we checked.
88
-
89
- This can happen to ANY file touched by agents. The most vulnerable are files touched by formatters on save (page.tsx, component files with import changes). When in doubt, check the code.
90
-
91
- ### Beads known issues
92
-
93
- > **War story (March 9, 2026): Test pollution.** E2E tests for `bd` commands create real issues in the Dolt database. If `afterAll` cleanup doesn't run (crash, timeout, process kill), orphan "E2E test:" issues pollute `bd list` and `bd ready`, hiding real work behind 30+ garbage entries. **Fix:** `beads.e2e.test.ts` now runs a `beforeAll` safety net that searches for stale "E2E test:" issues and batch-deletes them before creating new ones. Cleanup also uses `bd delete --from-file` for speed instead of per-issue `execSync` loops.
94
-
95
- > **War story (March 9, 2026): Tracking drift.** An epic (beth-gau) was planned in Backlog.md with 7 detailed subtasks but never created in beads. A new session saw the Backlog.md entry, tried `bd show beth-gau`, got "not found" (intermittent ID resolution), and created a duplicate epic. The duplicate was a phantom (Dolt transaction didn't persist). **Fix:** When checking for existing work, always use `bd list --json` as the source of truth — not `bd show`, which has intermittent resolution failures. And ALWAYS create beads issues before (or simultaneously with) Backlog.md entries.
73
+ > **War story (March 7, 2026):** A formatter reverted `app/workspace/agents/page.tsx` back to importing the old `WorkspaceAgents` component. The tracker said "routing wired up" but the code was back to the old state. Caught and fixed — but only because we checked.
96
74
 
97
- > **Rule: beads and Backlog.md must be created together.** If it's in Backlog.md, it must be in beads. If it's in beads, the summary must be in Backlog.md. One system without the other is a lie waiting to cause damage.
75
+ This can happen to ANY file touched by agents. The most vulnerable are files touched by formatters on save. When in doubt, check the code.
98
76
 
99
77
  ## Workflow
100
78
 
101
79
  ### Simple Tasks
102
- 1. `bd create "Task" -l in_progress`
103
- 2. Do the work
104
- 3. `npx beth-copilot close <id>`
105
- 4. Update Backlog.md if significant
80
+ 1. Create a task: `backlog task create "Title" -d "Description" --plain`
81
+ 2. Mark it in progress: `backlog task edit BETH-X -s "In Progress" --plain`
82
+ 3. Do the work
83
+ 4. Mark it done: `backlog task edit BETH-X -s "Done" --plain`
106
84
  5. Commit and push
107
85
 
108
86
  ### Complex Work (Multi-Agent)
109
- 1. `bd create "Feature" --type epic -p 1`
110
- 2. **Create/checkout** the epic branch from main:
87
+ 1. **Create/checkout** an epic branch from main:
111
88
 
112
89
  ```bash
113
90
  git fetch origin main
114
91
  git checkout -b epic/<epic-id> origin/main
115
92
  ```
116
93
 
117
- 3. Break into subtasks with `--parent` and `--deps`
118
- 4. **Create MANDATORY test subtasks** for every implementation task:
119
- ```bash
120
- bd create "Unit tests for <feature>" --parent <epic-id> --deps "<impl-id>"
121
- bd create "E2E tests for <feature>" --parent <epic-id> --deps "<impl-id>"
122
- bd create "Security tests for <feature>" --parent <epic-id> --deps "<impl-id>"
123
- ```
124
- 5. `bd ready` to find unblocked work
125
- 6. Route to specialists with issue IDs **and branch name**
126
- 7. Close subtasks as they complete
127
- 8. `bd epic close-eligible` when all children done
128
- 9. Update Backlog.md with summary
129
- 10. Push the epic branch
130
- 11. **Create a PR to `main`** using GitHub MCP (`mcp_github2_create_pull_request`)
94
+ 2. Create a parent task: `backlog task create "Epic title" -d "Description" --plain`
95
+ 3. Break into subtasks, route to specialists
96
+ 4. Each subtask: create → assign → work → mark done via `backlog task edit`
97
+ 5. Push the epic branch
98
+ 6. **Create a PR to `main`**
131
99
 
132
100
  ## Landing the Plane (Session Completion)
133
101
 
@@ -135,19 +103,20 @@ This can happen to ANY file touched by agents. The most vulnerable are files tou
135
103
 
136
104
  **MANDATORY WORKFLOW:**
137
105
 
138
- 1. **Close beads issues** - `npx beth-copilot close <id>` for completed work
139
- 2. **Create follow-up issues** - `bd create` for any remaining work
140
- 3. **Update Backlog.md** - Add summary to Completed section for significant work
141
- 4. **Run quality gates** (if code changed) - ALL tests must pass:
106
+ 1. **Close tasks** - Mark all completed tasks as done:
107
+ ```bash
108
+ backlog task list -s "In Progress" --plain # What's still open?
109
+ backlog task edit BETH-X -s "Done" --plain # Close each completed task
110
+ ```
111
+ 2. **Run quality gates** (if code changed) - ALL tests must pass:
142
112
  ```bash
143
113
  npm test # Unit + integration tests
144
- # If failures: create follow-up issues, DO NOT close parent issue
145
114
  ```
146
- 5. **Generate test report** (if code changed):
115
+ 3. **Generate test report** (if code changed):
147
116
  ```bash
148
117
  npm run test:gate # Runs tests + generates docs/test-reports/ report
149
118
  ```
150
- 6. **PUSH TO EPIC BRANCH** - This is MANDATORY:
119
+ 4. **PUSH TO EPIC BRANCH** - This is MANDATORY:
151
120
 
152
121
  ```bash
153
122
  git add -A
@@ -157,22 +126,14 @@ This can happen to ANY file touched by agents. The most vulnerable are files tou
157
126
  git status # MUST show "up to date with origin"
158
127
  ```
159
128
 
160
- 6. **CREATE A PR TO `main`** - Use GitHub MCP to create a pull request:
161
-
162
- ```text
163
- mcp_github2_create_pull_request(
164
- owner: <repo-owner>,
165
- repo: <repo-name>,
166
- title: "<epic-id>: <summary of work>",
167
- head: "epic/<epic-id>",
168
- base: "main",
169
- body: "## Summary\n<what was done>\n\n## Epic\n<epic-id>\n\n## Changes\n<list of changes>",
170
- draft: false
171
- )
129
+ 5. **CREATE A PR TO `main`** - Use `gh` CLI to create a pull request:
130
+
131
+ ```bash
132
+ gh pr create --base main --head "epic/<epic-id>" --title "<epic-id>: <summary>" --body "## Summary\n<what was done>"
172
133
  ```
173
134
 
174
- 7. **Share the PR link** with the user
175
- 8. **Hand off** - Provide context for next session including the epic ID, branch, and PR URL
135
+ 6. **Share the PR link** with the user
136
+ 7. **Hand off** - Provide context for next session including the epic ID, branch, and PR URL
176
137
 
177
138
  **CRITICAL RULES:**
178
139
 
@@ -1,80 +1,80 @@
1
- # Backlog
2
-
3
- > *"I don't have time to explain things twice. Read this."*
4
-
5
- Last updated: <!-- Update this date when making changes -->
6
-
7
- ---
8
-
9
- ## Completed
10
-
11
- | Task | Notes |
12
- |------|-------|
13
- | Initial setup | Beth agent system installed |
14
-
15
- ---
16
-
17
- ## In Progress
18
-
19
- *Nothing currently in progress.*
20
-
21
- ---
22
-
23
- ## Backlog (Prioritized)
24
-
25
- ### High Priority (P1)
26
-
27
- - [ ] **Your first task** — Describe what needs to be done
28
-
29
- ### Medium Priority (P2)
30
-
31
- - [ ] **Future work** — Things to do later
32
-
33
- ### Low Priority (P3)
34
-
35
- - [ ] **Nice to have** — When you have time
36
-
37
- ---
38
-
39
- ## Decisions
40
-
41
- | Decision | Rationale | Date |
42
- |----------|-----------|------|
43
- | Use Beth orchestrator | Coordinated multi-agent workflows | Today |
44
-
45
- ---
46
-
47
- ## Status Summary
48
-
49
- **For Leadership:**
50
-
51
- Project initialized with Beth agent system.
52
-
53
- **What's Working:**
54
-
55
- - Beth agent (orchestrator) — Ready
56
- - Full agent roster — Ready
57
- - All skills — Loaded
58
-
59
- **What's Coming:**
60
-
61
- - Your roadmap here
62
-
63
- **Blockers:** None.
64
-
65
- ---
66
-
67
- ## How We Track Work
68
-
69
- This file is the single source of truth. When you start work:
70
-
71
- 1. Move the task to **In Progress**
72
- 2. Do the work
73
- 3. Move to **Completed** when done
74
- 4. Commit changes
75
-
76
- No external tools. No databases. Just this markdown file.
77
-
78
- ---
79
-
80
- *"Now you know what's happening. Questions? I'll answer them. Complaints? Keep them to yourself."*
1
+ # Backlog
2
+
3
+ > *"I don't have time to explain things twice. Read this."*
4
+
5
+ Last updated: <!-- Update this date when making changes -->
6
+
7
+ ---
8
+
9
+ ## Completed
10
+
11
+ | Task | Notes |
12
+ |------|-------|
13
+ | Initial setup | Beth agent system installed |
14
+
15
+ ---
16
+
17
+ ## In Progress
18
+
19
+ *Nothing currently in progress.*
20
+
21
+ ---
22
+
23
+ ## Backlog (Prioritized)
24
+
25
+ ### High Priority (P1)
26
+
27
+ - [ ] **Your first task** — Describe what needs to be done
28
+
29
+ ### Medium Priority (P2)
30
+
31
+ - [ ] **Future work** — Things to do later
32
+
33
+ ### Low Priority (P3)
34
+
35
+ - [ ] **Nice to have** — When you have time
36
+
37
+ ---
38
+
39
+ ## Decisions
40
+
41
+ | Decision | Rationale | Date |
42
+ |----------|-----------|------|
43
+ | Use Beth orchestrator | Coordinated multi-agent workflows | Today |
44
+
45
+ ---
46
+
47
+ ## Status Summary
48
+
49
+ **For Leadership:**
50
+
51
+ Project initialized with Beth agent system.
52
+
53
+ **What's Working:**
54
+
55
+ - Beth agent (orchestrator) — Ready
56
+ - Full agent roster — Ready
57
+ - All skills — Loaded
58
+
59
+ **What's Coming:**
60
+
61
+ - Your roadmap here
62
+
63
+ **Blockers:** None.
64
+
65
+ ---
66
+
67
+ ## How We Track Work
68
+
69
+ This file is the single source of truth. When you start work:
70
+
71
+ 1. Move the task to **In Progress**
72
+ 2. Do the work
73
+ 3. Move to **Completed** when done
74
+ 4. Commit changes
75
+
76
+ No external tools. No databases. Just this markdown file.
77
+
78
+ ---
79
+
80
+ *"Now you know what's happening. Questions? I'll answer them. Complaints? Keep them to yourself."*
@@ -1,13 +0,0 @@
1
- [38;2;218;165;32m .╭━━━━━━━╮.[0m
2
- [38;2;218;165;32m ╭──╯[0m[38;2;235;210;160m ▒▓▓▓▓▒ [0m[38;2;218;165;32m╰──╮[0m
3
- [38;2;218;165;32m ╱[0m[38;2;240;220;180m ▓██████████▓ [0m[38;2;218;165;32m╲[0m
4
- [38;2;218;165;32m ╱[0m[38;2;235;215;170m ████[0m[38;2;139;90;43m▓▓[0m[38;2;235;215;170m██[0m[38;2;139;90;43m▓▓[0m[38;2;235;215;170m████ [0m[38;2;218;165;32m╲[0m
5
- [38;2;218;165;32m │[0m[38;2;240;225;190m ███ [0m[38;2;70;110;150m◉[0m[38;2;240;225;190m ██ [0m[38;2;70;110;150m◉[0m[38;2;240;225;190m ███ [0m[38;2;218;165;32m│[0m
6
- [38;2;218;165;32m │[0m[38;2;235;210;165m ███▄▄▄▄▄▄███ [0m[38;2;218;165;32m│[0m
7
- [38;2;218;165;32m │[0m[38;2;230;200;150m ▀██[0m[38;2;180;80;80m▄══▄[0m[38;2;230;200;150m██▀ [0m[38;2;218;165;32m│[0m
8
- [38;2;218;165;32m │[0m[38;2;220;190;140m ╰────╯ [0m[38;2;218;165;32m│[0m
9
- [38;2;218;165;32m │[0m[38;2;200;175;130m ▓██████████▓ [0m[38;2;218;165;32m│[0m
10
- [38;2;218;165;32m ╲[0m[38;2;180;155;110m ████████████ [0m[38;2;218;165;32m╱[0m
11
- [38;2;218;165;32m ╲[0m[38;2;160;135;90m ▀██████████▀ [0m[38;2;218;165;32m╱[0m
12
- [38;2;218;165;32m ╰───╮ ╭───╯[0m
13
- [38;2;218;165;32m ╰──────╯[0m