edsger 0.77.0 → 0.79.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 (877) 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 +1348 -1247
  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/api-docs/index.d.ts +0 -18
  108. package/dist/commands/api-docs/index.js +0 -41
  109. package/dist/commands/app-store/index.d.ts +0 -12
  110. package/dist/commands/app-store/index.js +0 -69
  111. package/dist/commands/architecture-diagram/index.d.ts +0 -8
  112. package/dist/commands/architecture-diagram/index.js +0 -10
  113. package/dist/commands/build/detect-project.d.ts +0 -52
  114. package/dist/commands/build/detect-project.js +0 -277
  115. package/dist/commands/build/index.d.ts +0 -66
  116. package/dist/commands/build/index.js +0 -544
  117. package/dist/commands/chat-serve/chat-server.d.ts +0 -114
  118. package/dist/commands/chat-serve/chat-server.js +0 -339
  119. package/dist/commands/chat-serve/index.d.ts +0 -20
  120. package/dist/commands/chat-serve/index.js +0 -58
  121. package/dist/commands/checklists/index.d.ts +0 -16
  122. package/dist/commands/checklists/index.js +0 -187
  123. package/dist/commands/checklists/tools.d.ts +0 -17
  124. package/dist/commands/checklists/tools.js +0 -19
  125. package/dist/commands/class-diagram/index.d.ts +0 -7
  126. package/dist/commands/class-diagram/index.js +0 -9
  127. package/dist/commands/code-review/index.d.ts +0 -2
  128. package/dist/commands/code-review/index.js +0 -37
  129. package/dist/commands/code-review/reviewer.d.ts +0 -3
  130. package/dist/commands/code-review/reviewer.js +0 -205
  131. package/dist/commands/config/index.d.ts +0 -16
  132. package/dist/commands/config/index.js +0 -60
  133. package/dist/commands/data-flow/index.d.ts +0 -19
  134. package/dist/commands/data-flow/index.js +0 -55
  135. package/dist/commands/diagram-shared/index.d.ts +0 -21
  136. package/dist/commands/diagram-shared/index.js +0 -37
  137. package/dist/commands/discover/index.d.ts +0 -14
  138. package/dist/commands/discover/index.js +0 -29
  139. package/dist/commands/er-diagram/index.d.ts +0 -19
  140. package/dist/commands/er-diagram/index.js +0 -55
  141. package/dist/commands/features/index.d.ts +0 -15
  142. package/dist/commands/features/index.js +0 -34
  143. package/dist/commands/financing-deck/index.d.ts +0 -8
  144. package/dist/commands/financing-deck/index.js +0 -66
  145. package/dist/commands/find-architecture/index.d.ts +0 -15
  146. package/dist/commands/find-architecture/index.js +0 -50
  147. package/dist/commands/find-bugs/index.d.ts +0 -13
  148. package/dist/commands/find-bugs/index.js +0 -48
  149. package/dist/commands/find-features/index.d.ts +0 -14
  150. package/dist/commands/find-features/index.js +0 -42
  151. package/dist/commands/find-smells/index.d.ts +0 -23
  152. package/dist/commands/find-smells/index.js +0 -74
  153. package/dist/commands/flowchart/index.d.ts +0 -8
  154. package/dist/commands/flowchart/index.js +0 -10
  155. package/dist/commands/growth-analysis/index.d.ts +0 -7
  156. package/dist/commands/growth-analysis/index.js +0 -89
  157. package/dist/commands/init/index.d.ts +0 -5
  158. package/dist/commands/init/index.js +0 -152
  159. package/dist/commands/init/prompts.d.ts +0 -9
  160. package/dist/commands/init/prompts.js +0 -128
  161. package/dist/commands/init/templates.d.ts +0 -9
  162. package/dist/commands/init/templates.js +0 -264
  163. package/dist/commands/intelligence/index.d.ts +0 -15
  164. package/dist/commands/intelligence/index.js +0 -138
  165. package/dist/commands/issue-analysis/index.d.ts +0 -5
  166. package/dist/commands/issue-analysis/index.js +0 -9
  167. package/dist/commands/pr-resolve/index.d.ts +0 -13
  168. package/dist/commands/pr-resolve/index.js +0 -50
  169. package/dist/commands/pr-review/index.d.ts +0 -12
  170. package/dist/commands/pr-review/index.js +0 -47
  171. package/dist/commands/product-techniques/index.d.ts +0 -15
  172. package/dist/commands/product-techniques/index.js +0 -37
  173. package/dist/commands/product-test-cases/index.d.ts +0 -12
  174. package/dist/commands/product-test-cases/index.js +0 -40
  175. package/dist/commands/quality-benchmark/index.d.ts +0 -45
  176. package/dist/commands/quality-benchmark/index.js +0 -247
  177. package/dist/commands/recipes/index.d.ts +0 -17
  178. package/dist/commands/recipes/index.js +0 -40
  179. package/dist/commands/refactor/refactor.d.ts +0 -2
  180. package/dist/commands/refactor/refactor.js +0 -134
  181. package/dist/commands/release-sync/index.d.ts +0 -5
  182. package/dist/commands/release-sync/index.js +0 -38
  183. package/dist/commands/run-sheet/index.d.ts +0 -6
  184. package/dist/commands/run-sheet/index.js +0 -48
  185. package/dist/commands/screen-flow/index.d.ts +0 -18
  186. package/dist/commands/screen-flow/index.js +0 -54
  187. package/dist/commands/sequence-diagram/index.d.ts +0 -19
  188. package/dist/commands/sequence-diagram/index.js +0 -55
  189. package/dist/commands/session-serve/index.d.ts +0 -32
  190. package/dist/commands/session-serve/index.js +0 -100
  191. package/dist/commands/session-turn/index.d.ts +0 -73
  192. package/dist/commands/session-turn/index.js +0 -254
  193. package/dist/commands/smoke-test/index.d.ts +0 -5
  194. package/dist/commands/smoke-test/index.js +0 -40
  195. package/dist/commands/state-diagram/index.d.ts +0 -7
  196. package/dist/commands/state-diagram/index.js +0 -9
  197. package/dist/commands/sync-aws/index.d.ts +0 -16
  198. package/dist/commands/sync-aws/index.js +0 -214
  199. package/dist/commands/sync-datadog/index.d.ts +0 -16
  200. package/dist/commands/sync-datadog/index.js +0 -236
  201. package/dist/commands/sync-github-issues/index.d.ts +0 -11
  202. package/dist/commands/sync-github-issues/index.js +0 -42
  203. package/dist/commands/sync-github-pull-requests/index.d.ts +0 -11
  204. package/dist/commands/sync-github-pull-requests/index.js +0 -42
  205. package/dist/commands/sync-org-repos/index.d.ts +0 -12
  206. package/dist/commands/sync-org-repos/index.js +0 -60
  207. package/dist/commands/sync-sentry-issues/index.d.ts +0 -14
  208. package/dist/commands/sync-sentry-issues/index.js +0 -73
  209. package/dist/commands/sync-terraform/index.d.ts +0 -16
  210. package/dist/commands/sync-terraform/index.js +0 -248
  211. package/dist/commands/task-worker/index.d.ts +0 -8
  212. package/dist/commands/task-worker/index.js +0 -34
  213. package/dist/commands/task-worker/processor.d.ts +0 -23
  214. package/dist/commands/task-worker/processor.js +0 -84
  215. package/dist/commands/technical-design/index.d.ts +0 -5
  216. package/dist/commands/technical-design/index.js +0 -9
  217. package/dist/commands/test-cases-analysis/index.d.ts +0 -5
  218. package/dist/commands/test-cases-analysis/index.js +0 -9
  219. package/dist/commands/user-psychology/index.d.ts +0 -7
  220. package/dist/commands/user-psychology/index.js +0 -51
  221. package/dist/commands/user-stories-analysis/index.d.ts +0 -5
  222. package/dist/commands/user-stories-analysis/index.js +0 -9
  223. package/dist/commands/workflow/config/phase-configs.d.ts +0 -5
  224. package/dist/commands/workflow/config/phase-configs.js +0 -132
  225. package/dist/commands/workflow/core/index.d.ts +0 -8
  226. package/dist/commands/workflow/core/index.js +0 -12
  227. package/dist/commands/workflow/core/issue-filter.d.ts +0 -16
  228. package/dist/commands/workflow/core/issue-filter.js +0 -47
  229. package/dist/commands/workflow/core/pipeline-evaluator.d.ts +0 -24
  230. package/dist/commands/workflow/core/pipeline-evaluator.js +0 -32
  231. package/dist/commands/workflow/core/state-manager.d.ts +0 -24
  232. package/dist/commands/workflow/core/state-manager.js +0 -42
  233. package/dist/commands/workflow/core/workflow-logger.d.ts +0 -23
  234. package/dist/commands/workflow/core/workflow-logger.js +0 -77
  235. package/dist/commands/workflow/executors/phase-executor.d.ts +0 -8
  236. package/dist/commands/workflow/executors/phase-executor.js +0 -338
  237. package/dist/commands/workflow/index.d.ts +0 -2
  238. package/dist/commands/workflow/index.js +0 -34
  239. package/dist/commands/workflow/issue-coordinator.d.ts +0 -18
  240. package/dist/commands/workflow/issue-coordinator.js +0 -161
  241. package/dist/commands/workflow/phase-orchestrator.d.ts +0 -26
  242. package/dist/commands/workflow/phase-orchestrator.js +0 -699
  243. package/dist/commands/workflow/processor.d.ts +0 -47
  244. package/dist/commands/workflow/processor.js +0 -149
  245. package/dist/config/issue-status.d.ts +0 -29
  246. package/dist/config/issue-status.js +0 -44
  247. package/dist/config.d.ts +0 -3
  248. package/dist/config.js +0 -79
  249. package/dist/constants.d.ts +0 -10
  250. package/dist/constants.js +0 -36
  251. package/dist/errors/index.d.ts +0 -68
  252. package/dist/errors/index.js +0 -129
  253. package/dist/index.d.ts +0 -4
  254. package/dist/phases/adr-generation/agent.d.ts +0 -6
  255. package/dist/phases/adr-generation/agent.js +0 -69
  256. package/dist/phases/adr-generation/index.d.ts +0 -15
  257. package/dist/phases/adr-generation/index.js +0 -66
  258. package/dist/phases/adr-generation/parse.d.ts +0 -12
  259. package/dist/phases/adr-generation/parse.js +0 -123
  260. package/dist/phases/adr-generation/prompts.d.ts +0 -8
  261. package/dist/phases/adr-generation/prompts.js +0 -35
  262. package/dist/phases/analyze-logs/agent.d.ts +0 -11
  263. package/dist/phases/analyze-logs/agent.js +0 -66
  264. package/dist/phases/analyze-logs/index.d.ts +0 -23
  265. package/dist/phases/analyze-logs/index.js +0 -152
  266. package/dist/phases/analyze-logs/prompts.d.ts +0 -3
  267. package/dist/phases/analyze-logs/prompts.js +0 -27
  268. package/dist/phases/api-docs/index.d.ts +0 -47
  269. package/dist/phases/api-docs/index.js +0 -254
  270. package/dist/phases/api-docs/mcp-server.d.ts +0 -25
  271. package/dist/phases/api-docs/mcp-server.js +0 -82
  272. package/dist/phases/api-docs/prompts.d.ts +0 -16
  273. package/dist/phases/api-docs/prompts.js +0 -65
  274. package/dist/phases/api-docs/types.d.ts +0 -22
  275. package/dist/phases/api-docs/types.js +0 -10
  276. package/dist/phases/app-store-generation/agent.d.ts +0 -2
  277. package/dist/phases/app-store-generation/agent.js +0 -177
  278. package/dist/phases/app-store-generation/assets/inter-latin-ext.woff2 +0 -0
  279. package/dist/phases/app-store-generation/assets/inter-latin.woff2 +0 -0
  280. package/dist/phases/app-store-generation/context.d.ts +0 -21
  281. package/dist/phases/app-store-generation/context.js +0 -78
  282. package/dist/phases/app-store-generation/index.d.ts +0 -20
  283. package/dist/phases/app-store-generation/index.js +0 -157
  284. package/dist/phases/app-store-generation/inter-font.d.ts +0 -20
  285. package/dist/phases/app-store-generation/inter-font.js +0 -49
  286. package/dist/phases/app-store-generation/prompts.d.ts +0 -43
  287. package/dist/phases/app-store-generation/prompts.js +0 -73
  288. package/dist/phases/app-store-generation/screenshot-composer.d.ts +0 -41
  289. package/dist/phases/app-store-generation/screenshot-composer.js +0 -516
  290. package/dist/phases/app-store-generation/uploader.d.ts +0 -19
  291. package/dist/phases/app-store-generation/uploader.js +0 -150
  292. package/dist/phases/architecture-diagram/index.d.ts +0 -15
  293. package/dist/phases/architecture-diagram/index.js +0 -51
  294. package/dist/phases/autonomous/index.d.ts +0 -32
  295. package/dist/phases/autonomous/index.js +0 -412
  296. package/dist/phases/autonomous/prompts.d.ts +0 -5
  297. package/dist/phases/autonomous/prompts.js +0 -31
  298. package/dist/phases/branch-planning/context.d.ts +0 -14
  299. package/dist/phases/branch-planning/context.js +0 -43
  300. package/dist/phases/branch-planning/index.d.ts +0 -25
  301. package/dist/phases/branch-planning/index.js +0 -404
  302. package/dist/phases/branch-planning/outcome.d.ts +0 -28
  303. package/dist/phases/branch-planning/outcome.js +0 -115
  304. package/dist/phases/branch-planning/prompts.d.ts +0 -41
  305. package/dist/phases/branch-planning/prompts.js +0 -157
  306. package/dist/phases/bug-fixing/analyzer.d.ts +0 -17
  307. package/dist/phases/bug-fixing/analyzer.js +0 -247
  308. package/dist/phases/bug-fixing/context-fetcher.d.ts +0 -22
  309. package/dist/phases/bug-fixing/context-fetcher.js +0 -137
  310. package/dist/phases/bug-fixing/index.d.ts +0 -7
  311. package/dist/phases/bug-fixing/index.js +0 -7
  312. package/dist/phases/bug-fixing/mcp-server.d.ts +0 -18
  313. package/dist/phases/bug-fixing/mcp-server.js +0 -19
  314. package/dist/phases/bug-fixing/prompts.d.ts +0 -2
  315. package/dist/phases/bug-fixing/prompts.js +0 -9
  316. package/dist/phases/chat-processor/context.d.ts +0 -38
  317. package/dist/phases/chat-processor/context.js +0 -91
  318. package/dist/phases/chat-processor/index.d.ts +0 -49
  319. package/dist/phases/chat-processor/index.js +0 -482
  320. package/dist/phases/chat-processor/product-context.d.ts +0 -36
  321. package/dist/phases/chat-processor/product-context.js +0 -113
  322. package/dist/phases/chat-processor/product-prompts.d.ts +0 -4
  323. package/dist/phases/chat-processor/product-prompts.js +0 -65
  324. package/dist/phases/chat-processor/product-tools.d.ts +0 -8
  325. package/dist/phases/chat-processor/product-tools.js +0 -11
  326. package/dist/phases/chat-processor/prompts.d.ts +0 -35
  327. package/dist/phases/chat-processor/prompts.js +0 -213
  328. package/dist/phases/chat-processor/tools.d.ts +0 -8
  329. package/dist/phases/chat-processor/tools.js +0 -11
  330. package/dist/phases/class-diagram/index.d.ts +0 -14
  331. package/dist/phases/class-diagram/index.js +0 -76
  332. package/dist/phases/code-implementation/branch-pr-creator.d.ts +0 -31
  333. package/dist/phases/code-implementation/branch-pr-creator.js +0 -172
  334. package/dist/phases/code-implementation/context.d.ts +0 -17
  335. package/dist/phases/code-implementation/context.js +0 -88
  336. package/dist/phases/code-implementation/index.d.ts +0 -33
  337. package/dist/phases/code-implementation/index.js +0 -926
  338. package/dist/phases/code-implementation/outcome.d.ts +0 -47
  339. package/dist/phases/code-implementation/outcome.js +0 -53
  340. package/dist/phases/code-implementation/prompts.d.ts +0 -8
  341. package/dist/phases/code-implementation/prompts.js +0 -166
  342. package/dist/phases/code-implementation-verification/agent.d.ts +0 -32
  343. package/dist/phases/code-implementation-verification/agent.js +0 -225
  344. package/dist/phases/code-implementation-verification/index.d.ts +0 -27
  345. package/dist/phases/code-implementation-verification/index.js +0 -121
  346. package/dist/phases/code-implementation-verification/prompts.d.ts +0 -10
  347. package/dist/phases/code-implementation-verification/prompts.js +0 -90
  348. package/dist/phases/code-refine/context.d.ts +0 -99
  349. package/dist/phases/code-refine/context.js +0 -457
  350. package/dist/phases/code-refine/index.d.ts +0 -59
  351. package/dist/phases/code-refine/index.js +0 -348
  352. package/dist/phases/code-refine/prompts.d.ts +0 -5
  353. package/dist/phases/code-refine/prompts.js +0 -162
  354. package/dist/phases/code-refine/refine-iteration.d.ts +0 -33
  355. package/dist/phases/code-refine/refine-iteration.js +0 -166
  356. package/dist/phases/code-refine/retry-handler.d.ts +0 -17
  357. package/dist/phases/code-refine/retry-handler.js +0 -87
  358. package/dist/phases/code-refine-verification/github.d.ts +0 -54
  359. package/dist/phases/code-refine-verification/github.js +0 -328
  360. package/dist/phases/code-refine-verification/index.d.ts +0 -11
  361. package/dist/phases/code-refine-verification/index.js +0 -260
  362. package/dist/phases/code-refine-verification/llm-analyzer.d.ts +0 -22
  363. package/dist/phases/code-refine-verification/llm-analyzer.js +0 -152
  364. package/dist/phases/code-refine-verification/prompts.d.ts +0 -5
  365. package/dist/phases/code-refine-verification/prompts.js +0 -119
  366. package/dist/phases/code-refine-verification/types.d.ts +0 -74
  367. package/dist/phases/code-refine-verification/types.js +0 -4
  368. package/dist/phases/code-review/context.d.ts +0 -96
  369. package/dist/phases/code-review/context.js +0 -278
  370. package/dist/phases/code-review/diff-utils.d.ts +0 -36
  371. package/dist/phases/code-review/diff-utils.js +0 -100
  372. package/dist/phases/code-review/index.d.ts +0 -40
  373. package/dist/phases/code-review/index.js +0 -627
  374. package/dist/phases/code-testing/analyzer.d.ts +0 -19
  375. package/dist/phases/code-testing/analyzer.js +0 -215
  376. package/dist/phases/code-testing/context-fetcher.d.ts +0 -16
  377. package/dist/phases/code-testing/context-fetcher.js +0 -83
  378. package/dist/phases/code-testing/index.d.ts +0 -2
  379. package/dist/phases/code-testing/index.js +0 -2
  380. package/dist/phases/code-testing/prompts.d.ts +0 -3
  381. package/dist/phases/code-testing/prompts.js +0 -63
  382. package/dist/phases/data-flow/index.d.ts +0 -28
  383. package/dist/phases/data-flow/index.js +0 -286
  384. package/dist/phases/data-flow/mcp-server.d.ts +0 -85
  385. package/dist/phases/data-flow/mcp-server.js +0 -140
  386. package/dist/phases/data-flow/prompts.d.ts +0 -14
  387. package/dist/phases/data-flow/prompts.js +0 -36
  388. package/dist/phases/data-flow/types.d.ts +0 -71
  389. package/dist/phases/data-flow/types.js +0 -86
  390. package/dist/phases/diagram-shared/clone-repos.d.ts +0 -63
  391. package/dist/phases/diagram-shared/clone-repos.js +0 -153
  392. package/dist/phases/diagram-shared/generate.d.ts +0 -42
  393. package/dist/phases/diagram-shared/generate.js +0 -162
  394. package/dist/phases/diagram-shared/graph.d.ts +0 -62
  395. package/dist/phases/diagram-shared/graph.js +0 -169
  396. package/dist/phases/diagram-shared/mcp.d.ts +0 -35
  397. package/dist/phases/diagram-shared/mcp.js +0 -68
  398. package/dist/phases/diagram-shared/prompts.d.ts +0 -23
  399. package/dist/phases/diagram-shared/prompts.js +0 -35
  400. package/dist/phases/discover-services/index.d.ts +0 -29
  401. package/dist/phases/discover-services/index.js +0 -528
  402. package/dist/phases/er-diagram/index.d.ts +0 -28
  403. package/dist/phases/er-diagram/index.js +0 -290
  404. package/dist/phases/er-diagram/mcp-server.d.ts +0 -77
  405. package/dist/phases/er-diagram/mcp-server.js +0 -144
  406. package/dist/phases/er-diagram/prompts.d.ts +0 -14
  407. package/dist/phases/er-diagram/prompts.js +0 -36
  408. package/dist/phases/er-diagram/types.d.ts +0 -76
  409. package/dist/phases/er-diagram/types.js +0 -84
  410. package/dist/phases/features/index.d.ts +0 -65
  411. package/dist/phases/features/index.js +0 -292
  412. package/dist/phases/features/mcp-server.d.ts +0 -61
  413. package/dist/phases/features/mcp-server.js +0 -165
  414. package/dist/phases/features/prompts.d.ts +0 -32
  415. package/dist/phases/features/prompts.js +0 -92
  416. package/dist/phases/features/types.d.ts +0 -34
  417. package/dist/phases/features/types.js +0 -15
  418. package/dist/phases/financing-deck/agent.d.ts +0 -1
  419. package/dist/phases/financing-deck/agent.js +0 -96
  420. package/dist/phases/financing-deck/context.d.ts +0 -13
  421. package/dist/phases/financing-deck/context.js +0 -69
  422. package/dist/phases/financing-deck/index.d.ts +0 -15
  423. package/dist/phases/financing-deck/index.js +0 -89
  424. package/dist/phases/financing-deck/prompts.d.ts +0 -2
  425. package/dist/phases/financing-deck/prompts.js +0 -94
  426. package/dist/phases/find-architecture/index.d.ts +0 -47
  427. package/dist/phases/find-architecture/index.js +0 -268
  428. package/dist/phases/find-architecture/prompts.d.ts +0 -32
  429. package/dist/phases/find-architecture/prompts.js +0 -129
  430. package/dist/phases/find-architecture/state.d.ts +0 -21
  431. package/dist/phases/find-architecture/state.js +0 -17
  432. package/dist/phases/find-architecture/types.d.ts +0 -55
  433. package/dist/phases/find-architecture/types.js +0 -69
  434. package/dist/phases/find-bugs/index.d.ts +0 -33
  435. package/dist/phases/find-bugs/index.js +0 -238
  436. package/dist/phases/find-bugs/prompts.d.ts +0 -22
  437. package/dist/phases/find-bugs/prompts.js +0 -101
  438. package/dist/phases/find-bugs/state.d.ts +0 -19
  439. package/dist/phases/find-bugs/state.js +0 -13
  440. package/dist/phases/find-bugs/types.d.ts +0 -21
  441. package/dist/phases/find-bugs/types.js +0 -16
  442. package/dist/phases/find-features/index.d.ts +0 -40
  443. package/dist/phases/find-features/index.js +0 -328
  444. package/dist/phases/find-features/prompts.d.ts +0 -43
  445. package/dist/phases/find-features/prompts.js +0 -138
  446. package/dist/phases/find-features/state.d.ts +0 -25
  447. package/dist/phases/find-features/state.js +0 -22
  448. package/dist/phases/find-features/types.d.ts +0 -27
  449. package/dist/phases/find-features/types.js +0 -16
  450. package/dist/phases/find-shared/baseline.d.ts +0 -45
  451. package/dist/phases/find-shared/baseline.js +0 -56
  452. package/dist/phases/find-shared/custom-rules.d.ts +0 -39
  453. package/dist/phases/find-shared/custom-rules.js +0 -75
  454. package/dist/phases/find-shared/detect-context.d.ts +0 -40
  455. package/dist/phases/find-shared/detect-context.js +0 -247
  456. package/dist/phases/find-shared/git.d.ts +0 -24
  457. package/dist/phases/find-shared/git.js +0 -60
  458. package/dist/phases/find-shared/mcp.d.ts +0 -54
  459. package/dist/phases/find-shared/mcp.js +0 -127
  460. package/dist/phases/find-shared/rule-config.d.ts +0 -37
  461. package/dist/phases/find-shared/rule-config.js +0 -67
  462. package/dist/phases/find-shared/rule-packs.d.ts +0 -65
  463. package/dist/phases/find-shared/rule-packs.js +0 -124
  464. package/dist/phases/find-shared/scan-state.d.ts +0 -33
  465. package/dist/phases/find-shared/scan-state.js +0 -112
  466. package/dist/phases/find-shared/scoped-read.d.ts +0 -12
  467. package/dist/phases/find-shared/scoped-read.js +0 -33
  468. package/dist/phases/find-smells/index.d.ts +0 -50
  469. package/dist/phases/find-smells/index.js +0 -305
  470. package/dist/phases/find-smells/prompts.d.ts +0 -31
  471. package/dist/phases/find-smells/prompts.js +0 -130
  472. package/dist/phases/find-smells/state.d.ts +0 -21
  473. package/dist/phases/find-smells/state.js +0 -17
  474. package/dist/phases/find-smells/types.d.ts +0 -51
  475. package/dist/phases/find-smells/types.js +0 -64
  476. package/dist/phases/flow-shared/clone-repos.d.ts +0 -63
  477. package/dist/phases/flow-shared/clone-repos.js +0 -153
  478. package/dist/phases/flowchart/index.d.ts +0 -15
  479. package/dist/phases/flowchart/index.js +0 -50
  480. package/dist/phases/functional-testing/analyzer.d.ts +0 -46
  481. package/dist/phases/functional-testing/analyzer.js +0 -622
  482. package/dist/phases/functional-testing/context-fetcher.d.ts +0 -16
  483. package/dist/phases/functional-testing/context-fetcher.js +0 -83
  484. package/dist/phases/functional-testing/http-fallback.d.ts +0 -10
  485. package/dist/phases/functional-testing/http-fallback.js +0 -156
  486. package/dist/phases/functional-testing/index.d.ts +0 -4
  487. package/dist/phases/functional-testing/index.js +0 -4
  488. package/dist/phases/functional-testing/mcp-server.d.ts +0 -9
  489. package/dist/phases/functional-testing/mcp-server.js +0 -13
  490. package/dist/phases/functional-testing/prompts.d.ts +0 -2
  491. package/dist/phases/functional-testing/prompts.js +0 -58
  492. package/dist/phases/functional-testing/test-report-creator.d.ts +0 -68
  493. package/dist/phases/functional-testing/test-report-creator.js +0 -306
  494. package/dist/phases/functional-testing/test-retry-handler.d.ts +0 -16
  495. package/dist/phases/functional-testing/test-retry-handler.js +0 -70
  496. package/dist/phases/growth-analysis/agent.d.ts +0 -2
  497. package/dist/phases/growth-analysis/agent.js +0 -107
  498. package/dist/phases/growth-analysis/context.d.ts +0 -23
  499. package/dist/phases/growth-analysis/context.js +0 -137
  500. package/dist/phases/growth-analysis/index.d.ts +0 -32
  501. package/dist/phases/growth-analysis/index.js +0 -226
  502. package/dist/phases/growth-analysis/prompts.d.ts +0 -2
  503. package/dist/phases/growth-analysis/prompts.js +0 -45
  504. package/dist/phases/intelligence-analysis/agent.d.ts +0 -2
  505. package/dist/phases/intelligence-analysis/agent.js +0 -338
  506. package/dist/phases/intelligence-analysis/context.d.ts +0 -23
  507. package/dist/phases/intelligence-analysis/context.js +0 -142
  508. package/dist/phases/intelligence-analysis/index.d.ts +0 -58
  509. package/dist/phases/intelligence-analysis/index.js +0 -244
  510. package/dist/phases/intelligence-analysis/prompts.d.ts +0 -2
  511. package/dist/phases/intelligence-analysis/prompts.js +0 -62
  512. package/dist/phases/issue-analysis/agent.d.ts +0 -21
  513. package/dist/phases/issue-analysis/agent.js +0 -153
  514. package/dist/phases/issue-analysis/context.d.ts +0 -20
  515. package/dist/phases/issue-analysis/context.js +0 -93
  516. package/dist/phases/issue-analysis/index.d.ts +0 -8
  517. package/dist/phases/issue-analysis/index.js +0 -147
  518. package/dist/phases/issue-analysis/outcome.d.ts +0 -10
  519. package/dist/phases/issue-analysis/outcome.js +0 -42
  520. package/dist/phases/issue-analysis/prompts.d.ts +0 -8
  521. package/dist/phases/issue-analysis/prompts.js +0 -99
  522. package/dist/phases/issue-analysis-verification/agent.d.ts +0 -33
  523. package/dist/phases/issue-analysis-verification/agent.js +0 -124
  524. package/dist/phases/issue-analysis-verification/index.d.ts +0 -27
  525. package/dist/phases/issue-analysis-verification/index.js +0 -79
  526. package/dist/phases/issue-analysis-verification/prompts.d.ts +0 -9
  527. package/dist/phases/issue-analysis-verification/prompts.js +0 -75
  528. package/dist/phases/output-contracts.d.ts +0 -7
  529. package/dist/phases/output-contracts.js +0 -1201
  530. package/dist/phases/pr-execution/context.d.ts +0 -32
  531. package/dist/phases/pr-execution/context.js +0 -246
  532. package/dist/phases/pr-execution/file-assigner.d.ts +0 -57
  533. package/dist/phases/pr-execution/file-assigner.js +0 -287
  534. package/dist/phases/pr-execution/index.d.ts +0 -22
  535. package/dist/phases/pr-execution/index.js +0 -401
  536. package/dist/phases/pr-execution/outcome.d.ts +0 -24
  537. package/dist/phases/pr-execution/outcome.js +0 -34
  538. package/dist/phases/pr-execution/pr-executor.d.ts +0 -42
  539. package/dist/phases/pr-execution/pr-executor.js +0 -78
  540. package/dist/phases/pr-execution/prompts.d.ts +0 -27
  541. package/dist/phases/pr-execution/prompts.js +0 -131
  542. package/dist/phases/pr-resolve/checklist-learner.d.ts +0 -28
  543. package/dist/phases/pr-resolve/checklist-learner.js +0 -153
  544. package/dist/phases/pr-resolve/github-reply.d.ts +0 -16
  545. package/dist/phases/pr-resolve/github-reply.js +0 -75
  546. package/dist/phases/pr-resolve/index.d.ts +0 -33
  547. package/dist/phases/pr-resolve/index.js +0 -272
  548. package/dist/phases/pr-resolve/prompts.d.ts +0 -17
  549. package/dist/phases/pr-resolve/prompts.js +0 -107
  550. package/dist/phases/pr-resolve/types.d.ts +0 -18
  551. package/dist/phases/pr-resolve/types.js +0 -14
  552. package/dist/phases/pr-resolve/workspace.d.ts +0 -45
  553. package/dist/phases/pr-resolve/workspace.js +0 -174
  554. package/dist/phases/pr-review/index.d.ts +0 -27
  555. package/dist/phases/pr-review/index.js +0 -209
  556. package/dist/phases/pr-review/prompts.d.ts +0 -5
  557. package/dist/phases/pr-review/prompts.js +0 -87
  558. package/dist/phases/pr-shared/agent-utils.d.ts +0 -47
  559. package/dist/phases/pr-shared/agent-utils.js +0 -112
  560. package/dist/phases/pr-shared/context.d.ts +0 -24
  561. package/dist/phases/pr-shared/context.js +0 -78
  562. package/dist/phases/pr-shared/status.d.ts +0 -18
  563. package/dist/phases/pr-shared/status.js +0 -37
  564. package/dist/phases/pr-splitting/context.d.ts +0 -28
  565. package/dist/phases/pr-splitting/context.js +0 -182
  566. package/dist/phases/pr-splitting/import-dep-validator.d.ts +0 -67
  567. package/dist/phases/pr-splitting/import-dep-validator.js +0 -255
  568. package/dist/phases/pr-splitting/index.d.ts +0 -36
  569. package/dist/phases/pr-splitting/index.js +0 -413
  570. package/dist/phases/pr-splitting/outcome.d.ts +0 -24
  571. package/dist/phases/pr-splitting/outcome.js +0 -114
  572. package/dist/phases/pr-splitting/prompts.d.ts +0 -43
  573. package/dist/phases/pr-splitting/prompts.js +0 -154
  574. package/dist/phases/product-techniques/index.d.ts +0 -52
  575. package/dist/phases/product-techniques/index.js +0 -268
  576. package/dist/phases/product-techniques/mcp-server.d.ts +0 -41
  577. package/dist/phases/product-techniques/mcp-server.js +0 -96
  578. package/dist/phases/product-techniques/prompts.d.ts +0 -19
  579. package/dist/phases/product-techniques/prompts.js +0 -66
  580. package/dist/phases/product-techniques/types.d.ts +0 -13
  581. package/dist/phases/product-techniques/types.js +0 -13
  582. package/dist/phases/product-test-cases/index.d.ts +0 -25
  583. package/dist/phases/product-test-cases/index.js +0 -174
  584. package/dist/phases/product-test-cases/prompts.d.ts +0 -24
  585. package/dist/phases/product-test-cases/prompts.js +0 -80
  586. package/dist/phases/product-test-cases/types.d.ts +0 -17
  587. package/dist/phases/product-test-cases/types.js +0 -27
  588. package/dist/phases/pull-request/creator.d.ts +0 -30
  589. package/dist/phases/pull-request/creator.js +0 -319
  590. package/dist/phases/pull-request/handler.d.ts +0 -15
  591. package/dist/phases/pull-request/handler.js +0 -92
  592. package/dist/phases/quality-benchmark/gate.d.ts +0 -50
  593. package/dist/phases/quality-benchmark/gate.js +0 -91
  594. package/dist/phases/quality-benchmark/index.d.ts +0 -65
  595. package/dist/phases/quality-benchmark/index.js +0 -208
  596. package/dist/phases/quality-benchmark/mcp-server.d.ts +0 -46
  597. package/dist/phases/quality-benchmark/mcp-server.js +0 -252
  598. package/dist/phases/quality-benchmark/parsers.d.ts +0 -45
  599. package/dist/phases/quality-benchmark/parsers.js +0 -1311
  600. package/dist/phases/quality-benchmark/prompts.d.ts +0 -31
  601. package/dist/phases/quality-benchmark/prompts.js +0 -154
  602. package/dist/phases/quality-benchmark/rubric.md +0 -1211
  603. package/dist/phases/quality-benchmark/tool-catalog.d.ts +0 -33
  604. package/dist/phases/quality-benchmark/tool-catalog.js +0 -693
  605. package/dist/phases/quality-benchmark/tool-runner.d.ts +0 -69
  606. package/dist/phases/quality-benchmark/tool-runner.js +0 -399
  607. package/dist/phases/quality-benchmark/types.d.ts +0 -319
  608. package/dist/phases/quality-benchmark/types.js +0 -23
  609. package/dist/phases/quality-benchmark/workspace.d.ts +0 -31
  610. package/dist/phases/quality-benchmark/workspace.js +0 -110
  611. package/dist/phases/recipes/index.d.ts +0 -63
  612. package/dist/phases/recipes/index.js +0 -358
  613. package/dist/phases/recipes/mcp-server.d.ts +0 -66
  614. package/dist/phases/recipes/mcp-server.js +0 -229
  615. package/dist/phases/recipes/prompts.d.ts +0 -35
  616. package/dist/phases/recipes/prompts.js +0 -105
  617. package/dist/phases/recipes/types.d.ts +0 -42
  618. package/dist/phases/recipes/types.js +0 -16
  619. package/dist/phases/release-sync/github.d.ts +0 -66
  620. package/dist/phases/release-sync/github.js +0 -140
  621. package/dist/phases/release-sync/index.d.ts +0 -24
  622. package/dist/phases/release-sync/index.js +0 -156
  623. package/dist/phases/release-sync/snapshot.d.ts +0 -27
  624. package/dist/phases/release-sync/snapshot.js +0 -158
  625. package/dist/phases/run-sheet/agent.d.ts +0 -49
  626. package/dist/phases/run-sheet/agent.js +0 -156
  627. package/dist/phases/run-sheet/index.d.ts +0 -57
  628. package/dist/phases/run-sheet/index.js +0 -392
  629. package/dist/phases/screen-flow/index.d.ts +0 -26
  630. package/dist/phases/screen-flow/index.js +0 -349
  631. package/dist/phases/screen-flow/mcp-server.d.ts +0 -201
  632. package/dist/phases/screen-flow/mcp-server.js +0 -272
  633. package/dist/phases/screen-flow/prompts.d.ts +0 -19
  634. package/dist/phases/screen-flow/prompts.js +0 -43
  635. package/dist/phases/screen-flow/theme.d.ts +0 -19
  636. package/dist/phases/screen-flow/theme.js +0 -193
  637. package/dist/phases/screen-flow/types.d.ts +0 -137
  638. package/dist/phases/screen-flow/types.js +0 -81
  639. package/dist/phases/sequence-diagram/index.d.ts +0 -30
  640. package/dist/phases/sequence-diagram/index.js +0 -290
  641. package/dist/phases/sequence-diagram/mcp-server.d.ts +0 -64
  642. package/dist/phases/sequence-diagram/mcp-server.js +0 -134
  643. package/dist/phases/sequence-diagram/prompts.d.ts +0 -14
  644. package/dist/phases/sequence-diagram/prompts.js +0 -36
  645. package/dist/phases/sequence-diagram/types.d.ts +0 -52
  646. package/dist/phases/sequence-diagram/types.js +0 -93
  647. package/dist/phases/smoke-test/agent.d.ts +0 -12
  648. package/dist/phases/smoke-test/agent.js +0 -93
  649. package/dist/phases/smoke-test/index.d.ts +0 -22
  650. package/dist/phases/smoke-test/index.js +0 -241
  651. package/dist/phases/smoke-test/prompts.d.ts +0 -15
  652. package/dist/phases/smoke-test/prompts.js +0 -35
  653. package/dist/phases/state-diagram/index.d.ts +0 -15
  654. package/dist/phases/state-diagram/index.js +0 -53
  655. package/dist/phases/sync-github-issues/index.d.ts +0 -41
  656. package/dist/phases/sync-github-issues/index.js +0 -187
  657. package/dist/phases/sync-github-issues/state.d.ts +0 -26
  658. package/dist/phases/sync-github-issues/state.js +0 -18
  659. package/dist/phases/sync-github-issues/types.d.ts +0 -35
  660. package/dist/phases/sync-github-issues/types.js +0 -6
  661. package/dist/phases/sync-github-pull-requests/index.d.ts +0 -23
  662. package/dist/phases/sync-github-pull-requests/index.js +0 -210
  663. package/dist/phases/sync-github-pull-requests/state.d.ts +0 -24
  664. package/dist/phases/sync-github-pull-requests/state.js +0 -16
  665. package/dist/phases/sync-github-pull-requests/types.d.ts +0 -22
  666. package/dist/phases/sync-github-pull-requests/types.js +0 -1
  667. package/dist/phases/sync-org-repos/index.d.ts +0 -28
  668. package/dist/phases/sync-org-repos/index.js +0 -133
  669. package/dist/phases/sync-sentry-issues/index.d.ts +0 -29
  670. package/dist/phases/sync-sentry-issues/index.js +0 -153
  671. package/dist/phases/sync-sentry-issues/sentry-client.d.ts +0 -66
  672. package/dist/phases/sync-sentry-issues/sentry-client.js +0 -221
  673. package/dist/phases/sync-sentry-issues/state.d.ts +0 -23
  674. package/dist/phases/sync-sentry-issues/state.js +0 -18
  675. package/dist/phases/sync-sentry-issues/types.d.ts +0 -46
  676. package/dist/phases/sync-sentry-issues/types.js +0 -6
  677. package/dist/phases/sync-shared/mcp.d.ts +0 -81
  678. package/dist/phases/sync-shared/mcp.js +0 -111
  679. package/dist/phases/task/agent.d.ts +0 -10
  680. package/dist/phases/task/agent.js +0 -83
  681. package/dist/phases/task/context.d.ts +0 -16
  682. package/dist/phases/task/context.js +0 -50
  683. package/dist/phases/task/index.d.ts +0 -17
  684. package/dist/phases/task/index.js +0 -54
  685. package/dist/phases/task/prompts.d.ts +0 -9
  686. package/dist/phases/task/prompts.js +0 -21
  687. package/dist/phases/technical-design/context.d.ts +0 -12
  688. package/dist/phases/technical-design/context.js +0 -39
  689. package/dist/phases/technical-design/index.d.ts +0 -21
  690. package/dist/phases/technical-design/index.js +0 -456
  691. package/dist/phases/technical-design/outcome.d.ts +0 -25
  692. package/dist/phases/technical-design/outcome.js +0 -41
  693. package/dist/phases/technical-design/prompts.d.ts +0 -8
  694. package/dist/phases/technical-design/prompts.js +0 -210
  695. package/dist/phases/technical-design-verification/agent.d.ts +0 -53
  696. package/dist/phases/technical-design-verification/agent.js +0 -186
  697. package/dist/phases/technical-design-verification/index.d.ts +0 -38
  698. package/dist/phases/technical-design-verification/index.js +0 -152
  699. package/dist/phases/technical-design-verification/prompts.d.ts +0 -12
  700. package/dist/phases/technical-design-verification/prompts.js +0 -143
  701. package/dist/phases/test-cases-analysis/agent.d.ts +0 -9
  702. package/dist/phases/test-cases-analysis/agent.js +0 -105
  703. package/dist/phases/test-cases-analysis/context.d.ts +0 -15
  704. package/dist/phases/test-cases-analysis/context.js +0 -86
  705. package/dist/phases/test-cases-analysis/formatters.d.ts +0 -6
  706. package/dist/phases/test-cases-analysis/formatters.js +0 -35
  707. package/dist/phases/test-cases-analysis/index.d.ts +0 -9
  708. package/dist/phases/test-cases-analysis/index.js +0 -175
  709. package/dist/phases/test-cases-analysis/outcome.d.ts +0 -27
  710. package/dist/phases/test-cases-analysis/outcome.js +0 -146
  711. package/dist/phases/test-cases-analysis/prompts.d.ts +0 -7
  712. package/dist/phases/test-cases-analysis/prompts.js +0 -171
  713. package/dist/phases/user-psychology/agent.d.ts +0 -16
  714. package/dist/phases/user-psychology/agent.js +0 -105
  715. package/dist/phases/user-psychology/context.d.ts +0 -10
  716. package/dist/phases/user-psychology/context.js +0 -65
  717. package/dist/phases/user-psychology/index.d.ts +0 -18
  718. package/dist/phases/user-psychology/index.js +0 -96
  719. package/dist/phases/user-psychology/prompts.d.ts +0 -2
  720. package/dist/phases/user-psychology/prompts.js +0 -41
  721. package/dist/phases/user-stories-analysis/agent.d.ts +0 -9
  722. package/dist/phases/user-stories-analysis/agent.js +0 -105
  723. package/dist/phases/user-stories-analysis/context.d.ts +0 -15
  724. package/dist/phases/user-stories-analysis/context.js +0 -86
  725. package/dist/phases/user-stories-analysis/formatters.d.ts +0 -6
  726. package/dist/phases/user-stories-analysis/formatters.js +0 -32
  727. package/dist/phases/user-stories-analysis/index.d.ts +0 -9
  728. package/dist/phases/user-stories-analysis/index.js +0 -175
  729. package/dist/phases/user-stories-analysis/outcome.d.ts +0 -27
  730. package/dist/phases/user-stories-analysis/outcome.js +0 -146
  731. package/dist/phases/user-stories-analysis/prompts.d.ts +0 -7
  732. package/dist/phases/user-stories-analysis/prompts.js +0 -194
  733. package/dist/services/audit-logs.d.ts +0 -73
  734. package/dist/services/audit-logs.js +0 -174
  735. package/dist/services/branches.d.ts +0 -103
  736. package/dist/services/branches.js +0 -391
  737. package/dist/services/checklist.d.ts +0 -100
  738. package/dist/services/checklist.js +0 -259
  739. package/dist/services/coaching/coaching-agent.d.ts +0 -39
  740. package/dist/services/coaching/coaching-agent.js +0 -308
  741. package/dist/services/coaching/coaching-loop.d.ts +0 -62
  742. package/dist/services/coaching/coaching-loop.js +0 -265
  743. package/dist/services/coaching/index.d.ts +0 -8
  744. package/dist/services/coaching/index.js +0 -8
  745. package/dist/services/coaching/phase-coaching.d.ts +0 -47
  746. package/dist/services/coaching/phase-coaching.js +0 -60
  747. package/dist/services/coaching/self-rating.d.ts +0 -26
  748. package/dist/services/coaching/self-rating.js +0 -153
  749. package/dist/services/feedbacks.d.ts +0 -57
  750. package/dist/services/feedbacks.js +0 -264
  751. package/dist/services/phase-hooks/bindings-fetcher.d.ts +0 -21
  752. package/dist/services/phase-hooks/bindings-fetcher.js +0 -53
  753. package/dist/services/phase-hooks/hook-executor.d.ts +0 -36
  754. package/dist/services/phase-hooks/hook-executor.js +0 -167
  755. package/dist/services/phase-hooks/hook-logging.d.ts +0 -14
  756. package/dist/services/phase-hooks/hook-logging.js +0 -41
  757. package/dist/services/phase-hooks/hook-runner.d.ts +0 -19
  758. package/dist/services/phase-hooks/hook-runner.js +0 -83
  759. package/dist/services/phase-hooks/index.d.ts +0 -10
  760. package/dist/services/phase-hooks/index.js +0 -9
  761. package/dist/services/phase-hooks/plugin-loader.d.ts +0 -31
  762. package/dist/services/phase-hooks/plugin-loader.js +0 -207
  763. package/dist/services/phase-hooks/types.d.ts +0 -69
  764. package/dist/services/phase-hooks/types.js +0 -8
  765. package/dist/services/phase-ratings.d.ts +0 -70
  766. package/dist/services/phase-ratings.js +0 -143
  767. package/dist/services/product-logs.d.ts +0 -31
  768. package/dist/services/product-logs.js +0 -94
  769. package/dist/services/pull-requests.d.ts +0 -57
  770. package/dist/services/pull-requests.js +0 -186
  771. package/dist/services/quality-reports.d.ts +0 -45
  772. package/dist/services/quality-reports.js +0 -93
  773. package/dist/services/repo-config.d.ts +0 -17
  774. package/dist/services/repo-config.js +0 -50
  775. package/dist/services/skill-resolver.d.ts +0 -46
  776. package/dist/services/skill-resolver.js +0 -123
  777. package/dist/services/video/device-frames.d.ts +0 -34
  778. package/dist/services/video/device-frames.js +0 -513
  779. package/dist/services/video/index.d.ts +0 -66
  780. package/dist/services/video/index.js +0 -238
  781. package/dist/services/video/retry.d.ts +0 -20
  782. package/dist/services/video/retry.js +0 -76
  783. package/dist/services/video/screenshot-generator.d.ts +0 -69
  784. package/dist/services/video/screenshot-generator.js +0 -259
  785. package/dist/services/video/tts-generator.d.ts +0 -40
  786. package/dist/services/video/tts-generator.js +0 -121
  787. package/dist/services/video/video-assembler.d.ts +0 -45
  788. package/dist/services/video/video-assembler.js +0 -351
  789. package/dist/services/video/video-uploader.d.ts +0 -28
  790. package/dist/services/video/video-uploader.js +0 -108
  791. package/dist/skills/phase/adr-generation/SKILL.md +0 -51
  792. package/dist/skills/phase/analyze-logs/SKILL.md +0 -24
  793. package/dist/skills/phase/app-store-generation/SKILL.md +0 -60
  794. package/dist/skills/phase/architecture-diagram/SKILL.md +0 -41
  795. package/dist/skills/phase/autonomous/SKILL.md +0 -52
  796. package/dist/skills/phase/branch-planning/SKILL.md +0 -55
  797. package/dist/skills/phase/bug-fixing/SKILL.md +0 -47
  798. package/dist/skills/phase/class-diagram/SKILL.md +0 -44
  799. package/dist/skills/phase/code-implementation/SKILL.md +0 -68
  800. package/dist/skills/phase/code-implementation-verification/SKILL.md +0 -76
  801. package/dist/skills/phase/code-refine/SKILL.md +0 -62
  802. package/dist/skills/phase/code-testing/SKILL.md +0 -78
  803. package/dist/skills/phase/data-flow/SKILL.md +0 -82
  804. package/dist/skills/phase/er-diagram/SKILL.md +0 -71
  805. package/dist/skills/phase/flowchart/SKILL.md +0 -38
  806. package/dist/skills/phase/functional-testing/SKILL.md +0 -62
  807. package/dist/skills/phase/growth-analysis/SKILL.md +0 -97
  808. package/dist/skills/phase/incremental-sync/SKILL.md +0 -59
  809. package/dist/skills/phase/intelligence-analysis/SKILL.md +0 -52
  810. package/dist/skills/phase/issue-analysis/SKILL.md +0 -73
  811. package/dist/skills/phase/issue-analysis-verification/SKILL.md +0 -61
  812. package/dist/skills/phase/pr-execution/SKILL.md +0 -69
  813. package/dist/skills/phase/pr-splitting/SKILL.md +0 -78
  814. package/dist/skills/phase/screen-flow/SKILL.md +0 -78
  815. package/dist/skills/phase/sequence-diagram/SKILL.md +0 -67
  816. package/dist/skills/phase/smoke-test/SKILL.md +0 -80
  817. package/dist/skills/phase/state-diagram/SKILL.md +0 -38
  818. package/dist/skills/phase/task/SKILL.md +0 -19
  819. package/dist/skills/phase/technical-design/SKILL.md +0 -75
  820. package/dist/skills/phase/technical-design-verification/SKILL.md +0 -43
  821. package/dist/skills/phase/test-cases-analysis/SKILL.md +0 -88
  822. package/dist/skills/phase/user-psychology/SKILL.md +0 -135
  823. package/dist/skills/phase/user-stories-analysis/SKILL.md +0 -118
  824. package/dist/supabase/client.d.ts +0 -34
  825. package/dist/supabase/client.js +0 -123
  826. package/dist/system/session-manager.d.ts +0 -67
  827. package/dist/system/session-manager.js +0 -300
  828. package/dist/system/sleep-notification.d.ts +0 -15
  829. package/dist/system/sleep-notification.js +0 -108
  830. package/dist/system/sleep-prevention.d.ts +0 -20
  831. package/dist/system/sleep-prevention.js +0 -112
  832. package/dist/tools/bootstrap.d.ts +0 -45
  833. package/dist/tools/bootstrap.js +0 -50
  834. package/dist/types/external-sources.d.ts +0 -22
  835. package/dist/types/external-sources.js +0 -23
  836. package/dist/types/index.d.ts +0 -206
  837. package/dist/types/index.js +0 -1
  838. package/dist/types/issues.d.ts +0 -37
  839. package/dist/types/issues.js +0 -1
  840. package/dist/types/llm-responses.d.ts +0 -114
  841. package/dist/types/llm-responses.js +0 -9
  842. package/dist/types/pipeline.d.ts +0 -28
  843. package/dist/types/pipeline.js +0 -4
  844. package/dist/updater/auto-updater.d.ts +0 -39
  845. package/dist/updater/auto-updater.js +0 -134
  846. package/dist/utils/conflict-resolver.d.ts +0 -49
  847. package/dist/utils/conflict-resolver.js +0 -201
  848. package/dist/utils/formatters.d.ts +0 -42
  849. package/dist/utils/formatters.js +0 -166
  850. package/dist/utils/git-branch-manager-async.d.ts +0 -127
  851. package/dist/utils/git-branch-manager-async.js +0 -425
  852. package/dist/utils/git-branch-manager.d.ts +0 -160
  853. package/dist/utils/git-branch-manager.js +0 -613
  854. package/dist/utils/git-push.d.ts +0 -43
  855. package/dist/utils/git-push.js +0 -136
  856. package/dist/utils/github-repo-info.d.ts +0 -26
  857. package/dist/utils/github-repo-info.js +0 -45
  858. package/dist/utils/image-downloader.d.ts +0 -32
  859. package/dist/utils/image-downloader.js +0 -152
  860. package/dist/utils/issue-phase-cli.d.ts +0 -26
  861. package/dist/utils/issue-phase-cli.js +0 -44
  862. package/dist/utils/json-extract.d.ts +0 -6
  863. package/dist/utils/json-extract.js +0 -44
  864. package/dist/utils/json-extractor.d.ts +0 -27
  865. package/dist/utils/json-extractor.js +0 -102
  866. package/dist/utils/logger.d.ts +0 -35
  867. package/dist/utils/logger.js +0 -167
  868. package/dist/utils/pipeline-logger.d.ts +0 -8
  869. package/dist/utils/pipeline-logger.js +0 -38
  870. package/dist/utils/validation.d.ts +0 -68
  871. package/dist/utils/validation.js +0 -229
  872. package/dist/utils/workflow-utils.d.ts +0 -22
  873. package/dist/utils/workflow-utils.js +0 -48
  874. package/dist/workspace/session-workspace.d.ts +0 -43
  875. package/dist/workspace/session-workspace.js +0 -90
  876. package/dist/workspace/workspace-manager.d.ts +0 -105
  877. package/dist/workspace/workspace-manager.js +0 -280
@@ -1,1211 +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
- | Dart | 60 | 100 |
356
-
357
- These are measurement calibration, not different standards.
358
-
359
- **Anchors**: standard mapping.
360
-
361
- ### 3. Test Coverage & Quality
362
-
363
- **Measures**: tests exist, run, and meaningfully cover behavior.
364
-
365
- **Tool-driven checks**:
366
-
367
- - Read `coverage/coverage-summary.json` (JS/TS via jest/vitest) → `test.coverage_breadth`
368
- - Run `vitest run --coverage --reporter=json` if no coverage file exists and project uses vitest → same
369
- - `pytest --cov --cov-report=json` (Python, if pytest detected) → `test.coverage_breadth`
370
- - `go test -coverprofile=cover.out ./...` then `go tool cover -func=cover.out` (Go) → `test.coverage_breadth`
371
- - `cargo tarpaulin --out json` (Rust, optional) → `test.coverage_breadth`
372
- - Test:source LOC ratio (via `scc`) → `test.presence`
373
-
374
- **LLM-judgment checks**:
375
-
376
- - Sample test files: are assertions real (`expect(x).toBe(...)`) or vacuous (`expect(x).toBeDefined()`)? → `test.assertion_quality`
377
- - Are critical paths (auth, payments, persistence, API surface) tested? Read entry points + grep for corresponding test files → `test.critical_path_coverage`
378
- - Test isolation: scan for shared mutable state, `beforeAll` without cleanup → `test.isolation`
379
-
380
- **Subscores**: `presence`, `coverage_breadth`, `assertion_quality`, `critical_path_coverage`, `isolation`
381
-
382
- **N/A**: doc-only or config-only repo with no executable behavior.
383
-
384
- **Anchors**: standard mapping. Coverage % thresholds for `coverage_breadth`:
385
-
386
- - ≥85%: A-tier (95)
387
- - 70–84%: B-tier (80)
388
- - 50–69%: C-tier (65)
389
- - 30–49%: D-tier (50)
390
- - <30%: F-tier (25)
391
-
392
- ### 4. Security
393
-
394
- **Measures**: defensive posture against real-world threats.
395
-
396
- **Tool-driven checks**:
397
-
398
- - `semgrep --config auto --json` (multi-lang SAST) → `sec.sast`
399
- - `gitleaks detect --report-format json` → `sec.secrets`
400
- - `npm audit --json` / `pnpm audit --json` / `yarn audit --json` → `sec.dep_vulns`
401
- - `pip-audit --format json` (Python) → `sec.dep_vulns`
402
- - `cargo audit --json` (Rust) → `sec.dep_vulns`
403
- - `govulncheck -json ./...` (Go) → `sec.dep_vulns`
404
- - `bandit -r . -f json` (Python SAST) → `sec.sast`
405
- - `gosec -fmt json ./...` (Go SAST) → `sec.sast`
406
- - `brakeman -f json` (Ruby on Rails SAST) → `sec.sast`
407
- - `osv-scanner --json --recursive .` (multi-lang CVE) → `sec.dep_vulns` (cross-check)
408
-
409
- **LLM-judgment checks**:
410
-
411
- - AuthN/AuthZ logic at entry points (sample handlers)
412
- - Unsafe deserialization patterns (Grep: `pickle.load`, `yaml.load`, `eval(`, `Function(`)
413
- - Crypto: deprecated algorithms (Grep: `md5`, `sha1` in security contexts, `Math.random` for tokens)
414
-
415
- **Subscores**: `secrets_hygiene`, `input_validation`, `authn_authz`, `crypto`, `dep_vulns`, `sast`
416
-
417
- **Anchors**: standard mapping. **Severity cap**: any `critical` severity finding caps Security at 40.
418
-
419
- ### 5. Performance
420
-
421
- **Measures**: efficiency in hot paths. Real cost, not micro-optimization.
422
-
423
- **Tool-driven checks**:
424
-
425
- - Bundle size (JS): `size-limit --json` if configured, else parse webpack/vite output → `perf.bundle_size`
426
- - Database query patterns: Semgrep with N+1 rule pack → `perf.n_plus_one`
427
- - ESLint perf rules (`eslint-plugin-react-perf`, etc., if configured) → `perf.framework_specific`
428
-
429
- **LLM-judgment checks**:
430
-
431
- - Synchronous I/O in async contexts (Grep + read)
432
- - Unbounded operations on user input (regex backtracking, loops, allocations)
433
- - Missing pagination on list endpoints
434
- - Resource leak patterns (open without close)
435
- - Algorithmic inefficiency in obvious hot paths
436
-
437
- **Subscores**: `hot_path_io`, `n_plus_one`, `unbounded_ops`, `resource_leaks`, `algorithmic`
438
-
439
- **External signal**: Sentry `performance` issues feed evidence here.
440
-
441
- **N/A**: doc/config repos, scripts with no hot path and trivial input size.
442
-
443
- **Anchors**: standard mapping.
444
-
445
- ### 6. Documentation
446
-
447
- **Measures**: ability of a new engineer to understand, run, change the project.
448
-
449
- **Tool-driven checks**:
450
-
451
- - README presence + size (`wc -l README*`) → `doc.readme`
452
- - API doc coverage: `typedoc --json` (TS), `pydoc-markdown` (Python), `cargo doc` warnings (Rust), `godoc` (Go) → `doc.api_docs`
453
- - ADR presence (`ls docs/adr/` or `ls docs/decisions/`) → `doc.decision_records`
454
-
455
- **LLM-judgment checks**:
456
-
457
- - README quality: purpose / install / run / test / develop / contribute sections present and accurate?
458
- - Architecture overview present?
459
- - Inline comments on non-obvious code (sample 20 functions)
460
- - Setup friction (can a new dev run from README alone?)
461
-
462
- **Subscores**: `readme`, `api_docs`, `architecture_overview`, `decision_records`, `onboarding_friction`
463
-
464
- **Anchors**: standard mapping.
465
-
466
- ### 7. Maintainability
467
-
468
- **Measures**: long-term cost of working in this codebase.
469
-
470
- **Tool-driven checks**:
471
-
472
- - `scc --format json` → file-size + LOC distribution → `maint.file_distribution`
473
- - Lizard / Radon maintainability index → `maint.cognitive_load`
474
- - `depcheck` (JS unused deps) / `vulture` / `cargo udeps` → contributes to `maint.tooling_enforcement` if linter+coverage are configured
475
- - ESLint/Pylint/clippy errors-as-warnings count → `maint.tooling_enforcement`
476
- - TypeScript `strict` mode check (`tsc --showConfig`)
477
- - Pre-commit hook presence: `ls .husky/` / `.pre-commit-config.yaml`
478
-
479
- **LLM-judgment checks**:
480
-
481
- - TODO/FIXME density (`git grep -n "TODO\|FIXME" | wc -l`) + age sample (`git blame` on a sample) → `maint.todo_debt`
482
- - Configuration sprawl (multiple `.config` files for same concern)
483
-
484
- **External signals**:
485
-
486
- - Git churn hotspots → evidence for `maint.churn_hotspots` subscore
487
- - GitHub Issues open count + age → evidence here too
488
-
489
- **Subscores**: `file_distribution`, `cognitive_load`, `churn_hotspots`, `todo_debt`, `tooling_enforcement`
490
-
491
- **Anchors**: standard mapping.
492
-
493
- ### 8. Dependency Health
494
-
495
- **Measures**: third-party supply chain hygiene.
496
-
497
- **Tool-driven checks**:
498
-
499
- - `npm outdated --json` / `pnpm outdated --format json` / `yarn outdated --json` → `dep.freshness`
500
- - `pip list --outdated --format=json` (Python) → `dep.freshness`
501
- - `cargo outdated --format json` (Rust) → `dep.freshness`
502
- - `go list -m -u all` (Go) → `dep.freshness`
503
- - `depcheck --json` (JS unused) → `dep.unused`
504
- - `cargo udeps --output json` (Rust unused) → `dep.unused`
505
- - `license-checker --json` (JS) / `pip-licenses --format=json` / `cargo deny check licenses --format json` → `dep.license`
506
- - Lockfile presence + age (`git log -1 --format=%ar` on lockfile) → `dep.lockfile`
507
-
508
- **LLM-judgment checks**:
509
-
510
- - Upstream maintenance status (for top 10 direct deps: last release date via tool output; archived flag) → `dep.upstream_maintenance`
511
-
512
- **Subscores**: `lockfile`, `freshness`, `unused`, `license`, `upstream_maintenance`
513
-
514
- **N/A**: repo with literally zero external dependencies.
515
-
516
- **Anchors**: standard mapping.
517
-
518
- ---
519
-
520
- ## Tool Catalog
521
-
522
- Tool catalog is the **authoritative list of commands** you may run. You may not invent commands or flags.
523
-
524
- Each entry:
525
-
526
- ```
527
- <tool-id>:
528
- category: <category>
529
- applies_to: [<language|framework>...]
530
- probe: <command to check presence>
531
- install: <user-space install command, or null if not installable>
532
- install_prereq: <pipx|go|cargo|npx|gem|null>
533
- command: <command template with placeholders>
534
- timeout_minutes: <int>
535
- parser: <parser module name>
536
- subscores: [<dimension>.<subscore>]
537
- ```
538
-
539
- ### JavaScript/TypeScript
540
-
541
- ```
542
- eslint:
543
- applies_to: [js, ts]
544
- probe: npx --no eslint --version
545
- install: null # use project-local
546
- command: npx --no eslint . --format json --ext .js,.jsx,.ts,.tsx
547
- timeout_minutes: 5
548
- parser: eslint
549
- subscores: [code_quality.lint]
550
-
551
- tsc-typecheck:
552
- applies_to: [ts]
553
- probe: npx --no tsc --version
554
- install: null
555
- command: npx --no tsc --noEmit
556
- timeout_minutes: 5
557
- parser: tsc
558
- subscores: [code_quality.lint]
559
-
560
- jscpd:
561
- applies_to: [js, ts, py, java, go, cs, rb]
562
- probe: command -v jscpd
563
- install: npm install -g jscpd # NOTE: prefer npx; check first
564
- install_prereq: npx
565
- command: npx --yes jscpd %REPO_ROOT% --reporters json --output %REPO_ROOT%/.scan/jscpd --min-lines 5 --min-tokens 50
566
- timeout_minutes: 10
567
- parser: jscpd
568
- subscores: [code_quality.duplication]
569
-
570
- madge:
571
- applies_to: [js, ts]
572
- probe: command -v madge
573
- install: null # use npx
574
- command: npx --yes madge --circular --json %REPO_ROOT%
575
- timeout_minutes: 3
576
- parser: madge
577
- subscores: [architecture.circular_deps]
578
-
579
- madge-graph:
580
- applies_to: [js, ts] # full module graph for visualization (bounded)
581
- probe: command -v madge
582
- install: null # use npx
583
- command: npx --yes madge --json --extensions js,jsx,ts,tsx %REPO_ROOT%
584
- timeout_minutes: 5
585
- parser: madge-graph
586
- subscores: [architecture.circular_deps]
587
-
588
- depcheck:
589
- applies_to: [js, ts]
590
- probe: command -v depcheck
591
- install: null # npx
592
- command: npx --yes depcheck --json
593
- timeout_minutes: 3
594
- parser: depcheck
595
- subscores: [dependency_health.unused]
596
-
597
- npm-audit:
598
- applies_to: [js, ts] # only when package-lock.json present
599
- probe: command -v npm
600
- command: npm audit --json
601
- timeout_minutes: 3
602
- parser: npm-audit
603
- subscores: [security.dep_vulns]
604
-
605
- pnpm-audit:
606
- applies_to: [js, ts] # only when pnpm-lock.yaml present
607
- probe: command -v pnpm
608
- command: pnpm audit --json
609
- timeout_minutes: 3
610
- parser: pnpm-audit
611
- subscores: [security.dep_vulns]
612
-
613
- npm-outdated:
614
- applies_to: [js, ts]
615
- probe: command -v npm
616
- command: npm outdated --json
617
- timeout_minutes: 3
618
- parser: npm-outdated
619
- subscores: [dependency_health.freshness]
620
-
621
- license-checker:
622
- applies_to: [js, ts]
623
- probe: command -v license-checker
624
- install: null # npx
625
- command: npx --yes license-checker --json --production
626
- timeout_minutes: 3
627
- parser: license-checker
628
- subscores: [dependency_health.license]
629
- ```
630
-
631
- ### Python
632
-
633
- ```
634
- ruff:
635
- applies_to: [py]
636
- probe: command -v ruff
637
- install: pipx install "ruff>=0.4,<1.0"
638
- install_prereq: pipx
639
- command: ruff check %REPO_ROOT% --output-format json
640
- timeout_minutes: 3
641
- parser: ruff
642
- subscores: [code_quality.lint]
643
-
644
- mypy:
645
- applies_to: [py]
646
- probe: command -v mypy
647
- install: pipx install "mypy>=1.8,<2.0"
648
- install_prereq: pipx
649
- command: mypy %REPO_ROOT% --no-error-summary --show-error-codes
650
- timeout_minutes: 5
651
- parser: mypy
652
- subscores: [code_quality.lint]
653
-
654
- bandit:
655
- applies_to: [py]
656
- probe: command -v bandit
657
- install: pipx install "bandit>=1.7,<2.0"
658
- install_prereq: pipx
659
- command: bandit -r %REPO_ROOT% -f json -q
660
- timeout_minutes: 5
661
- parser: bandit
662
- subscores: [security.sast]
663
-
664
- pip-audit:
665
- applies_to: [py]
666
- probe: command -v pip-audit
667
- install: pipx install "pip-audit>=2.7,<3.0"
668
- install_prereq: pipx
669
- command: pip-audit --format json
670
- timeout_minutes: 5
671
- parser: pip-audit
672
- subscores: [security.dep_vulns]
673
-
674
- radon:
675
- applies_to: [py]
676
- probe: command -v radon
677
- install: pipx install "radon>=6.0,<7.0"
678
- install_prereq: pipx
679
- command: radon cc -j %REPO_ROOT%
680
- timeout_minutes: 3
681
- parser: radon
682
- subscores: [code_quality.complexity]
683
-
684
- vulture:
685
- applies_to: [py]
686
- probe: command -v vulture
687
- install: pipx install "vulture>=2.10,<3.0"
688
- install_prereq: pipx
689
- command: vulture %REPO_ROOT% --min-confidence 80
690
- timeout_minutes: 3
691
- parser: vulture
692
- subscores: [code_quality.dead_code]
693
-
694
- pylint:
695
- applies_to: [py]
696
- probe: command -v pylint
697
- install: pipx install "pylint>=3.0,<4.0"
698
- install_prereq: pipx
699
- command: pylint %REPO_ROOT% --output-format=json --exit-zero
700
- timeout_minutes: 10
701
- parser: pylint
702
- subscores: [code_quality.lint]
703
- ```
704
-
705
- ### Go
706
-
707
- ```
708
- golangci-lint:
709
- applies_to: [go]
710
- probe: command -v golangci-lint
711
- install: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.60.3
712
- install_prereq: go
713
- command: golangci-lint run --out-format json ./...
714
- timeout_minutes: 10
715
- parser: golangci-lint
716
- subscores: [code_quality.lint]
717
-
718
- gosec:
719
- applies_to: [go]
720
- probe: command -v gosec
721
- install: go install github.com/securego/gosec/v2/cmd/gosec@v2.21.4
722
- install_prereq: go
723
- command: gosec -fmt json ./...
724
- timeout_minutes: 5
725
- parser: gosec
726
- subscores: [security.sast]
727
-
728
- govulncheck:
729
- applies_to: [go]
730
- probe: command -v govulncheck
731
- install: go install golang.org/x/vuln/cmd/govulncheck@latest
732
- install_prereq: go
733
- command: govulncheck -json ./...
734
- timeout_minutes: 5
735
- parser: govulncheck
736
- subscores: [security.dep_vulns]
737
-
738
- gocyclo:
739
- applies_to: [go]
740
- probe: command -v gocyclo
741
- install: go install github.com/fzipp/gocyclo/cmd/gocyclo@latest
742
- install_prereq: go
743
- command: gocyclo -over 15 -json %REPO_ROOT%
744
- timeout_minutes: 3
745
- parser: gocyclo
746
- subscores: [code_quality.complexity]
747
-
748
- go-mod-outdated:
749
- applies_to: [go]
750
- probe: command -v go
751
- command: go list -m -u -mod=mod -json all
752
- timeout_minutes: 3
753
- parser: go-mod-outdated
754
- subscores: [dependency_health.freshness]
755
- ```
756
-
757
- ### Rust
758
-
759
- ```
760
- clippy:
761
- applies_to: [rust]
762
- probe: command -v cargo
763
- command: cargo clippy --message-format json -- -D warnings
764
- timeout_minutes: 10
765
- parser: clippy
766
- subscores: [code_quality.lint]
767
-
768
- cargo-audit:
769
- applies_to: [rust]
770
- probe: command -v cargo-audit
771
- install: cargo install --locked cargo-audit
772
- install_prereq: cargo
773
- command: cargo audit --json
774
- timeout_minutes: 5
775
- parser: cargo-audit
776
- subscores: [security.dep_vulns]
777
-
778
- cargo-deny:
779
- applies_to: [rust]
780
- probe: command -v cargo-deny
781
- install: cargo install --locked cargo-deny
782
- install_prereq: cargo
783
- command: cargo deny check --format json
784
- timeout_minutes: 5
785
- parser: cargo-deny
786
- subscores: [dependency_health.license, security.dep_vulns]
787
-
788
- cargo-outdated:
789
- applies_to: [rust]
790
- probe: command -v cargo-outdated
791
- install: cargo install --locked cargo-outdated
792
- install_prereq: cargo
793
- command: cargo outdated --format json
794
- timeout_minutes: 5
795
- parser: cargo-outdated
796
- subscores: [dependency_health.freshness]
797
- ```
798
-
799
- ### Ruby
800
-
801
- ```
802
- rubocop:
803
- applies_to: [ruby]
804
- probe: command -v rubocop
805
- install: gem install --user-install rubocop --version "~> 1.65"
806
- install_prereq: gem
807
- command: rubocop --format json
808
- timeout_minutes: 5
809
- parser: rubocop
810
- subscores: [code_quality.lint]
811
-
812
- brakeman:
813
- applies_to: [ruby] # Rails only
814
- probe: command -v brakeman
815
- install: gem install --user-install brakeman
816
- install_prereq: gem
817
- command: brakeman -f json -q
818
- timeout_minutes: 10
819
- parser: brakeman
820
- subscores: [security.sast]
821
-
822
- bundler-audit:
823
- applies_to: [ruby]
824
- probe: command -v bundle-audit
825
- install: gem install --user-install bundler-audit
826
- install_prereq: gem
827
- command: bundle-audit check --format json
828
- timeout_minutes: 5
829
- parser: bundler-audit
830
- subscores: [security.dep_vulns]
831
- ```
832
-
833
- ### C# / .NET
834
-
835
- Both tools ship with the .NET SDK — no extra install, no Go. `--format json`
836
- requires SDK >= 9. They trigger a `dotnet restore` first; if the repo has no
837
- network access to NuGet the restore (and thus the listing) degrades to
838
- unmeasured.
839
-
840
- ```
841
- dotnet-list-vulnerable:
842
- applies_to: [cs]
843
- probe: command -v dotnet
844
- install: null # bundled with the .NET SDK
845
- command: dotnet restore >/dev/null 2>&1; dotnet list package --vulnerable --include-transitive --format json
846
- timeout_minutes: 5
847
- parser: dotnet-list-vulnerable
848
- subscores: [security.dep_vulns]
849
-
850
- dotnet-list-outdated:
851
- applies_to: [cs]
852
- probe: command -v dotnet
853
- install: null # bundled with the .NET SDK
854
- command: dotnet restore >/dev/null 2>&1; dotnet list package --outdated --format json
855
- timeout_minutes: 5
856
- parser: dotnet-list-outdated
857
- subscores: [dependency_health.freshness]
858
- ```
859
-
860
- ### Dart / Flutter
861
-
862
- Both tools ship with the Dart (and Flutter) SDK — no extra install. We never
863
- auto-install an SDK, so on a machine without `dart` they degrade to unmeasured.
864
- `dart analyze` is AST-based (same analyzer as the IDE plugins); duplication is
865
- covered by the polyglot `jscpd` entry (Dart is in its `applies_to`).
866
-
867
- ```
868
- dart-analyze:
869
- applies_to: [dart]
870
- probe: command -v dart
871
- install: null # bundled with the Dart / Flutter SDK
872
- command: dart analyze %REPO_ROOT% --format=machine
873
- timeout_minutes: 5
874
- parser: dart-analyze
875
- subscores: [code_quality.lint]
876
-
877
- dart-pub-outdated:
878
- applies_to: [dart] # only when pubspec.yaml present
879
- probe: command -v dart
880
- install: null # bundled with the Dart / Flutter SDK
881
- command: dart pub outdated --json
882
- timeout_minutes: 3
883
- parser: dart-pub-outdated
884
- subscores: [dependency_health.freshness]
885
- ```
886
-
887
- ### Multi-language
888
-
889
- ```
890
- semgrep:
891
- applies_to: [js, ts, py, go, rust, java, ruby, c, cpp]
892
- probe: command -v semgrep
893
- install: pipx install "semgrep>=1.40,<2.0"
894
- install_prereq: pipx
895
- command: semgrep --config auto --json --quiet --metrics off
896
- timeout_minutes: 15
897
- parser: semgrep
898
- subscores: [security.sast, performance.n_plus_one]
899
-
900
- gitleaks:
901
- applies_to: [all]
902
- probe: command -v gitleaks
903
- install: go install github.com/zricethezav/gitleaks/v8@latest
904
- install_prereq: go
905
- command: gitleaks detect --no-banner --report-format json --report-path - --redact
906
- timeout_minutes: 5
907
- parser: gitleaks
908
- subscores: [security.secrets_hygiene]
909
-
910
- osv-scanner:
911
- applies_to: [all]
912
- probe: command -v osv-scanner
913
- install: go install github.com/google/osv-scanner/cmd/osv-scanner@latest
914
- install_prereq: go
915
- command: osv-scanner --json --recursive %REPO_ROOT%
916
- timeout_minutes: 10
917
- parser: osv-scanner
918
- subscores: [security.dep_vulns]
919
-
920
- scc:
921
- applies_to: [all]
922
- probe: command -v scc
923
- install: go install github.com/boyter/scc/v3@latest
924
- install_prereq: go
925
- command: scc --format json %REPO_ROOT%
926
- timeout_minutes: 3
927
- parser: scc
928
- subscores: [maintainability.file_distribution]
929
-
930
- lizard:
931
- applies_to: [js, ts, py, java, c, cpp, go, rust, swift]
932
- probe: command -v lizard
933
- install: pipx install "lizard>=1.17,<2.0"
934
- install_prereq: pipx
935
- command: lizard %REPO_ROOT% --xml -t 1 -C 15 -L 80
936
- timeout_minutes: 5
937
- parser: lizard
938
- subscores: [code_quality.complexity, maintainability.cognitive_load]
939
- ```
940
-
941
- ---
942
-
943
- ## External Signals Catalog
944
-
945
- ### Git (always available where the repo is a git checkout)
946
-
947
- ```
948
- git-authors-90d:
949
- command: git log --since="90 days ago" --format="%an" | sort -u | wc -l
950
- feeds: maintainability.churn_hotspots (bus factor)
951
-
952
- git-churn-30d:
953
- command: git log --since="30 days ago" --format="" --name-only | grep -v "^$" | sort | uniq -c | sort -rn | head -30
954
- feeds: maintainability.churn_hotspots
955
-
956
- git-bug-fixes-90d:
957
- command: git log --since="90 days ago" --grep="fix\|bug\|hotfix" --oneline | wc -l
958
- feeds: maintainability.todo_debt (as proxy for stability)
959
-
960
- git-commit-quality-sample:
961
- command: git log --since="30 days ago" --format="%s" | head -50
962
- feeds: documentation.architecture_overview (LLM judges message quality)
963
- ```
964
-
965
- ### GitHub Issues (via `list_issues` MCP tool)
966
-
967
- ```
968
- gh-open-bugs:
969
- source: list_issues(product_id, status='open', labels=['bug','regression'])
970
- feeds: maintainability.todo_debt, security (if 'security' label)
971
-
972
- gh-security-issues:
973
- source: list_issues(product_id, status='open', labels=['security','vulnerability'])
974
- feeds: security.sast (as supplementary signal)
975
-
976
- gh-stale-prs:
977
- source: not directly available — skip in v1
978
- ```
979
-
980
- If `list_issues` is not available or product has no GitHub repo, log under `external_signals.github_issues.unavailable: "not configured"`.
981
-
982
- ### Sentry (via Sentry MCP, if configured for this product)
983
-
984
- ```
985
- sentry-unresolved-7d:
986
- source: Sentry MCP search_errors(time_range='7d', status='unresolved')
987
- feeds: performance (if perf-related), security (if security-related), all dimensions as runtime-health signal
988
-
989
- sentry-top-errors:
990
- source: Sentry MCP list_issues(sort='frequency', limit=5)
991
- feeds: dimension depending on error category
992
- ```
993
-
994
- If Sentry MCP is not configured, log under `external_signals.sentry.unavailable: "not configured"`.
995
-
996
- ---
997
-
998
- ## Evidence format
999
-
1000
- ```json
1001
- {
1002
- "file": "src/payments/charge.ts",
1003
- "line": 142,
1004
- "issue": "Raw SQL string interpolated with request body field 'userId' — SQL injection risk",
1005
- "severity": "critical",
1006
- "snippet": "db.query(`SELECT * FROM orders WHERE user_id = ${req.body.userId}`)",
1007
- "source": "tool:semgrep",
1008
- "rule_id": "javascript.lang.security.audit.sqli.node-sqli.node-sqli",
1009
- "cwe": ["CWE-89"]
1010
- }
1011
- ```
1012
-
1013
- - `file` repo-relative
1014
- - `line` 1-based; if range, first line
1015
- - `issue` one sentence
1016
- - `severity` `critical` | `high` | `medium` | `low`
1017
- - `snippet` ≤200 chars quoted from file
1018
- - `source` `tool:<tool-id>` or `llm_judgment`
1019
- - `rule_id` optional, tool-specific
1020
- - `cwe` optional, array of CWE IDs
1021
-
1022
- Severity guidance:
1023
-
1024
- - `critical`: vulnerable/broken in production
1025
- - `high`: clear defect that will bite
1026
- - `medium`: real smell with measurable cost
1027
- - `low`: nitpick worth noting
1028
-
1029
- ---
1030
-
1031
- ## Recommendation format
1032
-
1033
- ```json
1034
- {
1035
- "title": "Parameterize SQL queries in payments module",
1036
- "effort": "medium",
1037
- "impact": "high",
1038
- "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.",
1039
- "files": [
1040
- "src/payments/charge.ts",
1041
- "src/payments/refund.ts",
1042
- "src/payments/list.ts"
1043
- ],
1044
- "blocks_evidence": ["semgrep:javascript.lang.security.audit.sqli..."]
1045
- }
1046
- ```
1047
-
1048
- - `title` imperative, ≤80 chars
1049
- - `effort` `low` (<1 day) | `medium` (1–3 days) | `high` (>3 days)
1050
- - `impact` `low` | `medium` | `high` on dimension score
1051
- - `description` concrete; name files/functions
1052
- - `files` affected paths
1053
- - `blocks_evidence` optional, the evidence IDs this rec resolves
1054
-
1055
- Sort recommendations by `impact/effort` (highest first).
1056
-
1057
- ---
1058
-
1059
- ## Discipline rules (ABSOLUTE)
1060
-
1061
- 1. **No claim without verified evidence.** Phase 5 verifies file:line. Hallucinated findings get dropped.
1062
- 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).
1063
- 3. **No drift in anchors.** Use the fixed anchor table. No adjusting for stage/domain/excuses.
1064
- 4. **No invention of dimensions.** Use the 8. Note other observations in `executive_summary` free-text.
1065
- 5. **Conservative findings.** When uncertain, skip. Better to under-report than to spam noise.
1066
- 6. **Snapshot, don't predict.** Score the code as it exists.
1067
- 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.
1068
- 8. **Never mutate the repo.** No `--fix`, no `git commit`, no file edits.
1069
- 9. **Never run system package managers.** No `sudo`, no `apt`, no `brew`, no `yum`.
1070
- 10. **Never run commands outside the Tool Catalog.** Probe / install / execute commands are all whitelisted.
1071
-
1072
- ---
1073
-
1074
- ## Final output (mandatory JSON shape)
1075
-
1076
- End your response with **exactly one** JSON code block in this shape:
1077
-
1078
- ```json
1079
- {
1080
- "rubric_version": "v1",
1081
- "detected_context": {
1082
- "archetype": "backend-service",
1083
- "primary_languages": ["TypeScript", "SQL"],
1084
- "frameworks": ["Express", "Drizzle"],
1085
- "package_managers": ["pnpm"],
1086
- "build_system": "tsup",
1087
- "test_frameworks": ["vitest"],
1088
- "ci_configured": true,
1089
- "lockfile_present": true,
1090
- "scanned_commit_sha": "abc123def456...",
1091
- "file_count_scanned": 142,
1092
- "total_loc_approx": 18500
1093
- },
1094
- "tool_versions": {
1095
- "eslint": "8.57.0",
1096
- "semgrep": "1.45.0",
1097
- "jscpd": "4.0.5"
1098
- },
1099
- "unavailable_tools": [
1100
- {
1101
- "name": "gitleaks",
1102
- "category": "security",
1103
- "install_command": "go install github.com/zricethezav/gitleaks/v8@latest",
1104
- "reason": "install_failed: go not present"
1105
- }
1106
- ],
1107
- "applied_checks": {
1108
- "architecture": [
1109
- {
1110
- "id": "arch.circular_deps",
1111
- "tool": "madge",
1112
- "weight": 1.0,
1113
- "measured": true
1114
- },
1115
- {
1116
- "id": "arch.layering",
1117
- "tool": "llm_judgment",
1118
- "weight": 1.0,
1119
- "measured": true
1120
- }
1121
- ]
1122
- },
1123
- "tool_outputs": {
1124
- "eslint": {
1125
- "ran_at": "...",
1126
- "duration_ms": 4200,
1127
- "exit_code": 0,
1128
- "findings_count": 23,
1129
- "summary": "..."
1130
- }
1131
- },
1132
- "external_signals": {
1133
- "git": {
1134
- "authors_90d": 4,
1135
- "top_churn_files": [{ "file": "src/api/handlers.ts", "commits_30d": 18 }],
1136
- "bug_fix_commits_90d": 12
1137
- },
1138
- "github_issues": { "open_bugs": 7, "open_security": 0 },
1139
- "sentry": { "unavailable": "not configured" }
1140
- },
1141
- "dimension_scores": {
1142
- "architecture": {
1143
- "score": 78,
1144
- "grade": "B",
1145
- "summary": "Clean layering, one circular dep between auth and users modules.",
1146
- "subscores": {
1147
- "boundaries": { "value": 85, "measured_coverage": 1.0 },
1148
- "coupling": { "value": 72, "measured_coverage": 1.0 },
1149
- "layering": {
1150
- "value": 80,
1151
- "measured_coverage": 0.5,
1152
- "summary": "Limited measurement — dependency-cruiser not configured."
1153
- },
1154
- "abstraction_quality": { "value": 75, "measured_coverage": 1.0 }
1155
- },
1156
- "evidence": [
1157
- {
1158
- "file": "src/auth/session.ts",
1159
- "line": 4,
1160
- "issue": "Imports src/users/profile.ts which transitively imports back",
1161
- "severity": "medium",
1162
- "source": "tool:madge"
1163
- }
1164
- ],
1165
- "recommendations": [
1166
- {
1167
- "title": "Break auth ↔ users circular dependency",
1168
- "effort": "low",
1169
- "impact": "medium",
1170
- "description": "Move shared User type to src/shared/types/user.ts.",
1171
- "files": ["src/auth/session.ts", "src/users/profile.ts"]
1172
- }
1173
- ],
1174
- "n_a_reason": null
1175
- }
1176
- },
1177
- "dropped_findings": 3,
1178
- "overall_score": 73.4,
1179
- "overall_grade": "C",
1180
- "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.",
1181
- "low_confidence": false
1182
- }
1183
- ```
1184
-
1185
- For N/A dimensions:
1186
-
1187
- ```json
1188
- "performance": {
1189
- "score": null,
1190
- "grade": "N/A",
1191
- "summary": "Not applicable.",
1192
- "subscores": {},
1193
- "evidence": [],
1194
- "recommendations": [],
1195
- "n_a_reason": "Doc-only static site with no executable hot path."
1196
- }
1197
- ```
1198
-
1199
- ---
1200
-
1201
- ## What you must NOT do
1202
-
1203
- - 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).
1204
- - Do not score dimensions you didn't actually examine.
1205
- - Do not produce recommendations untethered from `evidence` or `unavailable_tools`.
1206
- - Do not include wall-clock time estimates ("by Q3"); use `effort` enum only.
1207
- - Do not include praise-only dimensions unless score is genuinely 90+ and verified.
1208
- - Do not assume tools are installed; always probe first.
1209
- - Do not invent install commands or tool flags.
1210
- - Do not run anything with `sudo` or system package managers.
1211
- - Do not edit, commit, or otherwise mutate the repo.