beth-copilot 1.1.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/README.md +121 -132
  3. package/assets/beth-questioning.png +0 -0
  4. package/assets/yellowstone-beth.png +0 -0
  5. package/bin/cli.js +359 -445
  6. package/dist/__tests__/inject-skills.test.d.ts +9 -0
  7. package/dist/__tests__/inject-skills.test.d.ts.map +1 -0
  8. package/dist/__tests__/inject-skills.test.js +143 -0
  9. package/dist/__tests__/inject-skills.test.js.map +1 -0
  10. package/dist/__tests__/skills/disambiguation.test.d.ts +10 -0
  11. package/dist/__tests__/skills/disambiguation.test.d.ts.map +1 -0
  12. package/dist/__tests__/skills/disambiguation.test.js +192 -0
  13. package/dist/__tests__/skills/disambiguation.test.js.map +1 -0
  14. package/dist/__tests__/skills/hook-injection.test.d.ts +11 -0
  15. package/dist/__tests__/skills/hook-injection.test.d.ts.map +1 -0
  16. package/dist/__tests__/skills/hook-injection.test.js +173 -0
  17. package/dist/__tests__/skills/hook-injection.test.js.map +1 -0
  18. package/dist/__tests__/skills/mapping-completeness.test.d.ts +17 -0
  19. package/dist/__tests__/skills/mapping-completeness.test.d.ts.map +1 -0
  20. package/dist/__tests__/skills/mapping-completeness.test.js +281 -0
  21. package/dist/__tests__/skills/mapping-completeness.test.js.map +1 -0
  22. package/dist/__tests__/skills/pipeline-integration.test.d.ts +18 -0
  23. package/dist/__tests__/skills/pipeline-integration.test.d.ts.map +1 -0
  24. package/dist/__tests__/skills/pipeline-integration.test.js +234 -0
  25. package/dist/__tests__/skills/pipeline-integration.test.js.map +1 -0
  26. package/dist/__tests__/skills/skill-routing.test.d.ts +15 -0
  27. package/dist/__tests__/skills/skill-routing.test.d.ts.map +1 -0
  28. package/dist/__tests__/skills/skill-routing.test.js +723 -0
  29. package/dist/__tests__/skills/skill-routing.test.js.map +1 -0
  30. package/dist/__tests__/skills/trigger-coverage.test.d.ts +24 -0
  31. package/dist/__tests__/skills/trigger-coverage.test.d.ts.map +1 -0
  32. package/dist/__tests__/skills/trigger-coverage.test.js +746 -0
  33. package/dist/__tests__/skills/trigger-coverage.test.js.map +1 -0
  34. package/dist/__tests__/smoke.test.js +13 -0
  35. package/dist/__tests__/smoke.test.js.map +1 -1
  36. package/dist/__tests__/verify-skills.test.d.ts +9 -0
  37. package/dist/__tests__/verify-skills.test.d.ts.map +1 -0
  38. package/dist/__tests__/verify-skills.test.js +78 -0
  39. package/dist/__tests__/verify-skills.test.js.map +1 -0
  40. package/dist/cli/commands/beads.e2e.test.d.ts +4 -2
  41. package/dist/cli/commands/beads.e2e.test.d.ts.map +1 -1
  42. package/dist/cli/commands/beads.e2e.test.js +97 -38
  43. package/dist/cli/commands/beads.e2e.test.js.map +1 -1
  44. package/dist/cli/commands/cli-edge-cases.e2e.test.js +1 -1
  45. package/dist/cli/commands/cli-edge-cases.e2e.test.js.map +1 -1
  46. package/dist/cli/commands/close.d.ts +11 -46
  47. package/dist/cli/commands/close.d.ts.map +1 -1
  48. package/dist/cli/commands/close.e2e.test.d.ts +4 -20
  49. package/dist/cli/commands/close.e2e.test.d.ts.map +1 -1
  50. package/dist/cli/commands/close.e2e.test.js +23 -204
  51. package/dist/cli/commands/close.e2e.test.js.map +1 -1
  52. package/dist/cli/commands/close.js +26 -240
  53. package/dist/cli/commands/close.js.map +1 -1
  54. package/dist/cli/commands/close.test.d.ts +7 -9
  55. package/dist/cli/commands/close.test.d.ts.map +1 -1
  56. package/dist/cli/commands/close.test.js +44 -424
  57. package/dist/cli/commands/close.test.js.map +1 -1
  58. package/dist/cli/commands/doctor.d.ts +16 -22
  59. package/dist/cli/commands/doctor.d.ts.map +1 -1
  60. package/dist/cli/commands/doctor.e2e.test.js +3 -59
  61. package/dist/cli/commands/doctor.e2e.test.js.map +1 -1
  62. package/dist/cli/commands/doctor.js +87 -103
  63. package/dist/cli/commands/doctor.js.map +1 -1
  64. package/dist/cli/commands/doctor.test.js +120 -229
  65. package/dist/cli/commands/doctor.test.js.map +1 -1
  66. package/dist/cli/commands/framework-isolation.test.d.ts +1 -1
  67. package/dist/cli/commands/framework-isolation.test.js +2 -3
  68. package/dist/cli/commands/framework-isolation.test.js.map +1 -1
  69. package/dist/cli/commands/help.e2e.test.js +1 -5
  70. package/dist/cli/commands/help.e2e.test.js.map +1 -1
  71. package/dist/cli/commands/init-logic.e2e.test.js +114 -2
  72. package/dist/cli/commands/init-logic.e2e.test.js.map +1 -1
  73. package/dist/cli/commands/init.test.js +4 -21
  74. package/dist/cli/commands/init.test.js.map +1 -1
  75. package/dist/cli/commands/land.d.ts +3 -15
  76. package/dist/cli/commands/land.d.ts.map +1 -1
  77. package/dist/cli/commands/land.js +13 -68
  78. package/dist/cli/commands/land.js.map +1 -1
  79. package/dist/cli/commands/land.test.d.ts +0 -1
  80. package/dist/cli/commands/land.test.d.ts.map +1 -1
  81. package/dist/cli/commands/land.test.js +2 -57
  82. package/dist/cli/commands/land.test.js.map +1 -1
  83. package/dist/cli/commands/mcp.e2e.test.js +28 -3
  84. package/dist/cli/commands/mcp.e2e.test.js.map +1 -1
  85. package/dist/cli/commands/pipeline.e2e.test.js +23 -26
  86. package/dist/cli/commands/pipeline.e2e.test.js.map +1 -1
  87. package/dist/cli/commands/pre-push-guard.d.ts +2 -12
  88. package/dist/cli/commands/pre-push-guard.d.ts.map +1 -1
  89. package/dist/cli/commands/pre-push-guard.e2e.test.js +1 -1
  90. package/dist/cli/commands/pre-push-guard.e2e.test.js.map +1 -1
  91. package/dist/cli/commands/pre-push-guard.js +2 -47
  92. package/dist/cli/commands/pre-push-guard.js.map +1 -1
  93. package/dist/cli/commands/pre-push-guard.test.d.ts +0 -1
  94. package/dist/cli/commands/pre-push-guard.test.d.ts.map +1 -1
  95. package/dist/cli/commands/pre-push-guard.test.js +15 -98
  96. package/dist/cli/commands/pre-push-guard.test.js.map +1 -1
  97. package/dist/cli/commands/quickstart-expanded.e2e.test.d.ts +1 -1
  98. package/dist/cli/commands/quickstart-expanded.e2e.test.js +3 -30
  99. package/dist/cli/commands/quickstart-expanded.e2e.test.js.map +1 -1
  100. package/dist/cli/commands/quickstart.d.ts +0 -1
  101. package/dist/cli/commands/quickstart.d.ts.map +1 -1
  102. package/dist/cli/commands/quickstart.js +2 -60
  103. package/dist/cli/commands/quickstart.js.map +1 -1
  104. package/dist/cli/commands/quickstart.test.js +10 -104
  105. package/dist/cli/commands/quickstart.test.js.map +1 -1
  106. package/dist/cli/commands/uninstall.test.d.ts +5 -0
  107. package/dist/cli/commands/uninstall.test.d.ts.map +1 -0
  108. package/dist/cli/commands/uninstall.test.js +223 -0
  109. package/dist/cli/commands/uninstall.test.js.map +1 -0
  110. package/dist/cli/commands/update.d.ts +35 -0
  111. package/dist/cli/commands/update.d.ts.map +1 -0
  112. package/dist/cli/commands/update.e2e.test.d.ts +24 -0
  113. package/dist/cli/commands/update.e2e.test.d.ts.map +1 -0
  114. package/dist/cli/commands/update.e2e.test.js +238 -0
  115. package/dist/cli/commands/update.e2e.test.js.map +1 -0
  116. package/dist/cli/commands/update.js +255 -0
  117. package/dist/cli/commands/update.js.map +1 -0
  118. package/dist/core/agents/frontmatter.test.js +1 -1
  119. package/dist/core/agents/frontmatter.test.js.map +1 -1
  120. package/dist/core/agents/handoffs.test.js +1 -1
  121. package/dist/core/agents/handoffs.test.js.map +1 -1
  122. package/dist/core/agents/loader.d.ts +4 -2
  123. package/dist/core/agents/loader.d.ts.map +1 -1
  124. package/dist/core/agents/loader.js +5 -3
  125. package/dist/core/agents/loader.js.map +1 -1
  126. package/dist/core/agents/loader.test.js +42 -4
  127. package/dist/core/agents/loader.test.js.map +1 -1
  128. package/dist/core/agents/suite.test.js +8 -7
  129. package/dist/core/agents/suite.test.js.map +1 -1
  130. package/dist/core/agents/tools.test.js +10 -8
  131. package/dist/core/agents/tools.test.js.map +1 -1
  132. package/dist/core/agents/types.test.js +1 -1
  133. package/dist/core/agents/types.test.js.map +1 -1
  134. package/dist/core/skills/loader.test.js +1 -1
  135. package/dist/core/skills/loader.test.js.map +1 -1
  136. package/dist/index.d.ts +0 -1
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +0 -2
  139. package/dist/index.js.map +1 -1
  140. package/dist/lib/pathValidation.d.ts +0 -5
  141. package/dist/lib/pathValidation.d.ts.map +1 -1
  142. package/dist/lib/pathValidation.js +0 -11
  143. package/dist/lib/pathValidation.js.map +1 -1
  144. package/dist/lib/pathValidation.test.js +2 -14
  145. package/dist/lib/pathValidation.test.js.map +1 -1
  146. package/package.json +3 -6
  147. package/sbom.json +259 -371
  148. package/templates/.github/agents/beth.agent.md +194 -122
  149. package/templates/.github/agents/developer.agent.md +30 -22
  150. package/templates/.github/agents/product-manager.agent.md +15 -6
  151. package/templates/.github/agents/researcher.agent.md +10 -7
  152. package/templates/.github/agents/security-reviewer.agent.md +16 -7
  153. package/templates/.github/agents/tester.agent.md +16 -8
  154. package/templates/.github/agents/ux-designer.agent.md +12 -9
  155. package/templates/.github/copilot-instructions.md +33 -4
  156. package/templates/.github/copilot-mcp-config.json +12 -0
  157. package/templates/.github/dependabot.yml +68 -0
  158. package/templates/.github/hooks/scripts/inject-skills.mjs +139 -0
  159. package/templates/.github/hooks/scripts/verify-skills.mjs +47 -0
  160. package/templates/.github/hooks/skill-enforcement.json +18 -0
  161. package/templates/.github/pull_request_template.md +48 -0
  162. package/templates/.github/skills/framer-components/SKILL.md +0 -0
  163. package/templates/.github/skills/prd/SKILL.md +0 -0
  164. package/templates/.github/skills/security-analysis/SKILL.md +798 -798
  165. package/templates/.github/skills/shadcn-ui/SKILL.md +561 -561
  166. package/templates/.github/skills/vercel-react-best-practices/AGENTS.md +0 -0
  167. package/templates/.github/skills/vercel-react-best-practices/SKILL.md +0 -0
  168. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -0
  169. package/templates/.github/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -0
  170. package/templates/.github/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -0
  171. package/templates/.github/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -0
  172. package/templates/.github/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -0
  173. package/templates/.github/skills/vercel-react-best-practices/rules/async-parallel.md +0 -0
  174. package/templates/.github/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -0
  175. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -0
  176. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -0
  177. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -0
  178. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -0
  179. package/templates/.github/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -0
  180. package/templates/.github/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -0
  181. package/templates/.github/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -0
  182. package/templates/.github/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -0
  183. package/templates/.github/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -0
  184. package/templates/.github/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -0
  185. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -0
  186. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -0
  187. package/templates/.github/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -0
  188. package/templates/.github/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -0
  189. package/templates/.github/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -0
  190. package/templates/.github/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -0
  191. package/templates/.github/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -0
  192. package/templates/.github/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -0
  193. package/templates/.github/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -0
  194. package/templates/.github/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -0
  195. package/templates/.github/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -0
  196. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -0
  197. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
  198. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -0
  199. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -0
  200. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -0
  201. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
  202. package/templates/.github/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -0
  203. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -0
  204. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -0
  205. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -0
  206. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -0
  207. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -0
  208. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -0
  209. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -0
  210. package/templates/.github/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -0
  211. package/templates/.github/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -0
  212. package/templates/.github/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -0
  213. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -0
  214. package/templates/.github/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -0
  215. package/templates/.github/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -0
  216. package/templates/.github/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -0
  217. package/templates/.github/skills/vercel-react-best-practices/rules/server-serialization.md +0 -0
  218. package/templates/.github/skills/web-design-guidelines/SKILL.md +0 -0
  219. package/templates/.vscode/settings.json +16 -16
  220. package/templates/AGENTS.md +59 -98
  221. package/templates/Backlog.md +80 -80
  222. package/templates/mcp.json.example +8 -0
  223. package/assets/beth-portrait-small.txt +0 -13
  224. package/assets/beth-portrait.txt +0 -60
  225. package/bin/beth-animation.sh +0 -155
  226. package/bin/lib/animation.js +0 -189
  227. package/bin/lib/pathValidation.js +0 -233
  228. package/bin/lib/pathValidation.test.js +0 -280
@@ -2,7 +2,6 @@
2
2
  name: product-manager
3
3
  description: Expert product manager for IDEO-style digital products. Specializes in product vision, user stories, roadmaps, and stakeholder alignment for React/TypeScript/Next.js applications. Use when defining features, prioritizing work, writing requirements, or making product decisions.
4
4
  model: Claude Opus 4.6
5
- infer: true
6
5
  tools:
7
6
  - codebase
8
7
  - readFile
@@ -25,13 +24,23 @@ You are an expert product manager on an IDEO-style team, specializing in human-c
25
24
 
26
25
  ## Work Tracking & Coordination
27
26
 
28
- **Follow the workflow in `AGENTS.md`** — dual tracking (beads + Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with an issue ID, that's your contract: deliver and close it with `npx beth-copilot close <id>`.
27
+ **Follow the workflow in `AGENTS.md`** — task tracking (Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with a task ID, that's your contract: deliver and mark it done with `backlog task edit <id> -s "Done" --plain`.
29
28
 
30
- ## Skills
29
+ ## MANDATORY Skills (Non-Negotiable)
31
30
 
32
- When the user asks to create a PRD, product requirements document, or spec out a feature:
33
- 1. Read and follow the instructions in `.github/skills/prd/SKILL.md`
34
- 2. Apply the PRD template and workflow defined there
31
+ **BEFORE doing ANY work**, you MUST load your required skills. This is not optional.
32
+ Skills are also injected by the `SubagentStart` hook when you are spawned as a subagent.
33
+
34
+ **Required skills — load ALL of these before responding to any request:**
35
+
36
+ 1. **Read** `.github/skills/prd/SKILL.md` — PRD template, requirements framework, user story format
37
+
38
+ After reading, confirm which key patterns you will apply before proceeding with work.
39
+
40
+ ### Conditional Skills (load when relevant)
41
+
42
+ - **Azure Cost Optimization**: For Azure cost analysis, read `.github/skills/azure-cost-optimization/SKILL.md`
43
+ - **Azure Cloud Migration**: For cross-cloud migration planning, read `.github/skills/azure-cloud-migrate/SKILL.md`
35
44
 
36
45
  ## Core Philosophy
37
46
 
@@ -2,7 +2,6 @@
2
2
  name: researcher
3
3
  description: Expert UX and market researcher for IDEO-style human-centered design. Specializes in user interviews, competitive analysis, analytics interpretation, and insight synthesis. Use when validating assumptions, understanding users, analyzing competition, or interpreting usage data.
4
4
  model: Claude Opus 4.6
5
- infer: true
6
5
  tools:
7
6
  - codebase
8
7
  - readFile
@@ -24,14 +23,18 @@ You are an expert UX and market researcher on an IDEO-style team, specializing i
24
23
 
25
24
  ## Work Tracking & Coordination
26
25
 
27
- **Follow the workflow in `AGENTS.md`** — dual tracking (beads + Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with an issue ID, that's your contract: deliver and close it with `npx beth-copilot close <id>`.
26
+ **Follow the workflow in `AGENTS.md`** — task tracking (Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with a task ID, that's your contract: deliver and mark it done with `backlog task edit <id> -s "Done" --plain`.
28
27
 
29
- ## Skills
28
+ ## MANDATORY Skills (Non-Negotiable)
30
29
 
31
- When conducting web research, competitive analysis, or market research:
32
- 1. Read and follow the instructions in `.github/skills/web-search/SKILL.md`
33
- 2. Verify MCP availability (Brave Search) before attempting web queries
34
- 3. Fall back to `fetch` tool for specific URLs if MCP is unavailable
30
+ **BEFORE doing ANY work**, you MUST load your required skills. This is not optional.
31
+ Skills are also injected by the `SubagentStart` hook when you are spawned as a subagent.
32
+
33
+ **Required skills load ALL of these before responding to any request:**
34
+
35
+ 1. **Read** `.github/skills/web-search/SKILL.md` — Web research methodology, Brave Search MCP usage, fallback patterns
36
+
37
+ After reading, verify MCP availability (Brave Search) and confirm your research approach.
35
38
 
36
39
  ## Core Philosophy
37
40
 
@@ -2,7 +2,6 @@
2
2
  name: security-reviewer
3
3
  description: Enterprise security specialist applying Azure Well-Architected Framework and OWASP standards. Performs threat modeling, vulnerability assessment, compliance verification, and security architecture review. Use for security audits, penetration testing guidance, secure code review, or compliance validation.
4
4
  model: GPT 5.3-codex
5
- infer: true
6
5
  tools:
7
6
  - codebase
8
7
  - readFile
@@ -29,14 +28,24 @@ You are an enterprise security specialist operating at the intersection of appli
29
28
 
30
29
  ## Work Tracking & Coordination
31
30
 
32
- **Follow the workflow in `AGENTS.md`** — dual tracking (beads + Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with an issue ID, that's your contract: deliver and close it with `npx beth-copilot close <id>`.
31
+ **Follow the workflow in `AGENTS.md`** — task tracking (Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with a task ID, that's your contract: deliver and mark it done with `backlog task edit <id> -s "Done" --plain`.
33
32
 
34
- ## Skills
33
+ ## MANDATORY Skills (Non-Negotiable)
35
34
 
36
- When performing security analysis, threat modeling, or compliance reviews:
37
- 1. Read and follow the instructions in `.github/skills/security-analysis/SKILL.md`
38
- 2. Apply the Azure WAF Security checklist (SE:01-SE:12)
39
- 3. Reference OWASP Top 10:2025 for vulnerability classification
35
+ **BEFORE doing ANY work**, you MUST load your required skills. This is not optional.
36
+ Skills are also injected by the `SubagentStart` hook when you are spawned as a subagent.
37
+
38
+ **Required skills load ALL of these before responding to any request:**
39
+
40
+ 1. **Read** `.github/skills/security-analysis/SKILL.md` — OWASP Top 10:2025, Azure WAF Security (SE:01-SE:12), threat modeling framework
41
+
42
+ After reading, confirm which key patterns you will apply before proceeding with work.
43
+
44
+ ### Conditional Skills (load when relevant)
45
+
46
+ - **Azure RBAC**: For role assignments and least-privilege, read `.github/skills/azure-rbac/SKILL.md`
47
+ - **Azure Compliance**: For compliance auditing and best practices, read `.github/skills/azure-compliance/SKILL.md`
48
+ - **Entra ID**: For app registration, OAuth, and MSAL, read `.github/skills/entra-app-registration/SKILL.md`
40
49
 
41
50
  ## Core Philosophy: Zero Trust
42
51
 
@@ -2,7 +2,6 @@
2
2
  name: tester
3
3
  description: Expert QA engineer for IDEO-style React/TypeScript/Next.js applications. Specializes in testing strategies, accessibility auditing, performance testing, and quality assurance. Use for testing features, writing test suites, validating accessibility, or performance auditing.
4
4
  model: Claude Opus 4.6
5
- infer: true
6
5
  tools:
7
6
  - codebase
8
7
  - readFile
@@ -30,14 +29,23 @@ You are an expert QA engineer on an IDEO-style team, ensuring cutting-edge React
30
29
 
31
30
  ## Work Tracking & Coordination
32
31
 
33
- **Follow the workflow in `AGENTS.md`** — dual tracking (beads + Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with an issue ID, that's your contract: deliver and close it with `npx beth-copilot close <id>`.
32
+ **Follow the workflow in `AGENTS.md`** — task tracking (Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with a task ID, that's your contract: deliver and mark it done with `backlog task edit <id> -s "Done" --plain`.
34
33
 
35
- ## Skills
34
+ ## MANDATORY Skills (Non-Negotiable)
36
35
 
37
- When auditing UI design, accessibility compliance, or visual consistency:
38
- 1. Read and follow the instructions in `.github/skills/web-design-guidelines/SKILL.md`
39
- 2. Fetch latest guidelines from the source URL before each review
40
- 3. Report findings in the file:line format specified in the skill
36
+ **BEFORE doing ANY work**, you MUST load your required skills. This is not optional.
37
+ Skills are also injected by the `SubagentStart` hook when you are spawned as a subagent.
38
+
39
+ **Required skills load ALL of these before responding to any request:**
40
+
41
+ 1. **Read** `.github/skills/web-design-guidelines/SKILL.md` — Web interface compliance, accessibility audit format, design guideline rules
42
+
43
+ After reading, fetch the latest guidelines from the source URL and confirm which key rules you will apply.
44
+
45
+ ### Conditional Skills (load when relevant)
46
+
47
+ - **Azure Diagnostics**: For production debugging and log analysis, read `.github/skills/azure-diagnostics/SKILL.md`
48
+ - **App Insights**: For telemetry and APM verification, read `.github/skills/appinsights-instrumentation/SKILL.md`
41
49
 
42
50
  ## Core Philosophy
43
51
 
@@ -462,7 +470,7 @@ When creating tests for any issue — whether spawned by Beth or self-initiated:
462
470
  - `npm test` passes with 0 failures
463
471
  - New test files are committed alongside the code
464
472
  - Test report documents: total, passed, failed, skipped
465
- - Any failures create follow-up issues via `bd create`
473
+ - Any failures create follow-up tasks via `backlog task create`
466
474
 
467
475
  ## Testing Best Practices
468
476
 
@@ -2,7 +2,6 @@
2
2
  name: ux-designer
3
3
  description: Expert UX/UI designer for IDEO-style digital experiences. Specializes in interaction design, design systems, component patterns, and accessibility for React/TypeScript/Next.js applications. Use when designing interfaces, defining patterns, creating prototypes, or establishing design systems.
4
4
  model: Claude Opus 4.6
5
- infer: true
6
5
  tools:
7
6
  - codebase
8
7
  - readFile
@@ -24,17 +23,20 @@ You are an expert UX/UI designer on an IDEO-style team, creating cutting-edge us
24
23
 
25
24
  ## Work Tracking & Coordination
26
25
 
27
- **Follow the workflow in `AGENTS.md`** — dual tracking (beads + Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with an issue ID, that's your contract: deliver and close it with `npx beth-copilot close <id>`.
26
+ **Follow the workflow in `AGENTS.md`** — task tracking (Backlog.md), session startup, and team coordination protocols all live there. If Beth spawned you with a task ID, that's your contract: deliver and mark it done with `backlog task edit <id> -s "Done" --plain`.
28
27
 
29
- ## Skills
28
+ ## MANDATORY Skills (Non-Negotiable)
30
29
 
31
- When designing Framer components or specifying property controls for design system components:
32
- 1. Read and follow the instructions in `.github/skills/framer-components/SKILL.md`
33
- 2. Reference the ControlType options when specifying component properties
30
+ **BEFORE doing ANY work**, you MUST load your required skills. This is not optional.
31
+ Skills are also injected by the `SubagentStart` hook when you are spawned as a subagent.
34
32
 
35
- When reviewing UI for web design guideline compliance:
36
- 1. Read and follow the instructions in `.github/skills/web-design-guidelines/SKILL.md`
37
- 2. Check component specs against the fetched guideline rules
33
+ **Required skills load ALL of these before responding to any request:**
34
+
35
+ 1. **Read** `.github/skills/framer-components/SKILL.md` — Framer component patterns, ControlType options, property controls
36
+ 2. **Read** `.github/skills/web-design-guidelines/SKILL.md` — Web interface compliance rules, accessibility, design audit format
37
+ 3. **Read** `.github/prompts/ui-ux-pro-max/PROMPT.md` — UI UX Pro Max design intelligence: 67 styles, 161 color palettes, 57 font pairings, industry-specific design system generation
38
+
39
+ After reading, confirm which key patterns you will apply before proceeding with work.
38
40
 
39
41
  ## Core Philosophy
40
42
 
@@ -64,6 +66,7 @@ Deep knowledge loaded via skills on-demand:
64
66
  |--------|--------|
65
67
  | Framer Components & Property Controls | `.github/skills/framer-components/SKILL.md` |
66
68
  | Web Design & Accessibility Guidelines | `.github/skills/web-design-guidelines/SKILL.md` |
69
+ | UI UX Pro Max Design Intelligence | `.github/prompts/ui-ux-pro-max/PROMPT.md` |
67
70
 
68
71
  Core competencies (always available): interaction design, user flows, micro-interactions, typography systems, color theory, layout/spacing, design tokens, component library architecture, theming, WCAG 2.1 AA compliance, screen reader optimization, keyboard navigation, focus management.
69
72
 
@@ -2,6 +2,14 @@
2
2
 
3
3
  A ruthless, hyper-competent AI orchestrator for GitHub Copilot multi-agent workflows.
4
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
+
5
13
  ## Architecture Overview
6
14
 
7
15
  ```
@@ -71,7 +79,28 @@ Skills are domain-knowledge modules in `.github/skills/<name>/SKILL.md`. Agents
71
79
  | Vercel React Best Practices | `skills/vercel-react-best-practices/` | React/Next.js performance work |
72
80
  | Web Design Guidelines | `skills/web-design-guidelines/` | "review my UI", "check accessibility" |
73
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 |
74
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" |
75
104
 
76
105
  ## Development Conventions
77
106
 
@@ -120,8 +149,8 @@ Apply human-centered design methodology across agent workflows:
120
149
  | Phase | Agent | Activities |
121
150
  |-------|-------|------------|
122
151
  | **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 |
152
+ | **Define** | `@product-manager` | Problem framing, requirements, priorities, success metrics |
153
+ | **Ideate** | `@ux-designer` | Component specs, design tokens, interaction patterns |
125
154
  | **Prototype** | `@developer` | Build to learn, rapid iteration, feature spikes |
126
155
  | **Test** | `@tester` | Validate assumptions, accessibility audits, performance |
127
156
 
@@ -180,9 +209,9 @@ export async function deleteUser(userId: string) {
180
209
 
181
210
  ### New Feature Flow
182
211
  1. `@Beth` → analyzes request, proposes workflow
183
- 2. `@product-manager` → defines requirements (uses PRD skill)
212
+ 2. `@product-manager` → defines WHAT (requirements, priorities, success metrics)
184
213
  3. `@researcher` → validates user needs (optional)
185
- 4. `@ux-designer` → designs interface
214
+ 4. `@ux-designer` → specifies HOW (component specs, tokens, accessibility)
186
215
  5. `@developer` → implements in React/TypeScript
187
216
  6. `@security-reviewer` → audits for vulnerabilities
188
217
  7. `@tester` → verifies quality
@@ -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
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Skill Enforcement Hook — SubagentStart
5
+ *
6
+ * Deterministic skill injection for subagents. When Beth (or any orchestrator)
7
+ * spawns a subagent, this hook maps agent_type → required skills and injects
8
+ * them as additionalContext. The LLM doesn't decide whether to load skills —
9
+ * this script does.
10
+ *
11
+ * Hook event: SubagentStart
12
+ * Input: JSON via stdin with agent_type field
13
+ * Output: JSON to stdout with hookSpecificOutput.additionalContext
14
+ */
15
+
16
+ import { readFileSync } from 'node:fs';
17
+ import { join } from 'node:path';
18
+
19
+ // ─── Agent → Required Skills mapping ───────────────────────────────────────
20
+ // This is the single source of truth for which skills each agent MUST use.
21
+ // Update this map when adding new agents or skills.
22
+ const AGENT_SKILLS = {
23
+ 'ux-designer': {
24
+ inject: ['.github/skills/web-design-guidelines/SKILL.md'],
25
+ readFile: [
26
+ '.github/skills/framer-components/SKILL.md',
27
+ '.github/prompts/ui-ux-pro-max/PROMPT.md',
28
+ ],
29
+ },
30
+ 'developer': {
31
+ inject: ['.github/skills/vercel-react-best-practices/SKILL.md'],
32
+ readFile: [
33
+ '.github/skills/shadcn-ui/SKILL.md',
34
+ '.github/skills/vercel-react-best-practices/AGENTS.md',
35
+ ],
36
+ },
37
+ 'product-manager': {
38
+ inject: [],
39
+ readFile: ['.github/skills/prd/SKILL.md'],
40
+ },
41
+ 'security-reviewer': {
42
+ inject: [],
43
+ readFile: ['.github/skills/security-analysis/SKILL.md'],
44
+ },
45
+ 'tester': {
46
+ inject: ['.github/skills/web-design-guidelines/SKILL.md'],
47
+ readFile: [],
48
+ },
49
+ 'researcher': {
50
+ inject: ['.github/skills/web-search/SKILL.md'],
51
+ readFile: [],
52
+ },
53
+ };
54
+
55
+ // ─── Read stdin ────────────────────────────────────────────────────────────
56
+ let input = '';
57
+ for await (const chunk of process.stdin) {
58
+ input += chunk;
59
+ }
60
+
61
+ let data;
62
+ try {
63
+ data = JSON.parse(input);
64
+ } catch {
65
+ // If we can't parse input, exit cleanly — don't block the subagent
66
+ process.stdout.write(JSON.stringify({ continue: true }));
67
+ process.exit(0);
68
+ }
69
+
70
+ const agentType = data.agent_type;
71
+ const cwd = data.cwd || process.cwd();
72
+
73
+ // ─── Look up skills for this agent ─────────────────────────────────────────
74
+ const config = AGENT_SKILLS[agentType];
75
+
76
+ if (!config) {
77
+ // Unknown agent type — no skill enforcement needed
78
+ process.stdout.write(JSON.stringify({ continue: true }));
79
+ process.exit(0);
80
+ }
81
+
82
+ // ─── Build the injection context ───────────────────────────────────────────
83
+ const sections = [];
84
+
85
+ sections.push('## ⚡ SKILL ENFORCEMENT — INJECTED BY HOOK (NON-NEGOTIABLE)');
86
+ sections.push('');
87
+ sections.push(`You are \`${agentType}\`. The following skills are MANDATORY for your work.`);
88
+ sections.push('This context was injected by the skill-enforcement hook — not by your own instructions.');
89
+ sections.push('You MUST apply these rules. Ignoring them is a compliance violation.');
90
+ sections.push('');
91
+
92
+ // Inject small skill files directly into context
93
+ if (config.inject.length > 0) {
94
+ sections.push('### Skills loaded into context (apply immediately):');
95
+ sections.push('');
96
+
97
+ for (const skillPath of config.inject) {
98
+ try {
99
+ const fullPath = join(cwd, skillPath);
100
+ const content = readFileSync(fullPath, 'utf8');
101
+ sections.push(`#### ${skillPath}`);
102
+ sections.push('');
103
+ sections.push(content);
104
+ sections.push('');
105
+ } catch (err) {
106
+ sections.push(`> ⚠️ WARNING: Could not load ${skillPath}: ${err.message}`);
107
+ sections.push(`> You MUST use readFile to load this skill manually.`);
108
+ sections.push('');
109
+ }
110
+ }
111
+ }
112
+
113
+ // For larger skill files, mandate readFile as first action
114
+ if (config.readFile.length > 0) {
115
+ sections.push('### Skills to load via readFile (MANDATORY FIRST STEP):');
116
+ sections.push('');
117
+ sections.push('Before doing ANY work, you MUST read these files using the readFile tool:');
118
+ sections.push('');
119
+ for (const skillPath of config.readFile) {
120
+ sections.push(`- \`${skillPath}\``);
121
+ }
122
+ sections.push('');
123
+ sections.push('Do NOT proceed with any task until you have read ALL of the above files.');
124
+ sections.push('After reading, briefly confirm which key patterns you will apply.');
125
+ sections.push('');
126
+ }
127
+
128
+ const additionalContext = sections.join('\n');
129
+
130
+ // ─── Output ────────────────────────────────────────────────────────────────
131
+ const output = {
132
+ continue: true,
133
+ hookSpecificOutput: {
134
+ hookEventName: 'SubagentStart',
135
+ additionalContext,
136
+ },
137
+ };
138
+
139
+ process.stdout.write(JSON.stringify(output));
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Skill Verification Hook — SubagentStop / Agent Stop
5
+ *
6
+ * Fires when a subagent completes (or an agent stops). On the FIRST stop
7
+ * attempt, blocks and asks the agent to confirm it applied its required skills.
8
+ * On the second attempt (stop_hook_active=true), lets it through.
9
+ *
10
+ * This is a lightweight enforcement gate — not a deep analysis of output.
11
+ * The real skill content was already injected by inject-skills.mjs at
12
+ * SubagentStart. This hook just forces a final compliance check.
13
+ */
14
+
15
+ let input = '';
16
+ for await (const chunk of process.stdin) {
17
+ input += chunk;
18
+ }
19
+
20
+ let data;
21
+ try {
22
+ data = JSON.parse(input);
23
+ } catch {
24
+ process.stdout.write(JSON.stringify({ continue: true }));
25
+ process.exit(0);
26
+ }
27
+
28
+ // If this is a retry (stop_hook_active), let the agent complete
29
+ if (data.stop_hook_active) {
30
+ process.stdout.write(JSON.stringify({ continue: true }));
31
+ process.exit(0);
32
+ }
33
+
34
+ // First stop attempt — block and request skill verification
35
+ const output = {
36
+ hookSpecificOutput: {
37
+ hookEventName: 'Stop',
38
+ decision: 'block',
39
+ reason:
40
+ 'Before finishing: Confirm you loaded and applied your MANDATORY skills. ' +
41
+ 'If you were injected skill context by the enforcement hook, state which ' +
42
+ 'key rules you applied. If you did NOT read your required skill files, ' +
43
+ 'read them now and verify your work complies.',
44
+ },
45
+ };
46
+
47
+ process.stdout.write(JSON.stringify(output));
@@ -0,0 +1,18 @@
1
+ {
2
+ "hooks": {
3
+ "SubagentStart": [
4
+ {
5
+ "type": "command",
6
+ "command": "node .github/hooks/scripts/inject-skills.mjs",
7
+ "timeout": 15
8
+ }
9
+ ],
10
+ "SubagentStop": [
11
+ {
12
+ "type": "command",
13
+ "command": "node .github/hooks/scripts/verify-skills.mjs",
14
+ "timeout": 10
15
+ }
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,48 @@
1
+ ## Summary
2
+
3
+ <!-- Brief description of what this PR does -->
4
+
5
+ ## Changes
6
+
7
+ <!-- List the specific changes made -->
8
+ -
9
+ -
10
+ -
11
+
12
+ ## Testing
13
+
14
+ <!-- How you tested these changes -->
15
+
16
+ - [ ] All existing tests pass (`npm test`)
17
+ - [ ] Added new tests for new functionality
18
+ - [ ] Manually verified changes work as expected
19
+
20
+ ## Security Considerations
21
+
22
+ <!-- Any security implications or mitigations -->
23
+
24
+ - [ ] No new security risks introduced
25
+ - [ ] Security scans pass (`npm audit`, gitleaks)
26
+ - [ ] Follows security guidelines in [SECURITY.md](../SECURITY.md)
27
+
28
+ ## Documentation
29
+
30
+ - [ ] Updated relevant docs
31
+ - [ ] Added/updated code comments
32
+ - [ ] Updated [CHANGELOG.md](../CHANGELOG.md)
33
+
34
+ ## Checklist
35
+
36
+ - [ ] Branch follows naming convention (see [CONTRIBUTING.md](../CONTRIBUTING.md))
37
+ - [ ] Tests pass
38
+ - [ ] Security scans pass
39
+ - [ ] Documentation updated
40
+ - [ ] Commit messages are descriptive
41
+ - [ ] Changes are minimal and focused
42
+
43
+ ---
44
+
45
+ <!--
46
+ For more details, see CONTRIBUTING.md
47
+ Questions? Open a discussion or ask in the PR comments.
48
+ -->
File without changes