@harness-engineering/cli 1.13.0 → 1.14.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 (367) 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.md +39 -0
  15. package/dist/agents/skills/claude-code/harness-brainstorming/skill.yaml +1 -0
  16. package/dist/agents/skills/claude-code/harness-caching/SKILL.md +309 -0
  17. package/dist/agents/skills/claude-code/harness-caching/skill.yaml +73 -0
  18. package/dist/agents/skills/claude-code/harness-chaos/SKILL.md +295 -0
  19. package/dist/agents/skills/claude-code/harness-chaos/skill.yaml +72 -0
  20. package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +44 -0
  21. package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +1 -0
  22. package/dist/agents/skills/claude-code/harness-codebase-cleanup/skill.yaml +1 -0
  23. package/dist/agents/skills/claude-code/harness-compliance/SKILL.md +303 -0
  24. package/dist/agents/skills/claude-code/harness-compliance/skill.yaml +78 -0
  25. package/dist/agents/skills/claude-code/harness-containerization/SKILL.md +284 -0
  26. package/dist/agents/skills/claude-code/harness-containerization/skill.yaml +80 -0
  27. package/dist/agents/skills/claude-code/harness-data-pipeline/SKILL.md +274 -0
  28. package/dist/agents/skills/claude-code/harness-data-pipeline/skill.yaml +81 -0
  29. package/dist/agents/skills/claude-code/harness-data-validation/SKILL.md +343 -0
  30. package/dist/agents/skills/claude-code/harness-data-validation/skill.yaml +75 -0
  31. package/dist/agents/skills/claude-code/harness-database/SKILL.md +258 -0
  32. package/dist/agents/skills/claude-code/harness-database/skill.yaml +80 -0
  33. package/dist/agents/skills/claude-code/harness-debugging/skill.yaml +1 -0
  34. package/dist/agents/skills/claude-code/harness-dependency-health/skill.yaml +1 -0
  35. package/dist/agents/skills/claude-code/harness-deployment/SKILL.md +255 -0
  36. package/dist/agents/skills/claude-code/harness-deployment/skill.yaml +77 -0
  37. package/dist/agents/skills/claude-code/harness-design/skill.yaml +1 -0
  38. package/dist/agents/skills/claude-code/harness-design-mobile/skill.yaml +1 -0
  39. package/dist/agents/skills/claude-code/harness-design-system/skill.yaml +1 -0
  40. package/dist/agents/skills/claude-code/harness-design-web/skill.yaml +1 -0
  41. package/dist/agents/skills/claude-code/harness-diagnostics/skill.yaml +1 -0
  42. package/dist/agents/skills/claude-code/harness-docs-pipeline/skill.yaml +1 -0
  43. package/dist/agents/skills/claude-code/harness-dx/SKILL.md +276 -0
  44. package/dist/agents/skills/claude-code/harness-dx/skill.yaml +76 -0
  45. package/dist/agents/skills/claude-code/harness-e2e/SKILL.md +245 -0
  46. package/dist/agents/skills/claude-code/harness-e2e/skill.yaml +78 -0
  47. package/dist/agents/skills/claude-code/harness-event-driven/SKILL.md +280 -0
  48. package/dist/agents/skills/claude-code/harness-event-driven/skill.yaml +77 -0
  49. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +44 -0
  50. package/dist/agents/skills/claude-code/harness-execution/skill.yaml +1 -0
  51. package/dist/agents/skills/claude-code/harness-feature-flags/SKILL.md +287 -0
  52. package/dist/agents/skills/claude-code/harness-feature-flags/skill.yaml +74 -0
  53. package/dist/agents/skills/claude-code/harness-git-workflow/skill.yaml +1 -0
  54. package/dist/agents/skills/claude-code/harness-hotspot-detector/skill.yaml +1 -0
  55. package/dist/agents/skills/claude-code/harness-i18n/skill.yaml +1 -0
  56. package/dist/agents/skills/claude-code/harness-i18n-process/skill.yaml +1 -0
  57. package/dist/agents/skills/claude-code/harness-i18n-workflow/skill.yaml +1 -0
  58. package/dist/agents/skills/claude-code/harness-impact-analysis/skill.yaml +1 -0
  59. package/dist/agents/skills/claude-code/harness-incident-response/SKILL.md +223 -0
  60. package/dist/agents/skills/claude-code/harness-incident-response/skill.yaml +78 -0
  61. package/dist/agents/skills/claude-code/harness-infrastructure-as-code/SKILL.md +279 -0
  62. package/dist/agents/skills/claude-code/harness-infrastructure-as-code/skill.yaml +80 -0
  63. package/dist/agents/skills/claude-code/harness-integration-test/SKILL.md +271 -0
  64. package/dist/agents/skills/claude-code/harness-integration-test/skill.yaml +73 -0
  65. package/dist/agents/skills/claude-code/harness-integrity/skill.yaml +1 -0
  66. package/dist/agents/skills/claude-code/harness-knowledge-mapper/skill.yaml +1 -0
  67. package/dist/agents/skills/claude-code/harness-load-testing/SKILL.md +274 -0
  68. package/dist/agents/skills/claude-code/harness-load-testing/skill.yaml +79 -0
  69. package/dist/agents/skills/claude-code/harness-ml-ops/SKILL.md +341 -0
  70. package/dist/agents/skills/claude-code/harness-ml-ops/skill.yaml +79 -0
  71. package/dist/agents/skills/claude-code/harness-mobile-patterns/SKILL.md +326 -0
  72. package/dist/agents/skills/claude-code/harness-mobile-patterns/skill.yaml +82 -0
  73. package/dist/agents/skills/claude-code/harness-mutation-test/SKILL.md +251 -0
  74. package/dist/agents/skills/claude-code/harness-mutation-test/skill.yaml +70 -0
  75. package/dist/agents/skills/claude-code/harness-observability/SKILL.md +283 -0
  76. package/dist/agents/skills/claude-code/harness-observability/skill.yaml +78 -0
  77. package/dist/agents/skills/claude-code/harness-onboarding/skill.yaml +1 -0
  78. package/dist/agents/skills/claude-code/harness-parallel-agents/skill.yaml +1 -0
  79. package/dist/agents/skills/claude-code/harness-perf/skill.yaml +1 -0
  80. package/dist/agents/skills/claude-code/harness-perf-tdd/skill.yaml +1 -0
  81. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +39 -0
  82. package/dist/agents/skills/claude-code/harness-planning/skill.yaml +1 -0
  83. package/dist/agents/skills/claude-code/harness-pre-commit-review/skill.yaml +1 -0
  84. package/dist/agents/skills/claude-code/harness-product-spec/SKILL.md +285 -0
  85. package/dist/agents/skills/claude-code/harness-product-spec/skill.yaml +72 -0
  86. package/dist/agents/skills/claude-code/harness-property-test/SKILL.md +281 -0
  87. package/dist/agents/skills/claude-code/harness-property-test/skill.yaml +71 -0
  88. package/dist/agents/skills/claude-code/harness-refactoring/skill.yaml +1 -0
  89. package/dist/agents/skills/claude-code/harness-release-readiness/SKILL.md +3 -3
  90. package/dist/agents/skills/claude-code/harness-release-readiness/skill.yaml +1 -0
  91. package/dist/agents/skills/claude-code/harness-resilience/SKILL.md +255 -0
  92. package/dist/agents/skills/claude-code/harness-resilience/skill.yaml +76 -0
  93. package/dist/agents/skills/claude-code/harness-roadmap/skill.yaml +1 -0
  94. package/dist/agents/skills/claude-code/harness-secrets/SKILL.md +293 -0
  95. package/dist/agents/skills/claude-code/harness-secrets/skill.yaml +76 -0
  96. package/dist/agents/skills/claude-code/harness-security-review/skill.yaml +1 -0
  97. package/dist/agents/skills/claude-code/harness-security-scan/skill.yaml +1 -0
  98. package/dist/agents/skills/claude-code/harness-skill-authoring/skill.yaml +1 -0
  99. package/dist/agents/skills/claude-code/harness-soundness-review/skill.yaml +1 -0
  100. package/dist/agents/skills/claude-code/harness-sql-review/SKILL.md +315 -0
  101. package/dist/agents/skills/claude-code/harness-sql-review/skill.yaml +74 -0
  102. package/dist/agents/skills/claude-code/harness-state-management/skill.yaml +1 -0
  103. package/dist/agents/skills/claude-code/harness-tdd/skill.yaml +1 -0
  104. package/dist/agents/skills/claude-code/harness-test-advisor/skill.yaml +1 -0
  105. package/dist/agents/skills/claude-code/harness-test-data/SKILL.md +268 -0
  106. package/dist/agents/skills/claude-code/harness-test-data/skill.yaml +74 -0
  107. package/dist/agents/skills/claude-code/harness-ux-copy/SKILL.md +271 -0
  108. package/dist/agents/skills/claude-code/harness-ux-copy/skill.yaml +77 -0
  109. package/dist/agents/skills/claude-code/harness-verification/SKILL.md +35 -0
  110. package/dist/agents/skills/claude-code/harness-verification/skill.yaml +1 -0
  111. package/dist/agents/skills/claude-code/harness-verify/skill.yaml +1 -0
  112. package/dist/agents/skills/claude-code/harness-visual-regression/SKILL.md +257 -0
  113. package/dist/agents/skills/claude-code/harness-visual-regression/skill.yaml +74 -0
  114. package/dist/agents/skills/claude-code/initialize-harness-project/SKILL.md +11 -3
  115. package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +1 -0
  116. package/dist/agents/skills/claude-code/validate-context-engineering/skill.yaml +1 -0
  117. package/dist/agents/skills/gemini-cli/add-harness-component/skill.yaml +1 -0
  118. package/dist/agents/skills/gemini-cli/align-documentation/skill.yaml +1 -0
  119. package/dist/agents/skills/gemini-cli/check-mechanical-constraints/skill.yaml +1 -0
  120. package/dist/agents/skills/gemini-cli/cleanup-dead-code/skill.yaml +1 -0
  121. package/dist/agents/skills/gemini-cli/detect-doc-drift/skill.yaml +1 -0
  122. package/dist/agents/skills/gemini-cli/enforce-architecture/skill.yaml +1 -0
  123. package/dist/agents/skills/gemini-cli/harness-accessibility/skill.yaml +1 -0
  124. package/dist/agents/skills/gemini-cli/harness-api-design/SKILL.md +304 -0
  125. package/dist/agents/skills/gemini-cli/harness-api-design/skill.yaml +74 -0
  126. package/dist/agents/skills/gemini-cli/harness-architecture-advisor/skill.yaml +1 -0
  127. package/dist/agents/skills/gemini-cli/harness-auth/SKILL.md +279 -0
  128. package/dist/agents/skills/gemini-cli/harness-auth/skill.yaml +81 -0
  129. package/dist/agents/skills/gemini-cli/harness-autopilot/skill.yaml +1 -0
  130. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +39 -0
  131. package/dist/agents/skills/gemini-cli/harness-brainstorming/skill.yaml +1 -0
  132. package/dist/agents/skills/gemini-cli/harness-caching/SKILL.md +309 -0
  133. package/dist/agents/skills/gemini-cli/harness-caching/skill.yaml +73 -0
  134. package/dist/agents/skills/gemini-cli/harness-chaos/SKILL.md +295 -0
  135. package/dist/agents/skills/gemini-cli/harness-chaos/skill.yaml +72 -0
  136. package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +44 -0
  137. package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +1 -0
  138. package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/skill.yaml +1 -0
  139. package/dist/agents/skills/gemini-cli/harness-compliance/SKILL.md +303 -0
  140. package/dist/agents/skills/gemini-cli/harness-compliance/skill.yaml +78 -0
  141. package/dist/agents/skills/gemini-cli/harness-containerization/SKILL.md +284 -0
  142. package/dist/agents/skills/gemini-cli/harness-containerization/skill.yaml +80 -0
  143. package/dist/agents/skills/gemini-cli/harness-data-pipeline/SKILL.md +274 -0
  144. package/dist/agents/skills/gemini-cli/harness-data-pipeline/skill.yaml +81 -0
  145. package/dist/agents/skills/gemini-cli/harness-data-validation/SKILL.md +343 -0
  146. package/dist/agents/skills/gemini-cli/harness-data-validation/skill.yaml +75 -0
  147. package/dist/agents/skills/gemini-cli/harness-database/SKILL.md +258 -0
  148. package/dist/agents/skills/gemini-cli/harness-database/skill.yaml +80 -0
  149. package/dist/agents/skills/gemini-cli/harness-debugging/skill.yaml +1 -0
  150. package/dist/agents/skills/gemini-cli/harness-dependency-health/skill.yaml +1 -0
  151. package/dist/agents/skills/gemini-cli/harness-deployment/SKILL.md +255 -0
  152. package/dist/agents/skills/gemini-cli/harness-deployment/skill.yaml +77 -0
  153. package/dist/agents/skills/gemini-cli/harness-design/skill.yaml +1 -0
  154. package/dist/agents/skills/gemini-cli/harness-design-mobile/skill.yaml +1 -0
  155. package/dist/agents/skills/gemini-cli/harness-design-system/skill.yaml +1 -0
  156. package/dist/agents/skills/gemini-cli/harness-design-web/skill.yaml +1 -0
  157. package/dist/agents/skills/gemini-cli/harness-diagnostics/skill.yaml +1 -0
  158. package/dist/agents/skills/gemini-cli/harness-docs-pipeline/skill.yaml +1 -0
  159. package/dist/agents/skills/gemini-cli/harness-dx/SKILL.md +276 -0
  160. package/dist/agents/skills/gemini-cli/harness-dx/skill.yaml +76 -0
  161. package/dist/agents/skills/gemini-cli/harness-e2e/SKILL.md +245 -0
  162. package/dist/agents/skills/gemini-cli/harness-e2e/skill.yaml +78 -0
  163. package/dist/agents/skills/gemini-cli/harness-event-driven/SKILL.md +280 -0
  164. package/dist/agents/skills/gemini-cli/harness-event-driven/skill.yaml +77 -0
  165. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +44 -0
  166. package/dist/agents/skills/gemini-cli/harness-execution/skill.yaml +1 -0
  167. package/dist/agents/skills/gemini-cli/harness-feature-flags/SKILL.md +287 -0
  168. package/dist/agents/skills/gemini-cli/harness-feature-flags/skill.yaml +74 -0
  169. package/dist/agents/skills/gemini-cli/harness-git-workflow/skill.yaml +1 -0
  170. package/dist/agents/skills/gemini-cli/harness-hotspot-detector/skill.yaml +1 -0
  171. package/dist/agents/skills/gemini-cli/harness-i18n/skill.yaml +1 -0
  172. package/dist/agents/skills/gemini-cli/harness-i18n-process/skill.yaml +1 -0
  173. package/dist/agents/skills/gemini-cli/harness-i18n-workflow/skill.yaml +1 -0
  174. package/dist/agents/skills/gemini-cli/harness-impact-analysis/skill.yaml +1 -0
  175. package/dist/agents/skills/gemini-cli/harness-incident-response/SKILL.md +223 -0
  176. package/dist/agents/skills/gemini-cli/harness-incident-response/skill.yaml +78 -0
  177. package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/SKILL.md +279 -0
  178. package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/skill.yaml +80 -0
  179. package/dist/agents/skills/gemini-cli/harness-integration-test/SKILL.md +271 -0
  180. package/dist/agents/skills/gemini-cli/harness-integration-test/skill.yaml +73 -0
  181. package/dist/agents/skills/gemini-cli/harness-integrity/skill.yaml +1 -0
  182. package/dist/agents/skills/gemini-cli/harness-knowledge-mapper/skill.yaml +1 -0
  183. package/dist/agents/skills/gemini-cli/harness-load-testing/SKILL.md +274 -0
  184. package/dist/agents/skills/gemini-cli/harness-load-testing/skill.yaml +79 -0
  185. package/dist/agents/skills/gemini-cli/harness-ml-ops/SKILL.md +341 -0
  186. package/dist/agents/skills/gemini-cli/harness-ml-ops/skill.yaml +79 -0
  187. package/dist/agents/skills/gemini-cli/harness-mobile-patterns/SKILL.md +326 -0
  188. package/dist/agents/skills/gemini-cli/harness-mobile-patterns/skill.yaml +82 -0
  189. package/dist/agents/skills/gemini-cli/harness-mutation-test/SKILL.md +251 -0
  190. package/dist/agents/skills/gemini-cli/harness-mutation-test/skill.yaml +70 -0
  191. package/dist/agents/skills/gemini-cli/harness-observability/SKILL.md +283 -0
  192. package/dist/agents/skills/gemini-cli/harness-observability/skill.yaml +78 -0
  193. package/dist/agents/skills/gemini-cli/harness-onboarding/skill.yaml +1 -0
  194. package/dist/agents/skills/gemini-cli/harness-parallel-agents/skill.yaml +1 -0
  195. package/dist/agents/skills/gemini-cli/harness-perf/skill.yaml +1 -0
  196. package/dist/agents/skills/gemini-cli/harness-perf-tdd/skill.yaml +1 -0
  197. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +39 -0
  198. package/dist/agents/skills/gemini-cli/harness-planning/skill.yaml +1 -0
  199. package/dist/agents/skills/gemini-cli/harness-pre-commit-review/skill.yaml +1 -0
  200. package/dist/agents/skills/gemini-cli/harness-product-spec/SKILL.md +285 -0
  201. package/dist/agents/skills/gemini-cli/harness-product-spec/skill.yaml +72 -0
  202. package/dist/agents/skills/gemini-cli/harness-property-test/SKILL.md +281 -0
  203. package/dist/agents/skills/gemini-cli/harness-property-test/skill.yaml +71 -0
  204. package/dist/agents/skills/gemini-cli/harness-refactoring/skill.yaml +1 -0
  205. package/dist/agents/skills/gemini-cli/harness-release-readiness/SKILL.md +3 -3
  206. package/dist/agents/skills/gemini-cli/harness-release-readiness/skill.yaml +1 -0
  207. package/dist/agents/skills/gemini-cli/harness-resilience/SKILL.md +255 -0
  208. package/dist/agents/skills/gemini-cli/harness-resilience/skill.yaml +76 -0
  209. package/dist/agents/skills/gemini-cli/harness-roadmap/skill.yaml +1 -0
  210. package/dist/agents/skills/gemini-cli/harness-secrets/SKILL.md +293 -0
  211. package/dist/agents/skills/gemini-cli/harness-secrets/skill.yaml +76 -0
  212. package/dist/agents/skills/gemini-cli/harness-security-review/SKILL.md +240 -0
  213. package/dist/agents/skills/gemini-cli/harness-security-review/skill.yaml +1 -0
  214. package/dist/agents/skills/gemini-cli/harness-security-scan/skill.yaml +1 -0
  215. package/dist/agents/skills/gemini-cli/harness-skill-authoring/skill.yaml +1 -0
  216. package/dist/agents/skills/gemini-cli/harness-soundness-review/skill.yaml +1 -0
  217. package/dist/agents/skills/gemini-cli/harness-sql-review/SKILL.md +315 -0
  218. package/dist/agents/skills/gemini-cli/harness-sql-review/skill.yaml +74 -0
  219. package/dist/agents/skills/gemini-cli/harness-state-management/skill.yaml +1 -0
  220. package/dist/agents/skills/gemini-cli/harness-tdd/skill.yaml +1 -0
  221. package/dist/agents/skills/gemini-cli/harness-test-advisor/skill.yaml +1 -0
  222. package/dist/agents/skills/gemini-cli/harness-test-data/SKILL.md +268 -0
  223. package/dist/agents/skills/gemini-cli/harness-test-data/skill.yaml +74 -0
  224. package/dist/agents/skills/gemini-cli/harness-ux-copy/SKILL.md +271 -0
  225. package/dist/agents/skills/gemini-cli/harness-ux-copy/skill.yaml +77 -0
  226. package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +35 -0
  227. package/dist/agents/skills/gemini-cli/harness-verification/skill.yaml +1 -0
  228. package/dist/agents/skills/gemini-cli/harness-verify/skill.yaml +1 -0
  229. package/dist/agents/skills/gemini-cli/harness-visual-regression/SKILL.md +257 -0
  230. package/dist/agents/skills/gemini-cli/harness-visual-regression/skill.yaml +74 -0
  231. package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +11 -3
  232. package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +1 -0
  233. package/dist/agents/skills/gemini-cli/validate-context-engineering/skill.yaml +1 -0
  234. package/dist/agents-md-YTYQDA3P.js +8 -0
  235. package/dist/{architecture-ESOOE26S.js → architecture-JQZYM4US.js} +4 -4
  236. package/dist/bin/harness-mcp.js +16 -15
  237. package/dist/bin/harness.js +31 -30
  238. package/dist/{check-phase-gate-S2MZKLFQ.js → check-phase-gate-L3RADYWO.js} +4 -3
  239. package/dist/{chunk-WPPDRIJL.js → chunk-3C2MLBPJ.js} +4 -4
  240. package/dist/chunk-6KTUUFRN.js +217 -0
  241. package/dist/{chunk-MI5XJQDY.js → chunk-7IP4JIFL.js} +24 -10
  242. package/dist/{chunk-C2ERUR3L.js → chunk-7MJAPE3Z.js} +165 -49
  243. package/dist/{chunk-KELT6K6M.js → chunk-ABQHQ6I5.js} +1861 -1418
  244. package/dist/{chunk-L2KLU56K.js → chunk-AOZRDOIP.js} +2 -2
  245. package/dist/{chunk-QPEH2QPG.js → chunk-DBSOCI3G.js} +53 -54
  246. package/dist/{chunk-MHBMTPW7.js → chunk-ERS5EVUZ.js} +9 -0
  247. package/dist/{chunk-JSTQ3AWB.js → chunk-FIAPHX37.js} +1 -1
  248. package/dist/{chunk-2YPZKGAG.js → chunk-FTMXDOR6.js} +1 -1
  249. package/dist/{chunk-72GHBOL2.js → chunk-GZKSBLQL.js} +1 -1
  250. package/dist/{chunk-K6XAPGML.js → chunk-H7Y5CKTM.js} +1 -1
  251. package/dist/{chunk-HD4IBGLA.js → chunk-N5G5QMS3.js} +24 -1
  252. package/dist/{chunk-LD3DKUK5.js → chunk-NLVUVUGD.js} +1 -1
  253. package/dist/{chunk-3KOLLWWE.js → chunk-O5OJVPL6.js} +26 -211
  254. package/dist/{chunk-NKDM3FMH.js → chunk-OD3S2NHN.js} +1 -1
  255. package/dist/{chunk-5VY23YK3.js → chunk-OSXBPAMK.js} +2 -2
  256. package/dist/{chunk-MACVXDZK.js → chunk-OXLLOSSR.js} +45 -47
  257. package/dist/{chunk-GNGELAXY.js → chunk-RCWZBSK5.js} +2 -2
  258. package/dist/{chunk-PSNN4LWX.js → chunk-S2FXOWOR.js} +3 -3
  259. package/dist/{chunk-VUCPTQ6G.js → chunk-SD3SQOZ2.js} +1 -1
  260. package/dist/{chunk-7PZWR4LI.js → chunk-TPOTOBR7.js} +9 -9
  261. package/dist/{chunk-RZSUJBZZ.js → chunk-XKECDXJS.js} +452 -353
  262. package/dist/{chunk-VRFZWGMS.js → chunk-XYLGHKG6.js} +5 -1
  263. package/dist/{chunk-6N4R6FVX.js → chunk-YBJ262QL.js} +1 -1
  264. package/dist/{chunk-2VU4MFM3.js → chunk-YPYGXRDR.js} +7 -7
  265. package/dist/{chunk-Q6AB7W5Z.js → chunk-YQ6KC6TE.js} +1 -1
  266. package/dist/{chunk-7KQSUZVG.js → chunk-YZD2MRNQ.js} +1528 -1010
  267. package/dist/ci-workflow-EQZFVX3P.js +8 -0
  268. package/dist/{create-skill-WPXHSLX2.js → create-skill-XSWHMSM5.js} +2 -2
  269. package/dist/{dist-M6BQODWC.js → dist-B26DFXMP.js} +573 -480
  270. package/dist/{dist-L7LAAQAS.js → dist-DZ63LLUD.js} +1 -1
  271. package/dist/{dist-WF4C7A4A.js → dist-HWXF2C3R.js} +18 -2
  272. package/dist/{dist-D4RYGUZE.js → dist-USY2C5JL.js} +3 -1
  273. package/dist/{docs-BPYCN2DR.js → docs-7ECGYMAV.js} +5 -3
  274. package/dist/engine-EG4EH4IX.js +8 -0
  275. package/dist/{entropy-4VDVV5CR.js → entropy-5USWKLVS.js} +3 -3
  276. package/dist/{feedback-63QB5RCA.js → feedback-UTBXZZHF.js} +1 -1
  277. package/dist/{generate-agent-definitions-QABOJG56.js → generate-agent-definitions-3PM5EU7V.js} +5 -5
  278. package/dist/{glob-helper-5OHBUQAI.js → glob-helper-R5FXNUPS.js} +1 -1
  279. package/dist/{graph-loader-KO4GJ5N2.js → graph-loader-2M2HXDQI.js} +1 -1
  280. package/dist/index.d.ts +183 -17
  281. package/dist/index.js +32 -30
  282. package/dist/loader-ZPALXIVR.js +10 -0
  283. package/dist/mcp-362EZHF4.js +35 -0
  284. package/dist/{performance-26BH47O4.js → performance-OQAFMJUD.js} +3 -3
  285. package/dist/{review-pipeline-GHR3WFBI.js → review-pipeline-C4GCFVGP.js} +1 -1
  286. package/dist/runtime-7YLVK453.js +9 -0
  287. package/dist/{security-UQFUZXEN.js → security-PZOX7AQS.js} +1 -1
  288. package/dist/skill-executor-XZLYZYAK.js +8 -0
  289. package/dist/templates/axum/Cargo.toml.hbs +8 -0
  290. package/dist/templates/axum/src/main.rs +12 -0
  291. package/dist/templates/axum/template.json +16 -0
  292. package/dist/templates/django/manage.py.hbs +19 -0
  293. package/dist/templates/django/requirements.txt.hbs +1 -0
  294. package/dist/templates/django/src/settings.py.hbs +44 -0
  295. package/dist/templates/django/src/urls.py +6 -0
  296. package/dist/templates/django/src/wsgi.py.hbs +9 -0
  297. package/dist/templates/django/template.json +21 -0
  298. package/dist/templates/express/package.json.hbs +15 -0
  299. package/dist/templates/express/src/app.ts +12 -0
  300. package/dist/templates/express/src/lib/.gitkeep +0 -0
  301. package/dist/templates/express/template.json +16 -0
  302. package/dist/templates/fastapi/requirements.txt.hbs +2 -0
  303. package/dist/templates/fastapi/src/main.py +8 -0
  304. package/dist/templates/fastapi/template.json +20 -0
  305. package/dist/templates/gin/go.mod.hbs +5 -0
  306. package/dist/templates/gin/main.go +15 -0
  307. package/dist/templates/gin/template.json +19 -0
  308. package/dist/templates/go-base/.golangci.yml +16 -0
  309. package/dist/templates/go-base/AGENTS.md.hbs +35 -0
  310. package/dist/templates/go-base/go.mod.hbs +3 -0
  311. package/dist/templates/go-base/harness.config.json.hbs +17 -0
  312. package/dist/templates/go-base/main.go +7 -0
  313. package/dist/templates/go-base/template.json +14 -0
  314. package/dist/templates/java-base/AGENTS.md.hbs +35 -0
  315. package/dist/templates/java-base/checkstyle.xml +20 -0
  316. package/dist/templates/java-base/harness.config.json.hbs +16 -0
  317. package/dist/templates/java-base/pom.xml.hbs +39 -0
  318. package/dist/templates/java-base/src/main/java/App.java.hbs +5 -0
  319. package/dist/templates/java-base/template.json +13 -0
  320. package/dist/templates/nestjs/nest-cli.json +5 -0
  321. package/dist/templates/nestjs/package.json.hbs +18 -0
  322. package/dist/templates/nestjs/src/app.module.ts +8 -0
  323. package/dist/templates/nestjs/src/lib/.gitkeep +0 -0
  324. package/dist/templates/nestjs/src/main.ts +11 -0
  325. package/dist/templates/nestjs/template.json +16 -0
  326. package/dist/templates/nextjs/template.json +15 -1
  327. package/dist/templates/python-base/.python-version +1 -0
  328. package/dist/templates/python-base/AGENTS.md.hbs +32 -0
  329. package/dist/templates/python-base/harness.config.json.hbs +16 -0
  330. package/dist/templates/python-base/pyproject.toml.hbs +18 -0
  331. package/dist/templates/python-base/ruff.toml +5 -0
  332. package/dist/templates/python-base/src/__init__.py +0 -0
  333. package/dist/templates/python-base/template.json +13 -0
  334. package/dist/templates/react-vite/index.html +12 -0
  335. package/dist/templates/react-vite/package.json.hbs +18 -0
  336. package/dist/templates/react-vite/src/App.tsx +7 -0
  337. package/dist/templates/react-vite/src/lib/.gitkeep +0 -0
  338. package/dist/templates/react-vite/src/main.tsx +9 -0
  339. package/dist/templates/react-vite/template.json +19 -0
  340. package/dist/templates/react-vite/vite.config.ts +6 -0
  341. package/dist/templates/rust-base/AGENTS.md.hbs +35 -0
  342. package/dist/templates/rust-base/Cargo.toml.hbs +6 -0
  343. package/dist/templates/rust-base/clippy.toml +2 -0
  344. package/dist/templates/rust-base/harness.config.json.hbs +17 -0
  345. package/dist/templates/rust-base/src/main.rs +3 -0
  346. package/dist/templates/rust-base/template.json +14 -0
  347. package/dist/templates/spring-boot/pom.xml.hbs +50 -0
  348. package/dist/templates/spring-boot/src/main/java/Application.java.hbs +19 -0
  349. package/dist/templates/spring-boot/template.json +15 -0
  350. package/dist/templates/vue/index.html +12 -0
  351. package/dist/templates/vue/package.json.hbs +16 -0
  352. package/dist/templates/vue/src/App.vue +7 -0
  353. package/dist/templates/vue/src/lib/.gitkeep +0 -0
  354. package/dist/templates/vue/src/main.ts +4 -0
  355. package/dist/templates/vue/template.json +19 -0
  356. package/dist/templates/vue/vite.config.ts +6 -0
  357. package/dist/{validate-N7QJOKFZ.js → validate-FD3Z6VJD.js} +4 -4
  358. package/dist/validate-cross-check-WNJM6H2D.js +8 -0
  359. package/package.json +6 -6
  360. package/dist/agents-md-P2RHSUV7.js +0 -8
  361. package/dist/ci-workflow-4NYBUG6R.js +0 -8
  362. package/dist/engine-LXLIWQQ3.js +0 -8
  363. package/dist/loader-Z2IT7QX3.js +0 -10
  364. package/dist/mcp-KQHEL5IF.js +0 -34
  365. package/dist/runtime-PDWD7UIK.js +0 -9
  366. package/dist/skill-executor-RG45LUO5.js +0 -8
  367. package/dist/validate-cross-check-EDQ5QGTM.js +0 -8
@@ -0,0 +1,71 @@
1
+ name: harness-property-test
2
+ version: "1.0.0"
3
+ description: Property-based and generative testing with fast-check, hypothesis, and automatic shrinking
4
+ cognitive_mode: constructive-architect
5
+ triggers:
6
+ - manual
7
+ - on_new_feature
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-property-test
21
+ args:
22
+ - name: path
23
+ description: Project root path
24
+ required: false
25
+ - name: framework
26
+ description: "Property testing framework: fast-check, hypothesis, proptest, or quickcheck. Auto-detected when omitted."
27
+ required: false
28
+ - name: target
29
+ description: "Target function or module for property test generation."
30
+ required: false
31
+ mcp:
32
+ tool: run_skill
33
+ input:
34
+ skill: harness-property-test
35
+ path: string
36
+ type: rigid
37
+ tier: 3
38
+ internal: false
39
+ keywords:
40
+ - property-based testing
41
+ - generative testing
42
+ - fast-check
43
+ - hypothesis
44
+ - proptest
45
+ - QuickCheck
46
+ - fuzzing
47
+ - shrinking
48
+ - arbitrary
49
+ - invariant
50
+ stack_signals:
51
+ - "src/**/*property*"
52
+ - "tests/property/"
53
+ - "src/**/*.prop.*"
54
+ - "tests/**/properties/"
55
+ phases:
56
+ - name: identify
57
+ description: Analyze functions and data types to discover testable properties and invariants
58
+ required: true
59
+ - name: define
60
+ description: Define property specifications, custom generators, and shrinking strategies
61
+ required: true
62
+ - name: execute
63
+ description: Run property tests with sufficient iterations and collect counterexamples
64
+ required: true
65
+ - name: analyze
66
+ description: Interpret shrunk counterexamples, diagnose root causes, and harden implementations
67
+ required: true
68
+ state:
69
+ persistent: false
70
+ files: []
71
+ depends_on: []
@@ -27,6 +27,7 @@ mcp:
27
27
  skill: harness-refactoring
28
28
  path: string
29
29
  type: flexible
30
+ tier: 1
30
31
  state:
31
32
  persistent: false
32
33
  files: []
@@ -111,14 +111,14 @@ Run every check below. Record each as **pass**, **warn**, or **fail**:
111
111
  | `test` script exists in root `package.json` | fail |
112
112
  | `lint` script exists in root `package.json` | fail |
113
113
  | `typecheck` or `tsc` script exists in root `package.json` | fail |
114
- | `assess_project` passes (harness health + lint gate) | fail |
114
+ | `assess_project` passes (full harness CI gate) | fail |
115
115
 
116
116
  For the `assess_project` check, run it with all harness-specific checks including lint:
117
117
 
118
118
  ```json
119
119
  assess_project({
120
120
  path: "<project-root>",
121
- checks: ["validate", "deps", "docs", "lint"],
121
+ checks: ["validate", "deps", "docs", "lint", "perf", "security", "entropy", "arch"],
122
122
  mode: "detailed"
123
123
  })
124
124
  ```
@@ -519,7 +519,7 @@ This framing is informational — it does not block anything. It gives the team
519
519
 
520
520
  ## Harness Integration
521
521
 
522
- - **`assess_project`** — Used in AUDIT Phase 1 (CI/CD section) to run harness validation, dependency checks, doc coverage, and lint in a single parallel call. Also run after auto-fixes in Phase 3 to verify project health. Automatically inherits new checks added to `assess_project`.
522
+ - **`assess_project`** — Used in AUDIT Phase 1 (CI/CD section) to run the full harness CI gate (validation, dependencies, docs, lint, performance/complexity, security, entropy, and architecture) in a single parallel call. Also run after auto-fixes in Phase 3 to verify project health. Automatically inherits new checks added to `assess_project`.
523
523
  - **Sub-skill invocations** — Phase 2 dispatches `detect-doc-drift`, `cleanup-dead-code`, `enforce-architecture`, and `diagnostics` as parallel agents. Phase 3 delegates fixes to `align-documentation` and `cleanup-dead-code`.
524
524
  - **State file** — `.harness/release-readiness.json` enables session resumption and progress tracking. This file is read at the start of each invocation and written at the end.
525
525
  - **Report file** — `release-readiness-report.md` is written to the project root. It is a snapshot, not a tracked artifact — regenerate it on each run.
@@ -31,6 +31,7 @@ mcp:
31
31
  skill: harness-release-readiness
32
32
  path: string
33
33
  type: rigid
34
+ tier: 2
34
35
  phases:
35
36
  - name: audit
36
37
  description: Run release-specific checks (packaging, docs, repo hygiene, CI/CD)
@@ -0,0 +1,255 @@
1
+ # Harness Resilience
2
+
3
+ > Circuit breakers, rate limiting, bulkheads, retry patterns, and fault tolerance analysis. Detects missing resilience patterns, evaluates failure modes, and recommends concrete configurations for production-grade fault tolerance.
4
+
5
+ ## When to Use
6
+
7
+ - When adding new external service integrations (APIs, databases, message queues) that need fault tolerance
8
+ - On PRs that modify service-to-service communication, HTTP clients, or middleware chains
9
+ - To audit existing resilience patterns for correctness, completeness, and observability
10
+ - NOT for load testing or capacity planning (use harness-load-testing)
11
+ - NOT for incident response after a failure has occurred (use harness-incident-response)
12
+ - NOT for security-focused rate limiting like DDoS protection (use harness-security-review)
13
+
14
+ ## Process
15
+
16
+ ### Phase 1: DETECT -- Identify Dependencies and Existing Patterns
17
+
18
+ 1. **Inventory external dependencies.** Scan the codebase for outbound connections:
19
+ - HTTP clients: `axios`, `fetch`, `got`, `HttpClient`, `RestTemplate`, `reqwest`
20
+ - Database connections: connection pool configs, ORM initialization, query builders
21
+ - Message queues: RabbitMQ, Kafka, SQS, Redis pub/sub client initialization
22
+ - gRPC channels: proto client stubs, channel creation, dial options
23
+ - Third-party SDKs: Stripe, Twilio, SendGrid, AWS SDK calls
24
+
25
+ 2. **Map existing resilience patterns.** For each dependency found, check for:
26
+ - Circuit breakers: `opossum`, `cockatiel`, `Polly`, `resilience4j`, `hystrix` usage
27
+ - Retry logic: exponential backoff, jitter, max attempts configuration
28
+ - Timeouts: connection and request timeout settings
29
+ - Rate limiters: token bucket, sliding window, or fixed window implementations
30
+ - Bulkheads: thread pool isolation, semaphore limits, connection pool sizing
31
+ - Fallbacks: cache-aside patterns, default values, degraded responses
32
+
33
+ 3. **Detect anti-patterns.** Flag common resilience mistakes:
34
+ - Unbounded retries without backoff or max attempts
35
+ - Missing timeouts on HTTP clients or database queries
36
+ - Circuit breaker without a fallback handler
37
+ - Retry on non-idempotent operations (POST, DELETE without idempotency keys)
38
+ - Rate limiter with no monitoring or alerting on limit hits
39
+
40
+ 4. **Build the dependency map.** Produce a structured inventory:
41
+ - Dependency name, type (HTTP, gRPC, database, queue), criticality (critical, degraded, optional)
42
+ - Current resilience patterns applied (or "none")
43
+ - Identified gaps and anti-patterns
44
+
45
+ ---
46
+
47
+ ### Phase 2: ANALYZE -- Evaluate Failure Modes
48
+
49
+ 1. **Classify failure modes per dependency.** For each external dependency:
50
+ - **Timeout:** The dependency responds too slowly or not at all
51
+ - **Error burst:** The dependency returns errors at a rate above normal
52
+ - **Partial degradation:** The dependency responds but with reduced functionality
53
+ - **Total outage:** The dependency is completely unreachable
54
+ - **Data inconsistency:** The dependency returns stale or incorrect data
55
+
56
+ 2. **Assess blast radius.** For each failure mode:
57
+ - Which features become unavailable?
58
+ - Which downstream services are affected?
59
+ - What is the user-visible impact?
60
+ - Can the system continue to serve other requests?
61
+
62
+ 3. **Evaluate current coverage.** Score each dependency on resilience coverage:
63
+ - **Full:** Circuit breaker + retry + timeout + fallback + monitoring
64
+ - **Partial:** Some patterns present but gaps exist (e.g., retry without circuit breaker)
65
+ - **None:** No resilience patterns applied
66
+
67
+ 4. **Prioritize gaps by risk.** Combine criticality and coverage:
68
+ - Critical dependency with no resilience = P0 (immediate)
69
+ - Critical dependency with partial resilience = P1 (next sprint)
70
+ - Optional dependency with no resilience = P2 (backlog)
71
+ - Any dependency with anti-patterns = P0 (anti-patterns are active risks)
72
+
73
+ 5. **Check observability.** For existing patterns, verify they emit metrics:
74
+ - Circuit breaker state changes (open/half-open/closed)
75
+ - Retry attempt counts and final outcomes
76
+ - Rate limiter rejection counts
77
+ - Timeout occurrences
78
+
79
+ ---
80
+
81
+ ### Phase 3: DESIGN -- Recommend Resilience Patterns
82
+
83
+ 1. **Select patterns per dependency.** Based on the failure mode analysis:
84
+ - **HTTP APIs:** Circuit breaker (opossum/cockatiel) + exponential backoff with jitter + request timeout + fallback
85
+ - **Databases:** Connection pool sizing + query timeout + read replica fallback + bulkhead isolation
86
+ - **Message queues:** Dead letter queue + retry with backoff + idempotent consumers + circuit breaker on publish
87
+ - **gRPC services:** Deadline propagation + retry policy + load balancing + circuit breaker
88
+
89
+ 2. **Provide concrete configurations.** For each recommended pattern, specify:
90
+ - Library and version to use
91
+ - Configuration values with rationale (e.g., "timeout: 3000ms based on p99 latency of 1200ms with 2.5x headroom")
92
+ - Threshold values for circuit breakers (failure rate, sample window, reset timeout)
93
+ - Retry parameters (max attempts, base delay, max delay, jitter factor)
94
+ - Rate limits (requests per window, window size, burst allowance)
95
+
96
+ 3. **Design fallback strategies.** For each critical dependency:
97
+ - **Cache fallback:** Serve stale data from Redis/memory cache with a staleness indicator
98
+ - **Default fallback:** Return a safe default value with a degraded flag
99
+ - **Queue fallback:** Accept the request and process it asynchronously when the dependency recovers
100
+ - **Feature flag fallback:** Disable the feature entirely via feature flag
101
+
102
+ 4. **Generate implementation templates.** Produce code snippets for:
103
+ - Circuit breaker wrapping an existing HTTP client
104
+ - Retry middleware with exponential backoff and jitter
105
+ - Rate limiter middleware for Express/Fastify/NestJS
106
+ - Bulkhead pattern using semaphore or connection pool limits
107
+
108
+ 5. **Define health check contracts.** Specify how each dependency should be health-checked:
109
+ - Endpoint or query to use for liveness check
110
+ - Timeout for the health check itself
111
+ - Frequency and failure threshold before marking unhealthy
112
+
113
+ ---
114
+
115
+ ### Phase 4: VALIDATE -- Verify Implementation and Observability
116
+
117
+ 1. **Check pattern correctness.** For each implemented pattern:
118
+ - Circuit breaker: Verify threshold configuration, half-open behavior, and reset timeout
119
+ - Retry: Verify idempotency of retried operations, backoff curve, and max attempts
120
+ - Timeout: Verify timeout values are set on both client and server sides
121
+ - Rate limiter: Verify limit values, window type, and rejection response format
122
+
123
+ 2. **Verify test coverage.** Check that resilience patterns are tested:
124
+ - Circuit breaker tests: closed-to-open transition, open rejection, half-open recovery
125
+ - Retry tests: successful retry, max attempts exhaustion, non-retryable error bypass
126
+ - Timeout tests: timeout triggers fallback, timeout does not leak connections
127
+ - Rate limiter tests: under-limit passes, at-limit rejects, window reset behavior
128
+
129
+ 3. **Verify observability.** Confirm that metrics are emitted:
130
+ - Check for Prometheus counters/histograms or StatsD calls on pattern events
131
+ - Verify structured logging includes circuit breaker state, retry attempt number, and rate limit headers
132
+ - Confirm dashboard or alert configurations reference the new metrics
133
+
134
+ 4. **Produce the resilience report.** Output a summary:
135
+ - Number of dependencies analyzed
136
+ - Coverage before and after (percentage with full/partial/none resilience)
137
+ - Anti-patterns found and resolved
138
+ - Remaining gaps with priority and recommended timeline
139
+
140
+ 5. **Run integration verification.** If integration tests exist:
141
+ - Execute tests that exercise the resilience patterns (chaos test stubs, fault injection)
142
+ - Verify graceful degradation under simulated failure conditions
143
+ - Confirm that fallbacks produce acceptable user-facing responses
144
+
145
+ ---
146
+
147
+ ## Harness Integration
148
+
149
+ - **`harness skill run harness-resilience`** -- Primary CLI entry point. Runs all four phases.
150
+ - **`harness validate`** -- Run after implementing recommended patterns to verify project integrity.
151
+ - **`harness check-deps`** -- Verify that new resilience libraries are properly declared and within boundary rules.
152
+ - **`emit_interaction`** -- Used at pattern selection (checkpoint:decision) when multiple valid patterns exist and trade-offs require human judgment.
153
+ - **`Glob`** -- Discover HTTP clients, middleware chains, and existing resilience pattern files.
154
+ - **`Grep`** -- Search for timeout configurations, retry logic, circuit breaker initialization, and anti-patterns.
155
+ - **`Write`** -- Generate implementation templates and resilience configuration files.
156
+ - **`Edit`** -- Add resilience wrappers to existing service clients.
157
+
158
+ ## Success Criteria
159
+
160
+ - All external dependencies are inventoried with their resilience coverage level
161
+ - Anti-patterns are identified with specific file locations and line numbers
162
+ - Recommendations include concrete library versions and configuration values, not just pattern names
163
+ - Fallback strategies are defined for every critical dependency
164
+ - Implementation templates compile and follow the project's existing code style
165
+ - Observability is addressed: every pattern emits metrics or structured logs
166
+
167
+ ## Examples
168
+
169
+ ### Example: Express.js API with Stripe and PostgreSQL
170
+
171
+ ```
172
+ Phase 1: DETECT
173
+ Dependencies found:
174
+ - Stripe API (HTTP, critical): axios client in src/payments/stripe-client.ts
175
+ Resilience: timeout=5000ms, no retry, no circuit breaker, no fallback
176
+ - PostgreSQL (database, critical): pg pool in src/db/pool.ts
177
+ Resilience: pool max=20, no query timeout, no read replica fallback
178
+ - SendGrid (HTTP, optional): @sendgrid/mail in src/notifications/email.ts
179
+ Resilience: none
180
+
181
+ Anti-patterns:
182
+ - src/payments/stripe-client.ts:45 — retry on POST /charges without idempotency key
183
+ - src/db/pool.ts — no statement_timeout configured
184
+
185
+ Phase 2: ANALYZE
186
+ Stripe failure modes:
187
+ - Timeout: Payment page hangs, user retries, duplicate charges possible
188
+ - Outage: All payments fail, revenue impact immediate
189
+ - Blast radius: checkout flow, subscription renewal, refund processing
190
+ Risk: P0 (critical + partial coverage + anti-pattern)
191
+
192
+ Phase 3: DESIGN
193
+ Stripe recommendations:
194
+ - Add opossum circuit breaker: failureThreshold=50%, resetTimeout=30s
195
+ - Add idempotency key to all Stripe charge requests
196
+ - Set timeout to 8000ms (Stripe p99 is ~3s, 2.5x headroom)
197
+ - Fallback: queue payment for async retry via Bull queue
198
+ PostgreSQL recommendations:
199
+ - Set statement_timeout=5000 in pool config
200
+ - Add pg-pool error handler with connection retry
201
+ - Configure read replica for GET endpoints via pgBouncer
202
+
203
+ Phase 4: VALIDATE
204
+ Resilience coverage: 33% -> 100% (3/3 dependencies covered)
205
+ Anti-patterns resolved: 2/2
206
+ Tests needed: circuit breaker state transitions, idempotency key generation
207
+ ```
208
+
209
+ ### Example: NestJS Microservices with gRPC and Redis
210
+
211
+ ```
212
+ Phase 1: DETECT
213
+ Dependencies found:
214
+ - user-service (gRPC, critical): @grpc/grpc-js in src/clients/user.client.ts
215
+ Resilience: deadline=5s, no retry, no circuit breaker
216
+ - inventory-service (gRPC, critical): no resilience configured
217
+ - Redis (cache, degraded): ioredis in src/cache/redis.ts
218
+ Resilience: reconnectOnError, no bulkhead, no fallback
219
+
220
+ Phase 2: ANALYZE
221
+ inventory-service outage:
222
+ - Product pages return 503, search results empty
223
+ - Blast radius: catalog, search, cart validation
224
+ - Risk: P0 (critical + no coverage)
225
+
226
+ Phase 3: DESIGN
227
+ inventory-service recommendations:
228
+ - Add cockatiel circuit breaker with ConsecutiveBreaker(5)
229
+ - Add retry with exponentialBackoff(1000, 2) maxAttempts=3
230
+ - Add deadline propagation from gateway timeout
231
+ - Fallback: serve cached inventory from Redis with staleness header
232
+ Redis recommendations:
233
+ - Add bulkhead: maxPoolSize=50, separate pools for cache vs sessions
234
+ - Add fallback: in-memory LRU cache (lru-cache, max 1000 items)
235
+ - Monitor: emit redis.command.duration histogram
236
+
237
+ Phase 4: VALIDATE
238
+ Coverage: 33% -> 100%
239
+ Tests verified: gRPC circuit breaker opens after 5 failures,
240
+ Redis fallback serves from LRU when Redis is down
241
+ ```
242
+
243
+ ## Gates
244
+
245
+ - **No retry on non-idempotent operations without idempotency keys.** Retrying a POST or DELETE that lacks an idempotency mechanism can cause data duplication or data loss. This is a blocking finding. The operation must be made idempotent before retry logic is added.
246
+ - **No circuit breaker without a fallback.** A circuit breaker that opens and returns a raw error to the user is not resilience -- it is a different kind of failure. Every circuit breaker must have a defined fallback behavior (cache, default, queue, or feature flag).
247
+ - **No unbounded retries.** Retry logic must have a max attempt limit and use exponential backoff with jitter. Unbounded retries with fixed delays cause thundering herd problems and amplify failures.
248
+ - **No resilience pattern without observability.** A circuit breaker that opens silently is invisible to operations. Every pattern must emit metrics or structured logs that can trigger alerts.
249
+
250
+ ## Escalation
251
+
252
+ - **When a dependency has no documentation on failure behavior:** Report: "The [dependency] has no documented error codes or failure modes. Recommend contacting the provider for SLA details, or instrumenting the client to collect failure statistics over a 2-week baseline period."
253
+ - **When resilience patterns conflict with latency requirements:** Adding retries and circuit breakers increases tail latency. Report: "The recommended retry configuration adds up to [N]ms to worst-case latency. If the latency budget is [M]ms, consider reducing max attempts or using a hedged request pattern instead."
254
+ - **When the team has no experience with the recommended library:** Report: "The team has not used [library] before. Recommend starting with a single non-critical dependency as a pilot, with a production bake time of 2 weeks before rolling out to critical paths."
255
+ - **When existing resilience patterns use a different library than recommended:** Do not recommend switching libraries mid-project. Report: "The project already uses [existing library] for resilience. Recommend continuing with [existing library] for consistency, adapting the configuration recommendations to its API."
@@ -0,0 +1,76 @@
1
+ name: harness-resilience
2
+ version: "1.0.0"
3
+ description: Circuit breakers, rate limiting, bulkheads, retry patterns, and fault tolerance
4
+ cognitive_mode: advisory-guide
5
+ triggers:
6
+ - manual
7
+ - on_new_feature
8
+ - on_pr
9
+ platforms:
10
+ - claude-code
11
+ - gemini-cli
12
+ tools:
13
+ - Bash
14
+ - Read
15
+ - Write
16
+ - Edit
17
+ - Glob
18
+ - Grep
19
+ - emit_interaction
20
+ cli:
21
+ command: harness skill run harness-resilience
22
+ args:
23
+ - name: path
24
+ description: Project root path
25
+ required: false
26
+ - name: pattern
27
+ description: "Resilience pattern to focus on: circuit-breaker, rate-limit, bulkhead, retry, or all. Defaults to all."
28
+ required: false
29
+ - name: scope
30
+ description: "Analysis scope: full or changed-only. Defaults to changed-only on PRs."
31
+ required: false
32
+ mcp:
33
+ tool: run_skill
34
+ input:
35
+ skill: harness-resilience
36
+ path: string
37
+ type: rigid
38
+ tier: 3
39
+ internal: false
40
+ keywords:
41
+ - circuit breaker
42
+ - rate limiting
43
+ - bulkhead
44
+ - retry
45
+ - exponential backoff
46
+ - timeout
47
+ - fault tolerance
48
+ - graceful degradation
49
+ - fallback
50
+ - resilience
51
+ - Polly
52
+ - cockatiel
53
+ - opossum
54
+ stack_signals:
55
+ - "src/**/middleware/rate*"
56
+ - "src/**/*circuit*"
57
+ - "src/**/*retry*"
58
+ - "src/**/*resilience*"
59
+ - "src/**/middleware/timeout*"
60
+ phases:
61
+ - name: detect
62
+ description: Identify external dependencies, failure points, and existing resilience patterns
63
+ required: true
64
+ - name: analyze
65
+ description: Evaluate failure modes, blast radius, and gaps in current fault tolerance
66
+ required: true
67
+ - name: design
68
+ description: Recommend resilience patterns with concrete configuration values
69
+ required: true
70
+ - name: validate
71
+ description: Verify patterns are correctly implemented, tested, and observable
72
+ required: true
73
+ state:
74
+ persistent: false
75
+ files: []
76
+ depends_on: []
@@ -25,6 +25,7 @@ mcp:
25
25
  input:
26
26
  skill: harness-roadmap
27
27
  type: rigid
28
+ tier: 2
28
29
  phases:
29
30
  - name: scan
30
31
  description: Discover specs, plans, and existing roadmap state