@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,284 @@
1
+ # Harness Containerization
2
+
3
+ > Dockerfile review, Kubernetes manifest validation, and container optimization. Smaller images, safer containers, correct orchestration.
4
+
5
+ ## When to Use
6
+
7
+ - When reviewing Dockerfiles for image size, security, and layer efficiency
8
+ - When auditing Kubernetes manifests, Helm charts, or docker-compose files
9
+ - On PRs that modify container configuration files
10
+ - NOT for CI/CD pipeline design (use harness-deployment)
11
+ - NOT for infrastructure provisioning (use harness-infrastructure-as-code)
12
+ - NOT for application-level security review (use harness-security-review)
13
+
14
+ ## Process
15
+
16
+ ### Phase 1: SCAN -- Discover Container Configuration
17
+
18
+ 1. **Locate container files.** Search the project for container-related configuration:
19
+ - `Dockerfile`, `Dockerfile.*` (multi-target builds)
20
+ - `docker-compose.yml`, `docker-compose.*.yml` (override files)
21
+ - `.dockerignore`
22
+ - `k8s/`, `kubernetes/`, `manifests/` directories
23
+ - `helm/`, `charts/` directories
24
+ - `skaffold.yaml`, `tilt.json` (dev tooling)
25
+
26
+ 2. **Identify base images.** Parse each Dockerfile for FROM directives:
27
+ - Record base image name, tag, and digest (if pinned)
28
+ - Flag images using `latest` tag
29
+ - Flag images from untrusted registries
30
+ - Note multi-stage build structure (builder vs. runtime stages)
31
+
32
+ 3. **Inventory Kubernetes resources.** Parse manifest files and record:
33
+ - Resource types (Deployment, Service, ConfigMap, Secret, Ingress, HPA)
34
+ - Namespaces used
35
+ - Image references in pod specs
36
+ - Resource requests and limits
37
+ - Volume mounts and persistent volume claims
38
+
39
+ 4. **Detect Helm usage.** If Helm charts exist:
40
+ - Parse `Chart.yaml` for version and dependencies
41
+ - Parse `values.yaml` for configurable parameters
42
+ - Identify template files and their output resource types
43
+
44
+ 5. **Present scan summary:**
45
+
46
+ ```
47
+ Container Scan:
48
+ Dockerfiles: 2 (app, worker)
49
+ Compose files: 1 (docker-compose.yml + docker-compose.dev.yml)
50
+ K8s manifests: 8 resources across 2 namespaces
51
+ Helm charts: 1 (app chart with 3 subcharts)
52
+ Base images: node:20-alpine, python:3.12-slim
53
+ ```
54
+
55
+ ---
56
+
57
+ ### Phase 2: ANALYZE -- Evaluate Best Practices
58
+
59
+ 1. **Analyze Dockerfile layer efficiency.** Check each Dockerfile for:
60
+ - COPY/ADD placement relative to dependency installation (cache busting)
61
+ - Multi-stage builds separating build dependencies from runtime
62
+ - Layer count optimization (combining related RUN commands)
63
+ - Unnecessary files copied into the image (node_modules, .git, tests)
64
+ - `.dockerignore` completeness
65
+
66
+ 2. **Check container security posture.** Evaluate:
67
+ - Running as non-root user (USER directive present)
68
+ - No secrets in build args or environment variables
69
+ - Base image currency (is the tag reasonably current)
70
+ - HEALTHCHECK directive present
71
+ - Read-only filesystem where possible
72
+ - No privileged mode in compose or K8s specs
73
+ - Security contexts in Kubernetes pod specs (runAsNonRoot, readOnlyRootFilesystem)
74
+
75
+ 3. **Evaluate Kubernetes resource definitions.** For each Deployment/StatefulSet:
76
+ - Resource requests and limits are set (CPU and memory)
77
+ - Liveness and readiness probes are configured
78
+ - Pod disruption budgets exist for production workloads
79
+ - Horizontal pod autoscaler is configured where appropriate
80
+ - Image pull policy is set (Always for mutable tags, IfNotPresent for digests)
81
+
82
+ 4. **Analyze docker-compose configuration.** Check for:
83
+ - Service dependency ordering (depends_on with health checks)
84
+ - Volume mount correctness (host paths vs. named volumes)
85
+ - Network isolation between services
86
+ - Environment variable management (env_file vs. inline)
87
+ - Port mapping conflicts
88
+
89
+ 5. **Check image tag strategy.** Verify:
90
+ - Production images use immutable tags (semver or digest)
91
+ - Development images use descriptive tags (branch name, commit SHA)
92
+ - No `latest` tag in production manifests
93
+ - Registry URL is consistent across all references
94
+
95
+ ---
96
+
97
+ ### Phase 3: OPTIMIZE -- Recommend Improvements
98
+
99
+ 1. **Recommend image size reduction.** For each Dockerfile:
100
+ - Switch to minimal base images (alpine, distroless, scratch)
101
+ - Remove build-only dependencies in multi-stage builds
102
+ - Use `.dockerignore` to exclude test files, docs, and dev configs
103
+ - Estimate size savings for each recommendation
104
+
105
+ 2. **Recommend build performance improvements.**
106
+ - Reorder COPY directives to maximize layer cache hits
107
+ - Use BuildKit features (cache mounts for package managers)
108
+ - Split slow-changing layers (OS packages) from fast-changing layers (app code)
109
+ - Example for Node.js:
110
+
111
+ ```dockerfile
112
+ # Good: dependency layer cached separately
113
+ COPY package.json package-lock.json ./
114
+ RUN npm ci --production
115
+ COPY src/ ./src/
116
+ ```
117
+
118
+ 3. **Recommend Kubernetes improvements.**
119
+ - Add missing resource limits with reasonable defaults
120
+ - Configure probes with appropriate initial delays and periods
121
+ - Add pod anti-affinity for high-availability workloads
122
+ - Recommend namespace isolation for multi-tenant clusters
123
+ - Add network policies to restrict pod-to-pod communication
124
+
125
+ 4. **Recommend security hardening.**
126
+ - Add non-root USER directive with specific UID
127
+ - Add security context to Kubernetes pods
128
+ - Pin base images to digest for supply chain security
129
+ - Remove unnecessary capabilities (drop ALL, add only what is needed)
130
+
131
+ 5. **Generate optimization summary with estimated impact:**
132
+
133
+ ```
134
+ Optimization Summary:
135
+ Image size: 850MB -> ~180MB (switch to alpine + multi-stage)
136
+ Build time: ~4m -> ~2m (layer reordering + cache mounts)
137
+ Security: 3 findings (non-root, capabilities, image pinning)
138
+ K8s: 5 resources missing resource limits
139
+ ```
140
+
141
+ ---
142
+
143
+ ### Phase 4: VALIDATE -- Verify Configuration Correctness
144
+
145
+ 1. **Validate Dockerfile syntax.** Run `docker build --check` or parse for common errors:
146
+ - Invalid instruction ordering (e.g., CMD before COPY)
147
+ - Missing required arguments
148
+ - Deprecated instructions (MAINTAINER)
149
+ - Shell form vs. exec form for CMD/ENTRYPOINT
150
+
151
+ 2. **Validate Kubernetes manifests.** Check for:
152
+ - Valid YAML structure
153
+ - Required fields present (apiVersion, kind, metadata, spec)
154
+ - Label selectors match between Deployment and Service
155
+ - Port numbers are consistent across Service and container specs
156
+ - ConfigMap and Secret references resolve to existing resources
157
+
158
+ 3. **Validate Helm charts.** If Helm is used:
159
+ - `helm lint` passes
160
+ - Template rendering with default values produces valid manifests
161
+ - Values schema matches actual usage in templates
162
+ - Dependencies are declared and version-locked
163
+
164
+ 4. **Validate docker-compose.** Check for:
165
+ - Valid YAML and compose file version
166
+ - All referenced images exist or have build contexts
167
+ - Port mappings do not conflict
168
+ - Named volumes are declared in the top-level volumes section
169
+ - Networks are declared before use
170
+
171
+ 5. **Generate validation report:**
172
+
173
+ ```
174
+ Container Validation: [PASS/WARN/FAIL]
175
+
176
+ Dockerfiles: PASS (2/2 valid)
177
+ K8s manifests: WARN (label mismatch in worker-service.yaml)
178
+ Helm chart: PASS (lint clean)
179
+ Compose: PASS (valid structure)
180
+
181
+ Issues:
182
+ 1. k8s/worker-service.yaml: selector "app: worker" does not match
183
+ deployment label "app: worker-v2" -- requests will not route
184
+ ```
185
+
186
+ ---
187
+
188
+ ## Harness Integration
189
+
190
+ - **`harness skill run harness-containerization`** -- Primary invocation for container review.
191
+ - **`harness validate`** -- Run after configuration changes to verify project health.
192
+ - **`harness check-deps`** -- Verify container tooling dependencies are available.
193
+ - **`emit_interaction`** -- Present optimization recommendations and gather decisions.
194
+
195
+ ## Success Criteria
196
+
197
+ - All container configuration files in the project are discovered and cataloged
198
+ - Dockerfiles are analyzed for layer efficiency, security, and size
199
+ - Kubernetes manifests are validated for correctness and best practices
200
+ - Resource requests and limits are verified for all production workloads
201
+ - Image tag strategy is evaluated (no `latest` in production)
202
+ - Optimization recommendations include estimated impact
203
+
204
+ ## Examples
205
+
206
+ ### Example: Node.js Monorepo with Docker and Kubernetes
207
+
208
+ ```
209
+ Phase 1: SCAN
210
+ Found: Dockerfile (app), Dockerfile.worker, docker-compose.dev.yml
211
+ K8s: 12 manifests in k8s/ (2 Deployments, 2 Services, 2 ConfigMaps,
212
+ 2 HPA, 2 Ingress, 2 PDB)
213
+ Base images: node:20 (not alpine), node:20 (worker)
214
+
215
+ Phase 2: ANALYZE
216
+ Dockerfile issues:
217
+ - node:20 full image (940MB) -- use node:20-alpine (180MB)
218
+ - No .dockerignore -- node_modules and .git copied into image
219
+ - No USER directive -- running as root
220
+ - No HEALTHCHECK
221
+ K8s issues:
222
+ - worker deployment missing memory limits
223
+ - No network policies defined
224
+ - Liveness probe on /healthz but no readiness probe
225
+
226
+ Phase 3: OPTIMIZE
227
+ 1. Switch to node:20-alpine -- saves ~760MB per image
228
+ 2. Add .dockerignore with node_modules, .git, tests, docs
229
+ 3. Add multi-stage build: builder stage for npm ci, runtime for app
230
+ 4. Add USER node (UID 1000) after COPY
231
+ 5. Add readiness probe on /ready endpoint
232
+ 6. Add memory limit of 512Mi to worker deployment
233
+
234
+ Phase 4: VALIDATE
235
+ Dockerfiles: WARN (2 security findings, 1 size finding)
236
+ K8s manifests: WARN (missing limits, missing readiness probe)
237
+ Compose: PASS
238
+ Result: WARN -- 6 actionable improvements identified
239
+ ```
240
+
241
+ ### Example: Python FastAPI with Helm and Distroless
242
+
243
+ ```
244
+ Phase 1: SCAN
245
+ Found: Dockerfile (multi-stage with distroless runtime)
246
+ Helm chart: charts/api/ with values.yaml
247
+ Base images: python:3.12-slim (builder), gcr.io/distroless/python3 (runtime)
248
+
249
+ Phase 2: ANALYZE
250
+ Dockerfile: Well-structured multi-stage build
251
+ - Builder installs dependencies, runtime copies only venv
252
+ - Distroless base (no shell, minimal attack surface)
253
+ - Non-root user configured
254
+ Helm:
255
+ - Resource limits set in values.yaml
256
+ - Probes configured with appropriate timeouts
257
+ - HPA configured for 2-10 replicas
258
+
259
+ Phase 3: OPTIMIZE
260
+ Minor recommendations only:
261
+ - Pin distroless image to digest for reproducibility
262
+ - Add --mount=type=cache for pip downloads in builder stage
263
+ - Add pod anti-affinity to spread replicas across nodes
264
+
265
+ Phase 4: VALIDATE
266
+ Dockerfile: PASS
267
+ Helm lint: PASS
268
+ Template render: PASS (all values resolve)
269
+ Result: PASS -- well-configured container setup
270
+ ```
271
+
272
+ ## Gates
273
+
274
+ - **No `latest` tag in production manifests.** Production Kubernetes manifests or compose files using `latest` image tags are blocking findings. Immutable tags or digests are required.
275
+ - **No containers running as root in production.** Missing USER directive in Dockerfiles or missing security context in K8s pods targeting production are blocking findings.
276
+ - **No missing resource limits in production.** Kubernetes Deployments without CPU and memory limits are blocking warnings for production namespaces.
277
+ - **No invalid manifest references.** Label selector mismatches between Services and Deployments, or ConfigMap/Secret references to nonexistent resources, are blocking errors.
278
+
279
+ ## Escalation
280
+
281
+ - **When base images have known CVEs:** Flag the specific CVEs and recommend upgrading to a patched version. If no patched version exists, recommend an alternative base image and document the migration path.
282
+ - **When Kubernetes manifest complexity exceeds review scope:** For clusters with 50+ resources, recommend focusing on changed resources only (`--changed-only` flag) and scheduling a full audit separately.
283
+ - **When Helm chart dependencies are outdated:** Report the version gap and recommend updating. If the update includes breaking changes, flag it as a decision point and present the changelog.
284
+ - **When docker-compose is used for production:** Flag this as an architectural concern. Docker Compose is appropriate for development but production workloads should use an orchestrator (Kubernetes, ECS, Cloud Run). Present migration options.
@@ -0,0 +1,80 @@
1
+ name: harness-containerization
2
+ version: "1.0.0"
3
+ description: Dockerfile review, Kubernetes manifests, container registry management
4
+ cognitive_mode: meticulous-verifier
5
+ tier: 3
6
+ internal: false
7
+ keywords:
8
+ - Docker
9
+ - Dockerfile
10
+ - Kubernetes
11
+ - K8s
12
+ - container
13
+ - pod
14
+ - service
15
+ - deployment
16
+ - Helm
17
+ - registry
18
+ - image
19
+ - multi-stage
20
+ - docker-compose
21
+ stack_signals:
22
+ - "Dockerfile"
23
+ - "docker-compose.*"
24
+ - "k8s/"
25
+ - "kubernetes/"
26
+ - "helm/"
27
+ - "charts/"
28
+ - ".dockerignore"
29
+ - "skaffold.yaml"
30
+ triggers:
31
+ - manual
32
+ - on_pr
33
+ - on_commit
34
+ platforms:
35
+ - claude-code
36
+ - gemini-cli
37
+ tools:
38
+ - Bash
39
+ - Read
40
+ - Write
41
+ - Edit
42
+ - Glob
43
+ - Grep
44
+ - emit_interaction
45
+ cli:
46
+ command: harness skill run harness-containerization
47
+ args:
48
+ - name: path
49
+ description: Project root path
50
+ required: false
51
+ - name: scope
52
+ description: Scope of review (dockerfile, k8s, compose, all)
53
+ required: false
54
+ - name: fix
55
+ description: Auto-fix common issues (layer ordering, security)
56
+ type: boolean
57
+ required: false
58
+ mcp:
59
+ tool: run_skill
60
+ input:
61
+ skill: harness-containerization
62
+ path: string
63
+ type: rigid
64
+ phases:
65
+ - name: scan
66
+ description: Discover container configuration files and registry references
67
+ required: true
68
+ - name: analyze
69
+ description: Evaluate Dockerfiles, manifests, and compose files for best practices
70
+ required: true
71
+ - name: optimize
72
+ description: Recommend image size, layer, and security improvements
73
+ required: true
74
+ - name: validate
75
+ description: Verify configurations are correct and deployable
76
+ required: true
77
+ state:
78
+ persistent: false
79
+ files: []
80
+ depends_on: []
@@ -0,0 +1,274 @@
1
+ # Harness Data Pipeline
2
+
3
+ > Verify ETL/ELT pipeline quality, data contracts, idempotency, and test coverage. Analyzes DAG structure, transformation logic, and data quality checks across dbt, Airflow, Dagster, and Prefect pipelines.
4
+
5
+ ## When to Use
6
+
7
+ - When reviewing a PR that modifies pipeline definitions, DAGs, or transformation logic
8
+ - When adding new data sources or sinks to an existing pipeline
9
+ - When data quality issues surface and pipeline validation needs auditing
10
+ - NOT for database schema design or migration review (use harness-database)
11
+ - NOT for SQL query optimization within pipelines (use harness-sql-review)
12
+ - NOT for infrastructure provisioning of pipeline runners (use harness-infrastructure-as-code)
13
+
14
+ ## Process
15
+
16
+ ### Phase 1: DETECT -- Identify Pipeline Framework and Structure
17
+
18
+ 1. **Resolve project root.** Use provided path or cwd.
19
+
20
+ 2. **Detect pipeline framework.** Scan for framework indicators:
21
+ - **dbt:** `dbt_project.yml`, `profiles.yml`, `models/` with `.sql` files, `macros/`
22
+ - **Airflow:** `dags/` directory, files importing `from airflow`, `airflow.cfg`
23
+ - **Dagster:** `dagster/` directory, files importing `from dagster`, `workspace.yaml`
24
+ - **Prefect:** files importing `from prefect`, `prefect.yaml`, `flows/`
25
+ - **Custom:** `pipelines/`, `etl/`, `src/**/transforms/**` without known framework markers
26
+
27
+ 3. **Map DAG structure.** For the detected framework:
28
+ - **dbt:** Parse `ref()` and `source()` calls to build the model dependency graph
29
+ - **Airflow:** Parse `>>` operators and `set_downstream/set_upstream` calls to build task dependencies
30
+ - **Dagster:** Parse `@asset` decorators and `deps` parameters to build the asset graph
31
+ - **Prefect:** Parse `@flow` and `@task` decorators to build the flow graph
32
+
33
+ 4. **Identify data sources and sinks.** Catalog:
34
+ - Source systems (databases, APIs, file systems, message queues)
35
+ - Sink targets (data warehouses, data lakes, downstream services)
36
+ - Intermediate staging areas
37
+
38
+ 5. **Detect configuration.** Read pipeline configuration for:
39
+ - Schedule/cron definitions
40
+ - Retry policies and timeout settings
41
+ - Environment-specific overrides (dev, staging, production)
42
+ - Secret references and connection strings
43
+
44
+ 6. **Report detection summary:**
45
+ ```
46
+ Framework: dbt 1.7 + Airflow 2.8
47
+ Models: 45 dbt models (12 staging, 18 intermediate, 15 mart)
48
+ DAGs: 3 Airflow DAGs (daily-etl, hourly-metrics, weekly-reports)
49
+ Sources: 2 PostgreSQL databases, 1 S3 bucket, 1 Stripe API
50
+ Sinks: BigQuery (analytics warehouse)
51
+ ```
52
+
53
+ ---
54
+
55
+ ### Phase 2: ANALYZE -- Evaluate Pipeline Patterns
56
+
57
+ 1. **Check idempotency.** For each pipeline/model:
58
+ - Does the transformation produce the same result when run multiple times?
59
+ - Are there `INSERT` operations without corresponding `DELETE` or `MERGE` logic?
60
+ - Are dbt models using `incremental` materialization with proper `unique_key`?
61
+ - Do Airflow tasks use idempotent operators or handle re-runs gracefully?
62
+
63
+ 2. **Check error handling.** Evaluate:
64
+ - Are failed tasks retried with backoff? (Airflow: `retries`, `retry_delay`; Prefect: `retries`, `retry_delay_seconds`)
65
+ - Is there alerting on pipeline failure? (Slack, PagerDuty, email callbacks)
66
+ - Are partial failures handled? (Can the pipeline resume from the point of failure?)
67
+ - Are dead-letter queues or error tables configured for unprocessable records?
68
+
69
+ 3. **Check data contracts.** Verify schema enforcement:
70
+ - Are source schemas validated before transformation? (dbt: `source` tests; custom: schema validation)
71
+ - Are output schemas enforced? (dbt: `contracts`; custom: schema assertions)
72
+ - Are breaking changes to source schemas detected? (freshness checks, schema drift detection)
73
+ - Are there column-level descriptions and documentation?
74
+
75
+ 4. **Check pipeline dependencies.** Analyze the DAG for:
76
+ - Circular dependencies (error: pipeline cannot complete)
77
+ - Overly long critical paths (warning: bottleneck risk)
78
+ - Disconnected subgraphs (info: may indicate orphaned pipelines)
79
+ - Fan-out bottlenecks (one task blocking many downstream tasks)
80
+
81
+ 5. **Check freshness and SLAs.** Evaluate:
82
+ - Are `freshness` checks defined for sources? (dbt: `loaded_at_field`, `warn_after`, `error_after`)
83
+ - Are pipeline SLAs defined? (Airflow: `sla` parameter)
84
+ - Do SLAs match business requirements?
85
+ - Is there monitoring for SLA breaches?
86
+
87
+ 6. **Classify findings by severity:**
88
+ - **Error:** Non-idempotent writes, circular dependencies, missing error handling for production DAGs
89
+ - **Warning:** Missing freshness checks, no retry policy, missing data contracts
90
+ - **Info:** Undocumented models, missing column descriptions, suboptimal materialization strategy
91
+
92
+ ---
93
+
94
+ ### Phase 3: VALIDATE -- Check Data Quality and Test Coverage
95
+
96
+ 1. **Audit existing data tests.** For each framework:
97
+ - **dbt:** Count tests per model (`unique`, `not_null`, `accepted_values`, `relationships`, custom)
98
+ - **Airflow:** Check for data validation tasks in DAGs
99
+ - **Dagster:** Check for `@asset_check` decorators and `check_specs`
100
+ - **Custom:** Look for assertion functions, validation scripts, or test files
101
+
102
+ 2. **Calculate test coverage.** Measure:
103
+ - Models/tasks with zero tests (critical gap)
104
+ - Models with only generic tests (not_null, unique) but no business logic tests
105
+ - Primary key coverage: does every model test uniqueness on its grain?
106
+ - Referential integrity: are foreign key relationships tested?
107
+
108
+ 3. **Check for missing critical tests.** Flag models that should have specific tests:
109
+ - Revenue/financial models: must have row count variance checks and sum validation
110
+ - User-facing models: must have not_null on required display fields
111
+ - Incremental models: must have uniqueness test on the incremental key
112
+ - Models with `WHERE` clauses: must have tests verifying the filter logic
113
+
114
+ 4. **Validate pipeline testability.** Assess:
115
+ - Can pipelines run in a test environment with mock data?
116
+ - Are there integration tests that run the full pipeline on sample datasets?
117
+ - Is there a CI pipeline that runs dbt tests / DAG validation on every PR?
118
+
119
+ 5. **Check for data quality patterns:**
120
+ - Row count anomaly detection (sudden drops or spikes)
121
+ - Schema drift detection (new columns, type changes)
122
+ - Null rate monitoring (percentage of nulls exceeding threshold)
123
+ - Value distribution monitoring (categorical values outside expected set)
124
+
125
+ ---
126
+
127
+ ### Phase 4: DOCUMENT -- Generate Pipeline Documentation
128
+
129
+ 1. **Generate pipeline lineage report.** Produce a text-based lineage visualization:
130
+
131
+ ```
132
+ source.stripe.payments
133
+ -> stg_payments (staging, view)
134
+ -> int_payments_enriched (intermediate, table)
135
+ -> mart_revenue_daily (mart, incremental)
136
+ -> [exposed to: Looker dashboard, finance API]
137
+ ```
138
+
139
+ 2. **Generate quality check report.** Summarize test coverage and findings:
140
+
141
+ ```
142
+ Pipeline Quality Report: [PASS/NEEDS_ATTENTION/FAIL]
143
+ Models: 45 total
144
+ Test coverage: 78% (35/45 models have tests)
145
+ Critical gaps: 3 models with zero tests (mart_revenue_daily, stg_users, int_orders)
146
+ Data contracts: 12/15 mart models have contracts
147
+ Freshness checks: 4/6 sources have freshness monitoring
148
+
149
+ ERRORS:
150
+ [DP-ERR-001] models/marts/mart_revenue_daily.sql
151
+ Non-idempotent: uses INSERT without MERGE or DELETE+INSERT pattern
152
+ [DP-ERR-002] dags/daily_etl.py
153
+ No retry policy: tasks will not retry on transient failures
154
+
155
+ WARNINGS:
156
+ [DP-WARN-001] models/staging/stg_users.sql
157
+ Zero tests: no data quality checks on user staging model
158
+ [DP-WARN-002] sources.yml
159
+ Missing freshness: stripe.payments source has no freshness check
160
+ ```
161
+
162
+ 3. **Generate missing documentation.** For undocumented models:
163
+ - Create `schema.yml` entries with inferred column descriptions
164
+ - Add model descriptions based on SQL logic analysis
165
+ - Document source-to-mart lineage
166
+
167
+ 4. **Produce remediation checklist.** Prioritized list of actions:
168
+
169
+ ```
170
+ Priority 1 (errors):
171
+ [ ] Fix mart_revenue_daily to use MERGE for idempotency
172
+ [ ] Add retry policy to daily_etl DAG tasks
173
+
174
+ Priority 2 (warnings):
175
+ [ ] Add not_null and unique tests to stg_users
176
+ [ ] Add freshness check to stripe.payments source
177
+
178
+ Priority 3 (info):
179
+ [ ] Add column descriptions to 12 undocumented models
180
+ [ ] Document the weekly-reports DAG purpose and schedule
181
+ ```
182
+
183
+ ---
184
+
185
+ ## Harness Integration
186
+
187
+ - **`harness skill run harness-data-pipeline`** -- Primary command for pipeline quality auditing.
188
+ - **`harness validate`** -- Run after applying pipeline changes to verify project health.
189
+ - **`Glob`** -- Used to locate DAG files, model definitions, configuration files, and test specifications.
190
+ - **`Grep`** -- Used to find `ref()` calls, `source()` references, operator chains, and test definitions.
191
+ - **`Read`** -- Used to read pipeline definitions, SQL models, configuration files, and test results.
192
+ - **`Write`** -- Used to generate documentation stubs, schema.yml entries, and quality reports.
193
+ - **`Bash`** -- Used to run `dbt ls`, `dbt test --dry-run`, or parse DAG structures.
194
+ - **`emit_interaction`** -- Used to present the quality report and confirm remediation priorities.
195
+
196
+ ## Success Criteria
197
+
198
+ - Pipeline framework is correctly detected with full DAG structure mapped
199
+ - Every model/task is evaluated for idempotency, error handling, and data contracts
200
+ - Test coverage percentage is calculated with critical gaps identified
201
+ - Lineage is documented from source to mart/exposure
202
+ - Findings are classified by severity with specific remediation steps
203
+ - Quality report follows structured format suitable for team review
204
+
205
+ ## Examples
206
+
207
+ ### Example: dbt Project with BigQuery Warehouse
208
+
209
+ ```
210
+ Phase 1: DETECT
211
+ Framework: dbt 1.7.4 (dbt-bigquery adapter)
212
+ Models: 52 (15 staging, 22 intermediate, 15 mart)
213
+ Sources: 3 (PostgreSQL replica, Stripe API via Fivetran, Google Sheets)
214
+ Target: BigQuery dataset `analytics`
215
+
216
+ Phase 2: ANALYZE
217
+ [DP-ERR-001] models/marts/mart_subscriptions.sql
218
+ Incremental model missing unique_key -- will create duplicates on re-run
219
+ [DP-WARN-001] 4 sources missing freshness checks
220
+ [DP-WARN-002] No retry configuration in dbt Cloud job settings
221
+
222
+ Phase 3: VALIDATE
223
+ Test coverage: 71% (37/52 models)
224
+ Critical gaps: mart_revenue (no tests), mart_subscriptions (no uniqueness test)
225
+ Primary key coverage: 80% (missing on 3 intermediate models)
226
+
227
+ Phase 4: DOCUMENT
228
+ Generated: lineage report for all 52 models
229
+ Generated: schema.yml stubs for 8 undocumented models
230
+ Quality Report: NEEDS_ATTENTION (1 error, 4 warnings)
231
+ ```
232
+
233
+ ### Example: Airflow DAGs with S3-to-Snowflake Pipeline
234
+
235
+ ```
236
+ Phase 1: DETECT
237
+ Framework: Apache Airflow 2.8.1
238
+ DAGs: 5 (s3_ingest_daily, transform_orders, aggregate_metrics, export_reports, cleanup)
239
+ Sources: S3 buckets (raw-events, partner-feeds), PostgreSQL
240
+ Sinks: Snowflake (ANALYTICS schema), S3 (processed-exports)
241
+
242
+ Phase 2: ANALYZE
243
+ [DP-ERR-001] dags/s3_ingest_daily.py
244
+ S3KeySensor has no timeout -- will block the scheduler indefinitely
245
+ [DP-ERR-002] dags/transform_orders.py
246
+ PythonOperator writes to Snowflake without transaction -- partial writes on failure
247
+ [DP-WARN-001] dags/cleanup.py
248
+ No SLA defined -- cleanup failures could go unnoticed for days
249
+ [DP-INFO-001] All DAGs use default_args but 2 override retries to 0
250
+
251
+ Phase 3: VALIDATE
252
+ DAG validation: all 5 parse without errors
253
+ Data validation tasks: present in 3/5 DAGs
254
+ Missing: no validation in s3_ingest_daily (raw data accepted without checks)
255
+
256
+ Phase 4: DOCUMENT
257
+ Generated: DAG dependency diagram
258
+ Generated: runbook for each DAG with schedule, dependencies, and failure recovery
259
+ Quality Report: FAIL (2 errors requiring immediate attention)
260
+ ```
261
+
262
+ ## Gates
263
+
264
+ - **No approving non-idempotent production pipelines.** If a pipeline writes data without MERGE, upsert, or delete-then-insert patterns, it is flagged as an error. Non-idempotent pipelines cause data duplication on re-runs.
265
+ - **No ignoring circular dependencies.** Circular dependencies in the DAG mean the pipeline cannot complete. This is always an error, never a warning.
266
+ - **No passing pipelines with zero test coverage on financial models.** Models that feed revenue reports, billing, or financial dashboards must have data quality tests. Zero coverage on these models is an error.
267
+ - **No generating documentation that misrepresents lineage.** If the lineage cannot be confidently traced (e.g., dynamic SQL, runtime-generated table names), mark it as "unresolved" rather than guessing.
268
+
269
+ ## Escalation
270
+
271
+ - **When pipeline logic uses dynamic SQL or runtime table names:** Flag that lineage cannot be statically analyzed: "This model uses `{{ var('target_table') }}` which resolves at runtime. Manual lineage documentation is required."
272
+ - **When data quality issues indicate upstream source problems:** Do not attempt to fix source data. Report: "Source `stripe.payments` has 15% null `customer_id` values. This is a source data quality issue -- coordinate with the data provider."
273
+ - **When pipeline SLAs conflict with infrastructure capacity:** If the pipeline takes longer than its schedule interval, flag the scheduling conflict: "daily_etl takes ~4 hours but is scheduled every 2 hours. This will cause overlapping runs."
274
+ - **When migration from one framework to another is in progress:** If both Airflow and Dagster artifacts exist, ask for clarification rather than analyzing both: "Found both Airflow DAGs and Dagster assets. Which framework should be audited? Is a migration in progress?"