gentyr 1.3.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 (599) hide show
  1. package/.claude/agents/antipattern-hunter.md +176 -0
  2. package/.claude/agents/code-reviewer.md +205 -0
  3. package/.claude/agents/code-writer.md +154 -0
  4. package/.claude/agents/deputy-cto.md +309 -0
  5. package/.claude/agents/feedback-agent.md +101 -0
  6. package/.claude/agents/investigator.md +136 -0
  7. package/.claude/agents/product-manager.md +97 -0
  8. package/.claude/agents/project-manager.md +116 -0
  9. package/.claude/agents/repo-hygiene-expert.md +626 -0
  10. package/.claude/agents/secret-manager.md +324 -0
  11. package/.claude/agents/test-writer.md +354 -0
  12. package/.claude/commands/configure-personas.md +144 -0
  13. package/.claude/commands/cto-report.md +36 -0
  14. package/.claude/commands/demo.md +89 -0
  15. package/.claude/commands/deputy-cto.md +345 -0
  16. package/.claude/commands/hotfix.md +31 -0
  17. package/.claude/commands/overdrive-gentyr.md +167 -0
  18. package/.claude/commands/product-manager.md +32 -0
  19. package/.claude/commands/push-migrations.md +86 -0
  20. package/.claude/commands/push-secrets.md +97 -0
  21. package/.claude/commands/services.json.example +30 -0
  22. package/.claude/commands/setup-gentyr.md +396 -0
  23. package/.claude/commands/show.md +42 -0
  24. package/.claude/commands/spawn-tasks.md +79 -0
  25. package/.claude/commands/toggle-automation-gentyr.md +75 -0
  26. package/.claude/commands/toggle-product-manager.md +19 -0
  27. package/.claude/commands/triage.md +69 -0
  28. package/.claude/hooks/README.md +686 -0
  29. package/.claude/hooks/__tests__/README.md +129 -0
  30. package/.claude/hooks/agent-tracker.js +434 -0
  31. package/.claude/hooks/antipattern-hunter-hook.js +401 -0
  32. package/.claude/hooks/api-key-watcher.js +289 -0
  33. package/.claude/hooks/block-no-verify.js +301 -0
  34. package/.claude/hooks/bypass-approval-hook.js +313 -0
  35. package/.claude/hooks/compliance-checker.js +1309 -0
  36. package/.claude/hooks/config-reader.js +143 -0
  37. package/.claude/hooks/credential-file-guard.js +1139 -0
  38. package/.claude/hooks/credential-health-check.js +168 -0
  39. package/.claude/hooks/credential-sync-hook.js +79 -0
  40. package/.claude/hooks/cto-notification-hook.js +656 -0
  41. package/.claude/hooks/feedback-launcher.js +424 -0
  42. package/.claude/hooks/feedback-orchestrator.js +367 -0
  43. package/.claude/hooks/gentyr-splash.js +47 -0
  44. package/.claude/hooks/gentyr-sync.js +389 -0
  45. package/.claude/hooks/hourly-automation.js +3340 -0
  46. package/.claude/hooks/key-sync.js +899 -0
  47. package/.claude/hooks/lib/approval-utils.js +731 -0
  48. package/.claude/hooks/lib/feature-branch-helper.js +102 -0
  49. package/.claude/hooks/lib/worktree-manager.js +330 -0
  50. package/.claude/hooks/mapping-validator.js +285 -0
  51. package/.claude/hooks/plan-executor.js +398 -0
  52. package/.claude/hooks/playwright-cli-guard.js +104 -0
  53. package/.claude/hooks/playwright-health-check.js +71 -0
  54. package/.claude/hooks/pre-commit-review.js +725 -0
  55. package/.claude/hooks/prompts/local-spec-enforcement.md +310 -0
  56. package/.claude/hooks/prompts/mapping-fix.md +92 -0
  57. package/.claude/hooks/prompts/mapping-review.md +140 -0
  58. package/.claude/hooks/prompts/schema-mapper.md +185 -0
  59. package/.claude/hooks/prompts/spec-enforcement.md +233 -0
  60. package/.claude/hooks/protected-action-approval-hook.js +336 -0
  61. package/.claude/hooks/protected-action-gate.js +562 -0
  62. package/.claude/hooks/protected-actions.json +208 -0
  63. package/.claude/hooks/protected-actions.json.template +122 -0
  64. package/.claude/hooks/quota-monitor.js +490 -0
  65. package/.claude/hooks/reporters/jest-failure-reporter.js +401 -0
  66. package/.claude/hooks/reporters/playwright-failure-reporter.js +446 -0
  67. package/.claude/hooks/reporters/vitest-failure-reporter.js +443 -0
  68. package/.claude/hooks/schema-mapper-hook.js +544 -0
  69. package/.claude/hooks/secret-leak-detector.js +216 -0
  70. package/.claude/hooks/session-reviver.js +514 -0
  71. package/.claude/hooks/slash-command-prefetch.js +1145 -0
  72. package/.claude/hooks/stale-work-detector.js +205 -0
  73. package/.claude/hooks/stop-continue-hook.js +414 -0
  74. package/.claude/hooks/todo-maintenance.js +522 -0
  75. package/.claude/hooks/todo-processing-prompt.md +75 -0
  76. package/.claude/hooks/usage-optimizer.js +791 -0
  77. package/.claude/mcp/README.md +246 -0
  78. package/.claude/settings.json.template +168 -0
  79. package/.mcp.json.template +207 -0
  80. package/CLAUDE.md +340 -0
  81. package/CLAUDE.md.gentyr-section +89 -0
  82. package/LICENSE +21 -0
  83. package/README.md +297 -0
  84. package/cli/commands/init.js +471 -0
  85. package/cli/commands/migrate.js +132 -0
  86. package/cli/commands/protect.js +271 -0
  87. package/cli/commands/scaffold.js +48 -0
  88. package/cli/commands/status.js +133 -0
  89. package/cli/commands/sync.js +101 -0
  90. package/cli/commands/uninstall.js +207 -0
  91. package/cli/index.js +111 -0
  92. package/cli/lib/config-gen.js +214 -0
  93. package/cli/lib/resolve-framework.js +97 -0
  94. package/cli/lib/state.js +140 -0
  95. package/cli/lib/symlinks.js +260 -0
  96. package/docs/AUTOMATION-SYSTEMS.md +484 -0
  97. package/docs/BINARY-PATCHING.md +212 -0
  98. package/docs/CHANGELOG.md +2830 -0
  99. package/docs/CREDENTIAL-DETECTION.md +151 -0
  100. package/docs/CTO-DASHBOARD.md +476 -0
  101. package/docs/DEPLOYMENT-FLOW.md +477 -0
  102. package/docs/DEVELOPER.md +116 -0
  103. package/docs/Executive.md +372 -0
  104. package/docs/SECRET-PATHS.md +77 -0
  105. package/docs/SETUP-GUIDE.md +419 -0
  106. package/docs/STACK.md +109 -0
  107. package/docs/TESTING.md +440 -0
  108. package/docs/assets/claude-logo.svg +3 -0
  109. package/docs/sessions/2026-01-24-spec-suite-implementation.md +190 -0
  110. package/docs/sessions/2026-02-15-feedback-e2e-audit.md +484 -0
  111. package/docs/sessions/2026-02-20-credential-rotation-experiments.md +340 -0
  112. package/docs/sessions/TEST-COVERAGE-REPORT-2026-02-20.md +168 -0
  113. package/docs/shared/EPHEMERAL-STATE-FILES.md +115 -0
  114. package/docs/shared/PROTECTION-SYSTEM.md +341 -0
  115. package/husky/post-commit +10 -0
  116. package/husky/pre-commit +40 -0
  117. package/husky/pre-push +94 -0
  118. package/package.json +43 -0
  119. package/packages/cto-dashboard/package-lock.json +3510 -0
  120. package/packages/cto-dashboard/package.json +41 -0
  121. package/packages/cto-dashboard/pnpm-lock.yaml +2168 -0
  122. package/packages/mcp-servers/dist/__testUtils__/fixtures.d.ts +220 -0
  123. package/packages/mcp-servers/dist/__testUtils__/fixtures.d.ts.map +1 -0
  124. package/packages/mcp-servers/dist/__testUtils__/fixtures.js +376 -0
  125. package/packages/mcp-servers/dist/__testUtils__/fixtures.js.map +1 -0
  126. package/packages/mcp-servers/dist/__testUtils__/index.d.ts +121 -0
  127. package/packages/mcp-servers/dist/__testUtils__/index.d.ts.map +1 -0
  128. package/packages/mcp-servers/dist/__testUtils__/index.js +180 -0
  129. package/packages/mcp-servers/dist/__testUtils__/index.js.map +1 -0
  130. package/packages/mcp-servers/dist/__testUtils__/schemas.d.ts +84 -0
  131. package/packages/mcp-servers/dist/__testUtils__/schemas.d.ts.map +1 -0
  132. package/packages/mcp-servers/dist/__testUtils__/schemas.js +309 -0
  133. package/packages/mcp-servers/dist/__testUtils__/schemas.js.map +1 -0
  134. package/packages/mcp-servers/dist/agent-reports/index.d.ts +7 -0
  135. package/packages/mcp-servers/dist/agent-reports/index.d.ts.map +1 -0
  136. package/packages/mcp-servers/dist/agent-reports/index.js +8 -0
  137. package/packages/mcp-servers/dist/agent-reports/index.js.map +1 -0
  138. package/packages/mcp-servers/dist/agent-reports/server.d.ts +22 -0
  139. package/packages/mcp-servers/dist/agent-reports/server.d.ts.map +1 -0
  140. package/packages/mcp-servers/dist/agent-reports/server.js +535 -0
  141. package/packages/mcp-servers/dist/agent-reports/server.js.map +1 -0
  142. package/packages/mcp-servers/dist/agent-reports/types.d.ts +258 -0
  143. package/packages/mcp-servers/dist/agent-reports/types.d.ts.map +1 -0
  144. package/packages/mcp-servers/dist/agent-reports/types.js +81 -0
  145. package/packages/mcp-servers/dist/agent-reports/types.js.map +1 -0
  146. package/packages/mcp-servers/dist/agent-tracker/index.d.ts +5 -0
  147. package/packages/mcp-servers/dist/agent-tracker/index.d.ts.map +1 -0
  148. package/packages/mcp-servers/dist/agent-tracker/index.js +5 -0
  149. package/packages/mcp-servers/dist/agent-tracker/index.js.map +1 -0
  150. package/packages/mcp-servers/dist/agent-tracker/server.d.ts +12 -0
  151. package/packages/mcp-servers/dist/agent-tracker/server.d.ts.map +1 -0
  152. package/packages/mcp-servers/dist/agent-tracker/server.js +919 -0
  153. package/packages/mcp-servers/dist/agent-tracker/server.js.map +1 -0
  154. package/packages/mcp-servers/dist/agent-tracker/types.d.ts +328 -0
  155. package/packages/mcp-servers/dist/agent-tracker/types.d.ts.map +1 -0
  156. package/packages/mcp-servers/dist/agent-tracker/types.js +128 -0
  157. package/packages/mcp-servers/dist/agent-tracker/types.js.map +1 -0
  158. package/packages/mcp-servers/dist/chrome-bridge/browser-tips.d.ts +27 -0
  159. package/packages/mcp-servers/dist/chrome-bridge/browser-tips.d.ts.map +1 -0
  160. package/packages/mcp-servers/dist/chrome-bridge/browser-tips.js +167 -0
  161. package/packages/mcp-servers/dist/chrome-bridge/browser-tips.js.map +1 -0
  162. package/packages/mcp-servers/dist/chrome-bridge/index.d.ts +6 -0
  163. package/packages/mcp-servers/dist/chrome-bridge/index.d.ts.map +1 -0
  164. package/packages/mcp-servers/dist/chrome-bridge/index.js +6 -0
  165. package/packages/mcp-servers/dist/chrome-bridge/index.js.map +1 -0
  166. package/packages/mcp-servers/dist/chrome-bridge/server.d.ts +13 -0
  167. package/packages/mcp-servers/dist/chrome-bridge/server.d.ts.map +1 -0
  168. package/packages/mcp-servers/dist/chrome-bridge/server.js +959 -0
  169. package/packages/mcp-servers/dist/chrome-bridge/server.js.map +1 -0
  170. package/packages/mcp-servers/dist/chrome-bridge/types.d.ts +41 -0
  171. package/packages/mcp-servers/dist/chrome-bridge/types.d.ts.map +1 -0
  172. package/packages/mcp-servers/dist/chrome-bridge/types.js +8 -0
  173. package/packages/mcp-servers/dist/chrome-bridge/types.js.map +1 -0
  174. package/packages/mcp-servers/dist/cloudflare/index.d.ts +8 -0
  175. package/packages/mcp-servers/dist/cloudflare/index.d.ts.map +1 -0
  176. package/packages/mcp-servers/dist/cloudflare/index.js +8 -0
  177. package/packages/mcp-servers/dist/cloudflare/index.js.map +1 -0
  178. package/packages/mcp-servers/dist/cloudflare/server.d.ts +16 -0
  179. package/packages/mcp-servers/dist/cloudflare/server.d.ts.map +1 -0
  180. package/packages/mcp-servers/dist/cloudflare/server.js +253 -0
  181. package/packages/mcp-servers/dist/cloudflare/server.js.map +1 -0
  182. package/packages/mcp-servers/dist/cloudflare/types.d.ts +141 -0
  183. package/packages/mcp-servers/dist/cloudflare/types.d.ts.map +1 -0
  184. package/packages/mcp-servers/dist/cloudflare/types.js +53 -0
  185. package/packages/mcp-servers/dist/cloudflare/types.js.map +1 -0
  186. package/packages/mcp-servers/dist/codecov/index.d.ts +7 -0
  187. package/packages/mcp-servers/dist/codecov/index.d.ts.map +1 -0
  188. package/packages/mcp-servers/dist/codecov/index.js +7 -0
  189. package/packages/mcp-servers/dist/codecov/index.js.map +1 -0
  190. package/packages/mcp-servers/dist/codecov/server.d.ts +21 -0
  191. package/packages/mcp-servers/dist/codecov/server.d.ts.map +1 -0
  192. package/packages/mcp-servers/dist/codecov/server.js +376 -0
  193. package/packages/mcp-servers/dist/codecov/server.js.map +1 -0
  194. package/packages/mcp-servers/dist/codecov/types.d.ts +269 -0
  195. package/packages/mcp-servers/dist/codecov/types.d.ts.map +1 -0
  196. package/packages/mcp-servers/dist/codecov/types.js +128 -0
  197. package/packages/mcp-servers/dist/codecov/types.js.map +1 -0
  198. package/packages/mcp-servers/dist/cto-report/index.d.ts +9 -0
  199. package/packages/mcp-servers/dist/cto-report/index.d.ts.map +1 -0
  200. package/packages/mcp-servers/dist/cto-report/index.js +9 -0
  201. package/packages/mcp-servers/dist/cto-report/index.js.map +1 -0
  202. package/packages/mcp-servers/dist/cto-report/server.d.ts +14 -0
  203. package/packages/mcp-servers/dist/cto-report/server.d.ts.map +1 -0
  204. package/packages/mcp-servers/dist/cto-report/server.js +859 -0
  205. package/packages/mcp-servers/dist/cto-report/server.js.map +1 -0
  206. package/packages/mcp-servers/dist/cto-report/types.d.ts +213 -0
  207. package/packages/mcp-servers/dist/cto-report/types.d.ts.map +1 -0
  208. package/packages/mcp-servers/dist/cto-report/types.js +29 -0
  209. package/packages/mcp-servers/dist/cto-report/types.js.map +1 -0
  210. package/packages/mcp-servers/dist/cto-reports/index.d.ts +7 -0
  211. package/packages/mcp-servers/dist/cto-reports/index.d.ts.map +1 -0
  212. package/packages/mcp-servers/dist/cto-reports/index.js +8 -0
  213. package/packages/mcp-servers/dist/cto-reports/index.js.map +1 -0
  214. package/packages/mcp-servers/dist/cto-reports/server.d.ts +20 -0
  215. package/packages/mcp-servers/dist/cto-reports/server.d.ts.map +1 -0
  216. package/packages/mcp-servers/dist/cto-reports/server.js +538 -0
  217. package/packages/mcp-servers/dist/cto-reports/server.js.map +1 -0
  218. package/packages/mcp-servers/dist/cto-reports/types.d.ts +236 -0
  219. package/packages/mcp-servers/dist/cto-reports/types.d.ts.map +1 -0
  220. package/packages/mcp-servers/dist/cto-reports/types.js +77 -0
  221. package/packages/mcp-servers/dist/cto-reports/types.js.map +1 -0
  222. package/packages/mcp-servers/dist/deputy-cto/index.d.ts +7 -0
  223. package/packages/mcp-servers/dist/deputy-cto/index.d.ts.map +1 -0
  224. package/packages/mcp-servers/dist/deputy-cto/index.js +8 -0
  225. package/packages/mcp-servers/dist/deputy-cto/index.js.map +1 -0
  226. package/packages/mcp-servers/dist/deputy-cto/server.d.ts +23 -0
  227. package/packages/mcp-servers/dist/deputy-cto/server.d.ts.map +1 -0
  228. package/packages/mcp-servers/dist/deputy-cto/server.js +1700 -0
  229. package/packages/mcp-servers/dist/deputy-cto/server.js.map +1 -0
  230. package/packages/mcp-servers/dist/deputy-cto/types.d.ts +439 -0
  231. package/packages/mcp-servers/dist/deputy-cto/types.d.ts.map +1 -0
  232. package/packages/mcp-servers/dist/deputy-cto/types.js +102 -0
  233. package/packages/mcp-servers/dist/deputy-cto/types.js.map +1 -0
  234. package/packages/mcp-servers/dist/elastic-logs/index.d.ts +5 -0
  235. package/packages/mcp-servers/dist/elastic-logs/index.d.ts.map +1 -0
  236. package/packages/mcp-servers/dist/elastic-logs/index.js +5 -0
  237. package/packages/mcp-servers/dist/elastic-logs/index.js.map +1 -0
  238. package/packages/mcp-servers/dist/elastic-logs/server.d.ts +18 -0
  239. package/packages/mcp-servers/dist/elastic-logs/server.d.ts.map +1 -0
  240. package/packages/mcp-servers/dist/elastic-logs/server.js +259 -0
  241. package/packages/mcp-servers/dist/elastic-logs/server.js.map +1 -0
  242. package/packages/mcp-servers/dist/elastic-logs/types.d.ts +107 -0
  243. package/packages/mcp-servers/dist/elastic-logs/types.d.ts.map +1 -0
  244. package/packages/mcp-servers/dist/elastic-logs/types.js +31 -0
  245. package/packages/mcp-servers/dist/elastic-logs/types.js.map +1 -0
  246. package/packages/mcp-servers/dist/feedback-explorer/index.d.ts +2 -0
  247. package/packages/mcp-servers/dist/feedback-explorer/index.d.ts.map +1 -0
  248. package/packages/mcp-servers/dist/feedback-explorer/index.js +2 -0
  249. package/packages/mcp-servers/dist/feedback-explorer/index.js.map +1 -0
  250. package/packages/mcp-servers/dist/feedback-explorer/server.d.ts +21 -0
  251. package/packages/mcp-servers/dist/feedback-explorer/server.d.ts.map +1 -0
  252. package/packages/mcp-servers/dist/feedback-explorer/server.js +580 -0
  253. package/packages/mcp-servers/dist/feedback-explorer/server.js.map +1 -0
  254. package/packages/mcp-servers/dist/feedback-explorer/types.d.ts +331 -0
  255. package/packages/mcp-servers/dist/feedback-explorer/types.d.ts.map +1 -0
  256. package/packages/mcp-servers/dist/feedback-explorer/types.js +40 -0
  257. package/packages/mcp-servers/dist/feedback-explorer/types.js.map +1 -0
  258. package/packages/mcp-servers/dist/feedback-reporter/index.d.ts +9 -0
  259. package/packages/mcp-servers/dist/feedback-reporter/index.d.ts.map +1 -0
  260. package/packages/mcp-servers/dist/feedback-reporter/index.js +9 -0
  261. package/packages/mcp-servers/dist/feedback-reporter/index.js.map +1 -0
  262. package/packages/mcp-servers/dist/feedback-reporter/server.d.ts +36 -0
  263. package/packages/mcp-servers/dist/feedback-reporter/server.d.ts.map +1 -0
  264. package/packages/mcp-servers/dist/feedback-reporter/server.js +392 -0
  265. package/packages/mcp-servers/dist/feedback-reporter/server.js.map +1 -0
  266. package/packages/mcp-servers/dist/feedback-reporter/types.d.ts +152 -0
  267. package/packages/mcp-servers/dist/feedback-reporter/types.d.ts.map +1 -0
  268. package/packages/mcp-servers/dist/feedback-reporter/types.js +67 -0
  269. package/packages/mcp-servers/dist/feedback-reporter/types.js.map +1 -0
  270. package/packages/mcp-servers/dist/github/index.d.ts +7 -0
  271. package/packages/mcp-servers/dist/github/index.d.ts.map +1 -0
  272. package/packages/mcp-servers/dist/github/index.js +7 -0
  273. package/packages/mcp-servers/dist/github/index.js.map +1 -0
  274. package/packages/mcp-servers/dist/github/server.d.ts +15 -0
  275. package/packages/mcp-servers/dist/github/server.d.ts.map +1 -0
  276. package/packages/mcp-servers/dist/github/server.js +686 -0
  277. package/packages/mcp-servers/dist/github/server.js.map +1 -0
  278. package/packages/mcp-servers/dist/github/types.d.ts +660 -0
  279. package/packages/mcp-servers/dist/github/types.d.ts.map +1 -0
  280. package/packages/mcp-servers/dist/github/types.js +209 -0
  281. package/packages/mcp-servers/dist/github/types.js.map +1 -0
  282. package/packages/mcp-servers/dist/index.d.ts +30 -0
  283. package/packages/mcp-servers/dist/index.d.ts.map +1 -0
  284. package/packages/mcp-servers/dist/index.js +32 -0
  285. package/packages/mcp-servers/dist/index.js.map +1 -0
  286. package/packages/mcp-servers/dist/makerkit-docs/index.d.ts +5 -0
  287. package/packages/mcp-servers/dist/makerkit-docs/index.d.ts.map +1 -0
  288. package/packages/mcp-servers/dist/makerkit-docs/index.js +5 -0
  289. package/packages/mcp-servers/dist/makerkit-docs/index.js.map +1 -0
  290. package/packages/mcp-servers/dist/makerkit-docs/server.d.ts +15 -0
  291. package/packages/mcp-servers/dist/makerkit-docs/server.d.ts.map +1 -0
  292. package/packages/mcp-servers/dist/makerkit-docs/server.js +252 -0
  293. package/packages/mcp-servers/dist/makerkit-docs/server.js.map +1 -0
  294. package/packages/mcp-servers/dist/makerkit-docs/types.d.ts +74 -0
  295. package/packages/mcp-servers/dist/makerkit-docs/types.d.ts.map +1 -0
  296. package/packages/mcp-servers/dist/makerkit-docs/types.js +20 -0
  297. package/packages/mcp-servers/dist/makerkit-docs/types.js.map +1 -0
  298. package/packages/mcp-servers/dist/onepassword/index.d.ts +2 -0
  299. package/packages/mcp-servers/dist/onepassword/index.d.ts.map +1 -0
  300. package/packages/mcp-servers/dist/onepassword/index.js +2 -0
  301. package/packages/mcp-servers/dist/onepassword/index.js.map +1 -0
  302. package/packages/mcp-servers/dist/onepassword/server.d.ts +2 -0
  303. package/packages/mcp-servers/dist/onepassword/server.d.ts.map +1 -0
  304. package/packages/mcp-servers/dist/onepassword/server.js +159 -0
  305. package/packages/mcp-servers/dist/onepassword/server.js.map +1 -0
  306. package/packages/mcp-servers/dist/onepassword/types.d.ts +55 -0
  307. package/packages/mcp-servers/dist/onepassword/types.d.ts.map +1 -0
  308. package/packages/mcp-servers/dist/onepassword/types.js +22 -0
  309. package/packages/mcp-servers/dist/onepassword/types.js.map +1 -0
  310. package/packages/mcp-servers/dist/playwright/helpers.d.ts +20 -0
  311. package/packages/mcp-servers/dist/playwright/helpers.d.ts.map +1 -0
  312. package/packages/mcp-servers/dist/playwright/helpers.js +31 -0
  313. package/packages/mcp-servers/dist/playwright/helpers.js.map +1 -0
  314. package/packages/mcp-servers/dist/playwright/index.d.ts +5 -0
  315. package/packages/mcp-servers/dist/playwright/index.d.ts.map +1 -0
  316. package/packages/mcp-servers/dist/playwright/index.js +5 -0
  317. package/packages/mcp-servers/dist/playwright/index.js.map +1 -0
  318. package/packages/mcp-servers/dist/playwright/server.d.ts +13 -0
  319. package/packages/mcp-servers/dist/playwright/server.d.ts.map +1 -0
  320. package/packages/mcp-servers/dist/playwright/server.js +1201 -0
  321. package/packages/mcp-servers/dist/playwright/server.js.map +1 -0
  322. package/packages/mcp-servers/dist/playwright/types.d.ts +216 -0
  323. package/packages/mcp-servers/dist/playwright/types.d.ts.map +1 -0
  324. package/packages/mcp-servers/dist/playwright/types.js +172 -0
  325. package/packages/mcp-servers/dist/playwright/types.js.map +1 -0
  326. package/packages/mcp-servers/dist/playwright-feedback/browser-manager.d.ts +39 -0
  327. package/packages/mcp-servers/dist/playwright-feedback/browser-manager.d.ts.map +1 -0
  328. package/packages/mcp-servers/dist/playwright-feedback/browser-manager.js +71 -0
  329. package/packages/mcp-servers/dist/playwright-feedback/browser-manager.js.map +1 -0
  330. package/packages/mcp-servers/dist/playwright-feedback/index.d.ts +5 -0
  331. package/packages/mcp-servers/dist/playwright-feedback/index.d.ts.map +1 -0
  332. package/packages/mcp-servers/dist/playwright-feedback/index.js +5 -0
  333. package/packages/mcp-servers/dist/playwright-feedback/index.js.map +1 -0
  334. package/packages/mcp-servers/dist/playwright-feedback/server.d.ts +34 -0
  335. package/packages/mcp-servers/dist/playwright-feedback/server.d.ts.map +1 -0
  336. package/packages/mcp-servers/dist/playwright-feedback/server.js +538 -0
  337. package/packages/mcp-servers/dist/playwright-feedback/server.js.map +1 -0
  338. package/packages/mcp-servers/dist/playwright-feedback/types.d.ts +305 -0
  339. package/packages/mcp-servers/dist/playwright-feedback/types.d.ts.map +1 -0
  340. package/packages/mcp-servers/dist/playwright-feedback/types.js +123 -0
  341. package/packages/mcp-servers/dist/playwright-feedback/types.js.map +1 -0
  342. package/packages/mcp-servers/dist/product-manager/server.d.ts +17 -0
  343. package/packages/mcp-servers/dist/product-manager/server.d.ts.map +1 -0
  344. package/packages/mcp-servers/dist/product-manager/server.js +690 -0
  345. package/packages/mcp-servers/dist/product-manager/server.js.map +1 -0
  346. package/packages/mcp-servers/dist/product-manager/types.d.ts +286 -0
  347. package/packages/mcp-servers/dist/product-manager/types.d.ts.map +1 -0
  348. package/packages/mcp-servers/dist/product-manager/types.js +99 -0
  349. package/packages/mcp-servers/dist/product-manager/types.js.map +1 -0
  350. package/packages/mcp-servers/dist/programmatic-feedback/index.d.ts +7 -0
  351. package/packages/mcp-servers/dist/programmatic-feedback/index.d.ts.map +1 -0
  352. package/packages/mcp-servers/dist/programmatic-feedback/index.js +7 -0
  353. package/packages/mcp-servers/dist/programmatic-feedback/index.js.map +1 -0
  354. package/packages/mcp-servers/dist/programmatic-feedback/sandbox.d.ts +19 -0
  355. package/packages/mcp-servers/dist/programmatic-feedback/sandbox.d.ts.map +1 -0
  356. package/packages/mcp-servers/dist/programmatic-feedback/sandbox.js +174 -0
  357. package/packages/mcp-servers/dist/programmatic-feedback/sandbox.js.map +1 -0
  358. package/packages/mcp-servers/dist/programmatic-feedback/server.d.ts +35 -0
  359. package/packages/mcp-servers/dist/programmatic-feedback/server.d.ts.map +1 -0
  360. package/packages/mcp-servers/dist/programmatic-feedback/server.js +465 -0
  361. package/packages/mcp-servers/dist/programmatic-feedback/server.js.map +1 -0
  362. package/packages/mcp-servers/dist/programmatic-feedback/types.d.ts +127 -0
  363. package/packages/mcp-servers/dist/programmatic-feedback/types.d.ts.map +1 -0
  364. package/packages/mcp-servers/dist/programmatic-feedback/types.js +80 -0
  365. package/packages/mcp-servers/dist/programmatic-feedback/types.js.map +1 -0
  366. package/packages/mcp-servers/dist/render/index.d.ts +8 -0
  367. package/packages/mcp-servers/dist/render/index.d.ts.map +1 -0
  368. package/packages/mcp-servers/dist/render/index.js +8 -0
  369. package/packages/mcp-servers/dist/render/index.js.map +1 -0
  370. package/packages/mcp-servers/dist/render/server.d.ts +15 -0
  371. package/packages/mcp-servers/dist/render/server.d.ts.map +1 -0
  372. package/packages/mcp-servers/dist/render/server.js +428 -0
  373. package/packages/mcp-servers/dist/render/server.js.map +1 -0
  374. package/packages/mcp-servers/dist/render/types.d.ts +273 -0
  375. package/packages/mcp-servers/dist/render/types.d.ts.map +1 -0
  376. package/packages/mcp-servers/dist/render/types.js +102 -0
  377. package/packages/mcp-servers/dist/render/types.js.map +1 -0
  378. package/packages/mcp-servers/dist/resend/index.d.ts +7 -0
  379. package/packages/mcp-servers/dist/resend/index.d.ts.map +1 -0
  380. package/packages/mcp-servers/dist/resend/index.js +7 -0
  381. package/packages/mcp-servers/dist/resend/index.js.map +1 -0
  382. package/packages/mcp-servers/dist/resend/server.d.ts +15 -0
  383. package/packages/mcp-servers/dist/resend/server.d.ts.map +1 -0
  384. package/packages/mcp-servers/dist/resend/server.js +298 -0
  385. package/packages/mcp-servers/dist/resend/server.js.map +1 -0
  386. package/packages/mcp-servers/dist/resend/types.d.ts +222 -0
  387. package/packages/mcp-servers/dist/resend/types.d.ts.map +1 -0
  388. package/packages/mcp-servers/dist/resend/types.js +58 -0
  389. package/packages/mcp-servers/dist/resend/types.js.map +1 -0
  390. package/packages/mcp-servers/dist/review-queue/index.d.ts +6 -0
  391. package/packages/mcp-servers/dist/review-queue/index.d.ts.map +1 -0
  392. package/packages/mcp-servers/dist/review-queue/index.js +6 -0
  393. package/packages/mcp-servers/dist/review-queue/index.js.map +1 -0
  394. package/packages/mcp-servers/dist/review-queue/server.d.ts +17 -0
  395. package/packages/mcp-servers/dist/review-queue/server.d.ts.map +1 -0
  396. package/packages/mcp-servers/dist/review-queue/server.js +348 -0
  397. package/packages/mcp-servers/dist/review-queue/server.js.map +1 -0
  398. package/packages/mcp-servers/dist/review-queue/types.d.ts +162 -0
  399. package/packages/mcp-servers/dist/review-queue/types.d.ts.map +1 -0
  400. package/packages/mcp-servers/dist/review-queue/types.js +56 -0
  401. package/packages/mcp-servers/dist/review-queue/types.js.map +1 -0
  402. package/packages/mcp-servers/dist/secret-sync/server.d.ts +19 -0
  403. package/packages/mcp-servers/dist/secret-sync/server.d.ts.map +1 -0
  404. package/packages/mcp-servers/dist/secret-sync/server.js +1139 -0
  405. package/packages/mcp-servers/dist/secret-sync/server.js.map +1 -0
  406. package/packages/mcp-servers/dist/secret-sync/types.d.ts +442 -0
  407. package/packages/mcp-servers/dist/secret-sync/types.d.ts.map +1 -0
  408. package/packages/mcp-servers/dist/secret-sync/types.js +113 -0
  409. package/packages/mcp-servers/dist/secret-sync/types.js.map +1 -0
  410. package/packages/mcp-servers/dist/session-events/index.d.ts +5 -0
  411. package/packages/mcp-servers/dist/session-events/index.d.ts.map +1 -0
  412. package/packages/mcp-servers/dist/session-events/index.js +5 -0
  413. package/packages/mcp-servers/dist/session-events/index.js.map +1 -0
  414. package/packages/mcp-servers/dist/session-events/server.d.ts +11 -0
  415. package/packages/mcp-servers/dist/session-events/server.d.ts.map +1 -0
  416. package/packages/mcp-servers/dist/session-events/server.js +290 -0
  417. package/packages/mcp-servers/dist/session-events/server.js.map +1 -0
  418. package/packages/mcp-servers/dist/session-events/types.d.ts +213 -0
  419. package/packages/mcp-servers/dist/session-events/types.d.ts.map +1 -0
  420. package/packages/mcp-servers/dist/session-events/types.js +69 -0
  421. package/packages/mcp-servers/dist/session-events/types.js.map +1 -0
  422. package/packages/mcp-servers/dist/session-restart/index.d.ts +9 -0
  423. package/packages/mcp-servers/dist/session-restart/index.d.ts.map +1 -0
  424. package/packages/mcp-servers/dist/session-restart/index.js +9 -0
  425. package/packages/mcp-servers/dist/session-restart/index.js.map +1 -0
  426. package/packages/mcp-servers/dist/session-restart/server.d.ts +20 -0
  427. package/packages/mcp-servers/dist/session-restart/server.d.ts.map +1 -0
  428. package/packages/mcp-servers/dist/session-restart/server.js +411 -0
  429. package/packages/mcp-servers/dist/session-restart/server.js.map +1 -0
  430. package/packages/mcp-servers/dist/session-restart/types.d.ts +26 -0
  431. package/packages/mcp-servers/dist/session-restart/types.d.ts.map +1 -0
  432. package/packages/mcp-servers/dist/session-restart/types.js +16 -0
  433. package/packages/mcp-servers/dist/session-restart/types.js.map +1 -0
  434. package/packages/mcp-servers/dist/setup-helper/index.d.ts +5 -0
  435. package/packages/mcp-servers/dist/setup-helper/index.d.ts.map +1 -0
  436. package/packages/mcp-servers/dist/setup-helper/index.js +5 -0
  437. package/packages/mcp-servers/dist/setup-helper/index.js.map +1 -0
  438. package/packages/mcp-servers/dist/setup-helper/server.d.ts +14 -0
  439. package/packages/mcp-servers/dist/setup-helper/server.d.ts.map +1 -0
  440. package/packages/mcp-servers/dist/setup-helper/server.js +454 -0
  441. package/packages/mcp-servers/dist/setup-helper/server.js.map +1 -0
  442. package/packages/mcp-servers/dist/setup-helper/types.d.ts +81 -0
  443. package/packages/mcp-servers/dist/setup-helper/types.d.ts.map +1 -0
  444. package/packages/mcp-servers/dist/setup-helper/types.js +41 -0
  445. package/packages/mcp-servers/dist/setup-helper/types.js.map +1 -0
  446. package/packages/mcp-servers/dist/shared/audited-server.d.ts +31 -0
  447. package/packages/mcp-servers/dist/shared/audited-server.d.ts.map +1 -0
  448. package/packages/mcp-servers/dist/shared/audited-server.js +126 -0
  449. package/packages/mcp-servers/dist/shared/audited-server.js.map +1 -0
  450. package/packages/mcp-servers/dist/shared/constants.d.ts +26 -0
  451. package/packages/mcp-servers/dist/shared/constants.d.ts.map +1 -0
  452. package/packages/mcp-servers/dist/shared/constants.js +41 -0
  453. package/packages/mcp-servers/dist/shared/constants.js.map +1 -0
  454. package/packages/mcp-servers/dist/shared/index.d.ts +6 -0
  455. package/packages/mcp-servers/dist/shared/index.d.ts.map +1 -0
  456. package/packages/mcp-servers/dist/shared/index.js +6 -0
  457. package/packages/mcp-servers/dist/shared/index.js.map +1 -0
  458. package/packages/mcp-servers/dist/shared/readonly-db.d.ts +11 -0
  459. package/packages/mcp-servers/dist/shared/readonly-db.d.ts.map +1 -0
  460. package/packages/mcp-servers/dist/shared/readonly-db.js +47 -0
  461. package/packages/mcp-servers/dist/shared/readonly-db.js.map +1 -0
  462. package/packages/mcp-servers/dist/shared/resolve-framework.d.ts +20 -0
  463. package/packages/mcp-servers/dist/shared/resolve-framework.d.ts.map +1 -0
  464. package/packages/mcp-servers/dist/shared/resolve-framework.js +65 -0
  465. package/packages/mcp-servers/dist/shared/resolve-framework.js.map +1 -0
  466. package/packages/mcp-servers/dist/shared/server.d.ts +86 -0
  467. package/packages/mcp-servers/dist/shared/server.d.ts.map +1 -0
  468. package/packages/mcp-servers/dist/shared/server.js +291 -0
  469. package/packages/mcp-servers/dist/shared/server.js.map +1 -0
  470. package/packages/mcp-servers/dist/shared/types.d.ts +113 -0
  471. package/packages/mcp-servers/dist/shared/types.d.ts.map +1 -0
  472. package/packages/mcp-servers/dist/shared/types.js +36 -0
  473. package/packages/mcp-servers/dist/shared/types.js.map +1 -0
  474. package/packages/mcp-servers/dist/show/server.d.ts +12 -0
  475. package/packages/mcp-servers/dist/show/server.d.ts.map +1 -0
  476. package/packages/mcp-servers/dist/show/server.js +97 -0
  477. package/packages/mcp-servers/dist/show/server.js.map +1 -0
  478. package/packages/mcp-servers/dist/show/types.d.ts +19 -0
  479. package/packages/mcp-servers/dist/show/types.d.ts.map +1 -0
  480. package/packages/mcp-servers/dist/show/types.js +32 -0
  481. package/packages/mcp-servers/dist/show/types.js.map +1 -0
  482. package/packages/mcp-servers/dist/specs-browser/index.d.ts +5 -0
  483. package/packages/mcp-servers/dist/specs-browser/index.d.ts.map +1 -0
  484. package/packages/mcp-servers/dist/specs-browser/index.js +5 -0
  485. package/packages/mcp-servers/dist/specs-browser/index.js.map +1 -0
  486. package/packages/mcp-servers/dist/specs-browser/server.d.ts +13 -0
  487. package/packages/mcp-servers/dist/specs-browser/server.d.ts.map +1 -0
  488. package/packages/mcp-servers/dist/specs-browser/server.js +692 -0
  489. package/packages/mcp-servers/dist/specs-browser/server.js.map +1 -0
  490. package/packages/mcp-servers/dist/specs-browser/types.d.ts +337 -0
  491. package/packages/mcp-servers/dist/specs-browser/types.d.ts.map +1 -0
  492. package/packages/mcp-servers/dist/specs-browser/types.js +134 -0
  493. package/packages/mcp-servers/dist/specs-browser/types.js.map +1 -0
  494. package/packages/mcp-servers/dist/supabase/index.d.ts +10 -0
  495. package/packages/mcp-servers/dist/supabase/index.d.ts.map +1 -0
  496. package/packages/mcp-servers/dist/supabase/index.js +10 -0
  497. package/packages/mcp-servers/dist/supabase/index.js.map +1 -0
  498. package/packages/mcp-servers/dist/supabase/server.d.ts +20 -0
  499. package/packages/mcp-servers/dist/supabase/server.d.ts.map +1 -0
  500. package/packages/mcp-servers/dist/supabase/server.js +451 -0
  501. package/packages/mcp-servers/dist/supabase/server.js.map +1 -0
  502. package/packages/mcp-servers/dist/supabase/types.d.ts +196 -0
  503. package/packages/mcp-servers/dist/supabase/types.d.ts.map +1 -0
  504. package/packages/mcp-servers/dist/supabase/types.js +76 -0
  505. package/packages/mcp-servers/dist/supabase/types.js.map +1 -0
  506. package/packages/mcp-servers/dist/todo-db/index.d.ts +5 -0
  507. package/packages/mcp-servers/dist/todo-db/index.d.ts.map +1 -0
  508. package/packages/mcp-servers/dist/todo-db/index.js +5 -0
  509. package/packages/mcp-servers/dist/todo-db/index.js.map +1 -0
  510. package/packages/mcp-servers/dist/todo-db/server.d.ts +13 -0
  511. package/packages/mcp-servers/dist/todo-db/server.d.ts.map +1 -0
  512. package/packages/mcp-servers/dist/todo-db/server.js +649 -0
  513. package/packages/mcp-servers/dist/todo-db/server.js.map +1 -0
  514. package/packages/mcp-servers/dist/todo-db/types.d.ts +225 -0
  515. package/packages/mcp-servers/dist/todo-db/types.d.ts.map +1 -0
  516. package/packages/mcp-servers/dist/todo-db/types.js +69 -0
  517. package/packages/mcp-servers/dist/todo-db/types.js.map +1 -0
  518. package/packages/mcp-servers/dist/user-feedback/index.d.ts +7 -0
  519. package/packages/mcp-servers/dist/user-feedback/index.d.ts.map +1 -0
  520. package/packages/mcp-servers/dist/user-feedback/index.js +8 -0
  521. package/packages/mcp-servers/dist/user-feedback/index.js.map +1 -0
  522. package/packages/mcp-servers/dist/user-feedback/server.d.ts +25 -0
  523. package/packages/mcp-servers/dist/user-feedback/server.d.ts.map +1 -0
  524. package/packages/mcp-servers/dist/user-feedback/server.js +914 -0
  525. package/packages/mcp-servers/dist/user-feedback/server.js.map +1 -0
  526. package/packages/mcp-servers/dist/user-feedback/types.d.ts +415 -0
  527. package/packages/mcp-servers/dist/user-feedback/types.d.ts.map +1 -0
  528. package/packages/mcp-servers/dist/user-feedback/types.js +132 -0
  529. package/packages/mcp-servers/dist/user-feedback/types.js.map +1 -0
  530. package/packages/mcp-servers/dist/vercel/index.d.ts +9 -0
  531. package/packages/mcp-servers/dist/vercel/index.d.ts.map +1 -0
  532. package/packages/mcp-servers/dist/vercel/index.js +9 -0
  533. package/packages/mcp-servers/dist/vercel/index.js.map +1 -0
  534. package/packages/mcp-servers/dist/vercel/server.d.ts +17 -0
  535. package/packages/mcp-servers/dist/vercel/server.d.ts.map +1 -0
  536. package/packages/mcp-servers/dist/vercel/server.js +265 -0
  537. package/packages/mcp-servers/dist/vercel/server.js.map +1 -0
  538. package/packages/mcp-servers/dist/vercel/types.d.ts +189 -0
  539. package/packages/mcp-servers/dist/vercel/types.d.ts.map +1 -0
  540. package/packages/mcp-servers/dist/vercel/types.js +65 -0
  541. package/packages/mcp-servers/dist/vercel/types.js.map +1 -0
  542. package/packages/mcp-servers/package-lock.json +3765 -0
  543. package/packages/mcp-servers/package.json +64 -0
  544. package/packages/mcp-servers/test/reporters/test-failure-reporter.ts +372 -0
  545. package/packages/mcp-servers/vitest.config.ts +27 -0
  546. package/scripts/__tests__/README.md +163 -0
  547. package/scripts/apply-credential-hardening.sh +271 -0
  548. package/scripts/credential-providers/manual.js +56 -0
  549. package/scripts/credential-providers/onepassword.js +85 -0
  550. package/scripts/credential-providers/provider-interface.js +104 -0
  551. package/scripts/encrypt-credential.js +337 -0
  552. package/scripts/feedback-launcher.js +338 -0
  553. package/scripts/feedback-orchestrator.js +373 -0
  554. package/scripts/fix-mcp-launcher-issues.sh +97 -0
  555. package/scripts/force-spawn-tasks.js +651 -0
  556. package/scripts/force-triage-reports.js +560 -0
  557. package/scripts/generate-protected-actions-spec.js +142 -0
  558. package/scripts/generate-proxy-certs.sh +158 -0
  559. package/scripts/grant-chrome-ext-permissions.sh +242 -0
  560. package/scripts/mcp-launcher.js +125 -0
  561. package/scripts/merge-settings.cjs +167 -0
  562. package/scripts/patch-clawd.py +844 -0
  563. package/scripts/patch-credential-cache.py +313 -0
  564. package/scripts/patches/credential-file-guard-patched.mjs +573 -0
  565. package/scripts/patches/credential-file-guard.js.patched +573 -0
  566. package/scripts/patches/verify-tokenizer.mjs +132 -0
  567. package/scripts/protect-framework.sh +478 -0
  568. package/scripts/readme-chrome.template +12 -0
  569. package/scripts/reap-completed-agents.js +439 -0
  570. package/scripts/reinstall.sh +86 -0
  571. package/scripts/resign-node.sh +185 -0
  572. package/scripts/rotation-proxy.js +656 -0
  573. package/scripts/rotation-stress-monitor.mjs +862 -0
  574. package/scripts/setup-automation-service.sh +648 -0
  575. package/scripts/setup-check.js +251 -0
  576. package/scripts/watch-claude-version.js +142 -0
  577. package/specs/framework/CORE-INVARIANTS.md +161 -0
  578. package/specs/patterns/AGENT-PATTERNS.md +223 -0
  579. package/specs/patterns/HOOK-PATTERNS.md +242 -0
  580. package/specs/patterns/MCP-SERVER-PATTERNS.md +144 -0
  581. package/templates/config/gitignore.template +14 -0
  582. package/templates/config/merge-chain-check.yml.template +51 -0
  583. package/templates/config/package.json.template +18 -0
  584. package/templates/config/pnpm-workspace.yaml +5 -0
  585. package/templates/config/services.json.template +18 -0
  586. package/templates/config/tsconfig.base.json +17 -0
  587. package/templates/scaffold/integrations/_template/.gitkeep +0 -0
  588. package/templates/scaffold/packages/logger/package.json +17 -0
  589. package/templates/scaffold/packages/logger/src/logger.ts +44 -0
  590. package/templates/scaffold/packages/shared/package.json +17 -0
  591. package/templates/scaffold/packages/shared/src/errors.ts +43 -0
  592. package/templates/scaffold/products/_product/apps/backend/package.json +21 -0
  593. package/templates/scaffold/products/_product/apps/backend/src/index.ts +17 -0
  594. package/templates/scaffold/products/_product/apps/extension/.gitkeep +0 -0
  595. package/templates/scaffold/products/_product/apps/web/.gitkeep +0 -0
  596. package/templates/scaffold/specs/global/.gitkeep +0 -0
  597. package/templates/scaffold/specs/local/.gitkeep +0 -0
  598. package/templates/scaffold/specs/reference/.gitkeep +0 -0
  599. package/version.json +15 -0
@@ -0,0 +1,440 @@
1
+ # GENTYR - Comprehensive End-to-End Test Plan
2
+
3
+ ## Executive Summary
4
+
5
+ This plan provides a complete inventory of all node_modules/gentyr components and an end-to-end test plan for each. The goal is to test all capabilities naturally without mocking, using realistic workflows that exercise the system as it would run in production.
6
+
7
+ ---
8
+
9
+ ## Framework Component Inventory
10
+
11
+ ### MCP Servers (8 total)
12
+
13
+ | Server | Database | Purpose | Key Tools |
14
+ |--------|----------|---------|-----------|
15
+ | **todo-db** | `.claude/todo.db` | Task tracking across agent sections | `create_task`, `start_task`, `complete_task`, `get_sessions_for_task` |
16
+ | **agent-tracker** | `agent-tracker-history.json` | Track spawned agents + session browser | `list_spawned_agents`, `list_sessions`, `search_sessions` |
17
+ | **specs-browser** | Filesystem (`specs/`) | Read project specifications | `list_specs`, `get_spec` |
18
+ | **deputy-cto** | `.claude/deputy-cto.db` | CTO question queue + commit control | `add_question`, `approve_commit`, `reject_commit`, `request_bypass` |
19
+ | **agent-reports** | `.claude/agent-reports.db` | Agent report triage queue | `report_to_deputy_cto`, `start_triage`, `complete_triage` |
20
+ | **review-queue** | `.claude/review-queue.db` | Schema mapping review | `list_pending_reviews`, `approve_review` |
21
+ | **session-events** | `.claude/session-events.db` | Session event logging | `session_events_record`, `session_events_search` |
22
+ | **cto-report** | Multiple sources | Metrics generation | `get_report`, `get_session_metrics`, `get_task_metrics` |
23
+
24
+ ### Hooks (11 automation hooks + 5 utility modules)
25
+
26
+ | Hook | Trigger | Purpose | Cooldown |
27
+ |------|---------|---------|----------|
28
+ | **block-no-verify.js** | PreToolUse | Blocks `--no-verify` and bypass commands | None |
29
+ | **playwright-cli-guard.js** | PreToolUse(Bash) | Warn agents against CLI-based Playwright test invocation; advises MCP tools instead | None |
30
+ | **api-key-watcher.js** | SessionStart | Auto-rotate API keys based on usage | Per-session |
31
+ | **cto-notification-hook.js** | UserPromptSubmit | Display CTO status at session start | None |
32
+ | **todo-maintenance.js** | UserPromptSubmit | Auto-spawn todo-processing agent | 15 min |
33
+ | **bypass-approval-hook.js** | UserPromptSubmit | Process "APPROVE BYPASS <code>" messages | None |
34
+ | **antipattern-hunter-hook.js** | Post-Commit | Spawn spec violation hunters | 6 hours |
35
+ | **compliance-checker.js** | Post-Commit | Enforce spec compliance | 7 days per file |
36
+ | **schema-mapper-hook.js** | CLI/Programmatic | Generate schema mappings | 24h per schema |
37
+ | **hourly-automation.js** | Hourly service | Triage, plan execution, refactoring | 55 min |
38
+ | **pre-commit-review.js** | Git pre-commit | Deputy-CTO review + lint | Per commit |
39
+ | **agent-tracker.js** | Support module | Shared spawn tracking | N/A |
40
+ | **config-reader.js** | Support module | Shared cooldown configuration | N/A |
41
+ | **mapping-validator.js** | Support module | Validate spec-file-mappings.json | N/A |
42
+ | **plan-executor.js** | Support module | Execute pending plans (via hourly) | N/A |
43
+ | **usage-optimizer.js** | Support module | Dynamic cooldown adjustment | N/A |
44
+
45
+ ### Git Hooks (3 total)
46
+
47
+ | Hook | Location | Triggers |
48
+ |------|----------|----------|
49
+ | **pre-commit** | `.husky/pre-commit` | lint-staged + pre-commit-review.js |
50
+ | **post-commit** | `.husky/post-commit` | antipattern-hunter + compliance-checker |
51
+ | **pre-push** | `.husky/pre-push` | Tests + repo-hygiene-expert |
52
+
53
+ ### Framework Agents (8 total)
54
+
55
+ | Agent | Model | Purpose | Spawned By |
56
+ |-------|-------|---------|------------|
57
+ | **investigator** | Opus | Research and planning (read-only) | First in workflow |
58
+ | **code-writer** | Sonnet | Implementation | After investigator |
59
+ | **test-writer** | Sonnet | Unit/integration testing | After code-writer |
60
+ | **code-reviewer** | Opus | Review and commits | After test-writer |
61
+ | **project-manager** | Sonnet | Doc sync and cleanup | Last in workflow |
62
+ | **deputy-cto** | Opus | Commit review, CTO decisions | pre-commit-review.js, /deputy-cto |
63
+ | **antipattern-hunter** | Opus | Spec violation detection | antipattern-hunter-hook.js |
64
+ | **repo-hygiene-expert** | Opus | Repository structure audit | pre-push hook |
65
+
66
+ ### Project-Specific Agents (x_test example)
67
+
68
+ These agents are NOT part of the framework - they're project-specific and stored in the project's `.claude/agents.backup/`:
69
+
70
+ | Agent | Model | Purpose | Spawned By |
71
+ |-------|-------|---------|------------|
72
+ | **federation-mapper** | Opus | Schema mapping generation | schema-mapper-hook.js |
73
+ | **integration-researcher** | Opus | Platform API research | Manual for integrations |
74
+ | **integration-frontend-dev** | Sonnet | Browser extension connector | After researcher |
75
+ | **integration-backend-dev** | Sonnet | Backend API connector | After researcher |
76
+ | **integration-guide-dev** | Sonnet | Credential setup guide | After researcher |
77
+
78
+ ### Commands (2 total)
79
+
80
+ | Command | Purpose | Interactive |
81
+ |---------|---------|-------------|
82
+ | `/cto-report` | Generate CTO status report | No |
83
+ | `/deputy-cto` | Interactive CTO briefing session | Yes |
84
+
85
+ ---
86
+
87
+ ## Test Plan
88
+
89
+ ### Phase 1: MCP Server Tests (Parallel OK)
90
+
91
+ #### Test 1.1: todo-db Full CRUD
92
+ **Natural Action:** Create tasks for different agents, track their lifecycle
93
+ ```
94
+ 1. mcp__todo-db__create_task({ section: "TEST-WRITER", title: "Write auth tests" })
95
+ 2. mcp__todo-db__list_tasks({ section: "TEST-WRITER" })
96
+ 3. mcp__todo-db__start_task({ id: <id> })
97
+ 4. mcp__todo-db__complete_task({ id: <id> })
98
+ 5. mcp__todo-db__get_summary()
99
+ 6. mcp__todo-db__cleanup()
100
+ ```
101
+ **Verify:** Query `.claude/todo.db` directly; check state transitions
102
+
103
+ #### Test 1.2: todo-db Session Attribution
104
+ **Natural Action:** Complete a task, find which session did it
105
+ ```
106
+ 1. Create and complete a task
107
+ 2. mcp__todo-db__get_sessions_for_task({ id: <completed-id> })
108
+ 3. mcp__todo-db__browse_session({ session_id: <candidate> })
109
+ ```
110
+ **Verify:** Session file content matches what was done
111
+
112
+ #### Test 1.3: specs-browser Operations
113
+ **Natural Action:** Look up project specifications
114
+ ```
115
+ 1. mcp__specs-browser__list_specs()
116
+ 2. mcp__specs-browser__get_spec({ spec_id: "G001" })
117
+ 3. mcp__specs-browser__get_spec({ spec_id: "TESTING" })
118
+ ```
119
+ **Verify:** Spec content returned correctly; categories match directory structure
120
+
121
+ #### Test 1.4: deputy-cto Question Queue
122
+ **Natural Action:** Escalate a decision to CTO
123
+ ```
124
+ 1. mcp__deputy-cto__add_question({ type: "decision", title: "Architecture choice", description: "..." })
125
+ 2. mcp__deputy-cto__list_questions({})
126
+ 3. mcp__deputy-cto__read_question({ id: <id> })
127
+ 4. mcp__deputy-cto__answer_question({ id: <id>, answer: "Use option A", decided_by: "cto" })
128
+ 5. mcp__deputy-cto__clear_question({ id: <id> })
129
+ ```
130
+ **Verify:** Question flows through states; cleared questions searchable via `search_cleared_items`
131
+
132
+ #### Test 1.5: agent-reports Triage Flow
133
+ **Natural Action:** Report an issue, have it triaged
134
+ ```
135
+ 1. mcp__agent-reports__report_to_deputy_cto({ reporting_agent: "code-reviewer", title: "Security concern", summary: "...", category: "security", priority: "high" })
136
+ 2. mcp__agent-reports__get_reports_for_triage({ limit: 10 })
137
+ 3. mcp__agent-reports__start_triage({ id: <id> })
138
+ 4. mcp__agent-reports__complete_triage({ id: <id>, status: "escalated", outcome: "Added to CTO queue" })
139
+ ```
140
+ **Verify:** Report moves through pending → in_progress → completed; stats updated
141
+
142
+ #### Test 1.6: cto-report Metrics
143
+ **Natural Action:** Generate a CTO status report
144
+ ```
145
+ 1. Create activity (tasks, sessions, reports)
146
+ 2. mcp__cto-report__get_report({ hours: 24 })
147
+ ```
148
+ **Verify:** Report includes token usage, session counts, task metrics, pending items
149
+
150
+ ---
151
+
152
+ ### Phase 2: Hook Behavioral Tests (Sequential)
153
+
154
+ #### Test 2.1: PreToolUse block-no-verify
155
+ **Natural Action:** Try to bypass git hooks
156
+ **Steps:**
157
+ ```bash
158
+ # Simulate hook input
159
+ echo '{"tool_name":"Bash","tool_input":{"command":"git commit --no-verify"}}' | node .claude/hooks/block-no-verify.js
160
+ ```
161
+ **Expected:** Exit code 1, error message about blocked command
162
+ **Also test:** `git commit -n`, `git config core.hooksPath`, `rm -rf .husky`, `eslint --quiet`
163
+
164
+ #### Test 2.2: SessionStart cto-notification-hook
165
+ **Natural Action:** Start a new session, see CTO status
166
+ **Steps:**
167
+ ```bash
168
+ node .claude/hooks/cto-notification-hook.js
169
+ ```
170
+ **Expected:** JSON with `systemMessage` showing quota, token usage, pending items
171
+
172
+ #### Test 2.3: UserPromptSubmit bypass-approval-hook
173
+ **Natural Action:** CTO approves emergency bypass
174
+ **Steps:**
175
+ ```
176
+ 1. mcp__deputy-cto__request_bypass({ reason: "System error", reporting_agent: "test" })
177
+ → Returns code like "X7K9M2"
178
+ 2. CTO types: "APPROVE BYPASS X7K9M2"
179
+ 3. bypass-approval-hook creates .claude/bypass-approval-token.json
180
+ 4. mcp__deputy-cto__execute_bypass({ bypass_code: "X7K9M2" })
181
+ ```
182
+ **Verify:** Token file created with 5-minute expiry; bypass proceeds
183
+
184
+ #### Test 2.4: Post-commit antipattern-hunter
185
+ **Natural Action:** Commit code, hunters spawn
186
+ **Steps:**
187
+ ```
188
+ 1. Reset antipattern-hunter-state.json (set lastSpawn to 7+ hours ago)
189
+ 2. git commit -m "test commit"
190
+ 3. Check agent-tracker-history.json
191
+ ```
192
+ **Expected:** Two hunters spawned (antipattern-hunter-repo, antipattern-hunter-commit)
193
+ **Time Acceleration:** Modify `lastSpawn` timestamp in state file
194
+
195
+ ---
196
+
197
+ ### Phase 3: Git Workflow Tests (Sequential)
198
+
199
+ #### Test 3.1: Full Commit Approval Flow
200
+ **Natural Action:** Make a code change and commit it
201
+ **Steps:**
202
+ ```
203
+ 1. Edit a TypeScript file
204
+ 2. git add <file>
205
+ 3. git commit -m "Add feature" (spawns deputy-cto review)
206
+ 4. Wait for deputy-cto to call approve_commit()
207
+ 5. git commit -m "Add feature" (second attempt succeeds)
208
+ 6. Verify post-commit hooks run (antipattern-hunter, compliance-checker)
209
+ ```
210
+ **Verify:** Commit succeeds after approval; approval token created and consumed
211
+
212
+ #### Test 3.2: Commit Rejection Flow
213
+ **Natural Action:** Try to commit code with security issue
214
+ **Steps:**
215
+ ```
216
+ 1. Stage file with hardcoded API key
217
+ 2. git commit -m "test" (deputy-cto rejects)
218
+ 3. Verify commits blocked (rejection question exists)
219
+ 4. Run /deputy-cto to address rejection
220
+ 5. Fix code, commit succeeds
221
+ ```
222
+ **Verify:** Rejection blocks all commits until addressed
223
+
224
+ #### Test 3.3: Lint Enforcement (Unbypassable)
225
+ **Natural Action:** Try to commit with lint errors
226
+ **Steps:**
227
+ ```
228
+ 1. Stage TypeScript file with lint errors
229
+ 2. Attempt commit (even with valid approval token)
230
+ ```
231
+ **Expected:** Commit blocked by ESLint - cannot be bypassed
232
+
233
+ #### Test 3.4: Forbidden Config Files
234
+ **Natural Action:** Try to add .eslintignore
235
+ **Steps:**
236
+ ```
237
+ 1. Create .eslintignore in project root
238
+ 2. git add .eslintignore
239
+ 3. Attempt commit
240
+ ```
241
+ **Expected:** Commit blocked with message about forbidden config files
242
+
243
+ ---
244
+
245
+ ### Phase 4: Hourly Automation Tests (Sequential)
246
+
247
+ #### Test 4.1: Autonomous Mode Toggle
248
+ **Natural Action:** Enable/disable hourly automation
249
+ **Steps:**
250
+ ```
251
+ 1. mcp__deputy-cto__toggle_autonomous_mode({ enabled: true })
252
+ 2. Check .claude/autonomous-mode.json
253
+ 3. mcp__deputy-cto__get_autonomous_mode_status()
254
+ ```
255
+ **Verify:** Config file updated; status shows next run time
256
+
257
+ #### Test 4.2: Report Triage Automation
258
+ **Natural Action:** Let hourly automation triage reports
259
+ **Steps:**
260
+ ```
261
+ 1. Enable autonomous mode
262
+ 2. Create pending reports via report_to_deputy_cto
263
+ 3. Set lastTriageCheck to 6+ minutes ago
264
+ 4. Run: node .claude/hooks/hourly-automation.js
265
+ ```
266
+ **Expected:** Deputy-CTO spawned to triage; reports move to completed
267
+ **Time Acceleration:** Modify `lastTriageCheck` in hourly-automation-state.json
268
+
269
+ #### Test 4.3: Task Runner (Hourly TODO Processing)
270
+ **Natural Action:** Let hourly automation process pending TODO items
271
+ **Steps:**
272
+ ```
273
+ 1. Enable autonomous mode with taskRunnerEnabled: true
274
+ 2. Create TODO items via mcp__todo-db__create_task (wait >1h or backdate)
275
+ 3. Set lastTaskRunnerCheck to 61+ minutes ago
276
+ 4. Run: node .claude/hooks/hourly-automation.js
277
+ ```
278
+ **Expected:** A separate Claude session spawned for each pending TODO >1h old
279
+ **Time Acceleration:** Modify `lastTaskRunnerCheck` in state file
280
+
281
+ #### Test 4.4: CLAUDE.md Refactoring
282
+ **Natural Action:** Let hourly automation compact CLAUDE.md
283
+ **Steps:**
284
+ ```
285
+ 1. Make CLAUDE.md > 25,000 characters
286
+ 2. Enable claudeMdRefactorEnabled: true
287
+ 3. Run hourly-automation.js
288
+ ```
289
+ **Expected:** claudemd-refactor agent spawned; content moved to sub-files
290
+
291
+ ---
292
+
293
+ ### Phase 5: Agent Workflow Tests (Sequential, Natural)
294
+
295
+ #### Test 5.1: Standard Bug Fix Workflow
296
+ **Natural Action:** Ask to fix a bug, watch full workflow
297
+ ```
298
+ User: "There's a bug in the login function - it accepts empty passwords"
299
+
300
+ Expected flow:
301
+ 1. INVESTIGATOR: Researches codebase, creates plan, creates TODOs
302
+ 2. CODE-WRITER: Implements fix based on plan
303
+ 3. TEST-WRITER: Adds test cases for empty password rejection
304
+ 4. CODE-REVIEWER: Reviews changes, commits
305
+ 5. PROJECT-MANAGER: Updates docs if needed
306
+ ```
307
+ **Verify:** Each agent completes; TODOs tracked in todo-db; commit succeeds
308
+
309
+ #### Test 5.2: Antipattern Hunter Detection
310
+ **Natural Action:** Commit code with spec violation, let hunter find it
311
+ **Steps:**
312
+ ```
313
+ 1. Add code with G001 violation: `const value = dangerousCall() || null`
314
+ 2. Commit the code (hunters spawn after 6h cooldown - accelerate)
315
+ 3. Wait for hunters to complete
316
+ 4. Check agent-reports for findings
317
+ 5. Check todo-db for created fix tasks
318
+ ```
319
+ **Verify:** Hunters detect violation; report to CTO; create TODO for fix
320
+
321
+ #### Test 5.3: Deputy-CTO Interactive Session
322
+ **Natural Action:** Run /deputy-cto command, address pending items
323
+ **Steps:**
324
+ ```
325
+ 1. Create: pending questions, reports, rejected commit
326
+ 2. Run: /deputy-cto
327
+ 3. Review items, answer questions, spawn tasks
328
+ 4. Verify commits unblocked
329
+ ```
330
+ **Verify:** All pending items addressed; commit block lifted
331
+
332
+ #### Test 5.4: CTO Report Generation
333
+ **Natural Action:** Run /cto-report command
334
+ **Steps:**
335
+ ```
336
+ 1. Generate activity (tasks, sessions, reports)
337
+ 2. Run: /cto-report
338
+ ```
339
+ **Verify:** Formatted report with quota, usage, sessions, tasks, pending items
340
+
341
+ ---
342
+
343
+ ### Phase 6: Installation Tests (Parallel, Isolated Directories)
344
+
345
+ #### Test 6.1: Fresh Installation
346
+ **Steps:**
347
+ ```bash
348
+ mkdir /tmp/test-install && cd /tmp/test-install
349
+ git init
350
+ pnpm link ~/git/gentyr
351
+ npx gentyr init
352
+ sudo npx gentyr protect
353
+ ```
354
+ **Verify:** Symlinks created, .mcp.json generated, husky hooks installed, MCP servers built, protection active
355
+
356
+ #### Test 6.2: Protection Toggle
357
+ **Steps:**
358
+ ```bash
359
+ sudo npx gentyr unprotect
360
+ ls -la .claude/hooks/pre-commit-review.js # Should be user-owned
361
+ sudo npx gentyr protect
362
+ ls -la .claude/hooks/pre-commit-review.js # Should be root-owned
363
+ ```
364
+ **Verify:** Protection toggles correctly
365
+
366
+ #### Test 6.3: Hourly Service Setup
367
+ **Steps:**
368
+ ```bash
369
+ ./scripts/setup-automation-service.sh
370
+ ./scripts/setup-automation-service.sh status
371
+ ./scripts/setup-automation-service.sh run # Manual trigger
372
+ ./scripts/setup-automation-service.sh remove
373
+ ```
374
+ **Verify:** Service installs (systemd or launchd), runs, can be removed
375
+
376
+ ---
377
+
378
+ ## Time Acceleration Strategies
379
+
380
+ | Component | Cooldown | Acceleration Method |
381
+ |-----------|----------|---------------------|
382
+ | antipattern-hunter | 6 hours | Edit `lastSpawn` in `antipattern-hunter-state.json` |
383
+ | compliance-checker | 7 days/file | Edit timestamps in `compliance-state.json` |
384
+ | todo-maintenance | 15 minutes | Edit `lastSpawn` in `todo-maintenance-state.json` |
385
+ | schema-mapper | 24h/schema | Edit `cooldowns` in `schema-mapper-state.json` |
386
+ | hourly-automation | 55 minutes | Edit `lastRun` in `hourly-automation-state.json` |
387
+ | approval tokens | 5 minutes | Edit `expiresAt` in token files |
388
+
389
+ ---
390
+
391
+ ## State Files to Reset Between Tests
392
+
393
+ ```bash
394
+ # Databases
395
+ rm -f .claude/todo.db .claude/deputy-cto.db .claude/agent-reports.db
396
+ rm -f .claude/review-queue.db .claude/session-events.db
397
+
398
+ # State files
399
+ rm -f .claude/hooks/agent-tracker-history.json
400
+ rm -f .claude/hooks/antipattern-hunter-state.json
401
+ rm -f .claude/hooks/compliance-state.json
402
+ rm -f .claude/hooks/todo-maintenance-state.json
403
+ rm -f .claude/hooks/schema-mapper-state.json
404
+ rm -f .claude/hourly-automation-state.json
405
+ rm -f .claude/autonomous-mode.json
406
+ rm -f .claude/commit-approval-token.json
407
+ rm -f .claude/bypass-approval-token.json
408
+ ```
409
+
410
+ ---
411
+
412
+ ## Verification Checklist
413
+
414
+ After all tests, verify:
415
+
416
+ - [ ] All 8 MCP servers respond correctly to tool calls
417
+ - [ ] All 14 hooks execute without crashes
418
+ - [ ] Commit blocking works when CTO items pending
419
+ - [ ] Commit approval flow completes (spawn → review → approve → commit)
420
+ - [ ] Emergency bypass system works end-to-end
421
+ - [ ] Hourly automation runs when enabled (with time acceleration)
422
+ - [ ] All 8 framework agents spawn correctly from appropriate triggers
423
+ - [ ] Agent-tracker records all spawns with prompts
424
+ - [ ] TODO database maintains data integrity through lifecycle
425
+ - [ ] Protection system prevents unauthorized modifications
426
+ - [ ] Installation script is idempotent (safe to run multiple times)
427
+ - [ ] Uninstallation is clean (no orphaned files)
428
+ - [ ] All cooldowns enforced at boundaries
429
+ - [ ] Rate limits work (daily agent caps, per-file cooldowns)
430
+
431
+ ---
432
+
433
+ ## Test Execution Order
434
+
435
+ 1. **Phase 1** (parallel): MCP Server Tests - verify all tools work
436
+ 2. **Phase 2** (sequential): Hook Behavioral Tests - verify hook logic
437
+ 3. **Phase 3** (sequential): Git Workflow Tests - verify commit flow
438
+ 4. **Phase 4** (sequential): Hourly Automation Tests - verify automation
439
+ 5. **Phase 5** (sequential): Agent Workflow Tests - verify end-to-end
440
+ 6. **Phase 6** (parallel, isolated): Installation Tests
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#d97757" class="bi bi-claude" viewBox="0 0 16 16">
2
+ <path d="m3.127 10.604 3.135-1.76.053-.153-.053-.085H6.11l-.525-.032-1.791-.048-1.554-.065-1.505-.08-.38-.081L0 7.832l.036-.234.32-.214.455.04 1.009.069 1.513.105 1.097.064 1.626.17h.259l.036-.105-.089-.065-.068-.064-1.566-1.062-1.695-1.121-.887-.646-.48-.327-.243-.306-.104-.67.435-.48.585.04.15.04.593.456 1.267.981 1.654 1.218.242.202.097-.068.012-.049-.109-.181-.9-1.626-.96-1.655-.428-.686-.113-.411a2 2 0 0 1-.068-.484l.496-.674L4.446 0l.662.089.279.242.411.94.666 1.48 1.033 2.014.302.597.162.553.06.17h.105v-.097l.085-1.134.157-1.392.154-1.792.052-.504.25-.605.497-.327.387.186.319.456-.045.294-.19 1.23-.37 1.93-.243 1.29h.142l.161-.16.654-.868 1.097-1.372.484-.545.565-.601.363-.287h.686l.505.751-.226.775-.707.895-.585.759-.839 1.13-.524.904.048.072.125-.012 1.897-.403 1.024-.186 1.223-.21.553.258.06.263-.218.536-1.307.323-1.533.307-2.284.54-.028.02.032.04 1.029.098.44.024h1.077l2.005.15.525.346.315.424-.053.323-.807.411-3.631-.863-.872-.218h-.12v.073l.726.71 1.331 1.202 1.667 1.55.084.383-.214.302-.226-.032-1.464-1.101-.565-.497-1.28-1.077h-.084v.113l.295.432 1.557 2.34.08.718-.112.234-.404.141-.444-.08-.911-1.28-.94-1.44-.759-1.291-.093.053-.448 4.821-.21.246-.484.186-.403-.307-.214-.496.214-.98.258-1.28.21-1.016.19-1.263.112-.42-.008-.028-.092.012-.953 1.307-1.448 1.957-1.146 1.227-.274.109-.477-.247.045-.44.266-.39 1.586-2.018.956-1.25.617-.723-.004-.105h-.036l-4.212 2.736-.75.096-.324-.302.04-.496.154-.162 1.267-.871z"/>
3
+ </svg>
@@ -0,0 +1,190 @@
1
+ # Spec Suite System Implementation
2
+
3
+ **Date**: 2026-01-24
4
+ **Session Type**: Implementation
5
+ **Agent**: Investigator & Planner, Code-Reviewer, Test-Writer, Project-Manager
6
+
7
+ ## Summary
8
+
9
+ Implemented the spec suite system for the specs-browser MCP server and compliance-checker hook. The system allows projects to define groups of specifications (suites) that apply to specific file scopes using glob patterns.
10
+
11
+ ## Implementation Details
12
+
13
+ ### Phase 1: Specs Browser MCP Server
14
+
15
+ Added full CRUD operations for both specs and suites to the specs-browser MCP server.
16
+
17
+ **Files Modified:**
18
+ - `packages/mcp-servers/src/specs-browser/types.ts`
19
+ - `packages/mcp-servers/src/specs-browser/server.ts`
20
+
21
+ **New MCP Tools (8 total):**
22
+
23
+ #### Spec Management (3 tools)
24
+ 1. `createSpec` - Create new specification files
25
+ 2. `editSpec` - Edit existing specification files
26
+ 3. `deleteSpec` - Delete specification files
27
+
28
+ #### Suite Management (5 tools)
29
+ 4. `listSuites` - List all configured spec suites
30
+ 5. `getSuite` - Get detailed configuration for a specific suite
31
+ 6. `createSuite` - Create a new spec suite with scope and spec patterns
32
+ 7. `editSuite` - Modify existing suite configuration
33
+ 8. `deleteSuite` - Remove a suite from configuration
34
+
35
+ **Configuration File:**
36
+ - `.claude/hooks/suites-config.json` - Defines spec suites with scope patterns
37
+
38
+ **Schema Additions:**
39
+ - Zod validation schemas for all new operations
40
+ - TypeScript types for suite configuration
41
+ - SuiteConfig and SuitesConfig interfaces
42
+
43
+ ### Phase 2: Compliance Checker Integration
44
+
45
+ Updated the compliance-checker hook to use the new suite system for enforcement.
46
+
47
+ **Files Modified:**
48
+ - `.claude/hooks/compliance-checker.js`
49
+ - `.claude/hooks/prompts/spec-enforcement.md`
50
+ - `.claude/hooks/prompts/local-spec-enforcement.md`
51
+ - `.claude/hooks/README.md`
52
+
53
+ **Key Functions Added:**
54
+ - `loadSuitesConfig()` - Load suite configuration from JSON
55
+ - `getSuitesForFile()` - Determine which suites apply to a file using glob matching
56
+ - `getAllApplicableSpecs()` - Collect all global specs for a file across matching suites
57
+ - `getAllExploratorySpecs()` - Collect all local specs for a file across matching suites
58
+ - `matchesGlob()` - Simple glob pattern matching implementation
59
+
60
+ **Enforcement Changes:**
61
+ - Global enforcement now checks files against only the specs from matching suites
62
+ - Local enforcement constrains exploratory agents to suite scope patterns
63
+ - Both prompts updated with optional suite context sections
64
+
65
+ ### Phase 3: Documentation
66
+
67
+ **Files Updated:**
68
+ - `.claude/hooks/README.md` - Added comprehensive Spec Suites section
69
+
70
+ **Documentation Includes:**
71
+ - Setup instructions for suites-config.json
72
+ - Configuration reference with examples
73
+ - Suite resolution algorithm explanation
74
+ - MCP tools list with usage examples
75
+ - Backward compatibility notes
76
+
77
+ ## Architecture
78
+
79
+ ### Suite Structure
80
+
81
+ A suite consists of:
82
+ - **ID**: Unique identifier (e.g., "integration-frontend")
83
+ - **Description**: Human-readable purpose
84
+ - **Scope**: Glob pattern determining which files it applies to
85
+ - **Global specs**: Directory and pattern for global specs (enforced mode)
86
+ - **Local specs**: Directory and pattern for local specs (exploratory mode)
87
+ - **Enabled**: Boolean flag to activate/deactivate
88
+ - **Priority**: Lower number = higher priority when multiple suites match
89
+
90
+ ### Pattern Matching
91
+
92
+ The implementation uses a simple custom glob matcher instead of minimatch to avoid adding dependencies. Supports:
93
+ - `*` - Match anything except path separator
94
+ - `**` - Match zero or more path segments
95
+ - Basic literal matching
96
+
97
+ ### Backward Compatibility
98
+
99
+ The system maintains full backward compatibility:
100
+ - If `suites-config.json` doesn't exist, enforcement uses legacy behavior
101
+ - Existing spec-file-mappings.json still supported
102
+ - No breaking changes to existing workflows
103
+
104
+ ## Verification
105
+
106
+ ### Build Verification
107
+ ```bash
108
+ cd packages/mcp-servers
109
+ npm run build
110
+ ```
111
+ Result: TypeScript compilation passed with no errors
112
+
113
+ ### JavaScript Syntax Check
114
+ ```bash
115
+ node --check .claude/hooks/compliance-checker.js
116
+ ```
117
+ Result: No syntax errors
118
+
119
+ ### Code Review
120
+ - All changes reviewed by code-reviewer agent
121
+ - No spec violations found
122
+ - Implementation follows project conventions
123
+
124
+ ## Test Coverage Gap
125
+
126
+ **Issue Identified**: The test-writer agent identified that tests are needed for:
127
+
128
+ 1. **8 new MCP tools** in specs-browser server:
129
+ - createSpec, editSpec, deleteSpec
130
+ - listSuites, getSuite, createSuite, editSuite, deleteSuite
131
+
132
+ 2. **compliance-checker.js**: No tests exist for this file at all
133
+
134
+ **Test Framework**: Tests should use Vitest (not Jest) per project standards
135
+
136
+ **Action Taken**: Report submitted to deputy-cto for triage
137
+
138
+ ## Related Files
139
+
140
+ ### Implementation Files
141
+ - `packages/mcp-servers/src/specs-browser/types.ts`
142
+ - `packages/mcp-servers/src/specs-browser/server.ts`
143
+ - `.claude/hooks/compliance-checker.js`
144
+ - `.claude/hooks/prompts/spec-enforcement.md`
145
+ - `.claude/hooks/prompts/local-spec-enforcement.md`
146
+
147
+ ### Documentation Files
148
+ - `.claude/hooks/README.md`
149
+ - `docs/SPEC-SUITE-SYSTEM-PLAN.md` (planning document)
150
+
151
+ ### Configuration Files
152
+ - `.claude/hooks/suites-config.json` (runtime, created by projects)
153
+
154
+ ## Impact
155
+
156
+ ### User-Facing Changes
157
+ - Projects can now configure spec suites via MCP tools
158
+ - Specs can be scoped to specific directories using glob patterns
159
+ - Integration-specific specs only check integration files
160
+ - Reduces noise from spec enforcement
161
+
162
+ ### Framework Changes
163
+ - Specs-browser MCP server expanded with 8 new tools
164
+ - Compliance checker supports suite-based enforcement
165
+ - New configuration file format (suites-config.json)
166
+
167
+ ### Portability
168
+ The implementation is fully portable across projects:
169
+ - Framework code in .claude/hooks (symlinked)
170
+ - MCP server in packages/mcp-servers (shared)
171
+ - Project-specific config in .claude/hooks/suites-config.json
172
+
173
+ ## Next Steps
174
+
175
+ 1. **Testing**: Implement Vitest tests for new MCP tools and compliance-checker
176
+ 2. **Project Setup**: Create example suites-config.json for production projects
177
+ 3. **Documentation**: Add usage examples to project CLAUDE.md files
178
+ 4. **Migration**: Create migration utility for projects using spec-file-mappings.json
179
+
180
+ ## Session Metadata
181
+
182
+ **Agents Involved:**
183
+ - investigator: Initial planning and design
184
+ - code-reviewer: Code review and verification
185
+ - test-writer: Test coverage analysis and gap identification
186
+ - project-manager: Documentation and organization
187
+
188
+ **Session Duration**: ~2 hours
189
+ **Commit Status**: Changes ready for commit (verified)
190
+ **Test Status**: Tests needed (reported to deputy-cto)