beth-copilot 1.0.18 → 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 (429) hide show
  1. package/CHANGELOG.md +79 -28
  2. package/README.md +127 -298
  3. package/assets/beth-questioning.png +0 -0
  4. package/assets/yellowstone-beth.png +0 -0
  5. package/bin/cli.js +124 -715
  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.d.ts +8 -0
  35. package/dist/__tests__/smoke.test.d.ts.map +1 -0
  36. package/dist/__tests__/smoke.test.js +62 -0
  37. package/dist/__tests__/smoke.test.js.map +1 -0
  38. package/dist/__tests__/verify-skills.test.d.ts +9 -0
  39. package/dist/__tests__/verify-skills.test.d.ts.map +1 -0
  40. package/dist/__tests__/verify-skills.test.js +78 -0
  41. package/dist/__tests__/verify-skills.test.js.map +1 -0
  42. package/dist/cli/commands/beads.e2e.test.d.ts +15 -0
  43. package/dist/cli/commands/beads.e2e.test.d.ts.map +1 -0
  44. package/dist/cli/commands/beads.e2e.test.js +585 -0
  45. package/dist/cli/commands/beads.e2e.test.js.map +1 -0
  46. package/dist/cli/commands/cli-edge-cases.e2e.test.d.ts +32 -0
  47. package/dist/cli/commands/cli-edge-cases.e2e.test.d.ts.map +1 -0
  48. package/dist/cli/commands/cli-edge-cases.e2e.test.js +162 -0
  49. package/dist/cli/commands/cli-edge-cases.e2e.test.js.map +1 -0
  50. package/dist/cli/commands/close.d.ts +54 -0
  51. package/dist/cli/commands/close.d.ts.map +1 -0
  52. package/dist/cli/commands/close.e2e.test.d.ts +11 -0
  53. package/dist/cli/commands/close.e2e.test.d.ts.map +1 -0
  54. package/dist/cli/commands/close.e2e.test.js +71 -0
  55. package/dist/cli/commands/close.e2e.test.js.map +1 -0
  56. package/dist/cli/commands/close.js +95 -0
  57. package/dist/cli/commands/close.js.map +1 -0
  58. package/dist/cli/commands/close.test.d.ts +13 -0
  59. package/dist/cli/commands/close.test.d.ts.map +1 -0
  60. package/dist/cli/commands/close.test.js +254 -0
  61. package/dist/cli/commands/close.test.js.map +1 -0
  62. package/dist/cli/commands/doctor.d.ts +7 -1
  63. package/dist/cli/commands/doctor.d.ts.map +1 -1
  64. package/dist/cli/commands/doctor.e2e.test.js +3 -59
  65. package/dist/cli/commands/doctor.e2e.test.js.map +1 -1
  66. package/dist/cli/commands/doctor.js +38 -18
  67. package/dist/cli/commands/doctor.js.map +1 -1
  68. package/dist/cli/commands/doctor.test.js +32 -25
  69. package/dist/cli/commands/doctor.test.js.map +1 -1
  70. package/dist/cli/commands/framework-isolation.test.d.ts +30 -0
  71. package/dist/cli/commands/framework-isolation.test.d.ts.map +1 -0
  72. package/dist/cli/commands/framework-isolation.test.js +118 -0
  73. package/dist/cli/commands/framework-isolation.test.js.map +1 -0
  74. package/dist/cli/commands/help.e2e.test.js +5 -9
  75. package/dist/cli/commands/help.e2e.test.js.map +1 -1
  76. package/dist/cli/commands/init-logic.e2e.test.d.ts +37 -0
  77. package/dist/cli/commands/init-logic.e2e.test.d.ts.map +1 -0
  78. package/dist/cli/commands/init-logic.e2e.test.js +315 -0
  79. package/dist/cli/commands/init-logic.e2e.test.js.map +1 -0
  80. package/dist/cli/commands/init.test.js +4 -21
  81. package/dist/cli/commands/init.test.js.map +1 -1
  82. package/dist/cli/commands/land.d.ts +130 -0
  83. package/dist/cli/commands/land.d.ts.map +1 -0
  84. package/dist/cli/commands/land.js +592 -0
  85. package/dist/cli/commands/land.js.map +1 -0
  86. package/dist/cli/commands/land.test.d.ts +19 -0
  87. package/dist/cli/commands/land.test.d.ts.map +1 -0
  88. package/dist/cli/commands/land.test.js +567 -0
  89. package/dist/cli/commands/land.test.js.map +1 -0
  90. package/dist/cli/commands/mcp.e2e.test.js +24 -31
  91. package/dist/cli/commands/mcp.e2e.test.js.map +1 -1
  92. package/dist/cli/commands/pipeline.e2e.test.js +28 -31
  93. package/dist/cli/commands/pipeline.e2e.test.js.map +1 -1
  94. package/dist/cli/commands/pre-push-guard.d.ts +74 -0
  95. package/dist/cli/commands/pre-push-guard.d.ts.map +1 -0
  96. package/dist/cli/commands/pre-push-guard.e2e.test.d.ts +24 -0
  97. package/dist/cli/commands/pre-push-guard.e2e.test.d.ts.map +1 -0
  98. package/dist/cli/commands/pre-push-guard.e2e.test.js +171 -0
  99. package/dist/cli/commands/pre-push-guard.e2e.test.js.map +1 -0
  100. package/dist/cli/commands/pre-push-guard.js +212 -0
  101. package/dist/cli/commands/pre-push-guard.js.map +1 -0
  102. package/dist/cli/commands/pre-push-guard.test.d.ts +14 -0
  103. package/dist/cli/commands/pre-push-guard.test.d.ts.map +1 -0
  104. package/dist/cli/commands/pre-push-guard.test.js +314 -0
  105. package/dist/cli/commands/pre-push-guard.test.js.map +1 -0
  106. package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts +23 -0
  107. package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts.map +1 -0
  108. package/dist/cli/commands/quickstart-expanded.e2e.test.js +152 -0
  109. package/dist/cli/commands/quickstart-expanded.e2e.test.js.map +1 -0
  110. package/dist/cli/commands/quickstart.d.ts +0 -1
  111. package/dist/cli/commands/quickstart.d.ts.map +1 -1
  112. package/dist/cli/commands/quickstart.js +9 -83
  113. package/dist/cli/commands/quickstart.js.map +1 -1
  114. package/dist/cli/commands/quickstart.test.js +8 -129
  115. package/dist/cli/commands/quickstart.test.js.map +1 -1
  116. package/dist/cli/commands/update.d.ts +35 -0
  117. package/dist/cli/commands/update.d.ts.map +1 -0
  118. package/dist/cli/commands/update.e2e.test.d.ts +24 -0
  119. package/dist/cli/commands/update.e2e.test.d.ts.map +1 -0
  120. package/dist/cli/commands/update.e2e.test.js +240 -0
  121. package/dist/cli/commands/update.e2e.test.js.map +1 -0
  122. package/dist/cli/commands/update.js +255 -0
  123. package/dist/cli/commands/update.js.map +1 -0
  124. package/dist/core/agents/frontmatter.test.js +1 -1
  125. package/dist/core/agents/frontmatter.test.js.map +1 -1
  126. package/dist/core/agents/handoffs.test.js +1 -1
  127. package/dist/core/agents/handoffs.test.js.map +1 -1
  128. package/dist/core/agents/loader.d.ts +4 -2
  129. package/dist/core/agents/loader.d.ts.map +1 -1
  130. package/dist/core/agents/loader.js +5 -3
  131. package/dist/core/agents/loader.js.map +1 -1
  132. package/dist/core/agents/loader.test.js +42 -4
  133. package/dist/core/agents/loader.test.js.map +1 -1
  134. package/dist/core/agents/suite.test.js +12 -9
  135. package/dist/core/agents/suite.test.js.map +1 -1
  136. package/dist/core/agents/tools.test.js +15 -9
  137. package/dist/core/agents/tools.test.js.map +1 -1
  138. package/dist/core/agents/types.test.js +1 -1
  139. package/dist/core/agents/types.test.js.map +1 -1
  140. package/dist/core/skills/loader.test.js +1 -1
  141. package/dist/core/skills/loader.test.js.map +1 -1
  142. package/dist/index.d.ts +3 -11
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +5 -12
  145. package/dist/index.js.map +1 -1
  146. package/dist/lib/pathValidation.d.ts +0 -5
  147. package/dist/lib/pathValidation.d.ts.map +1 -1
  148. package/dist/lib/pathValidation.js +0 -11
  149. package/dist/lib/pathValidation.js.map +1 -1
  150. package/dist/lib/pathValidation.test.js +2 -14
  151. package/dist/lib/pathValidation.test.js.map +1 -1
  152. package/package.json +13 -10
  153. package/sbom.json +1927 -847
  154. package/templates/.github/agents/beth.agent.md +331 -105
  155. package/templates/.github/agents/developer.agent.md +73 -102
  156. package/templates/.github/agents/product-manager.agent.md +24 -68
  157. package/templates/.github/agents/researcher.agent.md +21 -69
  158. package/templates/.github/agents/security-reviewer.agent.md +39 -82
  159. package/templates/.github/agents/tester.agent.md +44 -65
  160. package/templates/.github/agents/ux-designer.agent.md +25 -76
  161. package/templates/.github/copilot-instructions.md +246 -225
  162. package/templates/.github/copilot-mcp-config.json +12 -0
  163. package/templates/.github/dependabot.yml +68 -0
  164. package/templates/.github/hooks/scripts/inject-skills.mjs +139 -0
  165. package/templates/.github/hooks/scripts/verify-skills.mjs +47 -0
  166. package/templates/.github/hooks/skill-enforcement.json +18 -0
  167. package/templates/.github/pull_request_template.md +48 -0
  168. package/templates/.github/skills/framer-components/SKILL.md +0 -0
  169. package/templates/.github/skills/prd/SKILL.md +0 -0
  170. package/templates/.github/skills/security-analysis/SKILL.md +798 -798
  171. package/templates/.github/skills/shadcn-ui/SKILL.md +561 -561
  172. package/templates/.github/skills/vercel-react-best-practices/AGENTS.md +0 -0
  173. package/templates/.github/skills/vercel-react-best-practices/SKILL.md +0 -0
  174. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
  175. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
  176. package/templates/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -0
  177. package/templates/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -0
  178. package/templates/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -0
  179. package/templates/.github/skills/vercel-react-best-practices/rules/async-parallel.md +0 -0
  180. package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
  181. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
  182. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
  183. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
  184. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
  185. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -0
  186. package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
  187. package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
  188. package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
  189. package/templates/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
  190. package/templates/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
  191. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
  192. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
  193. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
  194. package/templates/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
  195. package/templates/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -0
  196. package/templates/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
  197. package/templates/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -0
  198. package/templates/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
  199. package/templates/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
  200. package/templates/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
  201. package/templates/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
  202. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -0
  203. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
  204. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
  205. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
  206. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
  207. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
  208. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
  209. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
  210. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
  211. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
  212. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
  213. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
  214. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -0
  215. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -0
  216. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
  217. package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
  218. package/templates/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -0
  219. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
  220. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -0
  221. package/templates/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -0
  222. package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
  223. package/templates/.github/skills/vercel-react-best-practices/rules/server-serialization.md +0 -0
  224. package/templates/.github/skills/web-design-guidelines/SKILL.md +0 -0
  225. package/templates/.vscode/settings.json +16 -16
  226. package/templates/AGENTS.md +103 -54
  227. package/templates/Backlog.md +80 -80
  228. package/templates/mcp.json.example +0 -3
  229. package/assets/beth-portrait-small.txt +0 -13
  230. package/assets/beth-portrait.txt +0 -60
  231. package/bin/beth-animation.sh +0 -155
  232. package/bin/lib/animation.js +0 -189
  233. package/bin/lib/pathValidation.js +0 -233
  234. package/bin/lib/pathValidation.test.js +0 -280
  235. package/dist/cli/commands/client-config.d.ts +0 -31
  236. package/dist/cli/commands/client-config.d.ts.map +0 -1
  237. package/dist/cli/commands/client-config.e2e.test.d.ts +0 -15
  238. package/dist/cli/commands/client-config.e2e.test.d.ts.map +0 -1
  239. package/dist/cli/commands/client-config.e2e.test.js +0 -556
  240. package/dist/cli/commands/client-config.e2e.test.js.map +0 -1
  241. package/dist/cli/commands/client-config.js +0 -73
  242. package/dist/cli/commands/client-config.js.map +0 -1
  243. package/dist/cli/commands/client-config.test.d.ts +0 -6
  244. package/dist/cli/commands/client-config.test.d.ts.map +0 -1
  245. package/dist/cli/commands/client-config.test.js +0 -133
  246. package/dist/cli/commands/client-config.test.js.map +0 -1
  247. package/dist/cli/commands/init-quickstart.e2e.test.d.ts +0 -11
  248. package/dist/cli/commands/init-quickstart.e2e.test.d.ts.map +0 -1
  249. package/dist/cli/commands/init-quickstart.e2e.test.js +0 -221
  250. package/dist/cli/commands/init-quickstart.e2e.test.js.map +0 -1
  251. package/dist/core/context.d.ts +0 -171
  252. package/dist/core/context.d.ts.map +0 -1
  253. package/dist/core/context.js +0 -353
  254. package/dist/core/context.js.map +0 -1
  255. package/dist/core/context.test.d.ts +0 -8
  256. package/dist/core/context.test.d.ts.map +0 -1
  257. package/dist/core/context.test.js +0 -253
  258. package/dist/core/context.test.js.map +0 -1
  259. package/dist/core/handoffs.d.ts +0 -151
  260. package/dist/core/handoffs.d.ts.map +0 -1
  261. package/dist/core/handoffs.js +0 -220
  262. package/dist/core/handoffs.js.map +0 -1
  263. package/dist/core/handoffs.test.d.ts +0 -8
  264. package/dist/core/handoffs.test.d.ts.map +0 -1
  265. package/dist/core/handoffs.test.js +0 -231
  266. package/dist/core/handoffs.test.js.map +0 -1
  267. package/dist/core/orchestrator.d.ts +0 -246
  268. package/dist/core/orchestrator.d.ts.map +0 -1
  269. package/dist/core/orchestrator.js +0 -514
  270. package/dist/core/orchestrator.js.map +0 -1
  271. package/dist/core/orchestrator.test.d.ts +0 -8
  272. package/dist/core/orchestrator.test.d.ts.map +0 -1
  273. package/dist/core/orchestrator.test.js +0 -517
  274. package/dist/core/orchestrator.test.js.map +0 -1
  275. package/dist/core/router.d.ts +0 -102
  276. package/dist/core/router.d.ts.map +0 -1
  277. package/dist/core/router.js +0 -178
  278. package/dist/core/router.js.map +0 -1
  279. package/dist/core/router.test.d.ts +0 -8
  280. package/dist/core/router.test.d.ts.map +0 -1
  281. package/dist/core/router.test.js +0 -215
  282. package/dist/core/router.test.js.map +0 -1
  283. package/dist/init.test.js +0 -288
  284. package/dist/providers/azure.d.ts +0 -147
  285. package/dist/providers/azure.d.ts.map +0 -1
  286. package/dist/providers/azure.js +0 -491
  287. package/dist/providers/azure.js.map +0 -1
  288. package/dist/providers/azure.test.d.ts +0 -11
  289. package/dist/providers/azure.test.d.ts.map +0 -1
  290. package/dist/providers/azure.test.js +0 -330
  291. package/dist/providers/azure.test.js.map +0 -1
  292. package/dist/providers/config.d.ts +0 -87
  293. package/dist/providers/config.d.ts.map +0 -1
  294. package/dist/providers/config.js +0 -193
  295. package/dist/providers/config.js.map +0 -1
  296. package/dist/providers/config.test.d.ts +0 -7
  297. package/dist/providers/config.test.d.ts.map +0 -1
  298. package/dist/providers/config.test.js +0 -370
  299. package/dist/providers/config.test.js.map +0 -1
  300. package/dist/providers/index.d.ts +0 -18
  301. package/dist/providers/index.d.ts.map +0 -1
  302. package/dist/providers/index.js +0 -14
  303. package/dist/providers/index.js.map +0 -1
  304. package/dist/providers/interface.d.ts +0 -191
  305. package/dist/providers/interface.d.ts.map +0 -1
  306. package/dist/providers/interface.js +0 -94
  307. package/dist/providers/interface.js.map +0 -1
  308. package/dist/providers/retry.d.ts +0 -128
  309. package/dist/providers/retry.d.ts.map +0 -1
  310. package/dist/providers/retry.js +0 -205
  311. package/dist/providers/retry.js.map +0 -1
  312. package/dist/providers/retry.test.d.ts +0 -7
  313. package/dist/providers/retry.test.d.ts.map +0 -1
  314. package/dist/providers/retry.test.js +0 -439
  315. package/dist/providers/retry.test.js.map +0 -1
  316. package/dist/providers/streaming.d.ts +0 -157
  317. package/dist/providers/streaming.d.ts.map +0 -1
  318. package/dist/providers/streaming.js +0 -233
  319. package/dist/providers/streaming.js.map +0 -1
  320. package/dist/providers/streaming.test.d.ts +0 -7
  321. package/dist/providers/streaming.test.d.ts.map +0 -1
  322. package/dist/providers/streaming.test.js +0 -372
  323. package/dist/providers/streaming.test.js.map +0 -1
  324. package/dist/providers/types.d.ts +0 -209
  325. package/dist/providers/types.d.ts.map +0 -1
  326. package/dist/providers/types.js +0 -53
  327. package/dist/providers/types.js.map +0 -1
  328. package/dist/providers/types.test.d.ts +0 -7
  329. package/dist/providers/types.test.d.ts.map +0 -1
  330. package/dist/providers/types.test.js +0 -141
  331. package/dist/providers/types.test.js.map +0 -1
  332. package/dist/tools/cli/beads.d.ts +0 -27
  333. package/dist/tools/cli/beads.d.ts.map +0 -1
  334. package/dist/tools/cli/beads.js +0 -172
  335. package/dist/tools/cli/beads.js.map +0 -1
  336. package/dist/tools/cli/beads.test.d.ts +0 -8
  337. package/dist/tools/cli/beads.test.d.ts.map +0 -1
  338. package/dist/tools/cli/beads.test.js +0 -264
  339. package/dist/tools/cli/beads.test.js.map +0 -1
  340. package/dist/tools/cli/editFile.d.ts +0 -17
  341. package/dist/tools/cli/editFile.d.ts.map +0 -1
  342. package/dist/tools/cli/editFile.js +0 -125
  343. package/dist/tools/cli/editFile.js.map +0 -1
  344. package/dist/tools/cli/editFile.test.d.ts +0 -8
  345. package/dist/tools/cli/editFile.test.d.ts.map +0 -1
  346. package/dist/tools/cli/editFile.test.js +0 -177
  347. package/dist/tools/cli/editFile.test.js.map +0 -1
  348. package/dist/tools/cli/readFile.d.ts +0 -25
  349. package/dist/tools/cli/readFile.d.ts.map +0 -1
  350. package/dist/tools/cli/readFile.js +0 -118
  351. package/dist/tools/cli/readFile.js.map +0 -1
  352. package/dist/tools/cli/readFile.test.d.ts +0 -8
  353. package/dist/tools/cli/readFile.test.d.ts.map +0 -1
  354. package/dist/tools/cli/readFile.test.js +0 -194
  355. package/dist/tools/cli/readFile.test.js.map +0 -1
  356. package/dist/tools/cli/search.d.ts +0 -16
  357. package/dist/tools/cli/search.d.ts.map +0 -1
  358. package/dist/tools/cli/search.js +0 -261
  359. package/dist/tools/cli/search.js.map +0 -1
  360. package/dist/tools/cli/search.test.d.ts +0 -8
  361. package/dist/tools/cli/search.test.d.ts.map +0 -1
  362. package/dist/tools/cli/search.test.js +0 -172
  363. package/dist/tools/cli/search.test.js.map +0 -1
  364. package/dist/tools/cli/subagent.d.ts +0 -43
  365. package/dist/tools/cli/subagent.d.ts.map +0 -1
  366. package/dist/tools/cli/subagent.js +0 -99
  367. package/dist/tools/cli/subagent.js.map +0 -1
  368. package/dist/tools/cli/subagent.test.d.ts +0 -8
  369. package/dist/tools/cli/subagent.test.d.ts.map +0 -1
  370. package/dist/tools/cli/subagent.test.js +0 -190
  371. package/dist/tools/cli/subagent.test.js.map +0 -1
  372. package/dist/tools/cli/terminal.d.ts +0 -19
  373. package/dist/tools/cli/terminal.d.ts.map +0 -1
  374. package/dist/tools/cli/terminal.js +0 -164
  375. package/dist/tools/cli/terminal.js.map +0 -1
  376. package/dist/tools/cli/terminal.test.d.ts +0 -8
  377. package/dist/tools/cli/terminal.test.d.ts.map +0 -1
  378. package/dist/tools/cli/terminal.test.js +0 -161
  379. package/dist/tools/cli/terminal.test.js.map +0 -1
  380. package/dist/tools/index.d.ts +0 -25
  381. package/dist/tools/index.d.ts.map +0 -1
  382. package/dist/tools/index.js +0 -41
  383. package/dist/tools/index.js.map +0 -1
  384. package/dist/tools/interface.d.ts +0 -64
  385. package/dist/tools/interface.d.ts.map +0 -1
  386. package/dist/tools/interface.js +0 -37
  387. package/dist/tools/interface.js.map +0 -1
  388. package/dist/tools/interface.test.d.ts +0 -7
  389. package/dist/tools/interface.test.d.ts.map +0 -1
  390. package/dist/tools/interface.test.js +0 -179
  391. package/dist/tools/interface.test.js.map +0 -1
  392. package/dist/tools/mcp/bridge.d.ts +0 -48
  393. package/dist/tools/mcp/bridge.d.ts.map +0 -1
  394. package/dist/tools/mcp/bridge.js +0 -128
  395. package/dist/tools/mcp/bridge.js.map +0 -1
  396. package/dist/tools/mcp/bridge.test.d.ts +0 -8
  397. package/dist/tools/mcp/bridge.test.d.ts.map +0 -1
  398. package/dist/tools/mcp/bridge.test.js +0 -300
  399. package/dist/tools/mcp/bridge.test.js.map +0 -1
  400. package/dist/tools/mcp/client.d.ts +0 -135
  401. package/dist/tools/mcp/client.d.ts.map +0 -1
  402. package/dist/tools/mcp/client.js +0 -263
  403. package/dist/tools/mcp/client.js.map +0 -1
  404. package/dist/tools/mcp/client.test.d.ts +0 -8
  405. package/dist/tools/mcp/client.test.d.ts.map +0 -1
  406. package/dist/tools/mcp/client.test.js +0 -390
  407. package/dist/tools/mcp/client.test.js.map +0 -1
  408. package/dist/tools/registry.d.ts +0 -82
  409. package/dist/tools/registry.d.ts.map +0 -1
  410. package/dist/tools/registry.js +0 -99
  411. package/dist/tools/registry.js.map +0 -1
  412. package/dist/tools/registry.test.d.ts +0 -7
  413. package/dist/tools/registry.test.d.ts.map +0 -1
  414. package/dist/tools/registry.test.js +0 -199
  415. package/dist/tools/registry.test.js.map +0 -1
  416. package/dist/tools/suite.test.d.ts +0 -11
  417. package/dist/tools/suite.test.d.ts.map +0 -1
  418. package/dist/tools/suite.test.js +0 -119
  419. package/dist/tools/suite.test.js.map +0 -1
  420. package/dist/tools/types.d.ts +0 -75
  421. package/dist/tools/types.d.ts.map +0 -1
  422. package/dist/tools/types.js +0 -30
  423. package/dist/tools/types.js.map +0 -1
  424. package/dist/tools/types.test.d.ts +0 -7
  425. package/dist/tools/types.test.d.ts.map +0 -1
  426. package/dist/tools/types.test.js +0 -178
  427. package/dist/tools/types.test.js.map +0 -1
  428. package/templates/.vscode/mcp.json +0 -20
  429. package/templates/CLAUDE.md +0 -129
@@ -1,225 +1,246 @@
1
- # Beth - AI Agent System
2
-
3
- A ruthless, hyper-competent AI orchestrator for GitHub Copilot multi-agent workflows.
4
-
5
- ## Architecture Overview
6
-
7
- ```
8
- .github/
9
- ├── agents/ # Agent definitions (*.agent.md frontmatter + instructions)
10
- ├── skills/ # Domain knowledge for specific capabilities (SKILL.md files)
11
- └── appmod/ # App modernization configurations
12
- ```
13
-
14
- **Key insight**: Agents are role-based specialists (PM, Developer, Designer, etc.) while skills are domain-specific knowledge modules that agents load on-demand.
15
-
16
- ## Agent System
17
-
18
- ### Agent Definition Format
19
- Agents use `.agent.md` files with YAML frontmatter defining:
20
- - `name`, `description`, `model` - Identity
21
- - `tools` - Available capabilities (codebase, readFile, editFiles, runSubagent, etc.)
22
- - `handoffs` - Other agents this agent can transfer control to
23
- - `infer: true` - Enables the agent to be invoked as a subagent
24
-
25
- ### The Seven Agents
26
- | Agent | Purpose | Primary Tools |
27
- |-------|---------|---------------|
28
- | `Beth` | Orchestrator - Routes work, spawns subagents | `runSubagent`, search tools |
29
- | `product-manager` | WHAT to build: PRDs, user stories, priorities, success metrics | PRD skill |
30
- | `researcher` | User/market research, competitive analysis | Research synthesis |
31
- | `ux-designer` | HOW it works: component specs, design tokens, accessibility | Framer skill |
32
- | `developer` | React/TypeScript/Next.js - UI and full-stack | shadcn-ui skill, shadcn MCP, all editing tools |
33
- | `security-reviewer` | Security audits, threat modeling, compliance | security-analysis skill |
34
- | `tester` | QA, accessibility, performance testing | Testing tools |
35
-
36
- ### Product Manager vs UX Designer
37
-
38
- These agents serve distinct purposes in the IDEO workflow:
39
-
40
- | | Product Manager | UX Designer |
41
- |---|---|---|
42
- | **Focus** | WHAT to build, WHY, WHEN | HOW it looks, feels, behaves |
43
- | **Outputs** | PRDs, user stories, RICE scores, roadmaps | Component specs, wireframes, design tokens, accessibility requirements |
44
- | **Key Question** | "Is this worth building?" | "How should this work?" |
45
- | **Example** | "Users need date filtering" (acceptance criteria) | "The date picker has these variants, states, and ARIA attributes" (spec) |
46
-
47
- **Use Product Manager** when defining requirements, prioritizing features, or making build/no-build decisions.
48
- **Use UX Designer** when specifying component behavior, design systems, or accessibility compliance.
49
-
50
- ### Subagent vs Handoff Pattern
51
- - **Handoffs**: User clicks button context transferred user reviews
52
- - **Subagents**: Autonomous execution results returned continue workflow
53
-
54
- ```typescript
55
- // Subagent invocation pattern
56
- runSubagent({
57
- agentName: "researcher",
58
- prompt: "Detailed task with expected output format...",
59
- description: "3-5 word description"
60
- })
61
- ```
62
-
63
- ## Skills System
64
-
65
- Skills are domain-knowledge modules in `.github/skills/<name>/SKILL.md`. Agents load skills when triggered by specific phrases.
66
-
67
- | Skill | Location | Triggers |
68
- |-------|----------|----------|
69
- | PRD Generation | `skills/prd/` | "create a prd", "product requirements" |
70
- | Framer Components | `skills/framer-components/` | "framer component", "property controls" |
71
- | Vercel React Best Practices | `skills/vercel-react-best-practices/` | React/Next.js performance work |
72
- | Web Design Guidelines | `skills/web-design-guidelines/` | "review my UI", "check accessibility" |
73
- | shadcn/ui Components | `skills/shadcn-ui/` | "shadcn", "ui component", component installation |
74
- | Security Analysis | `skills/security-analysis/` | "security review", "OWASP", "threat model", "compliance" |
75
-
76
- ## Development Conventions
77
-
78
- ### Tech Stack
79
- - **React 19** with Server Components, Server Actions, `use`, `useOptimistic`
80
- - **Next.js App Router** with streaming, Suspense, parallel routes
81
- - **TypeScript** in strict mode, Zod for runtime validation
82
- - **Styling**: Tailwind CSS with `class-variance-authority` (cva)
83
-
84
- ### Code Patterns
85
-
86
- **Server Components as default** - Only add `'use client'` when needed for interactivity:
87
- ```typescript
88
- // Server Component (default)
89
- export default async function Page() {
90
- const data = await fetchData();
91
- return <Display data={data} />;
92
- }
93
-
94
- // Client Component (when needed)
95
- 'use client';
96
- export function InteractiveWidget() { ... }
97
- ```
98
-
99
- **Server Actions for mutations**:
100
- ```typescript
101
- 'use server';
102
- export async function updateItem(formData: FormData) {
103
- const parsed = Schema.safeParse(Object.fromEntries(formData));
104
- if (!parsed.success) return { error: 'Invalid input' };
105
- // mutation logic
106
- revalidatePath('/path');
107
- }
108
- ```
109
-
110
- ### Quality Standards
111
- - WCAG 2.1 AA accessibility compliance
112
- - Core Web Vitals in green (LCP < 2.5s, FID < 100ms, CLS < 0.1)
113
- - Full TypeScript coverage, no `any`
114
- - Unit tests for utilities, integration tests for features
115
-
116
- ## IDEO Design Thinking Integration
117
-
118
- Apply human-centered design methodology across agent workflows:
119
-
120
- | Phase | Agent | Activities |
121
- |-------|-------|------------|
122
- | **Empathize** | `@researcher` | User interviews, observation, pain point discovery |
123
- | **Define** | `@product-manager` | Problem framing, requirements, success criteria |
124
- | **Ideate** | `@ux-designer` | Solution exploration, design patterns, prototypes |
125
- | **Prototype** | `@developer` | Build to learn, rapid iteration, feature spikes |
126
- | **Test** | `@tester` | Validate assumptions, accessibility audits, performance |
127
-
128
- Balance the three lenses: **Desirability** (user wants), **Feasibility** (technically possible), **Viability** (sustainable for business).
129
-
130
- ## React/Next.js Performance Patterns
131
-
132
- Critical optimizations from [.github/skills/vercel-react-best-practices/AGENTS.md](.github/skills/vercel-react-best-practices/AGENTS.md):
133
-
134
- ### Eliminate Waterfalls (CRITICAL)
135
- ```typescript
136
- // ❌ Sequential: 3 round trips
137
- const user = await fetchUser();
138
- const posts = await fetchPosts();
139
- const comments = await fetchComments();
140
-
141
- // Parallel: 1 round trip
142
- const [user, posts, comments] = await Promise.all([
143
- fetchUser(), fetchPosts(), fetchComments()
144
- ]);
145
- ```
146
-
147
- ### Strategic Suspense Boundaries
148
- ```tsx
149
- // Wrapper renders immediately, data streams in
150
- function Page() {
151
- return (
152
- <div>
153
- <Header />
154
- <Suspense fallback={<Skeleton />}>
155
- <DataDisplay /> {/* Only this awaits data */}
156
- </Suspense>
157
- <Footer />
158
- </div>
159
- );
160
- }
161
- ```
162
-
163
- ### Bundle Size Optimization
164
- - **Avoid barrel imports**: `import { Check } from 'lucide-react'` → `import Check from 'lucide-react/dist/esm/icons/check'`
165
- - **Dynamic imports**: Use `next/dynamic` for heavy components (Monaco, charts)
166
- - **Defer non-critical**: Load analytics/tracking after hydration with `ssr: false`
167
-
168
- ### Server Action Security
169
- Always authenticate inside Server Actions—they're public endpoints:
170
- ```typescript
171
- 'use server';
172
- export async function deleteUser(userId: string) {
173
- const session = await verifySession();
174
- if (!session || session.user.id !== userId) throw unauthorized();
175
- // proceed with mutation
176
- }
177
- ```
178
-
179
- ## Workflow Patterns
180
-
181
- ### New Feature Flow
182
- 1. `@Beth` → analyzes request, proposes workflow
183
- 2. `@product-manager` → defines requirements (uses PRD skill)
184
- 3. `@researcher` validates user needs (optional)
185
- 4. `@ux-designer` → designs interface
186
- 5. `@developer` → implements in React/TypeScript
187
- 6. `@security-reviewer` → audits for vulnerabilities
188
- 7. `@tester` → verifies quality
189
-
190
- ### Quick Commands
191
- ```
192
- @Beth Plan a feature for [description]
193
- @product-manager Create a PRD for [feature]
194
- @developer Implement [component/feature]
195
- @tester Write tests for [component]
196
- ```
197
-
198
- ## Issue Tracking
199
-
200
- This project uses [beads](https://github.com/steveyegge/beads) (`bd`) for structured issue tracking with dependency graphs.
201
-
202
- **Required MCP:** The `beads-mcp` server must be running for agent integration. Install with:
203
- ```bash
204
- uv tool install beads-mcp
205
- ```
206
-
207
- The server is configured in `.vscode/mcp.json`. Restart VS Code after installing.
208
-
209
- ### Quick Reference
210
- ```bash
211
- bd ready # See unblocked work
212
- bd create "Title" # Create a new issue
213
- bd close <id> # Close completed work
214
- bd sync # Sync beads database
215
- ```
216
-
217
- See `AGENTS.md` at the repo root for the full dual tracking system (beads + Backlog.md).
218
-
219
- ## File Naming Conventions
220
-
221
- - Agents: `.github/agents/<name>.agent.md`
222
- - Skills: `.github/skills/<skill-name>/SKILL.md`
223
- - Components: `components/<Name>/<Name>.tsx` with `index.tsx` barrel
224
- - Server Actions: `lib/actions/<domain>.ts`
225
- - Data fetching: `lib/data/<domain>.ts`
1
+ # Beth - AI Agent System
2
+
3
+ A ruthless, hyper-competent AI orchestrator for GitHub Copilot multi-agent workflows.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npx beth-copilot init
9
+ ```
10
+
11
+ That's it. See [docs/INSTALLATION.md](../docs/INSTALLATION.md) for detailed setup.
12
+
13
+ ## Architecture Overview
14
+
15
+ ```
16
+ .github/
17
+ ├── agents/ # Agent definitions (*.agent.md frontmatter + instructions)
18
+ ├── skills/ # Domain knowledge for specific capabilities (SKILL.md files)
19
+ └── appmod/ # App modernization configurations
20
+ ```
21
+
22
+ **Key insight**: Agents are role-based specialists (PM, Developer, Designer, etc.) while skills are domain-specific knowledge modules that agents load on-demand.
23
+
24
+ ## Agent System
25
+
26
+ ### Agent Definition Format
27
+ Agents use `.agent.md` files with YAML frontmatter defining:
28
+ - `name`, `description`, `model` - Identity
29
+ - `tools` - Available capabilities (codebase, readFile, editFiles, runSubagent, etc.)
30
+ - `handoffs` - Other agents this agent can transfer control to
31
+ - `infer: true` - Enables the agent to be invoked as a subagent
32
+
33
+ ### The Seven Agents
34
+ | Agent | Purpose | Primary Tools |
35
+ |-------|---------|---------------|
36
+ | `Beth` | Orchestrator - Routes work, spawns subagents | `runSubagent`, search tools |
37
+ | `product-manager` | WHAT to build: PRDs, user stories, priorities, success metrics | PRD skill |
38
+ | `researcher` | User/market research, competitive analysis | Research synthesis |
39
+ | `ux-designer` | HOW it works: component specs, design tokens, accessibility | Framer skill |
40
+ | `developer` | React/TypeScript/Next.js - UI and full-stack | shadcn-ui skill, shadcn MCP, all editing tools |
41
+ | `security-reviewer` | Security audits, threat modeling, compliance | security-analysis skill |
42
+ | `tester` | QA, accessibility, performance testing | Testing tools |
43
+
44
+ ### Product Manager vs UX Designer
45
+
46
+ These agents serve distinct purposes in the IDEO workflow:
47
+
48
+ | | Product Manager | UX Designer |
49
+ |---|---|---|
50
+ | **Focus** | WHAT to build, WHY, WHEN | HOW it looks, feels, behaves |
51
+ | **Outputs** | PRDs, user stories, RICE scores, roadmaps | Component specs, wireframes, design tokens, accessibility requirements |
52
+ | **Key Question** | "Is this worth building?" | "How should this work?" |
53
+ | **Example** | "Users need date filtering" (acceptance criteria) | "The date picker has these variants, states, and ARIA attributes" (spec) |
54
+
55
+ **Use Product Manager** when defining requirements, prioritizing features, or making build/no-build decisions.
56
+ **Use UX Designer** when specifying component behavior, design systems, or accessibility compliance.
57
+
58
+ ### Subagent vs Handoff Pattern
59
+ - **Handoffs**: User clicks button → context transferred → user reviews
60
+ - **Subagents**: Autonomous execution → results returned → continue workflow
61
+
62
+ ```typescript
63
+ // Subagent invocation pattern
64
+ runSubagent({
65
+ agentName: "researcher",
66
+ prompt: "Detailed task with expected output format...",
67
+ description: "3-5 word description"
68
+ })
69
+ ```
70
+
71
+ ## Skills System
72
+
73
+ Skills are domain-knowledge modules in `.github/skills/<name>/SKILL.md`. Agents load skills when triggered by specific phrases.
74
+
75
+ | Skill | Location | Triggers |
76
+ |-------|----------|----------|
77
+ | PRD Generation | `skills/prd/` | "create a prd", "product requirements" |
78
+ | Framer Components | `skills/framer-components/` | "framer component", "property controls" |
79
+ | Vercel React Best Practices | `skills/vercel-react-best-practices/` | React/Next.js performance work |
80
+ | Web Design Guidelines | `skills/web-design-guidelines/` | "review my UI", "check accessibility" |
81
+ | shadcn/ui Components | `skills/shadcn-ui/` | "shadcn", "ui component", component installation |
82
+ | UI UX Pro Max | `prompts/ui-ux-pro-max/` | "design system", "color palette", "style guide", UI/UX design work |
83
+ | Security Analysis | `skills/security-analysis/` | "security review", "OWASP", "threat model", "compliance" |
84
+ | Azure App Prep | `skills/azure-prepare/` | "create app", "deploy to Azure", "generate Bicep/Terraform" |
85
+ | Azure Validation | `skills/azure-validate/` | "validate my app", "check deployment readiness" |
86
+ | Azure Deploy | `skills/azure-deploy/` | "run azd up", "push to production", "ship it" |
87
+ | Azure Compute | `skills/azure-compute/` | "recommend VM size", "VM pricing", "scale set" |
88
+ | Azure Storage | `skills/azure-storage/` | "blob storage", "file shares", "queue storage" |
89
+ | Azure AI | `skills/azure-ai/` | "AI Search", "speech-to-text", "vector search" |
90
+ | Azure AI Gateway | `skills/azure-aigateway/` | "semantic caching", "AI model governance", "token limit" |
91
+ | Azure Kusto | `skills/azure-kusto/` | "KQL queries", "Data Explorer", "log analytics" |
92
+ | Azure Messaging | `skills/azure-messaging/` | "Event Hub", "Service Bus", "AMQP error" |
93
+ | Azure Copilot SDK | `skills/azure-hosted-copilot-sdk/` | "copilot SDK", "build copilot app" |
94
+ | App Insights | `skills/appinsights-instrumentation/` | "App Insights", "telemetry", "APM" |
95
+ | Microsoft Foundry | `skills/microsoft-foundry/` | "deploy agent to Foundry", "evaluate agent" |
96
+ | Azure RBAC | `skills/azure-rbac/` | "least privilege role", "role assignment" |
97
+ | Azure Compliance | `skills/azure-compliance/` | "compliance scan", "security audit", "azqr" |
98
+ | Entra ID | `skills/entra-app-registration/` | "app registration", "OAuth", "MSAL" |
99
+ | Azure Cost Optimization | `skills/azure-cost-optimization/` | "optimize Azure costs", "reduce spending" |
100
+ | Azure Cloud Migration | `skills/azure-cloud-migrate/` | "migrate Lambda to Azure", "cross-cloud" |
101
+ | Azure Diagnostics | `skills/azure-diagnostics/` | "troubleshoot container apps", "debug production" |
102
+ | Azure Resource Lookup | `skills/azure-resource-lookup/` | "list my VMs", "find resources" |
103
+ | Azure Resource Visualizer | `skills/azure-resource-visualizer/` | "architecture diagram", "visualize resources" |
104
+
105
+ ## Development Conventions
106
+
107
+ ### Tech Stack
108
+ - **React 19** with Server Components, Server Actions, `use`, `useOptimistic`
109
+ - **Next.js App Router** with streaming, Suspense, parallel routes
110
+ - **TypeScript** in strict mode, Zod for runtime validation
111
+ - **Styling**: Tailwind CSS with `class-variance-authority` (cva)
112
+
113
+ ### Code Patterns
114
+
115
+ **Server Components as default** - Only add `'use client'` when needed for interactivity:
116
+ ```typescript
117
+ // Server Component (default)
118
+ export default async function Page() {
119
+ const data = await fetchData();
120
+ return <Display data={data} />;
121
+ }
122
+
123
+ // Client Component (when needed)
124
+ 'use client';
125
+ export function InteractiveWidget() { ... }
126
+ ```
127
+
128
+ **Server Actions for mutations**:
129
+ ```typescript
130
+ 'use server';
131
+ export async function updateItem(formData: FormData) {
132
+ const parsed = Schema.safeParse(Object.fromEntries(formData));
133
+ if (!parsed.success) return { error: 'Invalid input' };
134
+ // mutation logic
135
+ revalidatePath('/path');
136
+ }
137
+ ```
138
+
139
+ ### Quality Standards
140
+ - WCAG 2.1 AA accessibility compliance
141
+ - Core Web Vitals in green (LCP < 2.5s, FID < 100ms, CLS < 0.1)
142
+ - Full TypeScript coverage, no `any`
143
+ - Unit tests for utilities, integration tests for features
144
+
145
+ ## IDEO Design Thinking Integration
146
+
147
+ Apply human-centered design methodology across agent workflows:
148
+
149
+ | Phase | Agent | Activities |
150
+ |-------|-------|------------|
151
+ | **Empathize** | `@researcher` | User interviews, observation, pain point discovery |
152
+ | **Define** | `@product-manager` | Problem framing, requirements, priorities, success metrics |
153
+ | **Ideate** | `@ux-designer` | Component specs, design tokens, interaction patterns |
154
+ | **Prototype** | `@developer` | Build to learn, rapid iteration, feature spikes |
155
+ | **Test** | `@tester` | Validate assumptions, accessibility audits, performance |
156
+
157
+ Balance the three lenses: **Desirability** (user wants), **Feasibility** (technically possible), **Viability** (sustainable for business).
158
+
159
+ ## React/Next.js Performance Patterns
160
+
161
+ Critical optimizations from [.github/skills/vercel-react-best-practices/AGENTS.md](.github/skills/vercel-react-best-practices/AGENTS.md):
162
+
163
+ ### Eliminate Waterfalls (CRITICAL)
164
+ ```typescript
165
+ // Sequential: 3 round trips
166
+ const user = await fetchUser();
167
+ const posts = await fetchPosts();
168
+ const comments = await fetchComments();
169
+
170
+ // ✅ Parallel: 1 round trip
171
+ const [user, posts, comments] = await Promise.all([
172
+ fetchUser(), fetchPosts(), fetchComments()
173
+ ]);
174
+ ```
175
+
176
+ ### Strategic Suspense Boundaries
177
+ ```tsx
178
+ // Wrapper renders immediately, data streams in
179
+ function Page() {
180
+ return (
181
+ <div>
182
+ <Header />
183
+ <Suspense fallback={<Skeleton />}>
184
+ <DataDisplay /> {/* Only this awaits data */}
185
+ </Suspense>
186
+ <Footer />
187
+ </div>
188
+ );
189
+ }
190
+ ```
191
+
192
+ ### Bundle Size Optimization
193
+ - **Avoid barrel imports**: `import { Check } from 'lucide-react'` → `import Check from 'lucide-react/dist/esm/icons/check'`
194
+ - **Dynamic imports**: Use `next/dynamic` for heavy components (Monaco, charts)
195
+ - **Defer non-critical**: Load analytics/tracking after hydration with `ssr: false`
196
+
197
+ ### Server Action Security
198
+ Always authenticate inside Server Actions—they're public endpoints:
199
+ ```typescript
200
+ 'use server';
201
+ export async function deleteUser(userId: string) {
202
+ const session = await verifySession();
203
+ if (!session || session.user.id !== userId) throw unauthorized();
204
+ // proceed with mutation
205
+ }
206
+ ```
207
+
208
+ ## Workflow Patterns
209
+
210
+ ### New Feature Flow
211
+ 1. `@Beth` analyzes request, proposes workflow
212
+ 2. `@product-manager` defines WHAT (requirements, priorities, success metrics)
213
+ 3. `@researcher` validates user needs (optional)
214
+ 4. `@ux-designer` specifies HOW (component specs, tokens, accessibility)
215
+ 5. `@developer` → implements in React/TypeScript
216
+ 6. `@security-reviewer` → audits for vulnerabilities
217
+ 7. `@tester` verifies quality
218
+
219
+ ### Quick Commands
220
+ ```
221
+ @Beth Plan a feature for [description]
222
+ @product-manager Create a PRD for [feature]
223
+ @developer Implement [component/feature]
224
+ @tester Write tests for [component]
225
+ ```
226
+
227
+ ## Branch Discipline
228
+
229
+ All non-trivial work happens on **epic branches** (`epic/<epic-id>`). See `AGENTS.md` for the full Branch Discipline rules.
230
+
231
+ Key points:
232
+ - **Every new chat session creates a fresh epic branch from `main`** — Beth does this automatically before any work begins
233
+ - Beth correlates every request to an epic and ensures the correct branch is checked out before work begins
234
+ - Epic branches are named `epic/<epic-id>` (e.g., `epic/beth-abc123`)
235
+ - All commits use the prefix `<epic-id>: description`
236
+ - Subagents inherit the epic branch and must verify before making changes
237
+ - Multiple Beth instances work on different epic branches to avoid conflicts
238
+ - **When landing the plane, Beth pushes the branch and creates a PR to `main`** via GitHub MCP
239
+
240
+ ## File Naming Conventions
241
+
242
+ - Agents: `.github/agents/<name>.agent.md`
243
+ - Skills: `.github/skills/<skill-name>/SKILL.md`
244
+ - Components: `components/<Name>/<Name>.tsx` with `index.tsx` barrel
245
+ - Server Actions: `lib/actions/<domain>.ts`
246
+ - Data fetching: `lib/data/<domain>.ts`
@@ -0,0 +1,12 @@
1
+ {
2
+ "mcpServers": {
3
+ "context7": {
4
+ "type": "sse",
5
+ "tools": [
6
+ "resolve-library-id",
7
+ "get-library-docs"
8
+ ],
9
+ "url": "https://mcp.context7.com/mcp"
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,68 @@
1
+ # Dependabot configuration for automated dependency updates
2
+ # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates
3
+
4
+ version: 2
5
+ updates:
6
+ # npm ecosystem - production and dev dependencies
7
+ - package-ecosystem: "npm"
8
+ directory: "/"
9
+ schedule:
10
+ interval: "weekly"
11
+ day: "monday"
12
+ time: "09:00"
13
+ timezone: "America/New_York"
14
+ # Group minor/patch updates to reduce PR noise
15
+ groups:
16
+ production-dependencies:
17
+ patterns:
18
+ - "*"
19
+ exclude-patterns:
20
+ - "@types/*"
21
+ - "eslint*"
22
+ - "prettier*"
23
+ - "typescript"
24
+ - "vitest"
25
+ - "@vitest/*"
26
+ update-types:
27
+ - "minor"
28
+ - "patch"
29
+ dev-dependencies:
30
+ patterns:
31
+ - "@types/*"
32
+ - "eslint*"
33
+ - "prettier*"
34
+ - "typescript"
35
+ - "vitest"
36
+ - "@vitest/*"
37
+ update-types:
38
+ - "minor"
39
+ - "patch"
40
+ # Limit open PRs to avoid overwhelming maintainers
41
+ open-pull-requests-limit: 10
42
+ # Labels for easy filtering
43
+ labels:
44
+ - "dependencies"
45
+ - "automated"
46
+ # Commit message format
47
+ commit-message:
48
+ prefix: "deps"
49
+ include: "scope"
50
+ # Reviewers for dependency PRs
51
+ # reviewers:
52
+ # - "username"
53
+
54
+ # GitHub Actions
55
+ - package-ecosystem: "github-actions"
56
+ directory: "/"
57
+ schedule:
58
+ interval: "weekly"
59
+ day: "monday"
60
+ time: "09:00"
61
+ timezone: "America/New_York"
62
+ labels:
63
+ - "dependencies"
64
+ - "github-actions"
65
+ - "automated"
66
+ commit-message:
67
+ prefix: "ci"
68
+ open-pull-requests-limit: 5