@harness-engineering/cli 1.13.0 → 1.13.1

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 (267) hide show
  1. package/dist/agents/skills/claude-code/add-harness-component/skill.yaml +1 -0
  2. package/dist/agents/skills/claude-code/align-documentation/skill.yaml +1 -0
  3. package/dist/agents/skills/claude-code/check-mechanical-constraints/skill.yaml +1 -0
  4. package/dist/agents/skills/claude-code/cleanup-dead-code/skill.yaml +1 -0
  5. package/dist/agents/skills/claude-code/detect-doc-drift/skill.yaml +1 -0
  6. package/dist/agents/skills/claude-code/enforce-architecture/skill.yaml +1 -0
  7. package/dist/agents/skills/claude-code/harness-accessibility/skill.yaml +1 -0
  8. package/dist/agents/skills/claude-code/harness-api-design/SKILL.md +304 -0
  9. package/dist/agents/skills/claude-code/harness-api-design/skill.yaml +74 -0
  10. package/dist/agents/skills/claude-code/harness-architecture-advisor/skill.yaml +1 -0
  11. package/dist/agents/skills/claude-code/harness-auth/SKILL.md +279 -0
  12. package/dist/agents/skills/claude-code/harness-auth/skill.yaml +81 -0
  13. package/dist/agents/skills/claude-code/harness-autopilot/skill.yaml +1 -0
  14. package/dist/agents/skills/claude-code/harness-brainstorming/skill.yaml +1 -0
  15. package/dist/agents/skills/claude-code/harness-caching/SKILL.md +309 -0
  16. package/dist/agents/skills/claude-code/harness-caching/skill.yaml +73 -0
  17. package/dist/agents/skills/claude-code/harness-chaos/SKILL.md +295 -0
  18. package/dist/agents/skills/claude-code/harness-chaos/skill.yaml +72 -0
  19. package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +1 -0
  20. package/dist/agents/skills/claude-code/harness-codebase-cleanup/skill.yaml +1 -0
  21. package/dist/agents/skills/claude-code/harness-compliance/SKILL.md +303 -0
  22. package/dist/agents/skills/claude-code/harness-compliance/skill.yaml +78 -0
  23. package/dist/agents/skills/claude-code/harness-containerization/SKILL.md +284 -0
  24. package/dist/agents/skills/claude-code/harness-containerization/skill.yaml +80 -0
  25. package/dist/agents/skills/claude-code/harness-data-pipeline/SKILL.md +274 -0
  26. package/dist/agents/skills/claude-code/harness-data-pipeline/skill.yaml +81 -0
  27. package/dist/agents/skills/claude-code/harness-data-validation/SKILL.md +343 -0
  28. package/dist/agents/skills/claude-code/harness-data-validation/skill.yaml +75 -0
  29. package/dist/agents/skills/claude-code/harness-database/SKILL.md +258 -0
  30. package/dist/agents/skills/claude-code/harness-database/skill.yaml +80 -0
  31. package/dist/agents/skills/claude-code/harness-debugging/skill.yaml +1 -0
  32. package/dist/agents/skills/claude-code/harness-dependency-health/skill.yaml +1 -0
  33. package/dist/agents/skills/claude-code/harness-deployment/SKILL.md +255 -0
  34. package/dist/agents/skills/claude-code/harness-deployment/skill.yaml +77 -0
  35. package/dist/agents/skills/claude-code/harness-design/skill.yaml +1 -0
  36. package/dist/agents/skills/claude-code/harness-design-mobile/skill.yaml +1 -0
  37. package/dist/agents/skills/claude-code/harness-design-system/skill.yaml +1 -0
  38. package/dist/agents/skills/claude-code/harness-design-web/skill.yaml +1 -0
  39. package/dist/agents/skills/claude-code/harness-diagnostics/skill.yaml +1 -0
  40. package/dist/agents/skills/claude-code/harness-docs-pipeline/skill.yaml +1 -0
  41. package/dist/agents/skills/claude-code/harness-dx/SKILL.md +276 -0
  42. package/dist/agents/skills/claude-code/harness-dx/skill.yaml +76 -0
  43. package/dist/agents/skills/claude-code/harness-e2e/SKILL.md +245 -0
  44. package/dist/agents/skills/claude-code/harness-e2e/skill.yaml +78 -0
  45. package/dist/agents/skills/claude-code/harness-event-driven/SKILL.md +280 -0
  46. package/dist/agents/skills/claude-code/harness-event-driven/skill.yaml +77 -0
  47. package/dist/agents/skills/claude-code/harness-execution/skill.yaml +1 -0
  48. package/dist/agents/skills/claude-code/harness-feature-flags/SKILL.md +287 -0
  49. package/dist/agents/skills/claude-code/harness-feature-flags/skill.yaml +74 -0
  50. package/dist/agents/skills/claude-code/harness-git-workflow/skill.yaml +1 -0
  51. package/dist/agents/skills/claude-code/harness-hotspot-detector/skill.yaml +1 -0
  52. package/dist/agents/skills/claude-code/harness-i18n/skill.yaml +1 -0
  53. package/dist/agents/skills/claude-code/harness-i18n-process/skill.yaml +1 -0
  54. package/dist/agents/skills/claude-code/harness-i18n-workflow/skill.yaml +1 -0
  55. package/dist/agents/skills/claude-code/harness-impact-analysis/skill.yaml +1 -0
  56. package/dist/agents/skills/claude-code/harness-incident-response/SKILL.md +223 -0
  57. package/dist/agents/skills/claude-code/harness-incident-response/skill.yaml +78 -0
  58. package/dist/agents/skills/claude-code/harness-infrastructure-as-code/SKILL.md +279 -0
  59. package/dist/agents/skills/claude-code/harness-infrastructure-as-code/skill.yaml +80 -0
  60. package/dist/agents/skills/claude-code/harness-integration-test/SKILL.md +271 -0
  61. package/dist/agents/skills/claude-code/harness-integration-test/skill.yaml +73 -0
  62. package/dist/agents/skills/claude-code/harness-integrity/skill.yaml +1 -0
  63. package/dist/agents/skills/claude-code/harness-knowledge-mapper/skill.yaml +1 -0
  64. package/dist/agents/skills/claude-code/harness-load-testing/SKILL.md +274 -0
  65. package/dist/agents/skills/claude-code/harness-load-testing/skill.yaml +79 -0
  66. package/dist/agents/skills/claude-code/harness-ml-ops/SKILL.md +341 -0
  67. package/dist/agents/skills/claude-code/harness-ml-ops/skill.yaml +79 -0
  68. package/dist/agents/skills/claude-code/harness-mobile-patterns/SKILL.md +326 -0
  69. package/dist/agents/skills/claude-code/harness-mobile-patterns/skill.yaml +82 -0
  70. package/dist/agents/skills/claude-code/harness-mutation-test/SKILL.md +251 -0
  71. package/dist/agents/skills/claude-code/harness-mutation-test/skill.yaml +70 -0
  72. package/dist/agents/skills/claude-code/harness-observability/SKILL.md +283 -0
  73. package/dist/agents/skills/claude-code/harness-observability/skill.yaml +78 -0
  74. package/dist/agents/skills/claude-code/harness-onboarding/skill.yaml +1 -0
  75. package/dist/agents/skills/claude-code/harness-parallel-agents/skill.yaml +1 -0
  76. package/dist/agents/skills/claude-code/harness-perf/skill.yaml +1 -0
  77. package/dist/agents/skills/claude-code/harness-perf-tdd/skill.yaml +1 -0
  78. package/dist/agents/skills/claude-code/harness-planning/skill.yaml +1 -0
  79. package/dist/agents/skills/claude-code/harness-pre-commit-review/skill.yaml +1 -0
  80. package/dist/agents/skills/claude-code/harness-product-spec/SKILL.md +285 -0
  81. package/dist/agents/skills/claude-code/harness-product-spec/skill.yaml +72 -0
  82. package/dist/agents/skills/claude-code/harness-property-test/SKILL.md +281 -0
  83. package/dist/agents/skills/claude-code/harness-property-test/skill.yaml +71 -0
  84. package/dist/agents/skills/claude-code/harness-refactoring/skill.yaml +1 -0
  85. package/dist/agents/skills/claude-code/harness-release-readiness/skill.yaml +1 -0
  86. package/dist/agents/skills/claude-code/harness-resilience/SKILL.md +255 -0
  87. package/dist/agents/skills/claude-code/harness-resilience/skill.yaml +76 -0
  88. package/dist/agents/skills/claude-code/harness-roadmap/skill.yaml +1 -0
  89. package/dist/agents/skills/claude-code/harness-secrets/SKILL.md +293 -0
  90. package/dist/agents/skills/claude-code/harness-secrets/skill.yaml +76 -0
  91. package/dist/agents/skills/claude-code/harness-security-review/skill.yaml +1 -0
  92. package/dist/agents/skills/claude-code/harness-security-scan/skill.yaml +1 -0
  93. package/dist/agents/skills/claude-code/harness-skill-authoring/skill.yaml +1 -0
  94. package/dist/agents/skills/claude-code/harness-soundness-review/skill.yaml +1 -0
  95. package/dist/agents/skills/claude-code/harness-sql-review/SKILL.md +315 -0
  96. package/dist/agents/skills/claude-code/harness-sql-review/skill.yaml +74 -0
  97. package/dist/agents/skills/claude-code/harness-state-management/skill.yaml +1 -0
  98. package/dist/agents/skills/claude-code/harness-tdd/skill.yaml +1 -0
  99. package/dist/agents/skills/claude-code/harness-test-advisor/skill.yaml +1 -0
  100. package/dist/agents/skills/claude-code/harness-test-data/SKILL.md +268 -0
  101. package/dist/agents/skills/claude-code/harness-test-data/skill.yaml +74 -0
  102. package/dist/agents/skills/claude-code/harness-ux-copy/SKILL.md +271 -0
  103. package/dist/agents/skills/claude-code/harness-ux-copy/skill.yaml +77 -0
  104. package/dist/agents/skills/claude-code/harness-verification/skill.yaml +1 -0
  105. package/dist/agents/skills/claude-code/harness-verify/skill.yaml +1 -0
  106. package/dist/agents/skills/claude-code/harness-visual-regression/SKILL.md +257 -0
  107. package/dist/agents/skills/claude-code/harness-visual-regression/skill.yaml +74 -0
  108. package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +1 -0
  109. package/dist/agents/skills/claude-code/validate-context-engineering/skill.yaml +1 -0
  110. package/dist/agents/skills/gemini-cli/add-harness-component/skill.yaml +1 -0
  111. package/dist/agents/skills/gemini-cli/align-documentation/skill.yaml +1 -0
  112. package/dist/agents/skills/gemini-cli/check-mechanical-constraints/skill.yaml +1 -0
  113. package/dist/agents/skills/gemini-cli/cleanup-dead-code/skill.yaml +1 -0
  114. package/dist/agents/skills/gemini-cli/detect-doc-drift/skill.yaml +1 -0
  115. package/dist/agents/skills/gemini-cli/enforce-architecture/skill.yaml +1 -0
  116. package/dist/agents/skills/gemini-cli/harness-accessibility/skill.yaml +1 -0
  117. package/dist/agents/skills/gemini-cli/harness-api-design/SKILL.md +304 -0
  118. package/dist/agents/skills/gemini-cli/harness-api-design/skill.yaml +74 -0
  119. package/dist/agents/skills/gemini-cli/harness-architecture-advisor/skill.yaml +1 -0
  120. package/dist/agents/skills/gemini-cli/harness-auth/SKILL.md +279 -0
  121. package/dist/agents/skills/gemini-cli/harness-auth/skill.yaml +81 -0
  122. package/dist/agents/skills/gemini-cli/harness-autopilot/skill.yaml +1 -0
  123. package/dist/agents/skills/gemini-cli/harness-brainstorming/skill.yaml +1 -0
  124. package/dist/agents/skills/gemini-cli/harness-caching/SKILL.md +309 -0
  125. package/dist/agents/skills/gemini-cli/harness-caching/skill.yaml +73 -0
  126. package/dist/agents/skills/gemini-cli/harness-chaos/SKILL.md +295 -0
  127. package/dist/agents/skills/gemini-cli/harness-chaos/skill.yaml +72 -0
  128. package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +1 -0
  129. package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/skill.yaml +1 -0
  130. package/dist/agents/skills/gemini-cli/harness-compliance/SKILL.md +303 -0
  131. package/dist/agents/skills/gemini-cli/harness-compliance/skill.yaml +78 -0
  132. package/dist/agents/skills/gemini-cli/harness-containerization/SKILL.md +284 -0
  133. package/dist/agents/skills/gemini-cli/harness-containerization/skill.yaml +80 -0
  134. package/dist/agents/skills/gemini-cli/harness-data-pipeline/SKILL.md +274 -0
  135. package/dist/agents/skills/gemini-cli/harness-data-pipeline/skill.yaml +81 -0
  136. package/dist/agents/skills/gemini-cli/harness-data-validation/SKILL.md +343 -0
  137. package/dist/agents/skills/gemini-cli/harness-data-validation/skill.yaml +75 -0
  138. package/dist/agents/skills/gemini-cli/harness-database/SKILL.md +258 -0
  139. package/dist/agents/skills/gemini-cli/harness-database/skill.yaml +80 -0
  140. package/dist/agents/skills/gemini-cli/harness-debugging/skill.yaml +1 -0
  141. package/dist/agents/skills/gemini-cli/harness-dependency-health/skill.yaml +1 -0
  142. package/dist/agents/skills/gemini-cli/harness-deployment/SKILL.md +255 -0
  143. package/dist/agents/skills/gemini-cli/harness-deployment/skill.yaml +77 -0
  144. package/dist/agents/skills/gemini-cli/harness-design/skill.yaml +1 -0
  145. package/dist/agents/skills/gemini-cli/harness-design-mobile/skill.yaml +1 -0
  146. package/dist/agents/skills/gemini-cli/harness-design-system/skill.yaml +1 -0
  147. package/dist/agents/skills/gemini-cli/harness-design-web/skill.yaml +1 -0
  148. package/dist/agents/skills/gemini-cli/harness-diagnostics/skill.yaml +1 -0
  149. package/dist/agents/skills/gemini-cli/harness-docs-pipeline/skill.yaml +1 -0
  150. package/dist/agents/skills/gemini-cli/harness-dx/SKILL.md +276 -0
  151. package/dist/agents/skills/gemini-cli/harness-dx/skill.yaml +76 -0
  152. package/dist/agents/skills/gemini-cli/harness-e2e/SKILL.md +245 -0
  153. package/dist/agents/skills/gemini-cli/harness-e2e/skill.yaml +78 -0
  154. package/dist/agents/skills/gemini-cli/harness-event-driven/SKILL.md +280 -0
  155. package/dist/agents/skills/gemini-cli/harness-event-driven/skill.yaml +77 -0
  156. package/dist/agents/skills/gemini-cli/harness-execution/skill.yaml +1 -0
  157. package/dist/agents/skills/gemini-cli/harness-feature-flags/SKILL.md +287 -0
  158. package/dist/agents/skills/gemini-cli/harness-feature-flags/skill.yaml +74 -0
  159. package/dist/agents/skills/gemini-cli/harness-git-workflow/skill.yaml +1 -0
  160. package/dist/agents/skills/gemini-cli/harness-hotspot-detector/skill.yaml +1 -0
  161. package/dist/agents/skills/gemini-cli/harness-i18n/skill.yaml +1 -0
  162. package/dist/agents/skills/gemini-cli/harness-i18n-process/skill.yaml +1 -0
  163. package/dist/agents/skills/gemini-cli/harness-i18n-workflow/skill.yaml +1 -0
  164. package/dist/agents/skills/gemini-cli/harness-impact-analysis/skill.yaml +1 -0
  165. package/dist/agents/skills/gemini-cli/harness-incident-response/SKILL.md +223 -0
  166. package/dist/agents/skills/gemini-cli/harness-incident-response/skill.yaml +78 -0
  167. package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/SKILL.md +279 -0
  168. package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/skill.yaml +80 -0
  169. package/dist/agents/skills/gemini-cli/harness-integration-test/SKILL.md +271 -0
  170. package/dist/agents/skills/gemini-cli/harness-integration-test/skill.yaml +73 -0
  171. package/dist/agents/skills/gemini-cli/harness-integrity/skill.yaml +1 -0
  172. package/dist/agents/skills/gemini-cli/harness-knowledge-mapper/skill.yaml +1 -0
  173. package/dist/agents/skills/gemini-cli/harness-load-testing/SKILL.md +274 -0
  174. package/dist/agents/skills/gemini-cli/harness-load-testing/skill.yaml +79 -0
  175. package/dist/agents/skills/gemini-cli/harness-ml-ops/SKILL.md +341 -0
  176. package/dist/agents/skills/gemini-cli/harness-ml-ops/skill.yaml +79 -0
  177. package/dist/agents/skills/gemini-cli/harness-mobile-patterns/SKILL.md +326 -0
  178. package/dist/agents/skills/gemini-cli/harness-mobile-patterns/skill.yaml +82 -0
  179. package/dist/agents/skills/gemini-cli/harness-mutation-test/SKILL.md +251 -0
  180. package/dist/agents/skills/gemini-cli/harness-mutation-test/skill.yaml +70 -0
  181. package/dist/agents/skills/gemini-cli/harness-observability/SKILL.md +283 -0
  182. package/dist/agents/skills/gemini-cli/harness-observability/skill.yaml +78 -0
  183. package/dist/agents/skills/gemini-cli/harness-onboarding/skill.yaml +1 -0
  184. package/dist/agents/skills/gemini-cli/harness-parallel-agents/skill.yaml +1 -0
  185. package/dist/agents/skills/gemini-cli/harness-perf/skill.yaml +1 -0
  186. package/dist/agents/skills/gemini-cli/harness-perf-tdd/skill.yaml +1 -0
  187. package/dist/agents/skills/gemini-cli/harness-planning/skill.yaml +1 -0
  188. package/dist/agents/skills/gemini-cli/harness-pre-commit-review/skill.yaml +1 -0
  189. package/dist/agents/skills/gemini-cli/harness-product-spec/SKILL.md +285 -0
  190. package/dist/agents/skills/gemini-cli/harness-product-spec/skill.yaml +72 -0
  191. package/dist/agents/skills/gemini-cli/harness-property-test/SKILL.md +281 -0
  192. package/dist/agents/skills/gemini-cli/harness-property-test/skill.yaml +71 -0
  193. package/dist/agents/skills/gemini-cli/harness-refactoring/skill.yaml +1 -0
  194. package/dist/agents/skills/gemini-cli/harness-release-readiness/skill.yaml +1 -0
  195. package/dist/agents/skills/gemini-cli/harness-resilience/SKILL.md +255 -0
  196. package/dist/agents/skills/gemini-cli/harness-resilience/skill.yaml +76 -0
  197. package/dist/agents/skills/gemini-cli/harness-roadmap/skill.yaml +1 -0
  198. package/dist/agents/skills/gemini-cli/harness-secrets/SKILL.md +293 -0
  199. package/dist/agents/skills/gemini-cli/harness-secrets/skill.yaml +76 -0
  200. package/dist/agents/skills/gemini-cli/harness-security-review/SKILL.md +240 -0
  201. package/dist/agents/skills/gemini-cli/harness-security-review/skill.yaml +1 -0
  202. package/dist/agents/skills/gemini-cli/harness-security-scan/skill.yaml +1 -0
  203. package/dist/agents/skills/gemini-cli/harness-skill-authoring/skill.yaml +1 -0
  204. package/dist/agents/skills/gemini-cli/harness-soundness-review/skill.yaml +1 -0
  205. package/dist/agents/skills/gemini-cli/harness-sql-review/SKILL.md +315 -0
  206. package/dist/agents/skills/gemini-cli/harness-sql-review/skill.yaml +74 -0
  207. package/dist/agents/skills/gemini-cli/harness-state-management/skill.yaml +1 -0
  208. package/dist/agents/skills/gemini-cli/harness-tdd/skill.yaml +1 -0
  209. package/dist/agents/skills/gemini-cli/harness-test-advisor/skill.yaml +1 -0
  210. package/dist/agents/skills/gemini-cli/harness-test-data/SKILL.md +268 -0
  211. package/dist/agents/skills/gemini-cli/harness-test-data/skill.yaml +74 -0
  212. package/dist/agents/skills/gemini-cli/harness-ux-copy/SKILL.md +271 -0
  213. package/dist/agents/skills/gemini-cli/harness-ux-copy/skill.yaml +77 -0
  214. package/dist/agents/skills/gemini-cli/harness-verification/skill.yaml +1 -0
  215. package/dist/agents/skills/gemini-cli/harness-verify/skill.yaml +1 -0
  216. package/dist/agents/skills/gemini-cli/harness-visual-regression/SKILL.md +257 -0
  217. package/dist/agents/skills/gemini-cli/harness-visual-regression/skill.yaml +74 -0
  218. package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +1 -0
  219. package/dist/agents/skills/gemini-cli/validate-context-engineering/skill.yaml +1 -0
  220. package/dist/{agents-md-P2RHSUV7.js → agents-md-XU3BHE22.js} +1 -1
  221. package/dist/{architecture-ESOOE26S.js → architecture-2R5Z4ZAF.js} +2 -2
  222. package/dist/bin/harness-mcp.js +14 -13
  223. package/dist/bin/harness.js +22 -21
  224. package/dist/{check-phase-gate-S2MZKLFQ.js → check-phase-gate-2OFZ7OWW.js} +3 -2
  225. package/dist/{chunk-LD3DKUK5.js → chunk-4ZMOCPYO.js} +1 -1
  226. package/dist/{chunk-5VY23YK3.js → chunk-65FRIL4D.js} +2 -2
  227. package/dist/{chunk-L2KLU56K.js → chunk-AOZRDOIP.js} +2 -2
  228. package/dist/{chunk-MACVXDZK.js → chunk-DZS7CJKL.js} +4 -4
  229. package/dist/{chunk-7PZWR4LI.js → chunk-IM32EEDM.js} +9 -9
  230. package/dist/{chunk-2YPZKGAG.js → chunk-IMFVFNJE.js} +1 -1
  231. package/dist/{chunk-HD4IBGLA.js → chunk-N5G5QMS3.js} +24 -1
  232. package/dist/{chunk-MI5XJQDY.js → chunk-ND6PNADU.js} +23 -9
  233. package/dist/{chunk-7KQSUZVG.js → chunk-NERR4TAO.js} +729 -436
  234. package/dist/{chunk-PSNN4LWX.js → chunk-NOPU4RZ4.js} +2 -2
  235. package/dist/{chunk-KELT6K6M.js → chunk-PQ5YK4AY.js} +287 -258
  236. package/dist/{chunk-WPPDRIJL.js → chunk-QY4T6YAZ.js} +3 -3
  237. package/dist/{chunk-RZSUJBZZ.js → chunk-SSKDAOX5.js} +31 -28
  238. package/dist/{chunk-2VU4MFM3.js → chunk-TKJZKICB.js} +6 -6
  239. package/dist/{chunk-GNGELAXY.js → chunk-TS3XWPW5.js} +1 -1
  240. package/dist/chunk-UAX4I5ZE.js +217 -0
  241. package/dist/{chunk-VRFZWGMS.js → chunk-XYLGHKG6.js} +5 -1
  242. package/dist/{chunk-6N4R6FVX.js → chunk-YBJ262QL.js} +1 -1
  243. package/dist/{chunk-3KOLLWWE.js → chunk-Z77YQRQT.js} +11 -207
  244. package/dist/{ci-workflow-4NYBUG6R.js → ci-workflow-EHV65NQB.js} +1 -1
  245. package/dist/{create-skill-WPXHSLX2.js → create-skill-XSWHMSM5.js} +2 -2
  246. package/dist/{dist-WF4C7A4A.js → dist-2B363XUH.js} +1 -1
  247. package/dist/{dist-M6BQODWC.js → dist-HXHWB7SV.js} +2 -2
  248. package/dist/{docs-BPYCN2DR.js → docs-FZOPM4GK.js} +4 -2
  249. package/dist/{engine-LXLIWQQ3.js → engine-OL4T6NZS.js} +1 -1
  250. package/dist/{entropy-4VDVV5CR.js → entropy-LVHJMFGH.js} +2 -2
  251. package/dist/{feedback-63QB5RCA.js → feedback-IHLVLMRD.js} +1 -1
  252. package/dist/{generate-agent-definitions-QABOJG56.js → generate-agent-definitions-64S3CLEZ.js} +3 -3
  253. package/dist/{glob-helper-5OHBUQAI.js → glob-helper-R5FXNUPS.js} +1 -1
  254. package/dist/{graph-loader-KO4GJ5N2.js → graph-loader-GJZ4FN4Y.js} +1 -1
  255. package/dist/index.d.ts +35 -8
  256. package/dist/index.js +23 -21
  257. package/dist/{loader-Z2IT7QX3.js → loader-DPYFB6R6.js} +1 -1
  258. package/dist/{mcp-KQHEL5IF.js → mcp-JQUI7BVZ.js} +14 -13
  259. package/dist/{performance-26BH47O4.js → performance-ZTVSUANN.js} +2 -2
  260. package/dist/{review-pipeline-GHR3WFBI.js → review-pipeline-76JHKGSV.js} +1 -1
  261. package/dist/{runtime-PDWD7UIK.js → runtime-X7U6SC7K.js} +1 -1
  262. package/dist/{security-UQFUZXEN.js → security-FWQZF2IZ.js} +1 -1
  263. package/dist/skill-executor-XZLYZYAK.js +8 -0
  264. package/dist/{validate-N7QJOKFZ.js → validate-GCHZJIL7.js} +2 -2
  265. package/dist/{validate-cross-check-EDQ5QGTM.js → validate-cross-check-STFHYMAZ.js} +1 -1
  266. package/package.json +3 -3
  267. package/dist/skill-executor-RG45LUO5.js +0 -8
@@ -0,0 +1,257 @@
1
+ # Harness Visual Regression
2
+
3
+ > Screenshot comparison, visual diff detection, and baseline management. Catches unintended CSS regressions, layout shifts, and rendering inconsistencies before they reach production.
4
+
5
+ ## When to Use
6
+
7
+ - Adding visual regression coverage for UI components or pages
8
+ - Reviewing visual changes in a pull request before merge
9
+ - Updating baselines after intentional design changes
10
+ - NOT when testing interactive user flows (use harness-e2e instead)
11
+ - NOT when testing component behavior or state (use unit tests or harness-tdd instead)
12
+ - NOT when auditing accessibility compliance (use harness-accessibility instead)
13
+
14
+ ## Process
15
+
16
+ ### Phase 1: DETECT -- Identify UI Components and Rendering Infrastructure
17
+
18
+ 1. **Scan for existing visual test infrastructure.** Search for:
19
+ - Storybook configuration (`.storybook/`, `*.stories.tsx`, `*.stories.ts`)
20
+ - Visual testing tools (Chromatic config, `percy.yml`, Playwright screenshot tests)
21
+ - Existing baseline directories (`screenshots/`, `__image_snapshots__/`, `visual-tests/`)
22
+
23
+ 2. **Catalog testable components.** Identify UI surfaces that benefit from visual testing:
24
+ - Shared design system components (buttons, forms, modals, navigation)
25
+ - Page-level layouts (dashboard, settings, landing page)
26
+ - Responsive breakpoints (mobile, tablet, desktop)
27
+ - Theme variants (light mode, dark mode)
28
+ - States (loading, empty, error, populated)
29
+
30
+ 3. **Determine the rendering strategy.** Choose how screenshots are captured:
31
+ - **Storybook + Chromatic/Percy:** best for component libraries with existing stories
32
+ - **Playwright screenshots:** best for full-page and integration-level visual tests
33
+ - **Jest + jest-image-snapshot:** best for lightweight component rendering with jsdom or happy-dom
34
+ - **Cypress + Percy plugin:** best when Cypress is already the E2E framework
35
+
36
+ 4. **Identify viewport and theme matrix.** Define the combinations to test:
37
+ - Viewports: 375px (mobile), 768px (tablet), 1280px (desktop), 1920px (wide)
38
+ - Themes: light, dark (if supported)
39
+ - Locales: LTR, RTL (if internationalized)
40
+
41
+ 5. **Report findings.** Summarize: components to cover, rendering strategy, viewport matrix, and estimated baseline count.
42
+
43
+ ### Phase 2: BASELINE -- Capture Reference Screenshots
44
+
45
+ 1. **Configure the visual testing tool.** Set up:
46
+ - Screenshot output directory with `.gitkeep` or add to `.gitignore` as appropriate
47
+ - Threshold for pixel-level diff tolerance (recommended: 0.1% for component tests, 0.5% for full-page tests)
48
+ - Anti-aliasing handling to avoid false positives across different rendering engines
49
+ - Font loading: wait for web fonts to load before capture, or use a system font fallback in test mode
50
+
51
+ 2. **Stabilize rendering for deterministic screenshots.** Address common sources of non-determinism:
52
+ - Disable CSS animations and transitions in test mode
53
+ - Mock dates and times to prevent timestamp-based changes
54
+ - Replace dynamic content (avatars, ads, user-generated content) with stable placeholders
55
+ - Set a fixed random seed for any randomized UI elements
56
+
57
+ 3. **Capture baseline screenshots.** For each component in the test matrix:
58
+ - Render the component in each viewport and theme combination
59
+ - Wait for fonts, images, and lazy-loaded content to fully render
60
+ - Capture and save the screenshot to the baseline directory
61
+
62
+ 4. **Review baselines manually.** Before committing, visually inspect every baseline screenshot. Confirm:
63
+ - The component renders correctly at each viewport
64
+ - No rendering artifacts (clipped text, missing icons, broken layouts)
65
+ - The screenshot captures the full component without excessive whitespace
66
+
67
+ 5. **Commit baselines.** Add baseline screenshots to version control with a descriptive commit message. These baselines become the source of truth for future comparisons.
68
+
69
+ ### Phase 3: COMPARE -- Run Visual Diffs Against Baselines
70
+
71
+ 1. **Execute visual comparison.** Run the visual test suite, which:
72
+ - Renders each component in the same viewport/theme matrix
73
+ - Captures a new screenshot for each combination
74
+ - Compares the new screenshot against the stored baseline pixel-by-pixel
75
+ - Reports differences that exceed the configured threshold
76
+
77
+ 2. **Classify each diff.** For every screenshot that exceeds the threshold:
78
+ - **Intentional change:** the diff corresponds to a deliberate design update in the current PR. Mark for baseline update.
79
+ - **Regression:** the diff is unintended and represents a visual bug. Flag for investigation.
80
+ - **Environmental noise:** the diff is caused by rendering differences (sub-pixel anti-aliasing, font hinting). Increase threshold or stabilize rendering.
81
+
82
+ 3. **Investigate regressions.** For each regression:
83
+ - Identify the CSS or component change that caused the visual shift
84
+ - Determine if the change is localized (one component) or cascading (layout shift affecting multiple components)
85
+ - Check if the change is caused by a dependency update (CSS framework, icon library)
86
+
87
+ 4. **Update baselines for intentional changes.** When a visual change is confirmed intentional:
88
+ - Re-capture the baseline for affected screenshots
89
+ - Review the updated baseline to confirm it matches the design intent
90
+ - Commit updated baselines alongside the code change
91
+
92
+ 5. **Generate a diff report.** Produce a summary showing:
93
+ - Total screenshots compared
94
+ - Screenshots unchanged (passed)
95
+ - Screenshots with intentional changes (baselines updated)
96
+ - Screenshots with regressions (flagged for fix)
97
+
98
+ ### Phase 4: REPORT -- Generate Visual Diff Report and Approval Workflow
99
+
100
+ 1. **Create a visual diff summary for PR review.** Include:
101
+ - Side-by-side comparison images for each changed screenshot
102
+ - Diff overlay highlighting the pixels that changed
103
+ - Percentage of pixels changed per screenshot
104
+ - Grouped by component and viewport
105
+
106
+ 2. **Integrate with CI pipeline.** Configure the visual test suite to:
107
+ - Run automatically on every pull request
108
+ - Block merge when unapproved visual changes are detected
109
+ - Provide a link to the visual diff report in the PR status check
110
+
111
+ 3. **Define the approval workflow.** Establish:
112
+ - Who can approve visual changes (design team, frontend lead)
113
+ - How approvals are recorded (PR comment, Chromatic approval, Percy review)
114
+ - What constitutes an "auto-approve" (changes below threshold, test-only files)
115
+
116
+ 4. **Run `harness validate`.** Confirm the project passes all harness checks with visual testing infrastructure in place.
117
+
118
+ 5. **Document the visual testing workflow.** Record:
119
+ - How to run visual tests locally
120
+ - How to update baselines after intentional changes
121
+ - How to add visual tests for new components
122
+ - Where to find the diff report in CI
123
+
124
+ ### Graph Refresh
125
+
126
+ If a knowledge graph exists at `.harness/graph/`, refresh it after code changes to keep graph queries accurate:
127
+
128
+ ```
129
+ harness scan [path]
130
+ ```
131
+
132
+ ## Harness Integration
133
+
134
+ - **`harness validate`** -- Run in REPORT phase after visual testing infrastructure is complete. Confirms project health.
135
+ - **`harness check-deps`** -- Run after BASELINE phase to verify visual testing dependencies are in devDependencies.
136
+ - **`emit_interaction`** -- Used to present visual diff results and request human approval for baseline updates.
137
+ - **Glob** -- Used in DETECT phase to find Storybook stories, existing screenshots, and component files.
138
+ - **Grep** -- Used to search for CSS animation properties, dynamic content patterns, and non-deterministic rendering.
139
+
140
+ ## Success Criteria
141
+
142
+ - Every shared design system component has visual baselines for at least mobile and desktop viewports
143
+ - Visual diffs are deterministic: running the same code produces the same screenshots every time
144
+ - No false positives: environmental noise (font rendering, anti-aliasing) does not trigger diff failures
145
+ - Intentional changes are distinguished from regressions in the diff report
146
+ - Baselines are committed to version control and updated alongside code changes
147
+ - CI blocks merge when unapproved visual changes are detected
148
+ - `harness validate` passes with visual testing infrastructure in place
149
+
150
+ ## Examples
151
+
152
+ ### Example: Playwright Visual Regression for a React App
153
+
154
+ **BASELINE -- Capture component screenshots:**
155
+
156
+ ```typescript
157
+ // visual-tests/components.spec.ts
158
+ import { test, expect } from '@playwright/test';
159
+
160
+ const viewports = [
161
+ { name: 'mobile', width: 375, height: 812 },
162
+ { name: 'desktop', width: 1280, height: 720 },
163
+ ];
164
+
165
+ for (const viewport of viewports) {
166
+ test.describe(`${viewport.name} viewport`, () => {
167
+ test.use({ viewport: { width: viewport.width, height: viewport.height } });
168
+
169
+ test('dashboard renders correctly', async ({ page }) => {
170
+ await page.goto('/dashboard');
171
+ await page.waitForLoadState('networkidle');
172
+ // Disable animations for deterministic screenshots
173
+ await page.addStyleTag({
174
+ content:
175
+ '*, *::before, *::after { animation: none !important; transition: none !important; }',
176
+ });
177
+ await expect(page).toHaveScreenshot(`dashboard-${viewport.name}.png`, {
178
+ maxDiffPixelRatio: 0.005,
179
+ fullPage: true,
180
+ });
181
+ });
182
+
183
+ test('settings page renders correctly', async ({ page }) => {
184
+ await page.goto('/settings');
185
+ await page.waitForLoadState('networkidle');
186
+ await page.addStyleTag({
187
+ content:
188
+ '*, *::before, *::after { animation: none !important; transition: none !important; }',
189
+ });
190
+ await expect(page).toHaveScreenshot(`settings-${viewport.name}.png`, {
191
+ maxDiffPixelRatio: 0.005,
192
+ });
193
+ });
194
+ });
195
+ }
196
+ ```
197
+
198
+ ### Example: Storybook with Chromatic
199
+
200
+ **DETECT output:**
201
+
202
+ ```
203
+ Storybook: v7.6 detected (.storybook/main.ts)
204
+ Stories: 47 stories across 23 components
205
+ Chromatic: not configured
206
+ Existing baselines: none
207
+ Components without stories: Modal, Toast, DatePicker (3 gaps)
208
+ ```
209
+
210
+ **BASELINE -- Configure Chromatic and run first build:**
211
+
212
+ ```json
213
+ // package.json (relevant scripts)
214
+ {
215
+ "scripts": {
216
+ "chromatic": "chromatic --project-token=${CHROMATIC_PROJECT_TOKEN}",
217
+ "chromatic:ci": "chromatic --project-token=${CHROMATIC_PROJECT_TOKEN} --exit-zero-on-changes --auto-accept-changes main"
218
+ }
219
+ }
220
+ ```
221
+
222
+ ```typescript
223
+ // .storybook/preview.ts -- stabilize rendering
224
+ import { Preview } from '@storybook/react';
225
+
226
+ const preview: Preview = {
227
+ parameters: {
228
+ chromatic: {
229
+ pauseAnimationAtEnd: true,
230
+ viewports: [375, 768, 1280],
231
+ },
232
+ },
233
+ decorators: [
234
+ (Story) => (
235
+ <div style={{ fontFamily: 'Arial, sans-serif' }}>
236
+ <Story />
237
+ </div>
238
+ ),
239
+ ],
240
+ };
241
+
242
+ export default preview;
243
+ ```
244
+
245
+ ## Gates
246
+
247
+ - **No non-deterministic screenshots.** If the same code produces different screenshots on consecutive runs, the rendering is not stabilized. Fix animations, dynamic content, and font loading before capturing baselines.
248
+ - **No uncommitted baselines.** Baseline screenshots must be in version control. If baselines exist only on a developer's machine, CI cannot compare against them. Commit baselines with the code that creates them.
249
+ - **No threshold above 1%.** A pixel diff threshold above 1% hides real regressions. If environmental noise requires a higher threshold, fix the noise source (fonts, animations) rather than raising the threshold.
250
+ - **No visual tests without review workflow.** Visual tests that run but whose results are never reviewed provide false confidence. Every visual diff must have a defined approval path.
251
+
252
+ ## Escalation
253
+
254
+ - **When screenshots differ between local and CI environments:** This is usually caused by different font rendering, display scaling, or browser versions. Standardize by running visual tests in Docker with a fixed browser version and system fonts. Do not try to match local and CI rendering -- pick one as the source of truth.
255
+ - **When baseline updates flood a PR with hundreds of changed screenshots:** Group changes by root cause. If a single CSS variable change cascades to 200 screenshots, approve the root cause and batch-update baselines. Consider whether the cascade indicates a design system architecture issue.
256
+ - **When dynamic content (user avatars, timestamps, ads) causes false positives:** Mock or replace dynamic content in the test environment. Use Storybook args or Playwright route interception to inject stable placeholder content.
257
+ - **When the visual test suite takes too long (> 15 minutes):** Prioritize components by change frequency. Run the full visual suite nightly, and only test changed components on each PR using affected-story detection.
@@ -0,0 +1,74 @@
1
+ name: harness-visual-regression
2
+ version: "1.0.0"
3
+ description: Screenshot comparison, visual diff detection, and baseline management
4
+ cognitive_mode: meticulous-verifier
5
+ triggers:
6
+ - manual
7
+ - on_pr
8
+ platforms:
9
+ - claude-code
10
+ - gemini-cli
11
+ tools:
12
+ - Bash
13
+ - Read
14
+ - Write
15
+ - Edit
16
+ - Glob
17
+ - Grep
18
+ - emit_interaction
19
+ cli:
20
+ command: harness skill run harness-visual-regression
21
+ args:
22
+ - name: path
23
+ description: Project root path
24
+ required: false
25
+ - name: tool
26
+ description: "Visual testing tool: chromatic, percy, pixelmatch, or playwright. Auto-detected when omitted."
27
+ required: false
28
+ - name: update-baselines
29
+ description: "Update baseline screenshots instead of comparing. Defaults to false."
30
+ required: false
31
+ mcp:
32
+ tool: run_skill
33
+ input:
34
+ skill: harness-visual-regression
35
+ path: string
36
+ type: rigid
37
+ tier: 3
38
+ internal: false
39
+ keywords:
40
+ - visual regression
41
+ - screenshot
42
+ - visual diff
43
+ - Chromatic
44
+ - Percy
45
+ - Pixelmatch
46
+ - Storybook
47
+ - baseline
48
+ - snapshot
49
+ - visual testing
50
+ - CSS regression
51
+ stack_signals:
52
+ - "visual-tests/"
53
+ - ".chromatic/"
54
+ - "percy.yml"
55
+ - ".storybook/"
56
+ - "tests/visual/"
57
+ - "screenshots/"
58
+ phases:
59
+ - name: detect
60
+ description: Identify UI components, existing visual tests, and rendering infrastructure
61
+ required: true
62
+ - name: baseline
63
+ description: Capture or verify baseline screenshots for target components and viewports
64
+ required: true
65
+ - name: compare
66
+ description: Run visual diff against baselines and classify changes as intentional or regression
67
+ required: true
68
+ - name: report
69
+ description: Generate visual diff report with annotated screenshots and approval workflow
70
+ required: true
71
+ state:
72
+ persistent: false
73
+ files: []
74
+ depends_on: []
@@ -25,6 +25,7 @@ mcp:
25
25
  skill: initialize-harness-project
26
26
  path: string
27
27
  type: flexible
28
+ tier: 1
28
29
  state:
29
30
  persistent: false
30
31
  files: []
@@ -25,6 +25,7 @@ mcp:
25
25
  skill: validate-context-engineering
26
26
  path: string
27
27
  type: flexible
28
+ internal: true
28
29
  state:
29
30
  persistent: false
30
31
  files: []
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateAgentsMd
3
3
  } from "./chunk-NKDM3FMH.js";
4
- import "./chunk-KELT6K6M.js";
4
+ import "./chunk-PQ5YK4AY.js";
5
5
  import "./chunk-MHBMTPW7.js";
6
6
  export {
7
7
  generateAgentsMd
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  checkDependenciesDefinition,
3
3
  handleCheckDependencies
4
- } from "./chunk-WPPDRIJL.js";
4
+ } from "./chunk-QY4T6YAZ.js";
5
5
  import "./chunk-K6XAPGML.js";
6
6
  import "./chunk-IDZNPTYD.js";
7
7
  import "./chunk-W6Y7ZW3Y.js";
8
- import "./chunk-KELT6K6M.js";
8
+ import "./chunk-PQ5YK4AY.js";
9
9
  import "./chunk-MHBMTPW7.js";
10
10
  export {
11
11
  checkDependenciesDefinition,
@@ -1,24 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  startServer
4
- } from "../chunk-7KQSUZVG.js";
5
- import "../chunk-MACVXDZK.js";
6
- import "../chunk-2VU4MFM3.js";
7
- import "../chunk-7PZWR4LI.js";
8
- import "../chunk-5VY23YK3.js";
9
- import "../chunk-LD3DKUK5.js";
4
+ } from "../chunk-NERR4TAO.js";
5
+ import "../chunk-DZS7CJKL.js";
6
+ import "../chunk-TKJZKICB.js";
7
+ import "../chunk-IM32EEDM.js";
8
+ import "../chunk-65FRIL4D.js";
9
+ import "../chunk-4ZMOCPYO.js";
10
10
  import "../chunk-ZOAWBDWU.js";
11
- import "../chunk-PSNN4LWX.js";
12
- import "../chunk-2YPZKGAG.js";
13
- import "../chunk-WPPDRIJL.js";
11
+ import "../chunk-NOPU4RZ4.js";
12
+ import "../chunk-IMFVFNJE.js";
13
+ import "../chunk-QY4T6YAZ.js";
14
14
  import "../chunk-K6XAPGML.js";
15
- import "../chunk-MI5XJQDY.js";
15
+ import "../chunk-ND6PNADU.js";
16
+ import "../chunk-Z77YQRQT.js";
16
17
  import "../chunk-IDZNPTYD.js";
17
18
  import "../chunk-W6Y7ZW3Y.js";
18
- import "../chunk-HD4IBGLA.js";
19
+ import "../chunk-N5G5QMS3.js";
19
20
  import "../chunk-3WGJMBKH.js";
20
- import "../chunk-VRFZWGMS.js";
21
- import "../chunk-KELT6K6M.js";
21
+ import "../chunk-XYLGHKG6.js";
22
+ import "../chunk-PQ5YK4AY.js";
22
23
  import "../chunk-MHBMTPW7.js";
23
24
 
24
25
  // src/bin/harness-mcp.ts
@@ -1,42 +1,43 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  createProgram
4
- } from "../chunk-RZSUJBZZ.js";
4
+ } from "../chunk-SSKDAOX5.js";
5
5
  import "../chunk-VUCPTQ6G.js";
6
- import {
7
- findConfigFile,
8
- loadConfig
9
- } from "../chunk-3KOLLWWE.js";
10
- import "../chunk-GNGELAXY.js";
6
+ import "../chunk-UAX4I5ZE.js";
7
+ import "../chunk-TS3XWPW5.js";
11
8
  import "../chunk-Q6AB7W5Z.js";
12
9
  import "../chunk-TRAPF4IX.js";
13
- import "../chunk-L2KLU56K.js";
10
+ import "../chunk-AOZRDOIP.js";
14
11
  import "../chunk-TEFCFC4H.js";
15
- import "../chunk-6N4R6FVX.js";
12
+ import "../chunk-YBJ262QL.js";
16
13
  import "../chunk-EBJQ6N4M.js";
17
14
  import "../chunk-QPEH2QPG.js";
18
15
  import "../chunk-JSTQ3AWB.js";
19
16
  import "../chunk-KET4QQZB.js";
20
17
  import "../chunk-NKDM3FMH.js";
21
- import "../chunk-7KQSUZVG.js";
22
- import "../chunk-MACVXDZK.js";
23
- import "../chunk-2VU4MFM3.js";
24
- import "../chunk-7PZWR4LI.js";
25
- import "../chunk-5VY23YK3.js";
26
- import "../chunk-LD3DKUK5.js";
18
+ import "../chunk-NERR4TAO.js";
19
+ import "../chunk-DZS7CJKL.js";
20
+ import "../chunk-TKJZKICB.js";
21
+ import "../chunk-IM32EEDM.js";
22
+ import "../chunk-65FRIL4D.js";
23
+ import "../chunk-4ZMOCPYO.js";
27
24
  import "../chunk-ZOAWBDWU.js";
28
- import "../chunk-PSNN4LWX.js";
29
- import "../chunk-2YPZKGAG.js";
30
- import "../chunk-WPPDRIJL.js";
25
+ import "../chunk-NOPU4RZ4.js";
26
+ import "../chunk-IMFVFNJE.js";
27
+ import "../chunk-QY4T6YAZ.js";
31
28
  import "../chunk-K6XAPGML.js";
32
- import "../chunk-MI5XJQDY.js";
29
+ import "../chunk-ND6PNADU.js";
30
+ import {
31
+ findConfigFile,
32
+ loadConfig
33
+ } from "../chunk-Z77YQRQT.js";
33
34
  import "../chunk-IDZNPTYD.js";
34
35
  import "../chunk-W6Y7ZW3Y.js";
35
- import "../chunk-HD4IBGLA.js";
36
+ import "../chunk-N5G5QMS3.js";
36
37
  import {
37
38
  handleError
38
39
  } from "../chunk-3WGJMBKH.js";
39
- import "../chunk-VRFZWGMS.js";
40
+ import "../chunk-XYLGHKG6.js";
40
41
  import {
41
42
  CLI_VERSION
42
43
  } from "../chunk-BM3PWGXQ.js";
@@ -48,7 +49,7 @@ import {
48
49
  readCheckState,
49
50
  shouldRunCheck,
50
51
  spawnBackgroundCheck
51
- } from "../chunk-KELT6K6M.js";
52
+ } from "../chunk-PQ5YK4AY.js";
52
53
  import "../chunk-MHBMTPW7.js";
53
54
 
54
55
  // src/bin/update-check-hooks.ts
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  createCheckPhaseGateCommand,
3
3
  runCheckPhaseGate
4
- } from "./chunk-3KOLLWWE.js";
4
+ } from "./chunk-UAX4I5ZE.js";
5
5
  import "./chunk-EBJQ6N4M.js";
6
+ import "./chunk-Z77YQRQT.js";
6
7
  import "./chunk-3WGJMBKH.js";
7
- import "./chunk-KELT6K6M.js";
8
+ import "./chunk-PQ5YK4AY.js";
8
9
  import "./chunk-MHBMTPW7.js";
9
10
  export {
10
11
  createCheckPhaseGateCommand,
@@ -45,7 +45,7 @@ var runCodeReviewDefinition = {
45
45
  };
46
46
  async function handleRunCodeReview(input) {
47
47
  try {
48
- const { parseDiff, runReviewPipeline } = await import("./dist-WF4C7A4A.js");
48
+ const { parseDiff, runReviewPipeline } = await import("./dist-2B363XUH.js");
49
49
  const parseResult = parseDiff(input.diff);
50
50
  if (!parseResult.ok) {
51
51
  return {
@@ -26,7 +26,7 @@ var runSecurityScanDefinition = {
26
26
  };
27
27
  async function handleRunSecurityScan(input) {
28
28
  try {
29
- const core = await import("./dist-WF4C7A4A.js");
29
+ const core = await import("./dist-2B363XUH.js");
30
30
  const projectRoot = sanitizePath(input.path);
31
31
  let configData = {};
32
32
  try {
@@ -49,7 +49,7 @@ async function handleRunSecurityScan(input) {
49
49
  if (input.files && input.files.length > 0) {
50
50
  filesToScan = input.files.map((f) => path.resolve(projectRoot, f));
51
51
  } else {
52
- const { globFiles } = await import("./glob-helper-5OHBUQAI.js");
52
+ const { globFiles } = await import("./glob-helper-R5FXNUPS.js");
53
53
  filesToScan = await globFiles(projectRoot, securityConfig.exclude);
54
54
  }
55
55
  const result = await scanner.scanFiles(filesToScan);
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveSkillsDir
3
- } from "./chunk-HD4IBGLA.js";
3
+ } from "./chunk-N5G5QMS3.js";
4
4
  import {
5
5
  SkillMetadataSchema
6
- } from "./chunk-VRFZWGMS.js";
6
+ } from "./chunk-XYLGHKG6.js";
7
7
 
8
8
  // src/persona/skill-executor.ts
9
9
  import * as fs from "fs";
@@ -10,10 +10,10 @@ import {
10
10
 
11
11
  // src/mcp/tools/entropy.ts
12
12
  async function loadEntropyGraphOptions(projectPath) {
13
- const { loadGraphStore } = await import("./graph-loader-KO4GJ5N2.js");
13
+ const { loadGraphStore } = await import("./graph-loader-GJZ4FN4Y.js");
14
14
  const store = await loadGraphStore(projectPath);
15
15
  if (!store) return void 0;
16
- const { GraphEntropyAdapter } = await import("./dist-M6BQODWC.js");
16
+ const { GraphEntropyAdapter } = await import("./dist-HXHWB7SV.js");
17
17
  const adapter = new GraphEntropyAdapter(store);
18
18
  const driftData = adapter.computeDriftData();
19
19
  const deadCodeData = adapter.computeDeadCodeData();
@@ -84,7 +84,7 @@ var detectEntropyDefinition = {
84
84
  };
85
85
  async function handleDetectEntropy(input) {
86
86
  try {
87
- const { EntropyAnalyzer } = await import("./dist-WF4C7A4A.js");
87
+ const { EntropyAnalyzer } = await import("./dist-2B363XUH.js");
88
88
  const typeFilter = input.type ?? "all";
89
89
  const analyzer = new EntropyAnalyzer({
90
90
  rootDir: sanitizePath(input.path),
@@ -144,7 +144,7 @@ async function handleDetectEntropy(input) {
144
144
  return resultToMcpResponse(result);
145
145
  }
146
146
  if (!result.ok) return resultToMcpResponse(result);
147
- const { createFixes, applyFixes, generateSuggestions } = await import("./dist-WF4C7A4A.js");
147
+ const { createFixes, applyFixes, generateSuggestions } = await import("./dist-2B363XUH.js");
148
148
  const report = result.value;
149
149
  const deadCode = report.deadCode;
150
150
  const fixTypesConfig = input.fixTypes ? { fixTypes: input.fixTypes } : void 0;
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
33
33
  };
34
34
  async function handleCreateSelfReview(input) {
35
35
  try {
36
- const { parseDiff, createSelfReview } = await import("./dist-WF4C7A4A.js");
36
+ const { parseDiff, createSelfReview } = await import("./dist-2B363XUH.js");
37
37
  const parseResult = parseDiff(input.diff);
38
38
  if (!parseResult.ok) {
39
39
  return resultToMcpResponse(parseResult);
@@ -53,11 +53,11 @@ async function handleCreateSelfReview(input) {
53
53
  ...input.maxFileCount !== void 0 ? { maxChangedFiles: input.maxFileCount } : {}
54
54
  }
55
55
  };
56
- const { loadGraphStore } = await import("./graph-loader-KO4GJ5N2.js");
56
+ const { loadGraphStore } = await import("./graph-loader-GJZ4FN4Y.js");
57
57
  const store = await loadGraphStore(projectPath);
58
58
  let graphData;
59
59
  if (store) {
60
- const { GraphFeedbackAdapter } = await import("./dist-M6BQODWC.js");
60
+ const { GraphFeedbackAdapter } = await import("./dist-HXHWB7SV.js");
61
61
  const adapter = new GraphFeedbackAdapter(store);
62
62
  const changedFiles = parseResult.value.files.map((f) => f.path);
63
63
  const impact = adapter.computeImpactData(changedFiles);
@@ -119,7 +119,7 @@ var analyzeDiffDefinition = {
119
119
  };
120
120
  async function handleAnalyzeDiff(input) {
121
121
  try {
122
- const { parseDiff, analyzeDiff } = await import("./dist-WF4C7A4A.js");
122
+ const { parseDiff, analyzeDiff } = await import("./dist-2B363XUH.js");
123
123
  const parseResult = parseDiff(input.diff);
124
124
  if (!parseResult.ok) {
125
125
  return resultToMcpResponse(parseResult);
@@ -139,10 +139,10 @@ async function handleAnalyzeDiff(input) {
139
139
  let graphImpactData;
140
140
  if (input.path) {
141
141
  try {
142
- const { loadGraphStore } = await import("./graph-loader-KO4GJ5N2.js");
142
+ const { loadGraphStore } = await import("./graph-loader-GJZ4FN4Y.js");
143
143
  const store = await loadGraphStore(sanitizePath(input.path));
144
144
  if (store) {
145
- const { GraphFeedbackAdapter } = await import("./dist-M6BQODWC.js");
145
+ const { GraphFeedbackAdapter } = await import("./dist-HXHWB7SV.js");
146
146
  const adapter = new GraphFeedbackAdapter(store);
147
147
  const changedFiles = parseResult.value.files.map((f) => f.path);
148
148
  const impact = adapter.computeImpactData(changedFiles);
@@ -195,7 +195,7 @@ var requestPeerReviewDefinition = {
195
195
  };
196
196
  async function handleRequestPeerReview(input) {
197
197
  try {
198
- const { parseDiff, requestPeerReview } = await import("./dist-WF4C7A4A.js");
198
+ const { parseDiff, requestPeerReview } = await import("./dist-2B363XUH.js");
199
199
  const parseResult = parseDiff(input.diff);
200
200
  if (!parseResult.ok) {
201
201
  return resultToMcpResponse(parseResult);
@@ -206,10 +206,10 @@ async function handleRequestPeerReview(input) {
206
206
  ...input.context ? { metadata: { context: input.context } } : {}
207
207
  };
208
208
  try {
209
- const { loadGraphStore } = await import("./graph-loader-KO4GJ5N2.js");
209
+ const { loadGraphStore } = await import("./graph-loader-GJZ4FN4Y.js");
210
210
  const store = await loadGraphStore(sanitizePath(input.path));
211
211
  if (store) {
212
- const { GraphFeedbackAdapter } = await import("./dist-M6BQODWC.js");
212
+ const { GraphFeedbackAdapter } = await import("./dist-HXHWB7SV.js");
213
213
  const adapter = new GraphFeedbackAdapter(store);
214
214
  const changedFiles = parseResult.value.files.map((f) => f.path);
215
215
  const impactData = adapter.computeImpactData(changedFiles);
@@ -15,7 +15,7 @@ function evictIfNeeded() {
15
15
  }
16
16
  }
17
17
  async function doLoadGraphStore(projectRoot) {
18
- const { GraphStore } = await import("./dist-M6BQODWC.js");
18
+ const { GraphStore } = await import("./dist-HXHWB7SV.js");
19
19
  const graphDir = path.join(projectRoot, ".harness", "graph");
20
20
  const store = new GraphStore();
21
21
  const loaded = await store.load(graphDir);