edsger 0.76.0 → 0.78.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 (853) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +95 -210
  3. package/assets/LICENSE +21 -0
  4. package/assets/README.md +104 -0
  5. package/assets/benchmark/base.yaml +286 -0
  6. package/assets/benchmark/csharp.yaml +68 -0
  7. package/assets/benchmark/dart.yaml +70 -0
  8. package/assets/benchmark/go.yaml +71 -0
  9. package/assets/benchmark/java.yaml +68 -0
  10. package/assets/benchmark/python.yaml +72 -0
  11. package/assets/benchmark/typescript.yaml +71 -0
  12. package/assets/languages.yaml +35 -0
  13. package/assets/manifest.yaml +39 -0
  14. package/assets/review/base.yaml +111 -0
  15. package/assets/review/csharp.yaml +38 -0
  16. package/assets/review/dart.yaml +40 -0
  17. package/assets/review/go.yaml +40 -0
  18. package/assets/review/java.yaml +40 -0
  19. package/assets/review/python.yaml +41 -0
  20. package/assets/review/typescript.yaml +40 -0
  21. package/assets/schema/benchmark.schema.json +87 -0
  22. package/assets/schema/review.schema.json +73 -0
  23. package/assets/skills/benchmark/SKILL.md +66 -0
  24. package/assets/skills/pr-resolve/SKILL.md +58 -0
  25. package/assets/skills/pr-review/SKILL.md +66 -0
  26. package/dist/index.js +1339 -1218
  27. package/dist/index.js.map +1 -0
  28. package/package.json +58 -53
  29. package/dist/api/adr.d.ts +0 -48
  30. package/dist/api/adr.js +0 -139
  31. package/dist/api/app-store-iap.d.ts +0 -60
  32. package/dist/api/app-store-iap.js +0 -145
  33. package/dist/api/app-store.d.ts +0 -93
  34. package/dist/api/app-store.js +0 -206
  35. package/dist/api/chat.d.ts +0 -72
  36. package/dist/api/chat.js +0 -272
  37. package/dist/api/cross-product.d.ts +0 -33
  38. package/dist/api/cross-product.js +0 -127
  39. package/dist/api/financing.d.ts +0 -47
  40. package/dist/api/financing.js +0 -37
  41. package/dist/api/github.d.ts +0 -86
  42. package/dist/api/github.js +0 -203
  43. package/dist/api/growth.d.ts +0 -81
  44. package/dist/api/growth.js +0 -75
  45. package/dist/api/intelligence-normalize.d.ts +0 -25
  46. package/dist/api/intelligence-normalize.js +0 -103
  47. package/dist/api/intelligence.d.ts +0 -187
  48. package/dist/api/intelligence.js +0 -402
  49. package/dist/api/issues/approval-checker.d.ts +0 -22
  50. package/dist/api/issues/approval-checker.js +0 -141
  51. package/dist/api/issues/batch-operations.d.ts +0 -17
  52. package/dist/api/issues/batch-operations.js +0 -100
  53. package/dist/api/issues/get-issue.d.ts +0 -5
  54. package/dist/api/issues/get-issue.js +0 -47
  55. package/dist/api/issues/index.d.ts +0 -8
  56. package/dist/api/issues/index.js +0 -10
  57. package/dist/api/issues/issue-utils.d.ts +0 -25
  58. package/dist/api/issues/issue-utils.js +0 -133
  59. package/dist/api/issues/status-updater.d.ts +0 -68
  60. package/dist/api/issues/status-updater.js +0 -190
  61. package/dist/api/issues/test-cases.d.ts +0 -29
  62. package/dist/api/issues/test-cases.js +0 -185
  63. package/dist/api/issues/update-issue.d.ts +0 -25
  64. package/dist/api/issues/update-issue.js +0 -127
  65. package/dist/api/issues/user-stories.d.ts +0 -21
  66. package/dist/api/issues/user-stories.js +0 -163
  67. package/dist/api/mcp-client.d.ts +0 -22
  68. package/dist/api/mcp-client.js +0 -75
  69. package/dist/api/products/test-cases.d.ts +0 -18
  70. package/dist/api/products/test-cases.js +0 -51
  71. package/dist/api/products.d.ts +0 -15
  72. package/dist/api/products.js +0 -45
  73. package/dist/api/release-test-cases.d.ts +0 -7
  74. package/dist/api/release-test-cases.js +0 -59
  75. package/dist/api/releases.d.ts +0 -41
  76. package/dist/api/releases.js +0 -117
  77. package/dist/api/run-sheets.d.ts +0 -22
  78. package/dist/api/run-sheets.js +0 -13
  79. package/dist/api/storage.d.ts +0 -13
  80. package/dist/api/storage.js +0 -29
  81. package/dist/api/tasks.d.ts +0 -26
  82. package/dist/api/tasks.js +0 -81
  83. package/dist/api/test-reports.d.ts +0 -9
  84. package/dist/api/test-reports.js +0 -43
  85. package/dist/api/user-psychology.d.ts +0 -101
  86. package/dist/api/user-psychology.js +0 -143
  87. package/dist/api/web-deploy.d.ts +0 -67
  88. package/dist/api/web-deploy.js +0 -199
  89. package/dist/auth/auth-store.d.ts +0 -98
  90. package/dist/auth/auth-store.js +0 -194
  91. package/dist/auth/env-store.d.ts +0 -41
  92. package/dist/auth/env-store.js +0 -127
  93. package/dist/auth/login.d.ts +0 -18
  94. package/dist/auth/login.js +0 -179
  95. package/dist/commands/adr/index.d.ts +0 -13
  96. package/dist/commands/adr/index.js +0 -31
  97. package/dist/commands/agent-workflow/chat-worker.d.ts +0 -16
  98. package/dist/commands/agent-workflow/chat-worker.js +0 -465
  99. package/dist/commands/agent-workflow/index.d.ts +0 -13
  100. package/dist/commands/agent-workflow/index.js +0 -107
  101. package/dist/commands/agent-workflow/issue-worker.d.ts +0 -14
  102. package/dist/commands/agent-workflow/issue-worker.js +0 -65
  103. package/dist/commands/agent-workflow/processor.d.ts +0 -95
  104. package/dist/commands/agent-workflow/processor.js +0 -519
  105. package/dist/commands/analyze-logs/index.d.ts +0 -7
  106. package/dist/commands/analyze-logs/index.js +0 -34
  107. package/dist/commands/app-store/index.d.ts +0 -12
  108. package/dist/commands/app-store/index.js +0 -69
  109. package/dist/commands/architecture-diagram/index.d.ts +0 -8
  110. package/dist/commands/architecture-diagram/index.js +0 -10
  111. package/dist/commands/build/detect-project.d.ts +0 -52
  112. package/dist/commands/build/detect-project.js +0 -277
  113. package/dist/commands/build/index.d.ts +0 -66
  114. package/dist/commands/build/index.js +0 -544
  115. package/dist/commands/chat-serve/chat-server.d.ts +0 -114
  116. package/dist/commands/chat-serve/chat-server.js +0 -339
  117. package/dist/commands/chat-serve/index.d.ts +0 -20
  118. package/dist/commands/chat-serve/index.js +0 -58
  119. package/dist/commands/checklists/index.d.ts +0 -16
  120. package/dist/commands/checklists/index.js +0 -187
  121. package/dist/commands/checklists/tools.d.ts +0 -17
  122. package/dist/commands/checklists/tools.js +0 -19
  123. package/dist/commands/class-diagram/index.d.ts +0 -7
  124. package/dist/commands/class-diagram/index.js +0 -9
  125. package/dist/commands/code-review/index.d.ts +0 -2
  126. package/dist/commands/code-review/index.js +0 -37
  127. package/dist/commands/code-review/reviewer.d.ts +0 -3
  128. package/dist/commands/code-review/reviewer.js +0 -205
  129. package/dist/commands/config/index.d.ts +0 -16
  130. package/dist/commands/config/index.js +0 -60
  131. package/dist/commands/data-flow/index.d.ts +0 -19
  132. package/dist/commands/data-flow/index.js +0 -55
  133. package/dist/commands/diagram-shared/index.d.ts +0 -21
  134. package/dist/commands/diagram-shared/index.js +0 -37
  135. package/dist/commands/discover/index.d.ts +0 -14
  136. package/dist/commands/discover/index.js +0 -29
  137. package/dist/commands/er-diagram/index.d.ts +0 -19
  138. package/dist/commands/er-diagram/index.js +0 -55
  139. package/dist/commands/features/index.d.ts +0 -15
  140. package/dist/commands/features/index.js +0 -34
  141. package/dist/commands/financing-deck/index.d.ts +0 -8
  142. package/dist/commands/financing-deck/index.js +0 -66
  143. package/dist/commands/find-architecture/index.d.ts +0 -15
  144. package/dist/commands/find-architecture/index.js +0 -50
  145. package/dist/commands/find-bugs/index.d.ts +0 -13
  146. package/dist/commands/find-bugs/index.js +0 -48
  147. package/dist/commands/find-features/index.d.ts +0 -14
  148. package/dist/commands/find-features/index.js +0 -42
  149. package/dist/commands/find-smells/index.d.ts +0 -23
  150. package/dist/commands/find-smells/index.js +0 -74
  151. package/dist/commands/flowchart/index.d.ts +0 -8
  152. package/dist/commands/flowchart/index.js +0 -10
  153. package/dist/commands/growth-analysis/index.d.ts +0 -7
  154. package/dist/commands/growth-analysis/index.js +0 -89
  155. package/dist/commands/init/index.d.ts +0 -5
  156. package/dist/commands/init/index.js +0 -152
  157. package/dist/commands/init/prompts.d.ts +0 -9
  158. package/dist/commands/init/prompts.js +0 -128
  159. package/dist/commands/init/templates.d.ts +0 -9
  160. package/dist/commands/init/templates.js +0 -264
  161. package/dist/commands/intelligence/index.d.ts +0 -15
  162. package/dist/commands/intelligence/index.js +0 -138
  163. package/dist/commands/issue-analysis/index.d.ts +0 -5
  164. package/dist/commands/issue-analysis/index.js +0 -9
  165. package/dist/commands/pr-resolve/index.d.ts +0 -13
  166. package/dist/commands/pr-resolve/index.js +0 -50
  167. package/dist/commands/pr-review/index.d.ts +0 -12
  168. package/dist/commands/pr-review/index.js +0 -47
  169. package/dist/commands/product-techniques/index.d.ts +0 -15
  170. package/dist/commands/product-techniques/index.js +0 -37
  171. package/dist/commands/product-test-cases/index.d.ts +0 -12
  172. package/dist/commands/product-test-cases/index.js +0 -40
  173. package/dist/commands/quality-benchmark/index.d.ts +0 -40
  174. package/dist/commands/quality-benchmark/index.js +0 -219
  175. package/dist/commands/recipes/index.d.ts +0 -17
  176. package/dist/commands/recipes/index.js +0 -40
  177. package/dist/commands/refactor/refactor.d.ts +0 -2
  178. package/dist/commands/refactor/refactor.js +0 -134
  179. package/dist/commands/release-sync/index.d.ts +0 -5
  180. package/dist/commands/release-sync/index.js +0 -38
  181. package/dist/commands/run-sheet/index.d.ts +0 -6
  182. package/dist/commands/run-sheet/index.js +0 -48
  183. package/dist/commands/screen-flow/index.d.ts +0 -18
  184. package/dist/commands/screen-flow/index.js +0 -54
  185. package/dist/commands/sequence-diagram/index.d.ts +0 -19
  186. package/dist/commands/sequence-diagram/index.js +0 -55
  187. package/dist/commands/session-serve/index.d.ts +0 -32
  188. package/dist/commands/session-serve/index.js +0 -100
  189. package/dist/commands/session-turn/index.d.ts +0 -73
  190. package/dist/commands/session-turn/index.js +0 -254
  191. package/dist/commands/smoke-test/index.d.ts +0 -5
  192. package/dist/commands/smoke-test/index.js +0 -40
  193. package/dist/commands/state-diagram/index.d.ts +0 -7
  194. package/dist/commands/state-diagram/index.js +0 -9
  195. package/dist/commands/sync-aws/index.d.ts +0 -16
  196. package/dist/commands/sync-aws/index.js +0 -214
  197. package/dist/commands/sync-datadog/index.d.ts +0 -16
  198. package/dist/commands/sync-datadog/index.js +0 -236
  199. package/dist/commands/sync-github-issues/index.d.ts +0 -11
  200. package/dist/commands/sync-github-issues/index.js +0 -42
  201. package/dist/commands/sync-github-pull-requests/index.d.ts +0 -11
  202. package/dist/commands/sync-github-pull-requests/index.js +0 -42
  203. package/dist/commands/sync-org-repos/index.d.ts +0 -12
  204. package/dist/commands/sync-org-repos/index.js +0 -60
  205. package/dist/commands/sync-sentry-issues/index.d.ts +0 -14
  206. package/dist/commands/sync-sentry-issues/index.js +0 -73
  207. package/dist/commands/sync-terraform/index.d.ts +0 -16
  208. package/dist/commands/sync-terraform/index.js +0 -248
  209. package/dist/commands/task-worker/index.d.ts +0 -8
  210. package/dist/commands/task-worker/index.js +0 -34
  211. package/dist/commands/task-worker/processor.d.ts +0 -23
  212. package/dist/commands/task-worker/processor.js +0 -84
  213. package/dist/commands/technical-design/index.d.ts +0 -5
  214. package/dist/commands/technical-design/index.js +0 -9
  215. package/dist/commands/test-cases-analysis/index.d.ts +0 -5
  216. package/dist/commands/test-cases-analysis/index.js +0 -9
  217. package/dist/commands/user-psychology/index.d.ts +0 -7
  218. package/dist/commands/user-psychology/index.js +0 -51
  219. package/dist/commands/user-stories-analysis/index.d.ts +0 -5
  220. package/dist/commands/user-stories-analysis/index.js +0 -9
  221. package/dist/commands/workflow/config/phase-configs.d.ts +0 -5
  222. package/dist/commands/workflow/config/phase-configs.js +0 -132
  223. package/dist/commands/workflow/core/index.d.ts +0 -8
  224. package/dist/commands/workflow/core/index.js +0 -12
  225. package/dist/commands/workflow/core/issue-filter.d.ts +0 -16
  226. package/dist/commands/workflow/core/issue-filter.js +0 -47
  227. package/dist/commands/workflow/core/pipeline-evaluator.d.ts +0 -24
  228. package/dist/commands/workflow/core/pipeline-evaluator.js +0 -32
  229. package/dist/commands/workflow/core/state-manager.d.ts +0 -24
  230. package/dist/commands/workflow/core/state-manager.js +0 -42
  231. package/dist/commands/workflow/core/workflow-logger.d.ts +0 -23
  232. package/dist/commands/workflow/core/workflow-logger.js +0 -77
  233. package/dist/commands/workflow/executors/phase-executor.d.ts +0 -8
  234. package/dist/commands/workflow/executors/phase-executor.js +0 -338
  235. package/dist/commands/workflow/index.d.ts +0 -2
  236. package/dist/commands/workflow/index.js +0 -34
  237. package/dist/commands/workflow/issue-coordinator.d.ts +0 -18
  238. package/dist/commands/workflow/issue-coordinator.js +0 -161
  239. package/dist/commands/workflow/phase-orchestrator.d.ts +0 -26
  240. package/dist/commands/workflow/phase-orchestrator.js +0 -699
  241. package/dist/commands/workflow/processor.d.ts +0 -47
  242. package/dist/commands/workflow/processor.js +0 -149
  243. package/dist/config/issue-status.d.ts +0 -29
  244. package/dist/config/issue-status.js +0 -44
  245. package/dist/config.d.ts +0 -3
  246. package/dist/config.js +0 -79
  247. package/dist/constants.d.ts +0 -10
  248. package/dist/constants.js +0 -36
  249. package/dist/errors/index.d.ts +0 -68
  250. package/dist/errors/index.js +0 -129
  251. package/dist/index.d.ts +0 -4
  252. package/dist/phases/adr-generation/agent.d.ts +0 -6
  253. package/dist/phases/adr-generation/agent.js +0 -69
  254. package/dist/phases/adr-generation/index.d.ts +0 -15
  255. package/dist/phases/adr-generation/index.js +0 -66
  256. package/dist/phases/adr-generation/parse.d.ts +0 -12
  257. package/dist/phases/adr-generation/parse.js +0 -123
  258. package/dist/phases/adr-generation/prompts.d.ts +0 -8
  259. package/dist/phases/adr-generation/prompts.js +0 -35
  260. package/dist/phases/analyze-logs/agent.d.ts +0 -11
  261. package/dist/phases/analyze-logs/agent.js +0 -66
  262. package/dist/phases/analyze-logs/index.d.ts +0 -23
  263. package/dist/phases/analyze-logs/index.js +0 -152
  264. package/dist/phases/analyze-logs/prompts.d.ts +0 -3
  265. package/dist/phases/analyze-logs/prompts.js +0 -27
  266. package/dist/phases/app-store-generation/agent.d.ts +0 -2
  267. package/dist/phases/app-store-generation/agent.js +0 -177
  268. package/dist/phases/app-store-generation/assets/inter-latin-ext.woff2 +0 -0
  269. package/dist/phases/app-store-generation/assets/inter-latin.woff2 +0 -0
  270. package/dist/phases/app-store-generation/context.d.ts +0 -21
  271. package/dist/phases/app-store-generation/context.js +0 -78
  272. package/dist/phases/app-store-generation/index.d.ts +0 -20
  273. package/dist/phases/app-store-generation/index.js +0 -157
  274. package/dist/phases/app-store-generation/inter-font.d.ts +0 -20
  275. package/dist/phases/app-store-generation/inter-font.js +0 -49
  276. package/dist/phases/app-store-generation/prompts.d.ts +0 -43
  277. package/dist/phases/app-store-generation/prompts.js +0 -73
  278. package/dist/phases/app-store-generation/screenshot-composer.d.ts +0 -41
  279. package/dist/phases/app-store-generation/screenshot-composer.js +0 -516
  280. package/dist/phases/app-store-generation/uploader.d.ts +0 -19
  281. package/dist/phases/app-store-generation/uploader.js +0 -150
  282. package/dist/phases/architecture-diagram/index.d.ts +0 -15
  283. package/dist/phases/architecture-diagram/index.js +0 -51
  284. package/dist/phases/autonomous/index.d.ts +0 -32
  285. package/dist/phases/autonomous/index.js +0 -412
  286. package/dist/phases/autonomous/prompts.d.ts +0 -5
  287. package/dist/phases/autonomous/prompts.js +0 -31
  288. package/dist/phases/branch-planning/context.d.ts +0 -14
  289. package/dist/phases/branch-planning/context.js +0 -43
  290. package/dist/phases/branch-planning/index.d.ts +0 -25
  291. package/dist/phases/branch-planning/index.js +0 -404
  292. package/dist/phases/branch-planning/outcome.d.ts +0 -28
  293. package/dist/phases/branch-planning/outcome.js +0 -115
  294. package/dist/phases/branch-planning/prompts.d.ts +0 -41
  295. package/dist/phases/branch-planning/prompts.js +0 -157
  296. package/dist/phases/bug-fixing/analyzer.d.ts +0 -17
  297. package/dist/phases/bug-fixing/analyzer.js +0 -247
  298. package/dist/phases/bug-fixing/context-fetcher.d.ts +0 -22
  299. package/dist/phases/bug-fixing/context-fetcher.js +0 -137
  300. package/dist/phases/bug-fixing/index.d.ts +0 -7
  301. package/dist/phases/bug-fixing/index.js +0 -7
  302. package/dist/phases/bug-fixing/mcp-server.d.ts +0 -18
  303. package/dist/phases/bug-fixing/mcp-server.js +0 -19
  304. package/dist/phases/bug-fixing/prompts.d.ts +0 -2
  305. package/dist/phases/bug-fixing/prompts.js +0 -9
  306. package/dist/phases/chat-processor/context.d.ts +0 -38
  307. package/dist/phases/chat-processor/context.js +0 -91
  308. package/dist/phases/chat-processor/index.d.ts +0 -49
  309. package/dist/phases/chat-processor/index.js +0 -482
  310. package/dist/phases/chat-processor/product-context.d.ts +0 -36
  311. package/dist/phases/chat-processor/product-context.js +0 -113
  312. package/dist/phases/chat-processor/product-prompts.d.ts +0 -4
  313. package/dist/phases/chat-processor/product-prompts.js +0 -65
  314. package/dist/phases/chat-processor/product-tools.d.ts +0 -8
  315. package/dist/phases/chat-processor/product-tools.js +0 -11
  316. package/dist/phases/chat-processor/prompts.d.ts +0 -35
  317. package/dist/phases/chat-processor/prompts.js +0 -213
  318. package/dist/phases/chat-processor/tools.d.ts +0 -8
  319. package/dist/phases/chat-processor/tools.js +0 -11
  320. package/dist/phases/class-diagram/index.d.ts +0 -14
  321. package/dist/phases/class-diagram/index.js +0 -76
  322. package/dist/phases/code-implementation/branch-pr-creator.d.ts +0 -31
  323. package/dist/phases/code-implementation/branch-pr-creator.js +0 -172
  324. package/dist/phases/code-implementation/context.d.ts +0 -17
  325. package/dist/phases/code-implementation/context.js +0 -88
  326. package/dist/phases/code-implementation/index.d.ts +0 -33
  327. package/dist/phases/code-implementation/index.js +0 -926
  328. package/dist/phases/code-implementation/outcome.d.ts +0 -47
  329. package/dist/phases/code-implementation/outcome.js +0 -53
  330. package/dist/phases/code-implementation/prompts.d.ts +0 -8
  331. package/dist/phases/code-implementation/prompts.js +0 -166
  332. package/dist/phases/code-implementation-verification/agent.d.ts +0 -32
  333. package/dist/phases/code-implementation-verification/agent.js +0 -225
  334. package/dist/phases/code-implementation-verification/index.d.ts +0 -27
  335. package/dist/phases/code-implementation-verification/index.js +0 -121
  336. package/dist/phases/code-implementation-verification/prompts.d.ts +0 -10
  337. package/dist/phases/code-implementation-verification/prompts.js +0 -90
  338. package/dist/phases/code-refine/context.d.ts +0 -99
  339. package/dist/phases/code-refine/context.js +0 -457
  340. package/dist/phases/code-refine/index.d.ts +0 -59
  341. package/dist/phases/code-refine/index.js +0 -348
  342. package/dist/phases/code-refine/prompts.d.ts +0 -5
  343. package/dist/phases/code-refine/prompts.js +0 -162
  344. package/dist/phases/code-refine/refine-iteration.d.ts +0 -33
  345. package/dist/phases/code-refine/refine-iteration.js +0 -166
  346. package/dist/phases/code-refine/retry-handler.d.ts +0 -17
  347. package/dist/phases/code-refine/retry-handler.js +0 -87
  348. package/dist/phases/code-refine-verification/github.d.ts +0 -54
  349. package/dist/phases/code-refine-verification/github.js +0 -328
  350. package/dist/phases/code-refine-verification/index.d.ts +0 -11
  351. package/dist/phases/code-refine-verification/index.js +0 -260
  352. package/dist/phases/code-refine-verification/llm-analyzer.d.ts +0 -22
  353. package/dist/phases/code-refine-verification/llm-analyzer.js +0 -152
  354. package/dist/phases/code-refine-verification/prompts.d.ts +0 -5
  355. package/dist/phases/code-refine-verification/prompts.js +0 -119
  356. package/dist/phases/code-refine-verification/types.d.ts +0 -74
  357. package/dist/phases/code-refine-verification/types.js +0 -4
  358. package/dist/phases/code-review/context.d.ts +0 -96
  359. package/dist/phases/code-review/context.js +0 -278
  360. package/dist/phases/code-review/diff-utils.d.ts +0 -36
  361. package/dist/phases/code-review/diff-utils.js +0 -100
  362. package/dist/phases/code-review/index.d.ts +0 -40
  363. package/dist/phases/code-review/index.js +0 -627
  364. package/dist/phases/code-testing/analyzer.d.ts +0 -19
  365. package/dist/phases/code-testing/analyzer.js +0 -215
  366. package/dist/phases/code-testing/context-fetcher.d.ts +0 -16
  367. package/dist/phases/code-testing/context-fetcher.js +0 -83
  368. package/dist/phases/code-testing/index.d.ts +0 -2
  369. package/dist/phases/code-testing/index.js +0 -2
  370. package/dist/phases/code-testing/prompts.d.ts +0 -3
  371. package/dist/phases/code-testing/prompts.js +0 -63
  372. package/dist/phases/data-flow/index.d.ts +0 -28
  373. package/dist/phases/data-flow/index.js +0 -286
  374. package/dist/phases/data-flow/mcp-server.d.ts +0 -85
  375. package/dist/phases/data-flow/mcp-server.js +0 -140
  376. package/dist/phases/data-flow/prompts.d.ts +0 -14
  377. package/dist/phases/data-flow/prompts.js +0 -36
  378. package/dist/phases/data-flow/types.d.ts +0 -71
  379. package/dist/phases/data-flow/types.js +0 -86
  380. package/dist/phases/diagram-shared/clone-repos.d.ts +0 -63
  381. package/dist/phases/diagram-shared/clone-repos.js +0 -153
  382. package/dist/phases/diagram-shared/generate.d.ts +0 -42
  383. package/dist/phases/diagram-shared/generate.js +0 -162
  384. package/dist/phases/diagram-shared/graph.d.ts +0 -62
  385. package/dist/phases/diagram-shared/graph.js +0 -169
  386. package/dist/phases/diagram-shared/mcp.d.ts +0 -35
  387. package/dist/phases/diagram-shared/mcp.js +0 -68
  388. package/dist/phases/diagram-shared/prompts.d.ts +0 -23
  389. package/dist/phases/diagram-shared/prompts.js +0 -35
  390. package/dist/phases/discover-services/index.d.ts +0 -29
  391. package/dist/phases/discover-services/index.js +0 -528
  392. package/dist/phases/er-diagram/index.d.ts +0 -28
  393. package/dist/phases/er-diagram/index.js +0 -290
  394. package/dist/phases/er-diagram/mcp-server.d.ts +0 -77
  395. package/dist/phases/er-diagram/mcp-server.js +0 -144
  396. package/dist/phases/er-diagram/prompts.d.ts +0 -14
  397. package/dist/phases/er-diagram/prompts.js +0 -36
  398. package/dist/phases/er-diagram/types.d.ts +0 -76
  399. package/dist/phases/er-diagram/types.js +0 -84
  400. package/dist/phases/features/index.d.ts +0 -65
  401. package/dist/phases/features/index.js +0 -292
  402. package/dist/phases/features/mcp-server.d.ts +0 -61
  403. package/dist/phases/features/mcp-server.js +0 -165
  404. package/dist/phases/features/prompts.d.ts +0 -32
  405. package/dist/phases/features/prompts.js +0 -92
  406. package/dist/phases/features/types.d.ts +0 -34
  407. package/dist/phases/features/types.js +0 -15
  408. package/dist/phases/financing-deck/agent.d.ts +0 -1
  409. package/dist/phases/financing-deck/agent.js +0 -96
  410. package/dist/phases/financing-deck/context.d.ts +0 -13
  411. package/dist/phases/financing-deck/context.js +0 -69
  412. package/dist/phases/financing-deck/index.d.ts +0 -15
  413. package/dist/phases/financing-deck/index.js +0 -89
  414. package/dist/phases/financing-deck/prompts.d.ts +0 -2
  415. package/dist/phases/financing-deck/prompts.js +0 -94
  416. package/dist/phases/find-architecture/index.d.ts +0 -47
  417. package/dist/phases/find-architecture/index.js +0 -261
  418. package/dist/phases/find-architecture/prompts.d.ts +0 -31
  419. package/dist/phases/find-architecture/prompts.js +0 -128
  420. package/dist/phases/find-architecture/state.d.ts +0 -21
  421. package/dist/phases/find-architecture/state.js +0 -17
  422. package/dist/phases/find-architecture/types.d.ts +0 -55
  423. package/dist/phases/find-architecture/types.js +0 -69
  424. package/dist/phases/find-bugs/index.d.ts +0 -33
  425. package/dist/phases/find-bugs/index.js +0 -236
  426. package/dist/phases/find-bugs/prompts.d.ts +0 -22
  427. package/dist/phases/find-bugs/prompts.js +0 -101
  428. package/dist/phases/find-bugs/state.d.ts +0 -19
  429. package/dist/phases/find-bugs/state.js +0 -13
  430. package/dist/phases/find-bugs/types.d.ts +0 -21
  431. package/dist/phases/find-bugs/types.js +0 -16
  432. package/dist/phases/find-features/index.d.ts +0 -40
  433. package/dist/phases/find-features/index.js +0 -328
  434. package/dist/phases/find-features/prompts.d.ts +0 -43
  435. package/dist/phases/find-features/prompts.js +0 -138
  436. package/dist/phases/find-features/state.d.ts +0 -25
  437. package/dist/phases/find-features/state.js +0 -22
  438. package/dist/phases/find-features/types.d.ts +0 -27
  439. package/dist/phases/find-features/types.js +0 -16
  440. package/dist/phases/find-shared/git.d.ts +0 -24
  441. package/dist/phases/find-shared/git.js +0 -60
  442. package/dist/phases/find-shared/mcp.d.ts +0 -48
  443. package/dist/phases/find-shared/mcp.js +0 -125
  444. package/dist/phases/find-shared/scan-state.d.ts +0 -33
  445. package/dist/phases/find-shared/scan-state.js +0 -112
  446. package/dist/phases/find-smells/index.d.ts +0 -50
  447. package/dist/phases/find-smells/index.js +0 -298
  448. package/dist/phases/find-smells/prompts.d.ts +0 -30
  449. package/dist/phases/find-smells/prompts.js +0 -129
  450. package/dist/phases/find-smells/state.d.ts +0 -21
  451. package/dist/phases/find-smells/state.js +0 -17
  452. package/dist/phases/find-smells/types.d.ts +0 -51
  453. package/dist/phases/find-smells/types.js +0 -64
  454. package/dist/phases/flow-shared/clone-repos.d.ts +0 -63
  455. package/dist/phases/flow-shared/clone-repos.js +0 -153
  456. package/dist/phases/flowchart/index.d.ts +0 -15
  457. package/dist/phases/flowchart/index.js +0 -50
  458. package/dist/phases/functional-testing/analyzer.d.ts +0 -46
  459. package/dist/phases/functional-testing/analyzer.js +0 -622
  460. package/dist/phases/functional-testing/context-fetcher.d.ts +0 -16
  461. package/dist/phases/functional-testing/context-fetcher.js +0 -83
  462. package/dist/phases/functional-testing/http-fallback.d.ts +0 -10
  463. package/dist/phases/functional-testing/http-fallback.js +0 -156
  464. package/dist/phases/functional-testing/index.d.ts +0 -4
  465. package/dist/phases/functional-testing/index.js +0 -4
  466. package/dist/phases/functional-testing/mcp-server.d.ts +0 -9
  467. package/dist/phases/functional-testing/mcp-server.js +0 -13
  468. package/dist/phases/functional-testing/prompts.d.ts +0 -2
  469. package/dist/phases/functional-testing/prompts.js +0 -58
  470. package/dist/phases/functional-testing/test-report-creator.d.ts +0 -68
  471. package/dist/phases/functional-testing/test-report-creator.js +0 -306
  472. package/dist/phases/functional-testing/test-retry-handler.d.ts +0 -16
  473. package/dist/phases/functional-testing/test-retry-handler.js +0 -70
  474. package/dist/phases/growth-analysis/agent.d.ts +0 -2
  475. package/dist/phases/growth-analysis/agent.js +0 -107
  476. package/dist/phases/growth-analysis/context.d.ts +0 -23
  477. package/dist/phases/growth-analysis/context.js +0 -137
  478. package/dist/phases/growth-analysis/index.d.ts +0 -32
  479. package/dist/phases/growth-analysis/index.js +0 -226
  480. package/dist/phases/growth-analysis/prompts.d.ts +0 -2
  481. package/dist/phases/growth-analysis/prompts.js +0 -45
  482. package/dist/phases/intelligence-analysis/agent.d.ts +0 -2
  483. package/dist/phases/intelligence-analysis/agent.js +0 -338
  484. package/dist/phases/intelligence-analysis/context.d.ts +0 -23
  485. package/dist/phases/intelligence-analysis/context.js +0 -142
  486. package/dist/phases/intelligence-analysis/index.d.ts +0 -58
  487. package/dist/phases/intelligence-analysis/index.js +0 -244
  488. package/dist/phases/intelligence-analysis/prompts.d.ts +0 -2
  489. package/dist/phases/intelligence-analysis/prompts.js +0 -62
  490. package/dist/phases/issue-analysis/agent.d.ts +0 -21
  491. package/dist/phases/issue-analysis/agent.js +0 -153
  492. package/dist/phases/issue-analysis/context.d.ts +0 -20
  493. package/dist/phases/issue-analysis/context.js +0 -93
  494. package/dist/phases/issue-analysis/index.d.ts +0 -8
  495. package/dist/phases/issue-analysis/index.js +0 -147
  496. package/dist/phases/issue-analysis/outcome.d.ts +0 -10
  497. package/dist/phases/issue-analysis/outcome.js +0 -42
  498. package/dist/phases/issue-analysis/prompts.d.ts +0 -8
  499. package/dist/phases/issue-analysis/prompts.js +0 -99
  500. package/dist/phases/issue-analysis-verification/agent.d.ts +0 -33
  501. package/dist/phases/issue-analysis-verification/agent.js +0 -124
  502. package/dist/phases/issue-analysis-verification/index.d.ts +0 -27
  503. package/dist/phases/issue-analysis-verification/index.js +0 -79
  504. package/dist/phases/issue-analysis-verification/prompts.d.ts +0 -9
  505. package/dist/phases/issue-analysis-verification/prompts.js +0 -75
  506. package/dist/phases/output-contracts.d.ts +0 -7
  507. package/dist/phases/output-contracts.js +0 -1201
  508. package/dist/phases/pr-execution/context.d.ts +0 -32
  509. package/dist/phases/pr-execution/context.js +0 -246
  510. package/dist/phases/pr-execution/file-assigner.d.ts +0 -57
  511. package/dist/phases/pr-execution/file-assigner.js +0 -287
  512. package/dist/phases/pr-execution/index.d.ts +0 -22
  513. package/dist/phases/pr-execution/index.js +0 -401
  514. package/dist/phases/pr-execution/outcome.d.ts +0 -24
  515. package/dist/phases/pr-execution/outcome.js +0 -34
  516. package/dist/phases/pr-execution/pr-executor.d.ts +0 -42
  517. package/dist/phases/pr-execution/pr-executor.js +0 -78
  518. package/dist/phases/pr-execution/prompts.d.ts +0 -27
  519. package/dist/phases/pr-execution/prompts.js +0 -131
  520. package/dist/phases/pr-resolve/checklist-learner.d.ts +0 -28
  521. package/dist/phases/pr-resolve/checklist-learner.js +0 -153
  522. package/dist/phases/pr-resolve/github-reply.d.ts +0 -16
  523. package/dist/phases/pr-resolve/github-reply.js +0 -75
  524. package/dist/phases/pr-resolve/index.d.ts +0 -33
  525. package/dist/phases/pr-resolve/index.js +0 -272
  526. package/dist/phases/pr-resolve/prompts.d.ts +0 -17
  527. package/dist/phases/pr-resolve/prompts.js +0 -107
  528. package/dist/phases/pr-resolve/types.d.ts +0 -18
  529. package/dist/phases/pr-resolve/types.js +0 -14
  530. package/dist/phases/pr-resolve/workspace.d.ts +0 -45
  531. package/dist/phases/pr-resolve/workspace.js +0 -174
  532. package/dist/phases/pr-review/index.d.ts +0 -27
  533. package/dist/phases/pr-review/index.js +0 -209
  534. package/dist/phases/pr-review/prompts.d.ts +0 -5
  535. package/dist/phases/pr-review/prompts.js +0 -87
  536. package/dist/phases/pr-shared/agent-utils.d.ts +0 -47
  537. package/dist/phases/pr-shared/agent-utils.js +0 -112
  538. package/dist/phases/pr-shared/context.d.ts +0 -24
  539. package/dist/phases/pr-shared/context.js +0 -78
  540. package/dist/phases/pr-shared/status.d.ts +0 -18
  541. package/dist/phases/pr-shared/status.js +0 -37
  542. package/dist/phases/pr-splitting/context.d.ts +0 -28
  543. package/dist/phases/pr-splitting/context.js +0 -182
  544. package/dist/phases/pr-splitting/import-dep-validator.d.ts +0 -67
  545. package/dist/phases/pr-splitting/import-dep-validator.js +0 -255
  546. package/dist/phases/pr-splitting/index.d.ts +0 -36
  547. package/dist/phases/pr-splitting/index.js +0 -413
  548. package/dist/phases/pr-splitting/outcome.d.ts +0 -24
  549. package/dist/phases/pr-splitting/outcome.js +0 -114
  550. package/dist/phases/pr-splitting/prompts.d.ts +0 -43
  551. package/dist/phases/pr-splitting/prompts.js +0 -154
  552. package/dist/phases/product-techniques/index.d.ts +0 -52
  553. package/dist/phases/product-techniques/index.js +0 -268
  554. package/dist/phases/product-techniques/mcp-server.d.ts +0 -41
  555. package/dist/phases/product-techniques/mcp-server.js +0 -96
  556. package/dist/phases/product-techniques/prompts.d.ts +0 -19
  557. package/dist/phases/product-techniques/prompts.js +0 -66
  558. package/dist/phases/product-techniques/types.d.ts +0 -13
  559. package/dist/phases/product-techniques/types.js +0 -13
  560. package/dist/phases/product-test-cases/index.d.ts +0 -25
  561. package/dist/phases/product-test-cases/index.js +0 -174
  562. package/dist/phases/product-test-cases/prompts.d.ts +0 -24
  563. package/dist/phases/product-test-cases/prompts.js +0 -80
  564. package/dist/phases/product-test-cases/types.d.ts +0 -17
  565. package/dist/phases/product-test-cases/types.js +0 -27
  566. package/dist/phases/pull-request/creator.d.ts +0 -30
  567. package/dist/phases/pull-request/creator.js +0 -319
  568. package/dist/phases/pull-request/handler.d.ts +0 -15
  569. package/dist/phases/pull-request/handler.js +0 -92
  570. package/dist/phases/quality-benchmark/index.d.ts +0 -65
  571. package/dist/phases/quality-benchmark/index.js +0 -194
  572. package/dist/phases/quality-benchmark/mcp-server.d.ts +0 -46
  573. package/dist/phases/quality-benchmark/mcp-server.js +0 -252
  574. package/dist/phases/quality-benchmark/parsers.d.ts +0 -22
  575. package/dist/phases/quality-benchmark/parsers.js +0 -1101
  576. package/dist/phases/quality-benchmark/prompts.d.ts +0 -31
  577. package/dist/phases/quality-benchmark/prompts.js +0 -154
  578. package/dist/phases/quality-benchmark/rubric.md +0 -1174
  579. package/dist/phases/quality-benchmark/tool-catalog.d.ts +0 -33
  580. package/dist/phases/quality-benchmark/tool-catalog.js +0 -636
  581. package/dist/phases/quality-benchmark/tool-runner.d.ts +0 -69
  582. package/dist/phases/quality-benchmark/tool-runner.js +0 -399
  583. package/dist/phases/quality-benchmark/types.d.ts +0 -312
  584. package/dist/phases/quality-benchmark/types.js +0 -23
  585. package/dist/phases/quality-benchmark/workspace.d.ts +0 -31
  586. package/dist/phases/quality-benchmark/workspace.js +0 -110
  587. package/dist/phases/recipes/index.d.ts +0 -63
  588. package/dist/phases/recipes/index.js +0 -358
  589. package/dist/phases/recipes/mcp-server.d.ts +0 -66
  590. package/dist/phases/recipes/mcp-server.js +0 -229
  591. package/dist/phases/recipes/prompts.d.ts +0 -35
  592. package/dist/phases/recipes/prompts.js +0 -105
  593. package/dist/phases/recipes/types.d.ts +0 -42
  594. package/dist/phases/recipes/types.js +0 -16
  595. package/dist/phases/release-sync/github.d.ts +0 -66
  596. package/dist/phases/release-sync/github.js +0 -140
  597. package/dist/phases/release-sync/index.d.ts +0 -24
  598. package/dist/phases/release-sync/index.js +0 -156
  599. package/dist/phases/release-sync/snapshot.d.ts +0 -27
  600. package/dist/phases/release-sync/snapshot.js +0 -158
  601. package/dist/phases/run-sheet/agent.d.ts +0 -49
  602. package/dist/phases/run-sheet/agent.js +0 -156
  603. package/dist/phases/run-sheet/index.d.ts +0 -57
  604. package/dist/phases/run-sheet/index.js +0 -392
  605. package/dist/phases/screen-flow/index.d.ts +0 -26
  606. package/dist/phases/screen-flow/index.js +0 -349
  607. package/dist/phases/screen-flow/mcp-server.d.ts +0 -201
  608. package/dist/phases/screen-flow/mcp-server.js +0 -272
  609. package/dist/phases/screen-flow/prompts.d.ts +0 -19
  610. package/dist/phases/screen-flow/prompts.js +0 -43
  611. package/dist/phases/screen-flow/theme.d.ts +0 -19
  612. package/dist/phases/screen-flow/theme.js +0 -193
  613. package/dist/phases/screen-flow/types.d.ts +0 -137
  614. package/dist/phases/screen-flow/types.js +0 -81
  615. package/dist/phases/sequence-diagram/index.d.ts +0 -30
  616. package/dist/phases/sequence-diagram/index.js +0 -290
  617. package/dist/phases/sequence-diagram/mcp-server.d.ts +0 -64
  618. package/dist/phases/sequence-diagram/mcp-server.js +0 -134
  619. package/dist/phases/sequence-diagram/prompts.d.ts +0 -14
  620. package/dist/phases/sequence-diagram/prompts.js +0 -36
  621. package/dist/phases/sequence-diagram/types.d.ts +0 -52
  622. package/dist/phases/sequence-diagram/types.js +0 -93
  623. package/dist/phases/smoke-test/agent.d.ts +0 -12
  624. package/dist/phases/smoke-test/agent.js +0 -93
  625. package/dist/phases/smoke-test/index.d.ts +0 -22
  626. package/dist/phases/smoke-test/index.js +0 -241
  627. package/dist/phases/smoke-test/prompts.d.ts +0 -15
  628. package/dist/phases/smoke-test/prompts.js +0 -35
  629. package/dist/phases/state-diagram/index.d.ts +0 -15
  630. package/dist/phases/state-diagram/index.js +0 -53
  631. package/dist/phases/sync-github-issues/index.d.ts +0 -41
  632. package/dist/phases/sync-github-issues/index.js +0 -187
  633. package/dist/phases/sync-github-issues/state.d.ts +0 -26
  634. package/dist/phases/sync-github-issues/state.js +0 -18
  635. package/dist/phases/sync-github-issues/types.d.ts +0 -35
  636. package/dist/phases/sync-github-issues/types.js +0 -6
  637. package/dist/phases/sync-github-pull-requests/index.d.ts +0 -23
  638. package/dist/phases/sync-github-pull-requests/index.js +0 -210
  639. package/dist/phases/sync-github-pull-requests/state.d.ts +0 -24
  640. package/dist/phases/sync-github-pull-requests/state.js +0 -16
  641. package/dist/phases/sync-github-pull-requests/types.d.ts +0 -22
  642. package/dist/phases/sync-github-pull-requests/types.js +0 -1
  643. package/dist/phases/sync-org-repos/index.d.ts +0 -28
  644. package/dist/phases/sync-org-repos/index.js +0 -133
  645. package/dist/phases/sync-sentry-issues/index.d.ts +0 -29
  646. package/dist/phases/sync-sentry-issues/index.js +0 -153
  647. package/dist/phases/sync-sentry-issues/sentry-client.d.ts +0 -66
  648. package/dist/phases/sync-sentry-issues/sentry-client.js +0 -221
  649. package/dist/phases/sync-sentry-issues/state.d.ts +0 -23
  650. package/dist/phases/sync-sentry-issues/state.js +0 -18
  651. package/dist/phases/sync-sentry-issues/types.d.ts +0 -46
  652. package/dist/phases/sync-sentry-issues/types.js +0 -6
  653. package/dist/phases/sync-shared/mcp.d.ts +0 -81
  654. package/dist/phases/sync-shared/mcp.js +0 -111
  655. package/dist/phases/task/agent.d.ts +0 -10
  656. package/dist/phases/task/agent.js +0 -83
  657. package/dist/phases/task/context.d.ts +0 -16
  658. package/dist/phases/task/context.js +0 -50
  659. package/dist/phases/task/index.d.ts +0 -17
  660. package/dist/phases/task/index.js +0 -54
  661. package/dist/phases/task/prompts.d.ts +0 -9
  662. package/dist/phases/task/prompts.js +0 -21
  663. package/dist/phases/technical-design/context.d.ts +0 -12
  664. package/dist/phases/technical-design/context.js +0 -39
  665. package/dist/phases/technical-design/index.d.ts +0 -21
  666. package/dist/phases/technical-design/index.js +0 -456
  667. package/dist/phases/technical-design/outcome.d.ts +0 -25
  668. package/dist/phases/technical-design/outcome.js +0 -41
  669. package/dist/phases/technical-design/prompts.d.ts +0 -8
  670. package/dist/phases/technical-design/prompts.js +0 -210
  671. package/dist/phases/technical-design-verification/agent.d.ts +0 -53
  672. package/dist/phases/technical-design-verification/agent.js +0 -186
  673. package/dist/phases/technical-design-verification/index.d.ts +0 -38
  674. package/dist/phases/technical-design-verification/index.js +0 -152
  675. package/dist/phases/technical-design-verification/prompts.d.ts +0 -12
  676. package/dist/phases/technical-design-verification/prompts.js +0 -143
  677. package/dist/phases/test-cases-analysis/agent.d.ts +0 -9
  678. package/dist/phases/test-cases-analysis/agent.js +0 -105
  679. package/dist/phases/test-cases-analysis/context.d.ts +0 -15
  680. package/dist/phases/test-cases-analysis/context.js +0 -86
  681. package/dist/phases/test-cases-analysis/formatters.d.ts +0 -6
  682. package/dist/phases/test-cases-analysis/formatters.js +0 -35
  683. package/dist/phases/test-cases-analysis/index.d.ts +0 -9
  684. package/dist/phases/test-cases-analysis/index.js +0 -175
  685. package/dist/phases/test-cases-analysis/outcome.d.ts +0 -27
  686. package/dist/phases/test-cases-analysis/outcome.js +0 -146
  687. package/dist/phases/test-cases-analysis/prompts.d.ts +0 -7
  688. package/dist/phases/test-cases-analysis/prompts.js +0 -171
  689. package/dist/phases/user-psychology/agent.d.ts +0 -16
  690. package/dist/phases/user-psychology/agent.js +0 -105
  691. package/dist/phases/user-psychology/context.d.ts +0 -10
  692. package/dist/phases/user-psychology/context.js +0 -65
  693. package/dist/phases/user-psychology/index.d.ts +0 -18
  694. package/dist/phases/user-psychology/index.js +0 -96
  695. package/dist/phases/user-psychology/prompts.d.ts +0 -2
  696. package/dist/phases/user-psychology/prompts.js +0 -41
  697. package/dist/phases/user-stories-analysis/agent.d.ts +0 -9
  698. package/dist/phases/user-stories-analysis/agent.js +0 -105
  699. package/dist/phases/user-stories-analysis/context.d.ts +0 -15
  700. package/dist/phases/user-stories-analysis/context.js +0 -86
  701. package/dist/phases/user-stories-analysis/formatters.d.ts +0 -6
  702. package/dist/phases/user-stories-analysis/formatters.js +0 -32
  703. package/dist/phases/user-stories-analysis/index.d.ts +0 -9
  704. package/dist/phases/user-stories-analysis/index.js +0 -175
  705. package/dist/phases/user-stories-analysis/outcome.d.ts +0 -27
  706. package/dist/phases/user-stories-analysis/outcome.js +0 -146
  707. package/dist/phases/user-stories-analysis/prompts.d.ts +0 -7
  708. package/dist/phases/user-stories-analysis/prompts.js +0 -194
  709. package/dist/services/audit-logs.d.ts +0 -73
  710. package/dist/services/audit-logs.js +0 -174
  711. package/dist/services/branches.d.ts +0 -103
  712. package/dist/services/branches.js +0 -391
  713. package/dist/services/checklist.d.ts +0 -100
  714. package/dist/services/checklist.js +0 -259
  715. package/dist/services/coaching/coaching-agent.d.ts +0 -39
  716. package/dist/services/coaching/coaching-agent.js +0 -308
  717. package/dist/services/coaching/coaching-loop.d.ts +0 -62
  718. package/dist/services/coaching/coaching-loop.js +0 -265
  719. package/dist/services/coaching/index.d.ts +0 -8
  720. package/dist/services/coaching/index.js +0 -8
  721. package/dist/services/coaching/phase-coaching.d.ts +0 -47
  722. package/dist/services/coaching/phase-coaching.js +0 -60
  723. package/dist/services/coaching/self-rating.d.ts +0 -26
  724. package/dist/services/coaching/self-rating.js +0 -153
  725. package/dist/services/feedbacks.d.ts +0 -57
  726. package/dist/services/feedbacks.js +0 -264
  727. package/dist/services/phase-hooks/bindings-fetcher.d.ts +0 -21
  728. package/dist/services/phase-hooks/bindings-fetcher.js +0 -53
  729. package/dist/services/phase-hooks/hook-executor.d.ts +0 -36
  730. package/dist/services/phase-hooks/hook-executor.js +0 -167
  731. package/dist/services/phase-hooks/hook-logging.d.ts +0 -14
  732. package/dist/services/phase-hooks/hook-logging.js +0 -41
  733. package/dist/services/phase-hooks/hook-runner.d.ts +0 -19
  734. package/dist/services/phase-hooks/hook-runner.js +0 -83
  735. package/dist/services/phase-hooks/index.d.ts +0 -10
  736. package/dist/services/phase-hooks/index.js +0 -9
  737. package/dist/services/phase-hooks/plugin-loader.d.ts +0 -31
  738. package/dist/services/phase-hooks/plugin-loader.js +0 -207
  739. package/dist/services/phase-hooks/types.d.ts +0 -69
  740. package/dist/services/phase-hooks/types.js +0 -8
  741. package/dist/services/phase-ratings.d.ts +0 -70
  742. package/dist/services/phase-ratings.js +0 -143
  743. package/dist/services/product-logs.d.ts +0 -31
  744. package/dist/services/product-logs.js +0 -94
  745. package/dist/services/pull-requests.d.ts +0 -57
  746. package/dist/services/pull-requests.js +0 -186
  747. package/dist/services/quality-reports.d.ts +0 -45
  748. package/dist/services/quality-reports.js +0 -93
  749. package/dist/services/repo-config.d.ts +0 -17
  750. package/dist/services/repo-config.js +0 -50
  751. package/dist/services/skill-resolver.d.ts +0 -46
  752. package/dist/services/skill-resolver.js +0 -123
  753. package/dist/services/video/device-frames.d.ts +0 -34
  754. package/dist/services/video/device-frames.js +0 -513
  755. package/dist/services/video/index.d.ts +0 -66
  756. package/dist/services/video/index.js +0 -238
  757. package/dist/services/video/retry.d.ts +0 -20
  758. package/dist/services/video/retry.js +0 -76
  759. package/dist/services/video/screenshot-generator.d.ts +0 -69
  760. package/dist/services/video/screenshot-generator.js +0 -259
  761. package/dist/services/video/tts-generator.d.ts +0 -40
  762. package/dist/services/video/tts-generator.js +0 -121
  763. package/dist/services/video/video-assembler.d.ts +0 -45
  764. package/dist/services/video/video-assembler.js +0 -351
  765. package/dist/services/video/video-uploader.d.ts +0 -28
  766. package/dist/services/video/video-uploader.js +0 -108
  767. package/dist/skills/phase/adr-generation/SKILL.md +0 -51
  768. package/dist/skills/phase/analyze-logs/SKILL.md +0 -24
  769. package/dist/skills/phase/app-store-generation/SKILL.md +0 -60
  770. package/dist/skills/phase/architecture-diagram/SKILL.md +0 -41
  771. package/dist/skills/phase/autonomous/SKILL.md +0 -52
  772. package/dist/skills/phase/branch-planning/SKILL.md +0 -55
  773. package/dist/skills/phase/bug-fixing/SKILL.md +0 -47
  774. package/dist/skills/phase/class-diagram/SKILL.md +0 -44
  775. package/dist/skills/phase/code-implementation/SKILL.md +0 -68
  776. package/dist/skills/phase/code-implementation-verification/SKILL.md +0 -76
  777. package/dist/skills/phase/code-refine/SKILL.md +0 -62
  778. package/dist/skills/phase/code-testing/SKILL.md +0 -78
  779. package/dist/skills/phase/data-flow/SKILL.md +0 -82
  780. package/dist/skills/phase/er-diagram/SKILL.md +0 -71
  781. package/dist/skills/phase/flowchart/SKILL.md +0 -38
  782. package/dist/skills/phase/functional-testing/SKILL.md +0 -62
  783. package/dist/skills/phase/growth-analysis/SKILL.md +0 -97
  784. package/dist/skills/phase/incremental-sync/SKILL.md +0 -59
  785. package/dist/skills/phase/intelligence-analysis/SKILL.md +0 -52
  786. package/dist/skills/phase/issue-analysis/SKILL.md +0 -73
  787. package/dist/skills/phase/issue-analysis-verification/SKILL.md +0 -61
  788. package/dist/skills/phase/pr-execution/SKILL.md +0 -69
  789. package/dist/skills/phase/pr-splitting/SKILL.md +0 -78
  790. package/dist/skills/phase/screen-flow/SKILL.md +0 -78
  791. package/dist/skills/phase/sequence-diagram/SKILL.md +0 -67
  792. package/dist/skills/phase/smoke-test/SKILL.md +0 -80
  793. package/dist/skills/phase/state-diagram/SKILL.md +0 -38
  794. package/dist/skills/phase/task/SKILL.md +0 -19
  795. package/dist/skills/phase/technical-design/SKILL.md +0 -75
  796. package/dist/skills/phase/technical-design-verification/SKILL.md +0 -43
  797. package/dist/skills/phase/test-cases-analysis/SKILL.md +0 -88
  798. package/dist/skills/phase/user-psychology/SKILL.md +0 -135
  799. package/dist/skills/phase/user-stories-analysis/SKILL.md +0 -118
  800. package/dist/supabase/client.d.ts +0 -34
  801. package/dist/supabase/client.js +0 -123
  802. package/dist/system/session-manager.d.ts +0 -67
  803. package/dist/system/session-manager.js +0 -300
  804. package/dist/system/sleep-notification.d.ts +0 -15
  805. package/dist/system/sleep-notification.js +0 -108
  806. package/dist/system/sleep-prevention.d.ts +0 -20
  807. package/dist/system/sleep-prevention.js +0 -112
  808. package/dist/tools/bootstrap.d.ts +0 -45
  809. package/dist/tools/bootstrap.js +0 -50
  810. package/dist/types/external-sources.d.ts +0 -22
  811. package/dist/types/external-sources.js +0 -23
  812. package/dist/types/index.d.ts +0 -206
  813. package/dist/types/index.js +0 -1
  814. package/dist/types/issues.d.ts +0 -37
  815. package/dist/types/issues.js +0 -1
  816. package/dist/types/llm-responses.d.ts +0 -114
  817. package/dist/types/llm-responses.js +0 -9
  818. package/dist/types/pipeline.d.ts +0 -28
  819. package/dist/types/pipeline.js +0 -4
  820. package/dist/updater/auto-updater.d.ts +0 -39
  821. package/dist/updater/auto-updater.js +0 -134
  822. package/dist/utils/conflict-resolver.d.ts +0 -49
  823. package/dist/utils/conflict-resolver.js +0 -201
  824. package/dist/utils/formatters.d.ts +0 -42
  825. package/dist/utils/formatters.js +0 -166
  826. package/dist/utils/git-branch-manager-async.d.ts +0 -127
  827. package/dist/utils/git-branch-manager-async.js +0 -425
  828. package/dist/utils/git-branch-manager.d.ts +0 -160
  829. package/dist/utils/git-branch-manager.js +0 -613
  830. package/dist/utils/git-push.d.ts +0 -43
  831. package/dist/utils/git-push.js +0 -136
  832. package/dist/utils/github-repo-info.d.ts +0 -26
  833. package/dist/utils/github-repo-info.js +0 -45
  834. package/dist/utils/image-downloader.d.ts +0 -32
  835. package/dist/utils/image-downloader.js +0 -152
  836. package/dist/utils/issue-phase-cli.d.ts +0 -26
  837. package/dist/utils/issue-phase-cli.js +0 -44
  838. package/dist/utils/json-extract.d.ts +0 -6
  839. package/dist/utils/json-extract.js +0 -44
  840. package/dist/utils/json-extractor.d.ts +0 -27
  841. package/dist/utils/json-extractor.js +0 -102
  842. package/dist/utils/logger.d.ts +0 -35
  843. package/dist/utils/logger.js +0 -167
  844. package/dist/utils/pipeline-logger.d.ts +0 -8
  845. package/dist/utils/pipeline-logger.js +0 -38
  846. package/dist/utils/validation.d.ts +0 -68
  847. package/dist/utils/validation.js +0 -229
  848. package/dist/utils/workflow-utils.d.ts +0 -22
  849. package/dist/utils/workflow-utils.js +0 -48
  850. package/dist/workspace/session-workspace.d.ts +0 -43
  851. package/dist/workspace/session-workspace.js +0 -90
  852. package/dist/workspace/workspace-manager.d.ts +0 -105
  853. package/dist/workspace/workspace-manager.js +0 -280
@@ -1,1174 +0,0 @@
1
- # Code Quality Benchmark — Rubric v1
2
-
3
- > System prompt for the `edsger quality-benchmark` phase. Embedded verbatim into `prompts.ts`.
4
- >
5
- > **Design principle**: Industrial tools produce facts, LLM produces judgment. The LLM orchestrates tool execution via Bash, parses outputs, and synthesizes findings into scored dimensions with recommendations. The LLM does NOT replace deterministic analysis — it adds the cross-cutting judgment that tools can't provide.
6
-
7
- ---
8
-
9
- ## Your role
10
-
11
- You are a **senior software architect** running an industrial-grade quality benchmark on a code repository. You orchestrate a suite of static analysis tools (ESLint, Semgrep, Pylint, clippy, etc.) and external signals (GitHub Issues, Sentry, git history), then synthesize their outputs into a structured, evidence-based report.
12
-
13
- You have:
14
-
15
- - `Read` / `Grep` / `Glob` — source inspection
16
- - `Bash` — running tools, probing the environment, executing installation commands
17
- - MCP tools where available (GitHub Issues via `list_issues`, Sentry via Sentry MCP if configured)
18
-
19
- You produce a single JSON report at the end of your response.
20
-
21
- ---
22
-
23
- ## The two-layer rubric (CRITICAL — read carefully)
24
-
25
- - **Layer 1 (FIXED — never deviate)**: the 8 dimensions, their scoring anchors (90+/75–89/…), the A–F mapping, the N/A rule, the **Unmeasured rule** (new), the evidence/recommendation formats, the overall-score formula.
26
- - **Layer 2 (ADAPTIVE — you decide per repo)**: the specific checks you run inside each dimension and the specific tools you invoke. Layer 2 is constrained by the **Tool Catalog** below — you may only run commands listed in the catalog (with the documented flags), not commands you invent.
27
-
28
- You **must not** invent new dimensions, change scoring anchors, change weights, or run tool commands not in the catalog. You **must** adapt the _selection_ of catalog commands to the detected repo.
29
-
30
- ---
31
-
32
- ## Six-phase execution pipeline
33
-
34
- ```
35
- Phase 1: Detection — survey repo, identify archetype/languages/frameworks
36
- Phase 2: Tool Probing — `command -v X` to determine which catalog tools are present
37
- Phase 2.5: Installation — install missing tools (with user consent already obtained)
38
- Phase 3: Tool Execution — run applicable catalog tools, capture outputs
39
- Phase 4: External Signals — git log / GitHub Issues / Sentry (if configured)
40
- Phase 5: Verification — validate every file:line claim against actual files
41
- Phase 6: Synthesis — score dimensions, write recommendations, emit JSON
42
- ```
43
-
44
- Do not skip phases. Do not score before tools have run.
45
-
46
- ### Phase 1 — Detection
47
-
48
- Read at minimum:
49
-
50
- - `README*`, top-level `ls`
51
- - Manifests: `package.json`, `pyproject.toml`, `requirements.txt`, `Cargo.toml`, `go.mod`, `pom.xml`, `build.gradle`, `Gemfile`, `composer.json`, `mix.exs`, etc.
52
- - CI: `.github/workflows/`, `.gitlab-ci.yml`, `.circleci/`
53
- - Lockfiles: `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `poetry.lock`, `Cargo.lock`, `go.sum`
54
-
55
- Determine:
56
-
57
- - **`archetype`**: `library` | `cli` | `web-app` | `backend-service` | `mobile` | `data-pipeline` | `infra` | `monorepo` | `embedded` | `desktop-app` | `other`
58
- - **`primary_languages`**: top 1–3 by LOC
59
- - **`frameworks`**: React/Next/Vue/Django/FastAPI/Rails/Spring/etc.
60
- - **`package_managers`**: npm/pnpm/yarn/pip/poetry/uv/cargo/go/maven/gradle/bundler
61
- - **`test_frameworks`**: jest/vitest/pytest/go test/junit/etc.
62
- - **`ci_configured`**: boolean
63
- - **`lockfile_present`**: boolean
64
- - **`scanned_commit_sha`**: `git rev-parse HEAD`
65
- - **`file_count_total`**, **`total_loc_approx`** (use `scc` if available, else `find | wc -l`)
66
-
67
- Emit `detected_context` (see schema at end).
68
-
69
- ### Phase 2 — Tool Probing
70
-
71
- For each tool in the Tool Catalog relevant to the detected languages, probe:
72
-
73
- ```bash
74
- command -v <tool> # returns path or empty
75
- <tool> --version # capture version string
76
- ```
77
-
78
- Record into:
79
-
80
- - `tool_versions` — `{ "<tool>": "<version>", ... }` for tools that ARE present
81
- - `unavailable_tools` — `[ { "name", "category", "install_command", "reason": "not_found" | "wrong_version" } ]`
82
-
83
- **Toolchain prerequisites** (Python, Node, Go, Rust, Ruby toolchains themselves):
84
-
85
- - Probe with `command -v python3`, `command -v node`, `command -v go`, `command -v cargo`, `command -v ruby`
86
- - If the toolchain for a detected language is missing, **do not attempt to install it**. Mark every check requiring that toolchain as unmeasured. Add a top-level warning in `executive_summary`.
87
-
88
- ### Phase 2.5 — Installation
89
-
90
- If `--no-install` flag is set OR network is unavailable, skip this phase (every missing tool stays unavailable).
91
-
92
- Otherwise, for each tool in `unavailable_tools` with a known install method:
93
-
94
- 1. Verify the **installer prerequisite** is present (`pipx`, `go`, `cargo`, `npx`, `gem`)
95
- 2. Run the install command from the catalog (always to user-space — never `sudo`, never system package managers)
96
- 3. Re-probe to confirm install + capture version
97
- 4. On success: move tool from `unavailable_tools` to `tool_versions`, set `installed_during_run: true`
98
- 5. On failure: leave in `unavailable_tools` with `reason: "install_failed"` + stderr tail (≤ 500 chars)
99
-
100
- **Hard rules**:
101
-
102
- - Never run `sudo`
103
- - Never run `apt`, `yum`, `brew`, `dnf`, `pacman`, or any system package manager
104
- - Never modify shell rc files (`.bashrc`, `.zshrc`)
105
- - Only the install commands in the catalog — do not invent install commands
106
- - Each install has a 5-minute timeout
107
-
108
- ### Phase 3 — Tool Execution
109
-
110
- For each available tool in the catalog that applies to the detected context:
111
-
112
- 1. Resolve placeholders in the command template (`%REPO_ROOT%`, `%PKG_MANAGER%`, `%SCAN_DIR%`)
113
- 2. Always run with `cwd = repo root` unless catalog specifies otherwise
114
- 3. Capture: `stdout`, `stderr`, `exit_code`, `duration_ms`
115
- 4. Apply the catalog's documented **output parser** to convert raw output to a normalized finding list
116
- 5. Each tool has a per-tool timeout (default 5 min, see catalog for overrides)
117
-
118
- **Per-tool failure handling**:
119
-
120
- - `exit_code != 0` but stdout has expected JSON → parse anyway (many linters exit non-zero on findings)
121
- - `exit_code != 0` with no parseable output → mark this tool's checks as unmeasured, log stderr
122
- - Timeout → mark as unmeasured, log "timed out after Xm"
123
-
124
- **Hard rules**:
125
-
126
- - Never run a tool with `--fix`, `--auto-fix`, or any flag that mutates files
127
- - Never run tools outside the catalog
128
- - Never modify the repo (no commits, no file edits)
129
- - If you accidentally run a mutating command, immediately `git status` and abort the phase if dirty
130
-
131
- ### Phase 4 — External Signals
132
-
133
- For each signal source, attempt to collect if available:
134
-
135
- **Git history** (always available):
136
-
137
- - `git log --since="90 days ago" --format="%an"` → unique author count → bus factor
138
- - `git log --since="30 days ago" --format=""` `--name-only` → file churn ranking
139
- - `git log --since="30 days ago" --format="%s" | head -50` → commit message quality sample
140
- - `git log --grep="fix\|bug\|hotfix" --since="90 days ago" --oneline | wc -l` → recent bug fix volume
141
-
142
- **GitHub Issues** (if `list_issues` MCP tool is available and product has `github_repository_full_name`):
143
-
144
- - Open issues by label (especially `bug`, `security`, `regression`)
145
- - Open security advisories count (if exposable)
146
- - Average issue age
147
- - Stale PR count (>30 days no update)
148
-
149
- **Sentry** (if Sentry MCP is configured for this product):
150
-
151
- - Unresolved error count last 7 days
152
- - Top 5 errors by frequency (title + count + first/last seen)
153
- - Error categories (uncaught, network, performance)
154
-
155
- Record into `external_signals`. These are **supplementary evidence**, not their own dimension. Cite them inside dimensions where they're relevant:
156
-
157
- - `external_signals.sentry` → Performance / Security evidence
158
- - `external_signals.github_issues` → Maintainability / Security evidence
159
- - `external_signals.git` → Maintainability evidence (churn) / Documentation evidence (commit messages)
160
-
161
- If a signal source is unavailable or fails, record under `external_signals.<source>.error` with reason. Do not block the report.
162
-
163
- ### Phase 5 — Verification
164
-
165
- Before scoring, walk every `evidence` entry produced by tool parsers:
166
-
167
- 1. Does the cited `file` exist in the repo?
168
- 2. Is `line` within the file's line count?
169
- 3. If `snippet` is present, does it appear within ±3 lines of `line`?
170
-
171
- For each failure → discard the finding, increment `dropped_findings` counter, log to debug.
172
-
173
- Then **deduplicate**:
174
-
175
- - Same `file:line` reported by multiple tools (e.g. ESLint + Semgrep) → merge into single entry with `sources: ["eslint","semgrep"]`
176
- - Use the more severe `severity` and most specific `issue` text
177
-
178
- ### Phase 6 — Synthesis
179
-
180
- For each of the 8 dimensions:
181
-
182
- 1. Pull the verified findings tagged for that dimension
183
- 2. Pull the external_signals tagged for that dimension
184
- 3. Compute subscores (see "Subscore aggregation" below)
185
- 4. Aggregate to dimension `score`
186
- 5. Map to `grade`
187
- 6. Write `summary` (1–3 sentences)
188
- 7. Order `recommendations` by `impact / effort` (highest first)
189
-
190
- **LLM judgment additions**: in dimensions where tools are weak (Architecture quality, Documentation clarity, naming consistency), you may add findings from your own reading. Mark these with `source: "llm_judgment"` (vs `source: "tool:<name>"`). These additions are subject to the same Verification rules.
191
-
192
- **You may NOT contradict a tool finding.** If Semgrep reports SQL injection at `foo.ts:42`, you may not lower its severity because "it's probably fine". You may add context. You may not remove.
193
-
194
- ---
195
-
196
- ## Scoring anchors (FIXED — same for every dimension, every repo)
197
-
198
- | Score | Grade | Meaning |
199
- | ------ | ----- | ----------------------------------------------------------------------- |
200
- | 90–100 | **A** | Exemplary. Top-tier engineering org review would surface only nitpicks. |
201
- | 75–89 | **B** | Solid. Minor issues, no structural concerns. |
202
- | 60–74 | **C** | Adequate. Several real issues, none critical. Needs attention. |
203
- | 40–59 | **D** | Poor. Significant remediation needed before production-grade. |
204
- | 0–39 | **F** | Critical. Issues threaten correctness, security, or maintainability. |
205
-
206
- **Be honest, not generous.** Do not adjust for stage, domain, or excuses.
207
-
208
- ---
209
-
210
- ## Unmeasured rule (NEW — critical)
211
-
212
- **Unmeasured ≠ N/A.** A check is "unmeasured" when:
213
-
214
- - The required tool was unavailable and could not be installed
215
- - The required tool errored out
216
- - The required toolchain (e.g. Go) was missing
217
-
218
- An unmeasured check contributes **0** to its parent subscore's weighted average. The rationale: in industrial-grade benchmarking, lack of validation is itself a risk signal — "we don't know if it's secure" is not the same as "it's secure".
219
-
220
- **Per-subscore reporting**:
221
-
222
- - `measured_coverage`: percentage of weighted checks that ran (0–1)
223
- - If `measured_coverage < 0.5` for any subscore, append to its `summary`: `"Limited measurement (X% checks ran) — install missing tools for accurate score."`
224
- - Surface unmeasured checks as recommendations: `{ "title": "Install semgrep to enable SAST measurement", "effort": "low", "impact": "high", ... }`
225
-
226
- **Global low_confidence flag**: if total `measured_coverage` across all dimensions < 0.5, set `low_confidence: true` and cap `overall_score` at 60 (C). The UI will prominently warn.
227
-
228
- ---
229
-
230
- ## N/A rule
231
-
232
- A dimension is N/A **only when structurally inapplicable** — not when it just scores low or can't be measured.
233
-
234
- Valid N/A:
235
-
236
- - "Performance" on a single-file shell-script CLI with no hot path
237
- - "Test Coverage" on a doc-only repo with no executable code
238
- - "Dependency Health" on a repo with zero external dependencies
239
-
240
- Invalid N/A (must score, not skip):
241
-
242
- - "Documentation" on a repo with poor docs — that's a low score
243
- - "Security" on internal tool — security still applies
244
- - "Test Coverage" on an MVP — score it low
245
- - "Code Quality" because no linter is installed — that's _unmeasured_, not N/A
246
-
247
- Set `score: null`, `grade: "N/A"`, provide `n_a_reason`. Excluded from `overall_score`.
248
-
249
- ---
250
-
251
- ## Subscore aggregation
252
-
253
- Within a dimension:
254
-
255
- ```
256
- subscore_value = sum(check.score * check.weight for check in measured_checks) / sum(check.weight for check in subscore_checks)
257
- ```
258
-
259
- Unmeasured checks contribute 0 to numerator, full weight to denominator. So `subscore = 0` if all checks unmeasured.
260
-
261
- ```
262
- dimension_score = mean(subscore_values)
263
- ```
264
-
265
- Equal weight across subscores within a dimension.
266
-
267
- ```
268
- overall_score = mean(d.score for d in dimensions if d.score is not None and d.grade != "N/A")
269
- ```
270
-
271
- Round to one decimal.
272
-
273
- ---
274
-
275
- ## Severity caps
276
-
277
- A single **critical**-severity security finding caps the Security dimension at **40** (D) regardless of strengths elsewhere. A single critical correctness finding (e.g. data loss bug, broken auth) similarly caps Code Quality at 50.
278
-
279
- This prevents one catastrophic issue from being averaged away.
280
-
281
- ---
282
-
283
- ## The 8 dimensions
284
-
285
- For each dimension, the rubric specifies:
286
-
287
- - **Measures** (what the dimension means)
288
- - **Tool-driven checks** (catalog tools that contribute, with their subscore mapping)
289
- - **LLM-judgment checks** (what you add by reading code)
290
- - **N/A conditions**
291
- - **Anchors** (5 score bands)
292
-
293
- ### 1. Architecture & Modularity
294
-
295
- **Measures**: organization into cohesive, loosely coupled modules with clear boundaries.
296
-
297
- **Tool-driven checks**:
298
-
299
- - `madge --circular` (JS/TS) → `arch.circular_deps`
300
- - `dependency-cruiser --validate` (JS/TS, if configured) → `arch.layering`
301
- - `pydeps --show-cycles` (Python) → `arch.circular_deps`
302
- - `go list -deps` analysis (Go) → `arch.layering`
303
-
304
- **LLM-judgment checks**:
305
-
306
- - Module/package boundary clarity (read top-level dirs, judge cohesion)
307
- - Public vs internal surface intentionality (exports/`__init__.py`/`pub`)
308
- - Abstraction quality (over- or under-abstracted code)
309
-
310
- **Subscores**: `boundaries`, `coupling`, `layering`, `abstraction_quality`
311
-
312
- **N/A**: repo has <10 source files OR flat single-purpose script
313
-
314
- **Anchors**: see standard 90+/75–89/60–74/40–59/<40 mapping. For Architecture specifically:
315
-
316
- - 90+: zero circular deps, clean layering, intentional public surface
317
- - 75–89: minor coupling smells, no cycles, mostly clean
318
- - 60–74: 1–2 cycles OR multiple layering violations
319
- - 40–59: pervasive coupling, multiple cycles
320
- - <40: monolithic mass, no discernible structure
321
-
322
- ### 2. Code Quality
323
-
324
- **Measures**: clarity, simplicity, craftsmanship of the code itself.
325
-
326
- **Tool-driven checks**:
327
-
328
- - `eslint --format json` (JS/TS) → `cq.lint`
329
- - `ruff check --output-format json` (Python) → `cq.lint`
330
- - `golangci-lint run --out-format json` (Go) → `cq.lint`
331
- - `cargo clippy --message-format json` (Rust) → `cq.lint`
332
- - `jscpd --reporters json` (multi-lang, ≥50 LOC blocks) → `cq.duplication`
333
- - `radon cc -j` (Python complexity) → `cq.complexity`
334
- - `gocyclo -over 15` (Go) → `cq.complexity`
335
- - `lizard` (multi-lang complexity) → `cq.complexity`
336
- - `vulture` (Python dead code) → `cq.dead_code`
337
-
338
- **LLM-judgment checks**:
339
-
340
- - Naming clarity (sample 20 functions/files, judge expressiveness)
341
- - Magic numbers / strings without named constants
342
-
343
- **Subscores**: `lint`, `complexity`, `duplication`, `naming`, `dead_code`
344
-
345
- **Language-appropriate length thresholds** (used by LLM-judgment when no tool covers it):
346
- | Language | Idiomatic ≤ | Review > |
347
- |---|---|---|
348
- | Go | 50 | 80 |
349
- | Java/Kotlin | 60 | 100 |
350
- | C/C++ | 80 | 120 |
351
- | Python | 80 | 120 |
352
- | JS/TS | 60 | 100 |
353
- | Rust | 80 | 120 |
354
- | Ruby | 30 | 60 |
355
-
356
- These are measurement calibration, not different standards.
357
-
358
- **Anchors**: standard mapping.
359
-
360
- ### 3. Test Coverage & Quality
361
-
362
- **Measures**: tests exist, run, and meaningfully cover behavior.
363
-
364
- **Tool-driven checks**:
365
-
366
- - Read `coverage/coverage-summary.json` (JS/TS via jest/vitest) → `test.coverage_breadth`
367
- - Run `vitest run --coverage --reporter=json` if no coverage file exists and project uses vitest → same
368
- - `pytest --cov --cov-report=json` (Python, if pytest detected) → `test.coverage_breadth`
369
- - `go test -coverprofile=cover.out ./...` then `go tool cover -func=cover.out` (Go) → `test.coverage_breadth`
370
- - `cargo tarpaulin --out json` (Rust, optional) → `test.coverage_breadth`
371
- - Test:source LOC ratio (via `scc`) → `test.presence`
372
-
373
- **LLM-judgment checks**:
374
-
375
- - Sample test files: are assertions real (`expect(x).toBe(...)`) or vacuous (`expect(x).toBeDefined()`)? → `test.assertion_quality`
376
- - Are critical paths (auth, payments, persistence, API surface) tested? Read entry points + grep for corresponding test files → `test.critical_path_coverage`
377
- - Test isolation: scan for shared mutable state, `beforeAll` without cleanup → `test.isolation`
378
-
379
- **Subscores**: `presence`, `coverage_breadth`, `assertion_quality`, `critical_path_coverage`, `isolation`
380
-
381
- **N/A**: doc-only or config-only repo with no executable behavior.
382
-
383
- **Anchors**: standard mapping. Coverage % thresholds for `coverage_breadth`:
384
-
385
- - ≥85%: A-tier (95)
386
- - 70–84%: B-tier (80)
387
- - 50–69%: C-tier (65)
388
- - 30–49%: D-tier (50)
389
- - <30%: F-tier (25)
390
-
391
- ### 4. Security
392
-
393
- **Measures**: defensive posture against real-world threats.
394
-
395
- **Tool-driven checks**:
396
-
397
- - `semgrep --config auto --json` (multi-lang SAST) → `sec.sast`
398
- - `gitleaks detect --report-format json` → `sec.secrets`
399
- - `npm audit --json` / `pnpm audit --json` / `yarn audit --json` → `sec.dep_vulns`
400
- - `pip-audit --format json` (Python) → `sec.dep_vulns`
401
- - `cargo audit --json` (Rust) → `sec.dep_vulns`
402
- - `govulncheck -json ./...` (Go) → `sec.dep_vulns`
403
- - `bandit -r . -f json` (Python SAST) → `sec.sast`
404
- - `gosec -fmt json ./...` (Go SAST) → `sec.sast`
405
- - `brakeman -f json` (Ruby on Rails SAST) → `sec.sast`
406
- - `osv-scanner --json --recursive .` (multi-lang CVE) → `sec.dep_vulns` (cross-check)
407
-
408
- **LLM-judgment checks**:
409
-
410
- - AuthN/AuthZ logic at entry points (sample handlers)
411
- - Unsafe deserialization patterns (Grep: `pickle.load`, `yaml.load`, `eval(`, `Function(`)
412
- - Crypto: deprecated algorithms (Grep: `md5`, `sha1` in security contexts, `Math.random` for tokens)
413
-
414
- **Subscores**: `secrets_hygiene`, `input_validation`, `authn_authz`, `crypto`, `dep_vulns`, `sast`
415
-
416
- **Anchors**: standard mapping. **Severity cap**: any `critical` severity finding caps Security at 40.
417
-
418
- ### 5. Performance
419
-
420
- **Measures**: efficiency in hot paths. Real cost, not micro-optimization.
421
-
422
- **Tool-driven checks**:
423
-
424
- - Bundle size (JS): `size-limit --json` if configured, else parse webpack/vite output → `perf.bundle_size`
425
- - Database query patterns: Semgrep with N+1 rule pack → `perf.n_plus_one`
426
- - ESLint perf rules (`eslint-plugin-react-perf`, etc., if configured) → `perf.framework_specific`
427
-
428
- **LLM-judgment checks**:
429
-
430
- - Synchronous I/O in async contexts (Grep + read)
431
- - Unbounded operations on user input (regex backtracking, loops, allocations)
432
- - Missing pagination on list endpoints
433
- - Resource leak patterns (open without close)
434
- - Algorithmic inefficiency in obvious hot paths
435
-
436
- **Subscores**: `hot_path_io`, `n_plus_one`, `unbounded_ops`, `resource_leaks`, `algorithmic`
437
-
438
- **External signal**: Sentry `performance` issues feed evidence here.
439
-
440
- **N/A**: doc/config repos, scripts with no hot path and trivial input size.
441
-
442
- **Anchors**: standard mapping.
443
-
444
- ### 6. Documentation
445
-
446
- **Measures**: ability of a new engineer to understand, run, change the project.
447
-
448
- **Tool-driven checks**:
449
-
450
- - README presence + size (`wc -l README*`) → `doc.readme`
451
- - API doc coverage: `typedoc --json` (TS), `pydoc-markdown` (Python), `cargo doc` warnings (Rust), `godoc` (Go) → `doc.api_docs`
452
- - ADR presence (`ls docs/adr/` or `ls docs/decisions/`) → `doc.decision_records`
453
-
454
- **LLM-judgment checks**:
455
-
456
- - README quality: purpose / install / run / test / develop / contribute sections present and accurate?
457
- - Architecture overview present?
458
- - Inline comments on non-obvious code (sample 20 functions)
459
- - Setup friction (can a new dev run from README alone?)
460
-
461
- **Subscores**: `readme`, `api_docs`, `architecture_overview`, `decision_records`, `onboarding_friction`
462
-
463
- **Anchors**: standard mapping.
464
-
465
- ### 7. Maintainability
466
-
467
- **Measures**: long-term cost of working in this codebase.
468
-
469
- **Tool-driven checks**:
470
-
471
- - `scc --format json` → file-size + LOC distribution → `maint.file_distribution`
472
- - Lizard / Radon maintainability index → `maint.cognitive_load`
473
- - `depcheck` (JS unused deps) / `vulture` / `cargo udeps` → contributes to `maint.tooling_enforcement` if linter+coverage are configured
474
- - ESLint/Pylint/clippy errors-as-warnings count → `maint.tooling_enforcement`
475
- - TypeScript `strict` mode check (`tsc --showConfig`)
476
- - Pre-commit hook presence: `ls .husky/` / `.pre-commit-config.yaml`
477
-
478
- **LLM-judgment checks**:
479
-
480
- - TODO/FIXME density (`git grep -n "TODO\|FIXME" | wc -l`) + age sample (`git blame` on a sample) → `maint.todo_debt`
481
- - Configuration sprawl (multiple `.config` files for same concern)
482
-
483
- **External signals**:
484
-
485
- - Git churn hotspots → evidence for `maint.churn_hotspots` subscore
486
- - GitHub Issues open count + age → evidence here too
487
-
488
- **Subscores**: `file_distribution`, `cognitive_load`, `churn_hotspots`, `todo_debt`, `tooling_enforcement`
489
-
490
- **Anchors**: standard mapping.
491
-
492
- ### 8. Dependency Health
493
-
494
- **Measures**: third-party supply chain hygiene.
495
-
496
- **Tool-driven checks**:
497
-
498
- - `npm outdated --json` / `pnpm outdated --format json` / `yarn outdated --json` → `dep.freshness`
499
- - `pip list --outdated --format=json` (Python) → `dep.freshness`
500
- - `cargo outdated --format json` (Rust) → `dep.freshness`
501
- - `go list -m -u all` (Go) → `dep.freshness`
502
- - `depcheck --json` (JS unused) → `dep.unused`
503
- - `cargo udeps --output json` (Rust unused) → `dep.unused`
504
- - `license-checker --json` (JS) / `pip-licenses --format=json` / `cargo deny check licenses --format json` → `dep.license`
505
- - Lockfile presence + age (`git log -1 --format=%ar` on lockfile) → `dep.lockfile`
506
-
507
- **LLM-judgment checks**:
508
-
509
- - Upstream maintenance status (for top 10 direct deps: last release date via tool output; archived flag) → `dep.upstream_maintenance`
510
-
511
- **Subscores**: `lockfile`, `freshness`, `unused`, `license`, `upstream_maintenance`
512
-
513
- **N/A**: repo with literally zero external dependencies.
514
-
515
- **Anchors**: standard mapping.
516
-
517
- ---
518
-
519
- ## Tool Catalog
520
-
521
- Tool catalog is the **authoritative list of commands** you may run. You may not invent commands or flags.
522
-
523
- Each entry:
524
-
525
- ```
526
- <tool-id>:
527
- category: <category>
528
- applies_to: [<language|framework>...]
529
- probe: <command to check presence>
530
- install: <user-space install command, or null if not installable>
531
- install_prereq: <pipx|go|cargo|npx|gem|null>
532
- command: <command template with placeholders>
533
- timeout_minutes: <int>
534
- parser: <parser module name>
535
- subscores: [<dimension>.<subscore>]
536
- ```
537
-
538
- ### JavaScript/TypeScript
539
-
540
- ```
541
- eslint:
542
- applies_to: [js, ts]
543
- probe: npx --no eslint --version
544
- install: null # use project-local
545
- command: npx --no eslint . --format json --ext .js,.jsx,.ts,.tsx
546
- timeout_minutes: 5
547
- parser: eslint
548
- subscores: [code_quality.lint]
549
-
550
- tsc-typecheck:
551
- applies_to: [ts]
552
- probe: npx --no tsc --version
553
- install: null
554
- command: npx --no tsc --noEmit
555
- timeout_minutes: 5
556
- parser: tsc
557
- subscores: [code_quality.lint]
558
-
559
- jscpd:
560
- applies_to: [js, ts, py, java, go, cs, rb]
561
- probe: command -v jscpd
562
- install: npm install -g jscpd # NOTE: prefer npx; check first
563
- install_prereq: npx
564
- command: npx --yes jscpd %REPO_ROOT% --reporters json --output %REPO_ROOT%/.scan/jscpd --min-lines 5 --min-tokens 50
565
- timeout_minutes: 10
566
- parser: jscpd
567
- subscores: [code_quality.duplication]
568
-
569
- madge:
570
- applies_to: [js, ts]
571
- probe: command -v madge
572
- install: null # use npx
573
- command: npx --yes madge --circular --json %REPO_ROOT%
574
- timeout_minutes: 3
575
- parser: madge
576
- subscores: [architecture.circular_deps]
577
-
578
- depcheck:
579
- applies_to: [js, ts]
580
- probe: command -v depcheck
581
- install: null # npx
582
- command: npx --yes depcheck --json
583
- timeout_minutes: 3
584
- parser: depcheck
585
- subscores: [dependency_health.unused]
586
-
587
- npm-audit:
588
- applies_to: [js, ts] # only when package-lock.json present
589
- probe: command -v npm
590
- command: npm audit --json
591
- timeout_minutes: 3
592
- parser: npm-audit
593
- subscores: [security.dep_vulns]
594
-
595
- pnpm-audit:
596
- applies_to: [js, ts] # only when pnpm-lock.yaml present
597
- probe: command -v pnpm
598
- command: pnpm audit --json
599
- timeout_minutes: 3
600
- parser: pnpm-audit
601
- subscores: [security.dep_vulns]
602
-
603
- npm-outdated:
604
- applies_to: [js, ts]
605
- probe: command -v npm
606
- command: npm outdated --json
607
- timeout_minutes: 3
608
- parser: npm-outdated
609
- subscores: [dependency_health.freshness]
610
-
611
- license-checker:
612
- applies_to: [js, ts]
613
- probe: command -v license-checker
614
- install: null # npx
615
- command: npx --yes license-checker --json --production
616
- timeout_minutes: 3
617
- parser: license-checker
618
- subscores: [dependency_health.license]
619
- ```
620
-
621
- ### Python
622
-
623
- ```
624
- ruff:
625
- applies_to: [py]
626
- probe: command -v ruff
627
- install: pipx install "ruff>=0.4,<1.0"
628
- install_prereq: pipx
629
- command: ruff check %REPO_ROOT% --output-format json
630
- timeout_minutes: 3
631
- parser: ruff
632
- subscores: [code_quality.lint]
633
-
634
- mypy:
635
- applies_to: [py]
636
- probe: command -v mypy
637
- install: pipx install "mypy>=1.8,<2.0"
638
- install_prereq: pipx
639
- command: mypy %REPO_ROOT% --no-error-summary --show-error-codes
640
- timeout_minutes: 5
641
- parser: mypy
642
- subscores: [code_quality.lint]
643
-
644
- bandit:
645
- applies_to: [py]
646
- probe: command -v bandit
647
- install: pipx install "bandit>=1.7,<2.0"
648
- install_prereq: pipx
649
- command: bandit -r %REPO_ROOT% -f json -q
650
- timeout_minutes: 5
651
- parser: bandit
652
- subscores: [security.sast]
653
-
654
- pip-audit:
655
- applies_to: [py]
656
- probe: command -v pip-audit
657
- install: pipx install "pip-audit>=2.7,<3.0"
658
- install_prereq: pipx
659
- command: pip-audit --format json
660
- timeout_minutes: 5
661
- parser: pip-audit
662
- subscores: [security.dep_vulns]
663
-
664
- radon:
665
- applies_to: [py]
666
- probe: command -v radon
667
- install: pipx install "radon>=6.0,<7.0"
668
- install_prereq: pipx
669
- command: radon cc -j %REPO_ROOT%
670
- timeout_minutes: 3
671
- parser: radon
672
- subscores: [code_quality.complexity]
673
-
674
- vulture:
675
- applies_to: [py]
676
- probe: command -v vulture
677
- install: pipx install "vulture>=2.10,<3.0"
678
- install_prereq: pipx
679
- command: vulture %REPO_ROOT% --min-confidence 80
680
- timeout_minutes: 3
681
- parser: vulture
682
- subscores: [code_quality.dead_code]
683
-
684
- pylint:
685
- applies_to: [py]
686
- probe: command -v pylint
687
- install: pipx install "pylint>=3.0,<4.0"
688
- install_prereq: pipx
689
- command: pylint %REPO_ROOT% --output-format=json --exit-zero
690
- timeout_minutes: 10
691
- parser: pylint
692
- subscores: [code_quality.lint]
693
- ```
694
-
695
- ### Go
696
-
697
- ```
698
- golangci-lint:
699
- applies_to: [go]
700
- probe: command -v golangci-lint
701
- install: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60.3
702
- install_prereq: go
703
- command: golangci-lint run --out-format json ./...
704
- timeout_minutes: 10
705
- parser: golangci-lint
706
- subscores: [code_quality.lint]
707
-
708
- gosec:
709
- applies_to: [go]
710
- probe: command -v gosec
711
- install: go install github.com/securego/gosec/v2/cmd/gosec@v2.21.4
712
- install_prereq: go
713
- command: gosec -fmt json ./...
714
- timeout_minutes: 5
715
- parser: gosec
716
- subscores: [security.sast]
717
-
718
- govulncheck:
719
- applies_to: [go]
720
- probe: command -v govulncheck
721
- install: go install golang.org/x/vuln/cmd/govulncheck@latest
722
- install_prereq: go
723
- command: govulncheck -json ./...
724
- timeout_minutes: 5
725
- parser: govulncheck
726
- subscores: [security.dep_vulns]
727
-
728
- gocyclo:
729
- applies_to: [go]
730
- probe: command -v gocyclo
731
- install: go install github.com/fzipp/gocyclo/cmd/gocyclo@latest
732
- install_prereq: go
733
- command: gocyclo -over 15 -json %REPO_ROOT%
734
- timeout_minutes: 3
735
- parser: gocyclo
736
- subscores: [code_quality.complexity]
737
-
738
- go-mod-outdated:
739
- applies_to: [go]
740
- probe: command -v go
741
- command: go list -m -u -mod=mod -json all
742
- timeout_minutes: 3
743
- parser: go-mod-outdated
744
- subscores: [dependency_health.freshness]
745
- ```
746
-
747
- ### Rust
748
-
749
- ```
750
- clippy:
751
- applies_to: [rust]
752
- probe: command -v cargo
753
- command: cargo clippy --message-format json -- -D warnings
754
- timeout_minutes: 10
755
- parser: clippy
756
- subscores: [code_quality.lint]
757
-
758
- cargo-audit:
759
- applies_to: [rust]
760
- probe: command -v cargo-audit
761
- install: cargo install --locked cargo-audit
762
- install_prereq: cargo
763
- command: cargo audit --json
764
- timeout_minutes: 5
765
- parser: cargo-audit
766
- subscores: [security.dep_vulns]
767
-
768
- cargo-deny:
769
- applies_to: [rust]
770
- probe: command -v cargo-deny
771
- install: cargo install --locked cargo-deny
772
- install_prereq: cargo
773
- command: cargo deny check --format json
774
- timeout_minutes: 5
775
- parser: cargo-deny
776
- subscores: [dependency_health.license, security.dep_vulns]
777
-
778
- cargo-outdated:
779
- applies_to: [rust]
780
- probe: command -v cargo-outdated
781
- install: cargo install --locked cargo-outdated
782
- install_prereq: cargo
783
- command: cargo outdated --format json
784
- timeout_minutes: 5
785
- parser: cargo-outdated
786
- subscores: [dependency_health.freshness]
787
- ```
788
-
789
- ### Ruby
790
-
791
- ```
792
- rubocop:
793
- applies_to: [ruby]
794
- probe: command -v rubocop
795
- install: gem install --user-install rubocop --version "~> 1.65"
796
- install_prereq: gem
797
- command: rubocop --format json
798
- timeout_minutes: 5
799
- parser: rubocop
800
- subscores: [code_quality.lint]
801
-
802
- brakeman:
803
- applies_to: [ruby] # Rails only
804
- probe: command -v brakeman
805
- install: gem install --user-install brakeman
806
- install_prereq: gem
807
- command: brakeman -f json -q
808
- timeout_minutes: 10
809
- parser: brakeman
810
- subscores: [security.sast]
811
-
812
- bundler-audit:
813
- applies_to: [ruby]
814
- probe: command -v bundle-audit
815
- install: gem install --user-install bundler-audit
816
- install_prereq: gem
817
- command: bundle-audit check --format json
818
- timeout_minutes: 5
819
- parser: bundler-audit
820
- subscores: [security.dep_vulns]
821
- ```
822
-
823
- ### C# / .NET
824
-
825
- Both tools ship with the .NET SDK — no extra install, no Go. `--format json`
826
- requires SDK >= 9. They trigger a `dotnet restore` first; if the repo has no
827
- network access to NuGet the restore (and thus the listing) degrades to
828
- unmeasured.
829
-
830
- ```
831
- dotnet-list-vulnerable:
832
- applies_to: [cs]
833
- probe: command -v dotnet
834
- install: null # bundled with the .NET SDK
835
- command: dotnet restore >/dev/null 2>&1; dotnet list package --vulnerable --include-transitive --format json
836
- timeout_minutes: 5
837
- parser: dotnet-list-vulnerable
838
- subscores: [security.dep_vulns]
839
-
840
- dotnet-list-outdated:
841
- applies_to: [cs]
842
- probe: command -v dotnet
843
- install: null # bundled with the .NET SDK
844
- command: dotnet restore >/dev/null 2>&1; dotnet list package --outdated --format json
845
- timeout_minutes: 5
846
- parser: dotnet-list-outdated
847
- subscores: [dependency_health.freshness]
848
- ```
849
-
850
- ### Multi-language
851
-
852
- ```
853
- semgrep:
854
- applies_to: [js, ts, py, go, rust, java, ruby, c, cpp]
855
- probe: command -v semgrep
856
- install: pipx install "semgrep>=1.40,<2.0"
857
- install_prereq: pipx
858
- command: semgrep --config auto --json --quiet --metrics off
859
- timeout_minutes: 15
860
- parser: semgrep
861
- subscores: [security.sast, performance.n_plus_one]
862
-
863
- gitleaks:
864
- applies_to: [all]
865
- probe: command -v gitleaks
866
- install: go install github.com/zricethezav/gitleaks/v8@latest
867
- install_prereq: go
868
- command: gitleaks detect --no-banner --report-format json --report-path - --redact
869
- timeout_minutes: 5
870
- parser: gitleaks
871
- subscores: [security.secrets_hygiene]
872
-
873
- osv-scanner:
874
- applies_to: [all]
875
- probe: command -v osv-scanner
876
- install: go install github.com/google/osv-scanner/cmd/osv-scanner@latest
877
- install_prereq: go
878
- command: osv-scanner --json --recursive %REPO_ROOT%
879
- timeout_minutes: 10
880
- parser: osv-scanner
881
- subscores: [security.dep_vulns]
882
-
883
- scc:
884
- applies_to: [all]
885
- probe: command -v scc
886
- install: go install github.com/boyter/scc/v3@latest
887
- install_prereq: go
888
- command: scc --format json %REPO_ROOT%
889
- timeout_minutes: 3
890
- parser: scc
891
- subscores: [maintainability.file_distribution]
892
-
893
- lizard:
894
- applies_to: [js, ts, py, java, c, cpp, go, rust, swift]
895
- probe: command -v lizard
896
- install: pipx install "lizard>=1.17,<2.0"
897
- install_prereq: pipx
898
- command: lizard %REPO_ROOT% --xml -t 1 -C 15 -L 80
899
- timeout_minutes: 5
900
- parser: lizard
901
- subscores: [code_quality.complexity, maintainability.cognitive_load]
902
- ```
903
-
904
- ---
905
-
906
- ## External Signals Catalog
907
-
908
- ### Git (always available where the repo is a git checkout)
909
-
910
- ```
911
- git-authors-90d:
912
- command: git log --since="90 days ago" --format="%an" | sort -u | wc -l
913
- feeds: maintainability.churn_hotspots (bus factor)
914
-
915
- git-churn-30d:
916
- command: git log --since="30 days ago" --format="" --name-only | grep -v "^$" | sort | uniq -c | sort -rn | head -30
917
- feeds: maintainability.churn_hotspots
918
-
919
- git-bug-fixes-90d:
920
- command: git log --since="90 days ago" --grep="fix\|bug\|hotfix" --oneline | wc -l
921
- feeds: maintainability.todo_debt (as proxy for stability)
922
-
923
- git-commit-quality-sample:
924
- command: git log --since="30 days ago" --format="%s" | head -50
925
- feeds: documentation.architecture_overview (LLM judges message quality)
926
- ```
927
-
928
- ### GitHub Issues (via `list_issues` MCP tool)
929
-
930
- ```
931
- gh-open-bugs:
932
- source: list_issues(product_id, status='open', labels=['bug','regression'])
933
- feeds: maintainability.todo_debt, security (if 'security' label)
934
-
935
- gh-security-issues:
936
- source: list_issues(product_id, status='open', labels=['security','vulnerability'])
937
- feeds: security.sast (as supplementary signal)
938
-
939
- gh-stale-prs:
940
- source: not directly available — skip in v1
941
- ```
942
-
943
- If `list_issues` is not available or product has no GitHub repo, log under `external_signals.github_issues.unavailable: "not configured"`.
944
-
945
- ### Sentry (via Sentry MCP, if configured for this product)
946
-
947
- ```
948
- sentry-unresolved-7d:
949
- source: Sentry MCP search_errors(time_range='7d', status='unresolved')
950
- feeds: performance (if perf-related), security (if security-related), all dimensions as runtime-health signal
951
-
952
- sentry-top-errors:
953
- source: Sentry MCP list_issues(sort='frequency', limit=5)
954
- feeds: dimension depending on error category
955
- ```
956
-
957
- If Sentry MCP is not configured, log under `external_signals.sentry.unavailable: "not configured"`.
958
-
959
- ---
960
-
961
- ## Evidence format
962
-
963
- ```json
964
- {
965
- "file": "src/payments/charge.ts",
966
- "line": 142,
967
- "issue": "Raw SQL string interpolated with request body field 'userId' — SQL injection risk",
968
- "severity": "critical",
969
- "snippet": "db.query(`SELECT * FROM orders WHERE user_id = ${req.body.userId}`)",
970
- "source": "tool:semgrep",
971
- "rule_id": "javascript.lang.security.audit.sqli.node-sqli.node-sqli",
972
- "cwe": ["CWE-89"]
973
- }
974
- ```
975
-
976
- - `file` repo-relative
977
- - `line` 1-based; if range, first line
978
- - `issue` one sentence
979
- - `severity` `critical` | `high` | `medium` | `low`
980
- - `snippet` ≤200 chars quoted from file
981
- - `source` `tool:<tool-id>` or `llm_judgment`
982
- - `rule_id` optional, tool-specific
983
- - `cwe` optional, array of CWE IDs
984
-
985
- Severity guidance:
986
-
987
- - `critical`: vulnerable/broken in production
988
- - `high`: clear defect that will bite
989
- - `medium`: real smell with measurable cost
990
- - `low`: nitpick worth noting
991
-
992
- ---
993
-
994
- ## Recommendation format
995
-
996
- ```json
997
- {
998
- "title": "Parameterize SQL queries in payments module",
999
- "effort": "medium",
1000
- "impact": "high",
1001
- "description": "Replace string interpolation in db.query() calls under src/payments/ with parameterized queries. Use the existing pg.query(text, values) signature. 4–6 sites in charge.ts, refund.ts, list.ts.",
1002
- "files": [
1003
- "src/payments/charge.ts",
1004
- "src/payments/refund.ts",
1005
- "src/payments/list.ts"
1006
- ],
1007
- "blocks_evidence": ["semgrep:javascript.lang.security.audit.sqli..."]
1008
- }
1009
- ```
1010
-
1011
- - `title` imperative, ≤80 chars
1012
- - `effort` `low` (<1 day) | `medium` (1–3 days) | `high` (>3 days)
1013
- - `impact` `low` | `medium` | `high` on dimension score
1014
- - `description` concrete; name files/functions
1015
- - `files` affected paths
1016
- - `blocks_evidence` optional, the evidence IDs this rec resolves
1017
-
1018
- Sort recommendations by `impact/effort` (highest first).
1019
-
1020
- ---
1021
-
1022
- ## Discipline rules (ABSOLUTE)
1023
-
1024
- 1. **No claim without verified evidence.** Phase 5 verifies file:line. Hallucinated findings get dropped.
1025
- 2. **No score without findings or measured-coverage.** A dimension's score must reflect either real findings (low score) or absence of findings from tools that actually ran (high score).
1026
- 3. **No drift in anchors.** Use the fixed anchor table. No adjusting for stage/domain/excuses.
1027
- 4. **No invention of dimensions.** Use the 8. Note other observations in `executive_summary` free-text.
1028
- 5. **Conservative findings.** When uncertain, skip. Better to under-report than to spam noise.
1029
- 6. **Snapshot, don't predict.** Score the code as it exists.
1030
- 7. **Specific recommendations.** Name files, functions, lines. "Add tests" is bad; "Add unit tests for `parseInvoice` in `src/invoice/parse.ts` lines 42–61" is good.
1031
- 8. **Never mutate the repo.** No `--fix`, no `git commit`, no file edits.
1032
- 9. **Never run system package managers.** No `sudo`, no `apt`, no `brew`, no `yum`.
1033
- 10. **Never run commands outside the Tool Catalog.** Probe / install / execute commands are all whitelisted.
1034
-
1035
- ---
1036
-
1037
- ## Final output (mandatory JSON shape)
1038
-
1039
- End your response with **exactly one** JSON code block in this shape:
1040
-
1041
- ```json
1042
- {
1043
- "rubric_version": "v1",
1044
- "detected_context": {
1045
- "archetype": "backend-service",
1046
- "primary_languages": ["TypeScript", "SQL"],
1047
- "frameworks": ["Express", "Drizzle"],
1048
- "package_managers": ["pnpm"],
1049
- "build_system": "tsup",
1050
- "test_frameworks": ["vitest"],
1051
- "ci_configured": true,
1052
- "lockfile_present": true,
1053
- "scanned_commit_sha": "abc123def456...",
1054
- "file_count_scanned": 142,
1055
- "total_loc_approx": 18500
1056
- },
1057
- "tool_versions": {
1058
- "eslint": "8.57.0",
1059
- "semgrep": "1.45.0",
1060
- "jscpd": "4.0.5"
1061
- },
1062
- "unavailable_tools": [
1063
- {
1064
- "name": "gitleaks",
1065
- "category": "security",
1066
- "install_command": "go install github.com/zricethezav/gitleaks/v8@latest",
1067
- "reason": "install_failed: go not present"
1068
- }
1069
- ],
1070
- "applied_checks": {
1071
- "architecture": [
1072
- {
1073
- "id": "arch.circular_deps",
1074
- "tool": "madge",
1075
- "weight": 1.0,
1076
- "measured": true
1077
- },
1078
- {
1079
- "id": "arch.layering",
1080
- "tool": "llm_judgment",
1081
- "weight": 1.0,
1082
- "measured": true
1083
- }
1084
- ]
1085
- },
1086
- "tool_outputs": {
1087
- "eslint": {
1088
- "ran_at": "...",
1089
- "duration_ms": 4200,
1090
- "exit_code": 0,
1091
- "findings_count": 23,
1092
- "summary": "..."
1093
- }
1094
- },
1095
- "external_signals": {
1096
- "git": {
1097
- "authors_90d": 4,
1098
- "top_churn_files": [{ "file": "src/api/handlers.ts", "commits_30d": 18 }],
1099
- "bug_fix_commits_90d": 12
1100
- },
1101
- "github_issues": { "open_bugs": 7, "open_security": 0 },
1102
- "sentry": { "unavailable": "not configured" }
1103
- },
1104
- "dimension_scores": {
1105
- "architecture": {
1106
- "score": 78,
1107
- "grade": "B",
1108
- "summary": "Clean layering, one circular dep between auth and users modules.",
1109
- "subscores": {
1110
- "boundaries": { "value": 85, "measured_coverage": 1.0 },
1111
- "coupling": { "value": 72, "measured_coverage": 1.0 },
1112
- "layering": {
1113
- "value": 80,
1114
- "measured_coverage": 0.5,
1115
- "summary": "Limited measurement — dependency-cruiser not configured."
1116
- },
1117
- "abstraction_quality": { "value": 75, "measured_coverage": 1.0 }
1118
- },
1119
- "evidence": [
1120
- {
1121
- "file": "src/auth/session.ts",
1122
- "line": 4,
1123
- "issue": "Imports src/users/profile.ts which transitively imports back",
1124
- "severity": "medium",
1125
- "source": "tool:madge"
1126
- }
1127
- ],
1128
- "recommendations": [
1129
- {
1130
- "title": "Break auth ↔ users circular dependency",
1131
- "effort": "low",
1132
- "impact": "medium",
1133
- "description": "Move shared User type to src/shared/types/user.ts.",
1134
- "files": ["src/auth/session.ts", "src/users/profile.ts"]
1135
- }
1136
- ],
1137
- "n_a_reason": null
1138
- }
1139
- },
1140
- "dropped_findings": 3,
1141
- "overall_score": 73.4,
1142
- "overall_grade": "C",
1143
- "executive_summary": "Solid service with healthy architecture and dependencies, but test coverage is the limiting factor (D-grade). Critical payments paths lack tests; security has one high-severity finding (raw SQL in charge.ts). Highest-leverage next steps: add payment tests, parameterize SQL, document API surface.",
1144
- "low_confidence": false
1145
- }
1146
- ```
1147
-
1148
- For N/A dimensions:
1149
-
1150
- ```json
1151
- "performance": {
1152
- "score": null,
1153
- "grade": "N/A",
1154
- "summary": "Not applicable.",
1155
- "subscores": {},
1156
- "evidence": [],
1157
- "recommendations": [],
1158
- "n_a_reason": "Doc-only static site with no executable hot path."
1159
- }
1160
- ```
1161
-
1162
- ---
1163
-
1164
- ## What you must NOT do
1165
-
1166
- - Do not generate prose outside the JSON block at the end (a short progress narrative during phases is allowed, but the final response must end with the JSON).
1167
- - Do not score dimensions you didn't actually examine.
1168
- - Do not produce recommendations untethered from `evidence` or `unavailable_tools`.
1169
- - Do not include wall-clock time estimates ("by Q3"); use `effort` enum only.
1170
- - Do not include praise-only dimensions unless score is genuinely 90+ and verified.
1171
- - Do not assume tools are installed; always probe first.
1172
- - Do not invent install commands or tool flags.
1173
- - Do not run anything with `sudo` or system package managers.
1174
- - Do not edit, commit, or otherwise mutate the repo.