@harness-engineering/cli 1.15.0 → 1.16.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 (495) hide show
  1. package/dist/agents/commands/codex/AGENTS.md +39 -0
  2. package/dist/agents/commands/codex/harness/add-harness-component/SKILL.md +195 -0
  3. package/dist/agents/commands/codex/harness/add-harness-component/agents/openai.yaml +3 -0
  4. package/dist/agents/commands/codex/harness/cleanup-dead-code/SKILL.md +248 -0
  5. package/dist/agents/commands/codex/harness/cleanup-dead-code/agents/openai.yaml +3 -0
  6. package/dist/agents/commands/codex/harness/detect-doc-drift/SKILL.md +182 -0
  7. package/dist/agents/commands/codex/harness/detect-doc-drift/agents/openai.yaml +3 -0
  8. package/dist/agents/commands/codex/harness/enforce-architecture/SKILL.md +299 -0
  9. package/dist/agents/commands/codex/harness/enforce-architecture/agents/openai.yaml +3 -0
  10. package/dist/agents/commands/codex/harness/harness-architecture-advisor/SKILL.md +452 -0
  11. package/dist/agents/commands/codex/harness/harness-architecture-advisor/agents/openai.yaml +3 -0
  12. package/dist/agents/commands/codex/harness/harness-autopilot/SKILL.md +919 -0
  13. package/dist/agents/commands/codex/harness/harness-autopilot/agents/openai.yaml +3 -0
  14. package/dist/agents/commands/codex/harness/harness-brainstorming/SKILL.md +409 -0
  15. package/dist/agents/commands/codex/harness/harness-brainstorming/agents/openai.yaml +3 -0
  16. package/dist/agents/commands/codex/harness/harness-code-review/SKILL.md +860 -0
  17. package/dist/agents/commands/codex/harness/harness-code-review/agents/openai.yaml +3 -0
  18. package/dist/agents/commands/codex/harness/harness-codebase-cleanup/SKILL.md +227 -0
  19. package/dist/agents/commands/codex/harness/harness-codebase-cleanup/agents/openai.yaml +3 -0
  20. package/dist/agents/commands/codex/harness/harness-debugging/SKILL.md +369 -0
  21. package/dist/agents/commands/codex/harness/harness-debugging/agents/openai.yaml +3 -0
  22. package/dist/agents/commands/codex/harness/harness-dependency-health/SKILL.md +182 -0
  23. package/dist/agents/commands/codex/harness/harness-dependency-health/agents/openai.yaml +3 -0
  24. package/dist/agents/commands/codex/harness/harness-docs-pipeline/SKILL.md +463 -0
  25. package/dist/agents/commands/codex/harness/harness-docs-pipeline/agents/openai.yaml +3 -0
  26. package/dist/agents/commands/codex/harness/harness-execution/SKILL.md +513 -0
  27. package/dist/agents/commands/codex/harness/harness-execution/agents/openai.yaml +3 -0
  28. package/dist/agents/commands/codex/harness/harness-hotspot-detector/SKILL.md +164 -0
  29. package/dist/agents/commands/codex/harness/harness-hotspot-detector/agents/openai.yaml +3 -0
  30. package/dist/agents/commands/codex/harness/harness-impact-analysis/SKILL.md +187 -0
  31. package/dist/agents/commands/codex/harness/harness-impact-analysis/agents/openai.yaml +3 -0
  32. package/dist/agents/commands/codex/harness/harness-integrity/SKILL.md +170 -0
  33. package/dist/agents/commands/codex/harness/harness-integrity/agents/openai.yaml +3 -0
  34. package/dist/agents/commands/codex/harness/harness-onboarding/SKILL.md +291 -0
  35. package/dist/agents/commands/codex/harness/harness-onboarding/agents/openai.yaml +3 -0
  36. package/dist/agents/commands/codex/harness/harness-perf/SKILL.md +263 -0
  37. package/dist/agents/commands/codex/harness/harness-perf/agents/openai.yaml +3 -0
  38. package/dist/agents/commands/codex/harness/harness-planning/SKILL.md +582 -0
  39. package/dist/agents/commands/codex/harness/harness-planning/agents/openai.yaml +3 -0
  40. package/dist/agents/commands/codex/harness/harness-refactoring/SKILL.md +172 -0
  41. package/dist/agents/commands/codex/harness/harness-refactoring/agents/openai.yaml +3 -0
  42. package/dist/agents/commands/codex/harness/harness-release-readiness/SKILL.md +692 -0
  43. package/dist/agents/commands/codex/harness/harness-release-readiness/agents/openai.yaml +3 -0
  44. package/dist/agents/commands/codex/harness/harness-roadmap/SKILL.md +598 -0
  45. package/dist/agents/commands/codex/harness/harness-roadmap/agents/openai.yaml +3 -0
  46. package/dist/agents/commands/codex/harness/harness-security-scan/SKILL.md +157 -0
  47. package/dist/agents/commands/codex/harness/harness-security-scan/agents/openai.yaml +3 -0
  48. package/dist/agents/commands/codex/harness/harness-skill-authoring/SKILL.md +295 -0
  49. package/dist/agents/commands/codex/harness/harness-skill-authoring/agents/openai.yaml +3 -0
  50. package/dist/agents/commands/codex/harness/harness-soundness-review/SKILL.md +1270 -0
  51. package/dist/agents/commands/codex/harness/harness-soundness-review/agents/openai.yaml +3 -0
  52. package/dist/agents/commands/codex/harness/harness-supply-chain-audit/SKILL.md +247 -0
  53. package/dist/agents/commands/codex/harness/harness-supply-chain-audit/agents/openai.yaml +3 -0
  54. package/dist/agents/commands/codex/harness/harness-tdd/SKILL.md +180 -0
  55. package/dist/agents/commands/codex/harness/harness-tdd/agents/openai.yaml +3 -0
  56. package/dist/agents/commands/codex/harness/harness-test-advisor/SKILL.md +163 -0
  57. package/dist/agents/commands/codex/harness/harness-test-advisor/agents/openai.yaml +3 -0
  58. package/dist/agents/commands/codex/harness/harness-verification/SKILL.md +424 -0
  59. package/dist/agents/commands/codex/harness/harness-verification/agents/openai.yaml +3 -0
  60. package/dist/agents/commands/codex/harness/harness-verify/SKILL.md +162 -0
  61. package/dist/agents/commands/codex/harness/harness-verify/agents/openai.yaml +3 -0
  62. package/dist/agents/commands/codex/harness/initialize-harness-project/SKILL.md +235 -0
  63. package/dist/agents/commands/codex/harness/initialize-harness-project/agents/openai.yaml +3 -0
  64. package/dist/agents/commands/cursor/harness/add-harness-component.mdc +200 -0
  65. package/dist/agents/commands/cursor/harness/cleanup-dead-code.mdc +253 -0
  66. package/dist/agents/commands/cursor/harness/detect-doc-drift.mdc +187 -0
  67. package/dist/agents/commands/cursor/harness/enforce-architecture.mdc +304 -0
  68. package/dist/agents/commands/cursor/harness/harness-architecture-advisor.mdc +457 -0
  69. package/dist/agents/commands/cursor/harness/harness-autopilot.mdc +924 -0
  70. package/dist/agents/commands/cursor/harness/harness-brainstorming.mdc +414 -0
  71. package/dist/agents/commands/cursor/harness/harness-code-review.mdc +865 -0
  72. package/dist/agents/commands/cursor/harness/harness-codebase-cleanup.mdc +232 -0
  73. package/dist/agents/commands/cursor/harness/harness-debugging.mdc +374 -0
  74. package/dist/agents/commands/cursor/harness/harness-dependency-health.mdc +187 -0
  75. package/dist/agents/commands/cursor/harness/harness-docs-pipeline.mdc +468 -0
  76. package/dist/agents/commands/cursor/harness/harness-execution.mdc +518 -0
  77. package/dist/agents/commands/cursor/harness/harness-hotspot-detector.mdc +169 -0
  78. package/dist/agents/commands/cursor/harness/harness-impact-analysis.mdc +192 -0
  79. package/dist/agents/commands/cursor/harness/harness-integrity.mdc +175 -0
  80. package/dist/agents/commands/cursor/harness/harness-onboarding.mdc +296 -0
  81. package/dist/agents/commands/cursor/harness/harness-perf.mdc +268 -0
  82. package/dist/agents/commands/cursor/harness/harness-planning.mdc +587 -0
  83. package/dist/agents/commands/cursor/harness/harness-refactoring.mdc +177 -0
  84. package/dist/agents/commands/cursor/harness/harness-release-readiness.mdc +697 -0
  85. package/dist/agents/commands/cursor/harness/harness-roadmap.mdc +603 -0
  86. package/dist/agents/commands/cursor/harness/harness-security-scan.mdc +162 -0
  87. package/dist/agents/commands/cursor/harness/harness-skill-authoring.mdc +300 -0
  88. package/dist/agents/commands/cursor/harness/harness-soundness-review.mdc +1275 -0
  89. package/dist/agents/commands/cursor/harness/harness-supply-chain-audit.mdc +252 -0
  90. package/dist/agents/commands/cursor/harness/harness-tdd.mdc +185 -0
  91. package/dist/agents/commands/cursor/harness/harness-test-advisor.mdc +168 -0
  92. package/dist/agents/commands/cursor/harness/harness-verification.mdc +429 -0
  93. package/dist/agents/commands/cursor/harness/harness-verify.mdc +167 -0
  94. package/dist/agents/commands/cursor/harness/initialize-harness-project.mdc +240 -0
  95. package/dist/agents/skills/claude-code/enforce-architecture/SKILL.md +52 -0
  96. package/dist/agents/skills/claude-code/harness-api-design/SKILL.md +52 -0
  97. package/dist/agents/skills/claude-code/harness-architecture-advisor/SKILL.md +52 -0
  98. package/dist/agents/skills/claude-code/harness-auth/SKILL.md +52 -0
  99. package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +123 -14
  100. package/dist/agents/skills/claude-code/harness-autopilot/skill.yaml +6 -0
  101. package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +97 -3
  102. package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +6 -0
  103. package/dist/agents/skills/claude-code/harness-codebase-cleanup/SKILL.md +2 -4
  104. package/dist/agents/skills/claude-code/harness-database/SKILL.md +52 -0
  105. package/dist/agents/skills/claude-code/harness-deployment/SKILL.md +52 -0
  106. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +99 -3
  107. package/dist/agents/skills/claude-code/harness-planning/skill.yaml +6 -0
  108. package/dist/agents/skills/claude-code/harness-pre-commit-review/SKILL.md +1 -1
  109. package/dist/agents/skills/claude-code/harness-security-review/SKILL.md +27 -7
  110. package/dist/agents/skills/claude-code/harness-security-scan/SKILL.md +52 -0
  111. package/dist/agents/skills/claude-code/harness-supply-chain-audit/SKILL.md +281 -0
  112. package/dist/agents/skills/claude-code/harness-supply-chain-audit/skill.yaml +51 -0
  113. package/dist/agents/skills/codex/add-harness-component/SKILL.md +192 -0
  114. package/dist/agents/skills/codex/add-harness-component/skill.yaml +33 -0
  115. package/dist/agents/skills/codex/align-documentation/SKILL.md +213 -0
  116. package/dist/agents/skills/codex/align-documentation/skill.yaml +32 -0
  117. package/dist/agents/skills/codex/check-mechanical-constraints/SKILL.md +191 -0
  118. package/dist/agents/skills/codex/check-mechanical-constraints/skill.yaml +33 -0
  119. package/dist/agents/skills/codex/cleanup-dead-code/SKILL.md +245 -0
  120. package/dist/agents/skills/codex/cleanup-dead-code/skill.yaml +34 -0
  121. package/dist/agents/skills/codex/detect-doc-drift/SKILL.md +179 -0
  122. package/dist/agents/skills/codex/detect-doc-drift/skill.yaml +31 -0
  123. package/dist/agents/skills/codex/enforce-architecture/SKILL.md +296 -0
  124. package/dist/agents/skills/codex/enforce-architecture/skill.yaml +35 -0
  125. package/dist/agents/skills/codex/harness-accessibility/SKILL.md +281 -0
  126. package/dist/agents/skills/codex/harness-accessibility/skill.yaml +52 -0
  127. package/dist/agents/skills/codex/harness-api-design/SKILL.md +356 -0
  128. package/dist/agents/skills/codex/harness-api-design/skill.yaml +74 -0
  129. package/dist/agents/skills/codex/harness-architecture-advisor/SKILL.md +449 -0
  130. package/dist/agents/skills/codex/harness-architecture-advisor/skill.yaml +49 -0
  131. package/dist/agents/skills/codex/harness-auth/SKILL.md +331 -0
  132. package/dist/agents/skills/codex/harness-auth/skill.yaml +81 -0
  133. package/dist/agents/skills/codex/harness-autopilot/SKILL.md +916 -0
  134. package/dist/agents/skills/codex/harness-autopilot/skill.yaml +67 -0
  135. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +406 -0
  136. package/dist/agents/skills/codex/harness-brainstorming/skill.yaml +50 -0
  137. package/dist/agents/skills/codex/harness-caching/SKILL.md +309 -0
  138. package/dist/agents/skills/codex/harness-caching/skill.yaml +73 -0
  139. package/dist/agents/skills/codex/harness-chaos/SKILL.md +295 -0
  140. package/dist/agents/skills/codex/harness-chaos/skill.yaml +72 -0
  141. package/dist/agents/skills/codex/harness-code-review/SKILL.md +857 -0
  142. package/dist/agents/skills/codex/harness-code-review/skill.yaml +52 -0
  143. package/dist/agents/skills/codex/harness-codebase-cleanup/SKILL.md +224 -0
  144. package/dist/agents/skills/codex/harness-codebase-cleanup/skill.yaml +65 -0
  145. package/dist/agents/skills/codex/harness-compliance/SKILL.md +303 -0
  146. package/dist/agents/skills/codex/harness-compliance/skill.yaml +78 -0
  147. package/dist/agents/skills/codex/harness-containerization/SKILL.md +284 -0
  148. package/dist/agents/skills/codex/harness-containerization/skill.yaml +80 -0
  149. package/dist/agents/skills/codex/harness-data-pipeline/SKILL.md +274 -0
  150. package/dist/agents/skills/codex/harness-data-pipeline/skill.yaml +81 -0
  151. package/dist/agents/skills/codex/harness-data-validation/SKILL.md +343 -0
  152. package/dist/agents/skills/codex/harness-data-validation/skill.yaml +75 -0
  153. package/dist/agents/skills/codex/harness-database/SKILL.md +310 -0
  154. package/dist/agents/skills/codex/harness-database/skill.yaml +80 -0
  155. package/dist/agents/skills/codex/harness-debugging/SKILL.md +366 -0
  156. package/dist/agents/skills/codex/harness-debugging/skill.yaml +48 -0
  157. package/dist/agents/skills/codex/harness-dependency-health/SKILL.md +179 -0
  158. package/dist/agents/skills/codex/harness-dependency-health/skill.yaml +42 -0
  159. package/dist/agents/skills/codex/harness-deployment/SKILL.md +307 -0
  160. package/dist/agents/skills/codex/harness-deployment/skill.yaml +77 -0
  161. package/dist/agents/skills/codex/harness-design/SKILL.md +265 -0
  162. package/dist/agents/skills/codex/harness-design/skill.yaml +54 -0
  163. package/dist/agents/skills/codex/harness-design-mobile/SKILL.md +336 -0
  164. package/dist/agents/skills/codex/harness-design-mobile/skill.yaml +50 -0
  165. package/dist/agents/skills/codex/harness-design-system/SKILL.md +282 -0
  166. package/dist/agents/skills/codex/harness-design-system/skill.yaml +51 -0
  167. package/dist/agents/skills/codex/harness-design-web/SKILL.md +360 -0
  168. package/dist/agents/skills/codex/harness-design-web/skill.yaml +53 -0
  169. package/dist/agents/skills/codex/harness-diagnostics/SKILL.md +318 -0
  170. package/dist/agents/skills/codex/harness-diagnostics/skill.yaml +51 -0
  171. package/dist/agents/skills/codex/harness-docs-pipeline/SKILL.md +460 -0
  172. package/dist/agents/skills/codex/harness-docs-pipeline/skill.yaml +70 -0
  173. package/dist/agents/skills/codex/harness-dx/SKILL.md +276 -0
  174. package/dist/agents/skills/codex/harness-dx/skill.yaml +76 -0
  175. package/dist/agents/skills/codex/harness-e2e/SKILL.md +245 -0
  176. package/dist/agents/skills/codex/harness-e2e/skill.yaml +78 -0
  177. package/dist/agents/skills/codex/harness-event-driven/SKILL.md +280 -0
  178. package/dist/agents/skills/codex/harness-event-driven/skill.yaml +77 -0
  179. package/dist/agents/skills/codex/harness-execution/SKILL.md +510 -0
  180. package/dist/agents/skills/codex/harness-execution/skill.yaml +52 -0
  181. package/dist/agents/skills/codex/harness-feature-flags/SKILL.md +287 -0
  182. package/dist/agents/skills/codex/harness-feature-flags/skill.yaml +74 -0
  183. package/dist/agents/skills/codex/harness-git-workflow/SKILL.md +268 -0
  184. package/dist/agents/skills/codex/harness-git-workflow/skill.yaml +32 -0
  185. package/dist/agents/skills/codex/harness-hotspot-detector/SKILL.md +161 -0
  186. package/dist/agents/skills/codex/harness-hotspot-detector/skill.yaml +45 -0
  187. package/dist/agents/skills/codex/harness-i18n/SKILL.md +484 -0
  188. package/dist/agents/skills/codex/harness-i18n/skill.yaml +55 -0
  189. package/dist/agents/skills/codex/harness-i18n-process/SKILL.md +388 -0
  190. package/dist/agents/skills/codex/harness-i18n-process/skill.yaml +44 -0
  191. package/dist/agents/skills/codex/harness-i18n-workflow/SKILL.md +512 -0
  192. package/dist/agents/skills/codex/harness-i18n-workflow/skill.yaml +54 -0
  193. package/dist/agents/skills/codex/harness-impact-analysis/SKILL.md +184 -0
  194. package/dist/agents/skills/codex/harness-impact-analysis/skill.yaml +45 -0
  195. package/dist/agents/skills/codex/harness-incident-response/SKILL.md +223 -0
  196. package/dist/agents/skills/codex/harness-incident-response/skill.yaml +78 -0
  197. package/dist/agents/skills/codex/harness-infrastructure-as-code/SKILL.md +279 -0
  198. package/dist/agents/skills/codex/harness-infrastructure-as-code/skill.yaml +80 -0
  199. package/dist/agents/skills/codex/harness-integration-test/SKILL.md +271 -0
  200. package/dist/agents/skills/codex/harness-integration-test/skill.yaml +73 -0
  201. package/dist/agents/skills/codex/harness-integrity/SKILL.md +167 -0
  202. package/dist/agents/skills/codex/harness-integrity/skill.yaml +48 -0
  203. package/dist/agents/skills/codex/harness-knowledge-mapper/SKILL.md +195 -0
  204. package/dist/agents/skills/codex/harness-knowledge-mapper/skill.yaml +50 -0
  205. package/dist/agents/skills/codex/harness-load-testing/SKILL.md +274 -0
  206. package/dist/agents/skills/codex/harness-load-testing/skill.yaml +79 -0
  207. package/dist/agents/skills/codex/harness-ml-ops/SKILL.md +341 -0
  208. package/dist/agents/skills/codex/harness-ml-ops/skill.yaml +79 -0
  209. package/dist/agents/skills/codex/harness-mobile-patterns/SKILL.md +326 -0
  210. package/dist/agents/skills/codex/harness-mobile-patterns/skill.yaml +82 -0
  211. package/dist/agents/skills/codex/harness-mutation-test/SKILL.md +251 -0
  212. package/dist/agents/skills/codex/harness-mutation-test/skill.yaml +70 -0
  213. package/dist/agents/skills/codex/harness-observability/SKILL.md +283 -0
  214. package/dist/agents/skills/codex/harness-observability/skill.yaml +78 -0
  215. package/dist/agents/skills/codex/harness-onboarding/SKILL.md +288 -0
  216. package/dist/agents/skills/codex/harness-onboarding/skill.yaml +31 -0
  217. package/dist/agents/skills/codex/harness-parallel-agents/SKILL.md +256 -0
  218. package/dist/agents/skills/codex/harness-parallel-agents/skill.yaml +34 -0
  219. package/dist/agents/skills/codex/harness-perf/SKILL.md +260 -0
  220. package/dist/agents/skills/codex/harness-perf/skill.yaml +51 -0
  221. package/dist/agents/skills/codex/harness-perf-tdd/SKILL.md +249 -0
  222. package/dist/agents/skills/codex/harness-perf-tdd/skill.yaml +48 -0
  223. package/dist/agents/skills/codex/harness-planning/SKILL.md +579 -0
  224. package/dist/agents/skills/codex/harness-planning/skill.yaml +56 -0
  225. package/dist/agents/skills/codex/harness-pre-commit-review/SKILL.md +324 -0
  226. package/dist/agents/skills/codex/harness-pre-commit-review/skill.yaml +34 -0
  227. package/dist/agents/skills/codex/harness-product-spec/SKILL.md +285 -0
  228. package/dist/agents/skills/codex/harness-product-spec/skill.yaml +72 -0
  229. package/dist/agents/skills/codex/harness-property-test/SKILL.md +281 -0
  230. package/dist/agents/skills/codex/harness-property-test/skill.yaml +71 -0
  231. package/dist/agents/skills/codex/harness-refactoring/SKILL.md +169 -0
  232. package/dist/agents/skills/codex/harness-refactoring/skill.yaml +34 -0
  233. package/dist/agents/skills/codex/harness-release-readiness/SKILL.md +689 -0
  234. package/dist/agents/skills/codex/harness-release-readiness/skill.yaml +58 -0
  235. package/dist/agents/skills/codex/harness-resilience/SKILL.md +255 -0
  236. package/dist/agents/skills/codex/harness-resilience/skill.yaml +76 -0
  237. package/dist/agents/skills/codex/harness-roadmap/SKILL.md +595 -0
  238. package/dist/agents/skills/codex/harness-roadmap/skill.yaml +44 -0
  239. package/dist/agents/skills/codex/harness-secrets/SKILL.md +293 -0
  240. package/dist/agents/skills/codex/harness-secrets/skill.yaml +76 -0
  241. package/dist/agents/skills/codex/harness-security-review/SKILL.md +260 -0
  242. package/dist/agents/skills/codex/harness-security-review/skill.yaml +53 -0
  243. package/dist/agents/skills/codex/harness-security-scan/SKILL.md +154 -0
  244. package/dist/agents/skills/codex/harness-security-scan/skill.yaml +42 -0
  245. package/dist/agents/skills/codex/harness-skill-authoring/SKILL.md +292 -0
  246. package/dist/agents/skills/codex/harness-skill-authoring/skill.yaml +33 -0
  247. package/dist/agents/skills/codex/harness-soundness-review/SKILL.md +1267 -0
  248. package/dist/agents/skills/codex/harness-soundness-review/skill.yaml +49 -0
  249. package/dist/agents/skills/codex/harness-sql-review/SKILL.md +315 -0
  250. package/dist/agents/skills/codex/harness-sql-review/skill.yaml +74 -0
  251. package/dist/agents/skills/codex/harness-state-management/SKILL.md +309 -0
  252. package/dist/agents/skills/codex/harness-state-management/skill.yaml +33 -0
  253. package/dist/agents/skills/codex/harness-supply-chain-audit/SKILL.md +281 -0
  254. package/dist/agents/skills/codex/harness-supply-chain-audit/skill.yaml +51 -0
  255. package/dist/agents/skills/codex/harness-tdd/SKILL.md +177 -0
  256. package/dist/agents/skills/codex/harness-tdd/skill.yaml +49 -0
  257. package/dist/agents/skills/codex/harness-test-advisor/SKILL.md +160 -0
  258. package/dist/agents/skills/codex/harness-test-advisor/skill.yaml +45 -0
  259. package/dist/agents/skills/codex/harness-test-data/SKILL.md +268 -0
  260. package/dist/agents/skills/codex/harness-test-data/skill.yaml +74 -0
  261. package/dist/agents/skills/codex/harness-ux-copy/SKILL.md +271 -0
  262. package/dist/agents/skills/codex/harness-ux-copy/skill.yaml +77 -0
  263. package/dist/agents/skills/codex/harness-verification/SKILL.md +421 -0
  264. package/dist/agents/skills/codex/harness-verification/skill.yaml +43 -0
  265. package/dist/agents/skills/codex/harness-verify/SKILL.md +159 -0
  266. package/dist/agents/skills/codex/harness-verify/skill.yaml +41 -0
  267. package/dist/agents/skills/codex/harness-visual-regression/SKILL.md +257 -0
  268. package/dist/agents/skills/codex/harness-visual-regression/skill.yaml +74 -0
  269. package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +232 -0
  270. package/dist/agents/skills/codex/initialize-harness-project/skill.yaml +32 -0
  271. package/dist/agents/skills/codex/validate-context-engineering/SKILL.md +150 -0
  272. package/dist/agents/skills/codex/validate-context-engineering/skill.yaml +32 -0
  273. package/dist/agents/skills/cursor/add-harness-component/SKILL.md +192 -0
  274. package/dist/agents/skills/cursor/add-harness-component/skill.yaml +33 -0
  275. package/dist/agents/skills/cursor/align-documentation/SKILL.md +213 -0
  276. package/dist/agents/skills/cursor/align-documentation/skill.yaml +32 -0
  277. package/dist/agents/skills/cursor/check-mechanical-constraints/SKILL.md +191 -0
  278. package/dist/agents/skills/cursor/check-mechanical-constraints/skill.yaml +33 -0
  279. package/dist/agents/skills/cursor/cleanup-dead-code/SKILL.md +245 -0
  280. package/dist/agents/skills/cursor/cleanup-dead-code/skill.yaml +34 -0
  281. package/dist/agents/skills/cursor/detect-doc-drift/SKILL.md +179 -0
  282. package/dist/agents/skills/cursor/detect-doc-drift/skill.yaml +31 -0
  283. package/dist/agents/skills/cursor/enforce-architecture/SKILL.md +296 -0
  284. package/dist/agents/skills/cursor/enforce-architecture/skill.yaml +35 -0
  285. package/dist/agents/skills/cursor/harness-accessibility/SKILL.md +281 -0
  286. package/dist/agents/skills/cursor/harness-accessibility/skill.yaml +52 -0
  287. package/dist/agents/skills/cursor/harness-api-design/SKILL.md +356 -0
  288. package/dist/agents/skills/cursor/harness-api-design/skill.yaml +74 -0
  289. package/dist/agents/skills/cursor/harness-architecture-advisor/SKILL.md +449 -0
  290. package/dist/agents/skills/cursor/harness-architecture-advisor/skill.yaml +49 -0
  291. package/dist/agents/skills/cursor/harness-auth/SKILL.md +331 -0
  292. package/dist/agents/skills/cursor/harness-auth/skill.yaml +81 -0
  293. package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +916 -0
  294. package/dist/agents/skills/cursor/harness-autopilot/skill.yaml +67 -0
  295. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +406 -0
  296. package/dist/agents/skills/cursor/harness-brainstorming/skill.yaml +50 -0
  297. package/dist/agents/skills/cursor/harness-caching/SKILL.md +309 -0
  298. package/dist/agents/skills/cursor/harness-caching/skill.yaml +73 -0
  299. package/dist/agents/skills/cursor/harness-chaos/SKILL.md +295 -0
  300. package/dist/agents/skills/cursor/harness-chaos/skill.yaml +72 -0
  301. package/dist/agents/skills/cursor/harness-code-review/SKILL.md +857 -0
  302. package/dist/agents/skills/cursor/harness-code-review/skill.yaml +52 -0
  303. package/dist/agents/skills/cursor/harness-codebase-cleanup/SKILL.md +224 -0
  304. package/dist/agents/skills/cursor/harness-codebase-cleanup/skill.yaml +65 -0
  305. package/dist/agents/skills/cursor/harness-compliance/SKILL.md +303 -0
  306. package/dist/agents/skills/cursor/harness-compliance/skill.yaml +78 -0
  307. package/dist/agents/skills/cursor/harness-containerization/SKILL.md +284 -0
  308. package/dist/agents/skills/cursor/harness-containerization/skill.yaml +80 -0
  309. package/dist/agents/skills/cursor/harness-data-pipeline/SKILL.md +274 -0
  310. package/dist/agents/skills/cursor/harness-data-pipeline/skill.yaml +81 -0
  311. package/dist/agents/skills/cursor/harness-data-validation/SKILL.md +343 -0
  312. package/dist/agents/skills/cursor/harness-data-validation/skill.yaml +75 -0
  313. package/dist/agents/skills/cursor/harness-database/SKILL.md +310 -0
  314. package/dist/agents/skills/cursor/harness-database/skill.yaml +80 -0
  315. package/dist/agents/skills/cursor/harness-debugging/SKILL.md +366 -0
  316. package/dist/agents/skills/cursor/harness-debugging/skill.yaml +48 -0
  317. package/dist/agents/skills/cursor/harness-dependency-health/SKILL.md +179 -0
  318. package/dist/agents/skills/cursor/harness-dependency-health/skill.yaml +42 -0
  319. package/dist/agents/skills/cursor/harness-deployment/SKILL.md +307 -0
  320. package/dist/agents/skills/cursor/harness-deployment/skill.yaml +77 -0
  321. package/dist/agents/skills/cursor/harness-design/SKILL.md +265 -0
  322. package/dist/agents/skills/cursor/harness-design/skill.yaml +54 -0
  323. package/dist/agents/skills/cursor/harness-design-mobile/SKILL.md +336 -0
  324. package/dist/agents/skills/cursor/harness-design-mobile/skill.yaml +50 -0
  325. package/dist/agents/skills/cursor/harness-design-system/SKILL.md +282 -0
  326. package/dist/agents/skills/cursor/harness-design-system/skill.yaml +51 -0
  327. package/dist/agents/skills/cursor/harness-design-web/SKILL.md +360 -0
  328. package/dist/agents/skills/cursor/harness-design-web/skill.yaml +53 -0
  329. package/dist/agents/skills/cursor/harness-diagnostics/SKILL.md +318 -0
  330. package/dist/agents/skills/cursor/harness-diagnostics/skill.yaml +51 -0
  331. package/dist/agents/skills/cursor/harness-docs-pipeline/SKILL.md +460 -0
  332. package/dist/agents/skills/cursor/harness-docs-pipeline/skill.yaml +70 -0
  333. package/dist/agents/skills/cursor/harness-dx/SKILL.md +276 -0
  334. package/dist/agents/skills/cursor/harness-dx/skill.yaml +76 -0
  335. package/dist/agents/skills/cursor/harness-e2e/SKILL.md +245 -0
  336. package/dist/agents/skills/cursor/harness-e2e/skill.yaml +78 -0
  337. package/dist/agents/skills/cursor/harness-event-driven/SKILL.md +280 -0
  338. package/dist/agents/skills/cursor/harness-event-driven/skill.yaml +77 -0
  339. package/dist/agents/skills/cursor/harness-execution/SKILL.md +510 -0
  340. package/dist/agents/skills/cursor/harness-execution/skill.yaml +52 -0
  341. package/dist/agents/skills/cursor/harness-feature-flags/SKILL.md +287 -0
  342. package/dist/agents/skills/cursor/harness-feature-flags/skill.yaml +74 -0
  343. package/dist/agents/skills/cursor/harness-git-workflow/SKILL.md +268 -0
  344. package/dist/agents/skills/cursor/harness-git-workflow/skill.yaml +32 -0
  345. package/dist/agents/skills/cursor/harness-hotspot-detector/SKILL.md +161 -0
  346. package/dist/agents/skills/cursor/harness-hotspot-detector/skill.yaml +45 -0
  347. package/dist/agents/skills/cursor/harness-i18n/SKILL.md +484 -0
  348. package/dist/agents/skills/cursor/harness-i18n/skill.yaml +55 -0
  349. package/dist/agents/skills/cursor/harness-i18n-process/SKILL.md +388 -0
  350. package/dist/agents/skills/cursor/harness-i18n-process/skill.yaml +44 -0
  351. package/dist/agents/skills/cursor/harness-i18n-workflow/SKILL.md +512 -0
  352. package/dist/agents/skills/cursor/harness-i18n-workflow/skill.yaml +54 -0
  353. package/dist/agents/skills/cursor/harness-impact-analysis/SKILL.md +184 -0
  354. package/dist/agents/skills/cursor/harness-impact-analysis/skill.yaml +45 -0
  355. package/dist/agents/skills/cursor/harness-incident-response/SKILL.md +223 -0
  356. package/dist/agents/skills/cursor/harness-incident-response/skill.yaml +78 -0
  357. package/dist/agents/skills/cursor/harness-infrastructure-as-code/SKILL.md +279 -0
  358. package/dist/agents/skills/cursor/harness-infrastructure-as-code/skill.yaml +80 -0
  359. package/dist/agents/skills/cursor/harness-integration-test/SKILL.md +271 -0
  360. package/dist/agents/skills/cursor/harness-integration-test/skill.yaml +73 -0
  361. package/dist/agents/skills/cursor/harness-integrity/SKILL.md +167 -0
  362. package/dist/agents/skills/cursor/harness-integrity/skill.yaml +48 -0
  363. package/dist/agents/skills/cursor/harness-knowledge-mapper/SKILL.md +195 -0
  364. package/dist/agents/skills/cursor/harness-knowledge-mapper/skill.yaml +50 -0
  365. package/dist/agents/skills/cursor/harness-load-testing/SKILL.md +274 -0
  366. package/dist/agents/skills/cursor/harness-load-testing/skill.yaml +79 -0
  367. package/dist/agents/skills/cursor/harness-ml-ops/SKILL.md +341 -0
  368. package/dist/agents/skills/cursor/harness-ml-ops/skill.yaml +79 -0
  369. package/dist/agents/skills/cursor/harness-mobile-patterns/SKILL.md +326 -0
  370. package/dist/agents/skills/cursor/harness-mobile-patterns/skill.yaml +82 -0
  371. package/dist/agents/skills/cursor/harness-mutation-test/SKILL.md +251 -0
  372. package/dist/agents/skills/cursor/harness-mutation-test/skill.yaml +70 -0
  373. package/dist/agents/skills/cursor/harness-observability/SKILL.md +283 -0
  374. package/dist/agents/skills/cursor/harness-observability/skill.yaml +78 -0
  375. package/dist/agents/skills/cursor/harness-onboarding/SKILL.md +288 -0
  376. package/dist/agents/skills/cursor/harness-onboarding/skill.yaml +31 -0
  377. package/dist/agents/skills/cursor/harness-parallel-agents/SKILL.md +256 -0
  378. package/dist/agents/skills/cursor/harness-parallel-agents/skill.yaml +34 -0
  379. package/dist/agents/skills/cursor/harness-perf/SKILL.md +260 -0
  380. package/dist/agents/skills/cursor/harness-perf/skill.yaml +51 -0
  381. package/dist/agents/skills/cursor/harness-perf-tdd/SKILL.md +249 -0
  382. package/dist/agents/skills/cursor/harness-perf-tdd/skill.yaml +48 -0
  383. package/dist/agents/skills/cursor/harness-planning/SKILL.md +579 -0
  384. package/dist/agents/skills/cursor/harness-planning/skill.yaml +56 -0
  385. package/dist/agents/skills/cursor/harness-pre-commit-review/SKILL.md +324 -0
  386. package/dist/agents/skills/cursor/harness-pre-commit-review/skill.yaml +34 -0
  387. package/dist/agents/skills/cursor/harness-product-spec/SKILL.md +285 -0
  388. package/dist/agents/skills/cursor/harness-product-spec/skill.yaml +72 -0
  389. package/dist/agents/skills/cursor/harness-property-test/SKILL.md +281 -0
  390. package/dist/agents/skills/cursor/harness-property-test/skill.yaml +71 -0
  391. package/dist/agents/skills/cursor/harness-refactoring/SKILL.md +169 -0
  392. package/dist/agents/skills/cursor/harness-refactoring/skill.yaml +34 -0
  393. package/dist/agents/skills/cursor/harness-release-readiness/SKILL.md +689 -0
  394. package/dist/agents/skills/cursor/harness-release-readiness/skill.yaml +58 -0
  395. package/dist/agents/skills/cursor/harness-resilience/SKILL.md +255 -0
  396. package/dist/agents/skills/cursor/harness-resilience/skill.yaml +76 -0
  397. package/dist/agents/skills/cursor/harness-roadmap/SKILL.md +595 -0
  398. package/dist/agents/skills/cursor/harness-roadmap/skill.yaml +44 -0
  399. package/dist/agents/skills/cursor/harness-secrets/SKILL.md +293 -0
  400. package/dist/agents/skills/cursor/harness-secrets/skill.yaml +76 -0
  401. package/dist/agents/skills/cursor/harness-security-review/SKILL.md +260 -0
  402. package/dist/agents/skills/cursor/harness-security-review/skill.yaml +53 -0
  403. package/dist/agents/skills/cursor/harness-security-scan/SKILL.md +154 -0
  404. package/dist/agents/skills/cursor/harness-security-scan/skill.yaml +42 -0
  405. package/dist/agents/skills/cursor/harness-skill-authoring/SKILL.md +292 -0
  406. package/dist/agents/skills/cursor/harness-skill-authoring/skill.yaml +33 -0
  407. package/dist/agents/skills/cursor/harness-soundness-review/SKILL.md +1267 -0
  408. package/dist/agents/skills/cursor/harness-soundness-review/skill.yaml +49 -0
  409. package/dist/agents/skills/cursor/harness-sql-review/SKILL.md +315 -0
  410. package/dist/agents/skills/cursor/harness-sql-review/skill.yaml +74 -0
  411. package/dist/agents/skills/cursor/harness-state-management/SKILL.md +309 -0
  412. package/dist/agents/skills/cursor/harness-state-management/skill.yaml +33 -0
  413. package/dist/agents/skills/cursor/harness-supply-chain-audit/SKILL.md +281 -0
  414. package/dist/agents/skills/cursor/harness-supply-chain-audit/skill.yaml +51 -0
  415. package/dist/agents/skills/cursor/harness-tdd/SKILL.md +177 -0
  416. package/dist/agents/skills/cursor/harness-tdd/skill.yaml +49 -0
  417. package/dist/agents/skills/cursor/harness-test-advisor/SKILL.md +160 -0
  418. package/dist/agents/skills/cursor/harness-test-advisor/skill.yaml +45 -0
  419. package/dist/agents/skills/cursor/harness-test-data/SKILL.md +268 -0
  420. package/dist/agents/skills/cursor/harness-test-data/skill.yaml +74 -0
  421. package/dist/agents/skills/cursor/harness-ux-copy/SKILL.md +271 -0
  422. package/dist/agents/skills/cursor/harness-ux-copy/skill.yaml +77 -0
  423. package/dist/agents/skills/cursor/harness-verification/SKILL.md +421 -0
  424. package/dist/agents/skills/cursor/harness-verification/skill.yaml +43 -0
  425. package/dist/agents/skills/cursor/harness-verify/SKILL.md +159 -0
  426. package/dist/agents/skills/cursor/harness-verify/skill.yaml +41 -0
  427. package/dist/agents/skills/cursor/harness-visual-regression/SKILL.md +257 -0
  428. package/dist/agents/skills/cursor/harness-visual-regression/skill.yaml +74 -0
  429. package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +232 -0
  430. package/dist/agents/skills/cursor/initialize-harness-project/skill.yaml +32 -0
  431. package/dist/agents/skills/cursor/validate-context-engineering/SKILL.md +150 -0
  432. package/dist/agents/skills/cursor/validate-context-engineering/skill.yaml +32 -0
  433. package/dist/agents/skills/gemini-cli/enforce-architecture/SKILL.md +52 -0
  434. package/dist/agents/skills/gemini-cli/harness-api-design/SKILL.md +52 -0
  435. package/dist/agents/skills/gemini-cli/harness-architecture-advisor/SKILL.md +52 -0
  436. package/dist/agents/skills/gemini-cli/harness-auth/SKILL.md +52 -0
  437. package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +123 -14
  438. package/dist/agents/skills/gemini-cli/harness-autopilot/skill.yaml +6 -0
  439. package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +97 -3
  440. package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +6 -0
  441. package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/SKILL.md +2 -4
  442. package/dist/agents/skills/gemini-cli/harness-database/SKILL.md +52 -0
  443. package/dist/agents/skills/gemini-cli/harness-deployment/SKILL.md +52 -0
  444. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +99 -3
  445. package/dist/agents/skills/gemini-cli/harness-planning/skill.yaml +6 -0
  446. package/dist/agents/skills/gemini-cli/harness-pre-commit-review/SKILL.md +1 -1
  447. package/dist/agents/skills/gemini-cli/harness-security-review/SKILL.md +27 -7
  448. package/dist/agents/skills/gemini-cli/harness-security-scan/SKILL.md +52 -0
  449. package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/SKILL.md +281 -0
  450. package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/skill.yaml +51 -0
  451. package/dist/agents/skills/templates/discipline-template.md +49 -0
  452. package/dist/agents/skills/tests/schema.ts +1 -1
  453. package/dist/{agents-md-ZGNIDWAF.js → agents-md-VYDFPIRW.js} +1 -1
  454. package/dist/{architecture-ZLIH5533.js → architecture-K5HSRBGB.js} +2 -2
  455. package/dist/bin/harness-mcp.js +13 -13
  456. package/dist/bin/harness.js +18 -18
  457. package/dist/{check-phase-gate-ZOXVBDCN.js → check-phase-gate-5AS6SXL6.js} +3 -3
  458. package/dist/{chunk-LGYBN7Y6.js → chunk-5ZXHMCPL.js} +1 -1
  459. package/dist/{chunk-RCWZBSK5.js → chunk-6KWBH4EO.js} +1 -1
  460. package/dist/{chunk-Z2OOPXJO.js → chunk-ALFKNAZW.js} +1172 -74
  461. package/dist/{chunk-VEPAJXBW.js → chunk-AV6KMDO5.js} +2 -2
  462. package/dist/{chunk-2BKLWLY6.js → chunk-C7DTKLPW.js} +4 -4
  463. package/dist/{chunk-ZOAWBDWU.js → chunk-CJDVBBPB.js} +5 -1
  464. package/dist/{chunk-EDXIVMAP.js → chunk-DNDBFIZN.js} +18 -4
  465. package/dist/{chunk-XYLGHKG6.js → chunk-HKUX2X7O.js} +11 -2
  466. package/dist/{chunk-NNHDDXYT.js → chunk-JOP2NDNB.js} +396 -114
  467. package/dist/{chunk-YBJ262QL.js → chunk-LRG3B43J.js} +1 -1
  468. package/dist/{chunk-AOZRDOIP.js → chunk-M6TIO6NF.js} +1 -1
  469. package/dist/{chunk-B2HKP423.js → chunk-OCDDCGDE.js} +9 -1
  470. package/dist/{chunk-3ZZKVN62.js → chunk-QDF7COPQ.js} +1 -1
  471. package/dist/{chunk-YLXFKVJE.js → chunk-RWZPHW4H.js} +3 -3
  472. package/dist/{chunk-N25INEIX.js → chunk-SFRGPAK6.js} +1 -1
  473. package/dist/{chunk-J4RAX7YB.js → chunk-SHYWICGA.js} +1677 -501
  474. package/dist/{chunk-OFXQSFOW.js → chunk-TF6ZLHJV.js} +2 -2
  475. package/dist/{chunk-ND2ENWDM.js → chunk-ZJMU7MEV.js} +1 -1
  476. package/dist/{ci-workflow-765LSHRD.js → ci-workflow-CRWU723U.js} +1 -1
  477. package/dist/{create-skill-XSWHMSM5.js → create-skill-NDXQSTIK.js} +2 -2
  478. package/dist/{dist-ALQDD67R.js → dist-4LPXJYVZ.js} +59 -1
  479. package/dist/{docs-NRMQCOJ6.js → docs-4JRHTLUZ.js} +3 -3
  480. package/dist/{engine-3RB7MXPP.js → engine-3G3VIM6L.js} +1 -1
  481. package/dist/{entropy-6AGX2ZUN.js → entropy-G6CZ2A6P.js} +2 -2
  482. package/dist/{feedback-MY4QZIFD.js → feedback-QYKQ65HB.js} +1 -1
  483. package/dist/{generate-agent-definitions-ZAE726AU.js → generate-agent-definitions-SAAOAPT4.js} +3 -3
  484. package/dist/index.d.ts +33 -12
  485. package/dist/index.js +18 -18
  486. package/dist/{loader-UUTVMQCC.js → loader-VCOK3PF7.js} +1 -1
  487. package/dist/{mcp-VU5FMO52.js → mcp-YENEPHBW.js} +13 -13
  488. package/dist/{performance-2D7G6NMJ.js → performance-UBCFI2UP.js} +4 -2
  489. package/dist/{review-pipeline-RAQ55ISU.js → review-pipeline-IQAVCWAX.js} +1 -1
  490. package/dist/{runtime-BCK5RRZQ.js → runtime-PYFFIESU.js} +1 -1
  491. package/dist/{security-2RPQEN62.js → security-ZDADTPYW.js} +1 -1
  492. package/dist/{skill-executor-XZLYZYAK.js → skill-executor-XEVDGXUM.js} +2 -2
  493. package/dist/{validate-KBYQAEWE.js → validate-VRTUHALQ.js} +2 -2
  494. package/dist/{validate-cross-check-OABMREW4.js → validate-cross-check-4Y6NHNK3.js} +1 -1
  495. package/package.json +6 -5
@@ -247,6 +247,58 @@ Phase 4: VALIDATE
247
247
  - **No deploy without rollback.** Every deployment target must have a documented or automated rollback mechanism. Missing rollback is a blocking warning.
248
248
  - **No skipping pipeline lint.** Pipeline configuration must pass syntax validation before recommendations are made.
249
249
 
250
+ ## Evidence Requirements
251
+
252
+ When this skill makes claims about existing code, architecture, or behavior,
253
+ it MUST cite evidence using one of:
254
+
255
+ 1. **File reference:** `file:line` format (e.g., `src/auth.ts:42`)
256
+ 2. **Code pattern reference:** `file` with description (e.g., `src/utils/hash.ts` —
257
+ "existing bcrypt wrapper")
258
+ 3. **Test/command output:** Inline or referenced output from a test run or CLI command
259
+ 4. **Session evidence:** Write to the `evidence` session section via `manage_state`
260
+
261
+ **Uncited claims:** Technical assertions without citations MUST be prefixed with
262
+ `[UNVERIFIED]`. Example: `[UNVERIFIED] The auth middleware supports refresh tokens`.
263
+
264
+ ## Red Flags
265
+
266
+ ### Universal
267
+
268
+ These apply to ALL skills. If you catch yourself doing any of these, STOP.
269
+
270
+ - **"I believe the codebase does X"** — Stop. Read the code and cite a file:line
271
+ reference. Belief is not evidence.
272
+ - **"Let me recommend [pattern] for this"** without checking existing patterns — Stop.
273
+ Search the codebase first. The project may already have a convention.
274
+ - **"While we're here, we should also [unrelated improvement]"** — Stop. Flag the idea
275
+ but do not expand scope beyond the stated task.
276
+
277
+ ### Domain-Specific
278
+
279
+ - **"Deploying without a health check endpoint"** — Stop. Without health checks, the orchestrator cannot detect failed deployments. Add health checks before deploying.
280
+ - **"Skipping canary deployment, it's a small change"** — Stop. Small changes cause outages too. Follow the deployment policy regardless of change size.
281
+ - **"Rolling back manually if something goes wrong"** — Stop. Manual rollback under incident pressure fails. Automate rollback before deploying.
282
+ - **"We can update the runbook after the deploy"** — Stop. If the deployment changes operational behavior, update the runbook first. Stale runbooks during incidents cause escalations.
283
+
284
+ ## Rationalizations to Reject
285
+
286
+ ### Universal
287
+
288
+ These reasoning patterns sound plausible but lead to bad outcomes. Reject them.
289
+
290
+ - **"It's probably fine"** — "Probably" is not evidence. Verify before asserting.
291
+ - **"This is best practice"** — Best practice in what context? Cite the source and
292
+ confirm it applies to this codebase.
293
+ - **"We can fix it later"** — If it is worth flagging, it is worth documenting now
294
+ with a concrete follow-up plan.
295
+
296
+ ### Domain-Specific
297
+
298
+ - **"It's just a config change, not a code change"** — Config changes cause outages at the same rate as code changes. Deploy them with the same rigor and rollback strategy.
299
+ - **"We tested this in staging"** — Staging is not production. Traffic patterns, data volume, and edge cases differ. Staging success does not guarantee production safety.
300
+ - **"Downtime will be brief"** — Brief is not zero. Quantify the expected impact and communicate it to stakeholders before deploying.
301
+
250
302
  ## Escalation
251
303
 
252
304
  - **When the CI/CD platform is unsupported:** Report which platform was detected and that analysis is limited to general best practices. Recommend the user provide platform-specific documentation for deeper analysis.
@@ -22,6 +22,21 @@ A plan with vague tasks like "add validation" or "implement the service" is not
22
22
 
23
23
  ---
24
24
 
25
+ ### Rigor Levels
26
+
27
+ The `rigorLevel` is passed to the planner by autopilot (or set via `--fast`/`--thorough` flags in standalone invocation). Default is `standard`.
28
+
29
+ | Phase | `fast` | `standard` (default) | `thorough` |
30
+ | --------- | ---------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------- |
31
+ | SCOPE | No change — always derive observable truths. | No change. | No change. |
32
+ | DECOMPOSE | Skip skeleton pass. Produce full tasks directly after file map. | Skeleton if estimated task count >= 8. Full tasks if < 8. | Always produce skeleton. Require human approval before expanding to full tasks. |
33
+ | SEQUENCE | No change — always order by dependency. | No change. | No change. |
34
+ | VALIDATE | No change — always run harness validate and verify completeness. | No change. | No change. |
35
+
36
+ The skeleton pass is the primary rigor lever for planning. Fast mode trusts the direction and goes straight to full detail. Thorough mode always validates direction before investing tokens in full task expansion.
37
+
38
+ ---
39
+
25
40
  ### Phase 1: SCOPE — Derive Must-Haves from Goals
26
41
 
27
42
  Work backward from the goal. Do not start with "what should we build?" Start with "what must be true when we are done?"
@@ -129,21 +144,63 @@ When presenting the task breakdown, use progress markers:
129
144
  MODIFY src/api/routes/users.ts (add notification trigger)
130
145
  ```
131
146
 
132
- 2. **Decompose into atomic tasks.** Each task must:
147
+ 2. **Skeleton pass (rigor-gated).** Before writing full task details, produce a lightweight skeleton that validates direction. The skeleton is ~200 tokens and catches structural errors before investing in full expansion.
148
+
149
+ **Gating logic:**
150
+ - `rigorLevel == "fast"`: Skip this step entirely. Proceed directly to full task decomposition.
151
+ - `rigorLevel == "standard"`: Estimate the task count from the file map. If >= 8 tasks, produce the skeleton and present for approval. If < 8 tasks, skip the skeleton and proceed to full decomposition.
152
+ - `rigorLevel == "thorough"`: Always produce the skeleton and require human approval before expanding.
153
+
154
+ **Skeleton format:**
155
+
156
+ ```
157
+ ## Skeleton
158
+
159
+ 1. Foundation types and interfaces (~3 tasks, ~10 min)
160
+ 2. Core scoring module with TDD (~2 tasks, ~8 min)
161
+ 3. CLI integration and flag parsing (~4 tasks, ~15 min)
162
+ 4. Integration tests and validation (~3 tasks, ~10 min)
163
+
164
+ **Estimated total:** 12 tasks, ~43 minutes
165
+ ```
166
+
167
+ Each line is a logical group of tasks with an estimated count and time. The skeleton does NOT contain file paths, code, or detailed instructions — those come in the expansion step.
168
+
169
+ **Approval gate:**
170
+
171
+ When the skeleton is produced, present it to the human:
172
+
173
+ ```json
174
+ emit_interaction({
175
+ path: "<project-root>",
176
+ type: "confirmation",
177
+ confirmation: {
178
+ text: "Approve skeleton direction?",
179
+ context: "<estimated task count> tasks across <group count> groups. <one-sentence summary of approach>",
180
+ impact: "Approving proceeds to full task expansion. Rejecting allows direction change before detail investment.",
181
+ risk: "low"
182
+ }
183
+ })
184
+ ```
185
+
186
+ - **If approved:** Proceed to full task decomposition (step 3).
187
+ - **If rejected:** Ask what should change. Revise the skeleton. Re-present for approval. Do not expand until approved.
188
+
189
+ 3. **Decompose into atomic tasks.** Each task must:
133
190
  - Be completable in 2-5 minutes
134
191
  - Fit in a single context window
135
192
  - Have a clear, testable outcome
136
193
  - Follow TDD: write test, fail, implement, pass, commit
137
194
  - Produce one atomic commit
138
195
 
139
- 3. **Write complete instructions for each task.** Not summaries — complete executable instructions:
196
+ 4. **Write complete instructions for each task.** Not summaries — complete executable instructions:
140
197
  - **Exact file paths** to create or modify
141
198
  - **Exact code** to write (not "add validation logic" — write the actual validation code)
142
199
  - **Exact test commands** to run (e.g., `npx vitest run src/services/notification-service.test.ts`)
143
200
  - **Exact commit message** to use
144
201
  - **`harness validate`** as the final step
145
202
 
146
- 4. **Include checkpoints.** Mark tasks that require human verification, decisions, or actions:
203
+ 5. **Include checkpoints.** Mark tasks that require human verification, decisions, or actions:
147
204
  - `[checkpoint:human-verify]` — Pause, show result, wait for confirmation
148
205
  - `[checkpoint:decision]` — Pause, present options, wait for choice
149
206
  - `[checkpoint:human-action]` — Pause, instruct human on what they need to do
@@ -281,6 +338,15 @@ One sentence.
281
338
  - CREATE path/to/file.ts
282
339
  - MODIFY path/to/other-file.ts
283
340
 
341
+ ## Skeleton (if produced)
342
+
343
+ 1. <group name> (~N tasks, ~N min)
344
+ 2. <group name> (~N tasks, ~N min)
345
+
346
+ **Estimated total:** N tasks, ~N minutes
347
+
348
+ _Skeleton approved: yes/no. If no, note the revision._
349
+
284
350
  ## Tasks
285
351
 
286
352
  ### Task 1: <descriptive name>
@@ -359,6 +425,8 @@ When this skill makes claims about existing code structure, file locations, or i
359
425
  - **Handoff to harness-execution** — Once the plan is approved, invoke harness-execution to begin task-by-task implementation.
360
426
  - **Task commands** — Every task includes exact harness CLI commands to run (e.g., `harness validate`, `harness check-deps`).
361
427
  - **`emit_interaction`** -- Call at the end of Phase 4 to suggest transitioning to harness-execution. Uses confirmed transition (waits for user approval).
428
+ - **Rigor levels** — `--fast` / `--thorough` flags control the skeleton pass in DECOMPOSE. Fast skips skeleton entirely. Standard produces skeleton for plans with >= 8 tasks. Thorough always produces skeleton and requires approval. See the Rigor Levels table for details.
429
+ - **Two-pass planning** — Skeleton pass produces a ~200-token outline before full task expansion. Catches directional errors early. Gated by rigor level and estimated task count.
362
430
 
363
431
  ## Change Specifications
364
432
 
@@ -394,6 +462,11 @@ When `docs/changes/` exists in the project, produce `docs/changes/<feature>/delt
394
462
  - `harness validate` passes before the plan is written
395
463
  - `harness validate` is included as a step in every task
396
464
  - The human has reviewed and approved the plan
465
+ - When `rigorLevel` is `fast`, the skeleton pass is skipped and full tasks are produced directly
466
+ - When `rigorLevel` is `thorough`, a skeleton is always produced and requires human approval before expansion
467
+ - When `rigorLevel` is `standard` and task count >= 8, a skeleton is produced for approval
468
+ - When `rigorLevel` is `standard` and task count < 8, the skeleton is skipped
469
+ - The skeleton format is lightweight (~200 tokens): numbered groups with task count and time estimates
397
470
 
398
471
  ## Examples
399
472
 
@@ -420,6 +493,10 @@ MODIFY src/api/routes/users.ts
420
493
  MODIFY src/api/routes/users.test.ts
421
494
  ```
422
495
 
496
+ **Skeleton (standard mode, 6 tasks — skeleton skipped because < 8 tasks)**
497
+
498
+ _Skeleton not produced — task count (6) below threshold (8)._
499
+
423
500
  **Task 1: Define notification types**
424
501
 
425
502
  ```
@@ -463,6 +540,25 @@ Files: src/services/notification-service.ts, src/services/notification-service.t
463
540
  6. Commit: "feat(notifications): add list and expiry to NotificationService"
464
541
  ```
465
542
 
543
+ ### Example: Planning with Skeleton (thorough mode)
544
+
545
+ **Goal:** Add rate limiting to all API endpoints.
546
+
547
+ **Skeleton (thorough mode — always produced):**
548
+
549
+ ```
550
+ ## Skeleton
551
+
552
+ 1. Rate limit types and configuration (~2 tasks, ~7 min)
553
+ 2. Rate limit middleware with Redis backend (~3 tasks, ~12 min)
554
+ 3. Route integration and per-endpoint config (~4 tasks, ~15 min)
555
+ 4. Integration tests and load verification (~3 tasks, ~10 min)
556
+
557
+ **Estimated total:** 12 tasks, ~44 minutes
558
+ ```
559
+
560
+ _Presented for approval. User approved. Expanded to full tasks._
561
+
466
562
  ## Gates
467
563
 
468
564
  These are hard stops. Violating any gate means the process has broken down.
@@ -22,6 +22,12 @@ cli:
22
22
  - name: path
23
23
  description: Project root path
24
24
  required: false
25
+ - name: fast
26
+ description: Skip skeleton pass — produce full plan directly
27
+ required: false
28
+ - name: thorough
29
+ description: Always produce skeleton for approval before full expansion
30
+ required: false
25
31
  mcp:
26
32
  tool: run_skill
27
33
  input:
@@ -150,7 +150,7 @@ Run the built-in security scanner against staged files. This is a mechanical che
150
150
  git diff --cached --name-only --diff-filter=d | grep -E '\.(ts|tsx|js|jsx|go|py)$'
151
151
  ```
152
152
 
153
- Use the `run_security_scan` MCP tool or invoke the scanner on the staged files. Report any findings:
153
+ Run `harness check-security --changed-only` on the staged files. Report any findings:
154
154
 
155
155
  - **Error findings (blocking):** Hardcoded secrets, eval/injection, weak crypto — these block the commit just like lint failures.
156
156
  - **Warning/info findings (advisory):** CORS wildcards, HTTP URLs, disabled TLS — reported but do not block.
@@ -55,16 +55,14 @@ This skill follows the Deterministic-vs-LLM Responsibility Split principle. The
55
55
 
56
56
  Run the built-in security scanner against the project.
57
57
 
58
- 1. **Run the scanner.** Use the `run_security_scan` MCP tool or invoke `SecurityScanner` directly:
58
+ 1. **Run the scanner.** Use the `harness check-security` CLI command:
59
59
 
60
60
  ```bash
61
- # Via MCP
62
- harness scan --security
63
-
64
- # Via CLI
65
- npx vitest run packages/core/tests/security/
61
+ harness check-security
66
62
  ```
67
63
 
64
+ For machine-readable output, add `--json`. For scanning only changed files, add `--changed-only`.
65
+
68
66
  2. **Review findings.** Categorize by severity:
69
67
  - **Error (blocking):** Must fix before merge — secrets, injection, eval, weak crypto
70
68
  - **Warning (review):** Should fix — CORS wildcards, disabled TLS, path traversal patterns
@@ -103,6 +101,28 @@ After the OWASP baseline, add stack-specific checks:
103
101
  - **React:** XSS via `dangerouslySetInnerHTML`, sensitive data in client state, insecure `postMessage` listeners
104
102
  - **Go:** Race conditions in concurrent handlers, `unsafe.Pointer` usage, format string injection
105
103
 
104
+ #### Insecure Defaults Analysis
105
+
106
+ For each configuration variable that controls a security feature (auth, encryption, TLS, CORS, rate limiting), verify:
107
+
108
+ - Does the feature **fail-closed** (error/deny) when configuration is missing?
109
+ - Or does it **fail-open** (degrade to permissive/disabled)?
110
+ - Trace fallback chains: `config.x ?? env.Y ?? default` — is the final default secure?
111
+
112
+ Patterns the mechanical `SEC-DEF-*` rules cannot catch (focus here):
113
+
114
+ - Multi-line fallback chains where the insecure default is not adjacent to the security variable name
115
+ - Conditional logic that enables security features only in specific environments (e.g., `if (isProd) enableTLS()`)
116
+ - Error handlers that swallow failures in auth, session, or token validation code (multi-line `catch` blocks)
117
+ - Silent type coercions that convert truthy env vars to falsy values
118
+
119
+ **Rationalizations to reject** (adapted from Trail of Bits):
120
+
121
+ - "The default is only used in development" — production deployments inherit defaults when config is missing
122
+ - "The env var will always be set" — missing env vars are the #1 cause of fail-open in production
123
+ - "The catch block will be filled in later" — empty auth catch blocks ship to production
124
+ - "It's behind a feature flag" — feature flags can be inadvertently enabled or disabled
125
+
106
126
  ### Phase 3: THREAT-MODEL (optional, `--deep` flag; full mode or explicit `--deep` in pipeline)
107
127
 
108
128
  When invoked with `--deep`, build a lightweight threat model:
@@ -149,7 +169,7 @@ Threat Model:
149
169
 
150
170
  ## Harness Integration
151
171
 
152
- - **`run_security_scan` MCP tool** — Run the mechanical scanner programmatically
172
+ - **`harness check-security`** — Run the mechanical scanner via CLI. Use `--json` for machine-readable output.
153
173
  - **`harness validate`** — Standard project health check
154
174
  - **`query_graph` / `get_relationships`** — Used in threat modeling phase for data flow tracing
155
175
  - **`get_impact`** — Understand blast radius of security-sensitive changes
@@ -58,6 +58,58 @@
58
58
  - **`harness.config.json`** — Security section configures severity threshold and file exclusions.
59
59
  - **codebase-health-analyst persona** — Invokes this skill as part of its sweep.
60
60
 
61
+ ## Evidence Requirements
62
+
63
+ When this skill makes claims about existing code, architecture, or behavior,
64
+ it MUST cite evidence using one of:
65
+
66
+ 1. **File reference:** `file:line` format (e.g., `src/auth.ts:42`)
67
+ 2. **Code pattern reference:** `file` with description (e.g., `src/utils/hash.ts` —
68
+ "existing bcrypt wrapper")
69
+ 3. **Test/command output:** Inline or referenced output from a test run or CLI command
70
+ 4. **Session evidence:** Write to the `evidence` session section via `manage_state`
71
+
72
+ **Uncited claims:** Technical assertions without citations MUST be prefixed with
73
+ `[UNVERIFIED]`. Example: `[UNVERIFIED] The auth middleware supports refresh tokens`.
74
+
75
+ ## Red Flags
76
+
77
+ ### Universal
78
+
79
+ These apply to ALL skills. If you catch yourself doing any of these, STOP.
80
+
81
+ - **"I believe the codebase does X"** — Stop. Read the code and cite a file:line
82
+ reference. Belief is not evidence.
83
+ - **"Let me recommend [pattern] for this"** without checking existing patterns — Stop.
84
+ Search the codebase first. The project may already have a convention.
85
+ - **"While we're here, we should also [unrelated improvement]"** — Stop. Flag the idea
86
+ but do not expand scope beyond the stated task.
87
+
88
+ ### Domain-Specific
89
+
90
+ - **"This finding is in test code, so it's not a real issue"** — Stop. Test code can leak secrets, establish bad patterns, and be copy-pasted to production.
91
+ - **"This dependency is widely used, so it's safe"** — Stop. Popularity is not a security guarantee. Check CVE databases and advisory feeds.
92
+ - **"This is a low-severity finding, skipping"** — Stop. Low-severity findings compound. Document why you are deprioritizing, do not silently skip.
93
+ - **"The scanner didn't flag it, so it's clean"** — Stop. Scanners have false negatives. A clean scan is not proof of security — it is absence of evidence.
94
+
95
+ ## Rationalizations to Reject
96
+
97
+ ### Universal
98
+
99
+ These reasoning patterns sound plausible but lead to bad outcomes. Reject them.
100
+
101
+ - **"It's probably fine"** — "Probably" is not evidence. Verify before asserting.
102
+ - **"This is best practice"** — Best practice in what context? Cite the source and
103
+ confirm it applies to this codebase.
104
+ - **"We can fix it later"** — If it is worth flagging, it is worth documenting now
105
+ with a concrete follow-up plan.
106
+
107
+ ### Domain-Specific
108
+
109
+ - **"No attacker would find this"** — Security by obscurity. If the code is wrong, flag it regardless of discoverability.
110
+ - **"We're behind a firewall"** — Network boundaries change. Code should be secure at every layer regardless of deployment topology.
111
+ - **"The framework handles this for us"** — Verify the framework's actual behavior. Misuse of a secure framework is still insecure.
112
+
61
113
  ## Escalation
62
114
 
63
115
  - **When error-severity findings are disputed:** The scanner is mechanical — it may flag false positives. If a finding is a false positive, add a `// harness-ignore SEC-XXX` comment on the line and document the rationale. Do not suppress without explanation.
@@ -0,0 +1,281 @@
1
+ # Harness Supply Chain Audit
2
+
3
+ > 6-factor dependency risk evaluation adapted from Trail of Bits security skill patterns. Surfaces dependency risk flags for human review — not automated verdicts.
4
+
5
+ ## When to Use
6
+
7
+ - Before a major release to assess dependency risk
8
+ - After adding new dependencies
9
+ - During security audits or compliance reviews
10
+ - When `on_milestone` trigger fires (part of release gate)
11
+ - NOT as a replacement for `npm audit` — this complements it with risk signals beyond CVEs
12
+ - NOT for license compliance (separate concern)
13
+
14
+ ## Iron Law
15
+
16
+ **Present findings as flags for human review, never as verdicts.** A dependency flagged as "high risk" may be entirely appropriate for a project. The skill surfaces signals; humans decide whether to act.
17
+
18
+ ---
19
+
20
+ ## Process
21
+
22
+ ### Phase 1: INVENTORY — Build Dependency List
23
+
24
+ 1. **Resolve project root.** Use the path argument or default to the current directory.
25
+
26
+ 2. **Detect lockfile.** Check for the following in order:
27
+ - `package-lock.json` (npm)
28
+ - `pnpm-lock.yaml` (pnpm)
29
+ - `yarn.lock` (yarn)
30
+ - If none found: report "No lockfile detected. Run `npm install` first." and stop.
31
+
32
+ 3. **Parse direct dependencies** from `package.json`:
33
+ - Read `dependencies` and `devDependencies`
34
+ - Build a list: `{ name, version, isDev }`
35
+
36
+ 4. **Parse transitive depth** from lockfile:
37
+ - For `package-lock.json`: read `packages` keys to extract the dependency tree. Nesting depth of `node_modules/` segments in keys indicates transitive depth.
38
+ - For `pnpm-lock.yaml`: read `importers` section for direct dependencies (keyed by workspace path, e.g., `.` for root). Each importer lists `dependencies` and `devDependencies` with version specifiers. Read `packages` section for resolved versions — keys are package identifiers (e.g., `/@scope/pkg@1.2.3`) with `resolution` (tarball URL + integrity hash) and `dependencies` sub-map for transitives.
39
+ - For `yarn.lock`: parse block-format entries. Each block header is `"pkg@version-range":` followed by indented fields: `version` (resolved), `resolved` (tarball URL), `integrity` (hash), and `dependencies` sub-block listing transitive deps as `"name" "version-range"` pairs.
40
+ - Assign each package a depth (0 = direct, 1 = first-level transitive, etc.)
41
+ - Flag packages with depth > 5 for transitive risk evaluation
42
+
43
+ 5. **Build inventory table:**
44
+
45
+ ```
46
+ INVENTORY: <project-name>
47
+ Direct dependencies: N
48
+ Dev dependencies: N
49
+ Total packages (including transitives): N
50
+ Deep transitive packages (depth > 5): N
51
+ ```
52
+
53
+ 6. Proceed to EVALUATE.
54
+
55
+ ---
56
+
57
+ ### Phase 2: EVALUATE — Score Dependencies on 6 Factors
58
+
59
+ For each **direct dependency** (and any transitive with depth > 5), score on 6 factors:
60
+
61
+ > Network access required: npm registry (`https://registry.npmjs.org/<pkg>`) and GitHub API (`https://api.github.com/repos/<owner>/<repo>`).
62
+ >
63
+ > - If npm registry returns 404: mark as "unresolvable", flag for manual review, skip remaining factors
64
+ > - If GitHub API rate limits hit: score `maintenance-status` as "unknown", continue with other factors
65
+ > - If no GitHub repo link in package metadata: skip `maintenance-status` factor, note in report
66
+
67
+ #### Factor 1: Maintainer Concentration
68
+
69
+ - Fetch: `GET https://registry.npmjs.org/<pkg>`
70
+ - Check: `maintainers` array length
71
+ - Score:
72
+ - **High risk:** 1 maintainer (bus factor = 1)
73
+ - **Medium risk:** 2-3 maintainers
74
+ - **Low risk:** 4+ maintainers
75
+
76
+ #### Factor 2: Maintenance Status
77
+
78
+ - Source: npm `time` field (last publish date) + GitHub API commit activity
79
+ - npm: `GET https://registry.npmjs.org/<pkg>` → `time.modified`
80
+ - GitHub: `GET https://api.github.com/repos/<owner>/<repo>/commits?per_page=1` → latest commit date
81
+ - Score:
82
+ - **High risk:** Last publish > 12 months ago AND no GitHub commits in 6 months
83
+ - **Medium risk:** Last publish > 12 months ago OR no commits in 6 months (not both)
84
+ - **Low risk:** Active in both dimensions
85
+
86
+ #### Factor 3: Popularity Signal
87
+
88
+ - Fetch: `GET https://api.npmjs.org/downloads/point/last-week/<pkg>`
89
+ - Score:
90
+ - **High risk:** < 1,000 weekly downloads
91
+ - **Medium risk:** 1,000–10,000 weekly downloads
92
+ - **Low risk:** > 10,000 weekly downloads
93
+ - **Note:** Low popularity is a signal, not a verdict — internal/niche packages are expected to be low
94
+
95
+ #### Factor 4: Install Scripts
96
+
97
+ - Read: `node_modules/<pkg>/package.json` (or lockfile-resolved path) → `scripts` field
98
+ - Check for: `preinstall`, `postinstall`, `install`, `preuninstall`, `postuninstall`
99
+ - Score:
100
+ - **High risk:** Any install script present
101
+ - **Low risk:** No install scripts
102
+ - **Note:** Some install scripts are legitimate (native addon compilation). Flag for review.
103
+
104
+ #### Factor 5: Known CVEs
105
+
106
+ - Run: `npm audit --json` or `pnpm audit --json`
107
+ - Parse: map findings to their package name
108
+ - Score:
109
+ - **Critical:** Any high/critical severity CVE
110
+ - **Medium risk:** Moderate severity CVE
111
+ - **Low risk:** No CVEs or low severity only
112
+
113
+ #### Factor 6: Transitive Risk
114
+
115
+ - Source: Lockfile depth analysis from INVENTORY phase
116
+ - Score:
117
+ - **High risk:** Depth > 5 AND subtree size > 20 transitive packages
118
+ - **Medium risk:** Depth > 5 OR subtree size > 20
119
+ - **Low risk:** Depth ≤ 5 and subtree size ≤ 20
120
+
121
+ #### Risk Scoring
122
+
123
+ Combine factor scores into an overall risk level:
124
+
125
+ | Overall Risk | Condition |
126
+ | ------------ | -------------------------------------------------------------- |
127
+ | **Critical** | Factor 5 is Critical (any high/critical CVE) |
128
+ | **High** | 2+ factors scored High, OR Factor 1 is High + Factor 2 is High |
129
+ | **Medium** | 1 factor scored High, OR 3+ factors scored Medium |
130
+ | **Low** | All factors Low or at most 1 Medium |
131
+
132
+ ---
133
+
134
+ ### Phase 3: REPORT — Generate Risk Summary
135
+
136
+ 1. **Produce risk summary table** sorted by overall risk (Critical first):
137
+
138
+ ```
139
+ Supply Chain Audit: <project-name>
140
+ Date: <ISO date>
141
+ Packages evaluated: N direct + M deep transitives
142
+
143
+ ┌─────────────────────┬──────────┬────────────┬─────────────┬────────────┬──────┬─────────────┐
144
+ │ Package │ Version │ Maintainers│ Last Publish│ Downloads │ CVEs │ Overall Risk│
145
+ ├─────────────────────┼──────────┼────────────┼─────────────┼────────────┼──────┼─────────────┤
146
+ │ example-pkg │ 1.2.3 │ 1 (HIGH) │ 18mo (HIGH) │ 500 (MED) │ none │ HIGH │
147
+ │ another-pkg │ 2.0.0 │ 12 │ 2mo │ 50k │ 1 mod│ MEDIUM │
148
+ └─────────────────────┴──────────┴────────────┴─────────────┴────────────┴──────┴─────────────┘
149
+ ```
150
+
151
+ 2. **Detail section for Critical and High risk packages:**
152
+
153
+ ```
154
+ HIGH RISK: example-pkg@1.2.3
155
+ ├── Maintainer concentration: 1 maintainer (bus factor = 1)
156
+ ├── Maintenance status: Last publish 18 months ago, no commits in 12 months
157
+ ├── Popularity: 500 weekly downloads
158
+ ├── Install scripts: none
159
+ ├── Known CVEs: none
160
+ └── Transitive risk: depth 2, subtree 4 packages
161
+ Recommendation: Consider replacing with a well-maintained alternative,
162
+ or pin the version and monitor for abandonment.
163
+ ```
164
+
165
+ 3. **Install script warnings** (any package with install scripts):
166
+
167
+ ```
168
+ INSTALL SCRIPTS DETECTED:
169
+ - node-gyp@9.4.0: postinstall — native addon compilation (likely legitimate)
170
+ - suspicious-pkg@1.0.0: postinstall — review script contents before trusting
171
+ ```
172
+
173
+ 4. **Summary line:**
174
+
175
+ ```
176
+ RESULT: 1 Critical, 2 High, 3 Medium, N Low — Review flagged items before release
177
+ ```
178
+
179
+ 5. **Output:** Print report to stdout. If `--output <file>` was passed, also write to that file.
180
+
181
+ ---
182
+
183
+ ## Gates
184
+
185
+ - **Stop if no lockfile.** Do not evaluate without a lockfile — results will be unreliable.
186
+ - **Present as flags, not verdicts.** Never state "this package is unsafe." State "this package has signals that warrant review."
187
+ - **Do not block on API failures.** If npm registry or GitHub API is unavailable, note which factors were skipped and continue with available data.
188
+
189
+ ## Harness Integration
190
+
191
+ - **`harness validate`** — Run after creating the skill files to verify they are properly placed.
192
+ - **Triggers:** `on_milestone` fires this skill as part of the milestone completion checklist.
193
+ - **Depends on:** `harness-security-scan` — run after mechanical scanning to complete the security picture.
194
+ - **Output:** Stdout report, optionally written to file via `--output`. No state files written.
195
+
196
+ ## Evidence Requirements
197
+
198
+ When reporting findings, cite the source for each factor:
199
+
200
+ - Maintainer data: `registry.npmjs.org/<pkg>` → `maintainers` field
201
+ - Publish date: `registry.npmjs.org/<pkg>` → `time.modified`
202
+ - Downloads: `api.npmjs.org/downloads/point/last-week/<pkg>`
203
+ - Install scripts: `node_modules/<pkg>/package.json` → `scripts`
204
+ - CVEs: `npm audit --json` output
205
+ - Depth: lockfile analysis
206
+
207
+ Do not assert risk scores without citing the specific data point that generated the score.
208
+
209
+ ## Success Criteria
210
+
211
+ - Running `/harness:supply-chain-audit` on a project with dependencies outputs a risk table with all 6 factors scored
212
+ - A dependency with a sole maintainer and no commits in 12 months scores "high risk"
213
+ - A dependency with a `postinstall` script is flagged in the install scripts section
214
+ - API failures produce "unknown" scores with a note, not errors that stop the audit
215
+ - All findings are framed as flags for human review, not automated verdicts
216
+
217
+ ## Escalation
218
+
219
+ - **If a critical CVE is found:** Surface immediately — do not bury it in the table. Recommend blocking the dependency update or requiring an immediate patch before merge.
220
+ - **If all maintainers are unresponsive:** Flag the package as abandoned and recommend finding an alternative. Include download counts to help the user assess how widely adopted the package is.
221
+ - **If an install script has unknown behavior:** Do not guess. State that the script requires manual review and link to the script source.
222
+ - **If the npm or GitHub API is unavailable:** Note which factors were skipped with "unknown" scores. Do not fail the audit — partial results are better than none.
223
+ - **If the user asks for a verdict ("is this safe?"):** Decline to give a binary answer. Supply chain risk is probabilistic. Present the risk signals and let the human decide.
224
+
225
+ ## Examples
226
+
227
+ ```
228
+ Supply Chain Audit: my-project
229
+ Date: 2026-03-31
230
+ Packages evaluated: 24 direct + 3 deep transitives (depth > 5)
231
+
232
+ CRITICAL (1):
233
+ lodash@4.17.20 — CVE-2021-23337 (high severity, unpatched)
234
+
235
+ HIGH (2):
236
+ abandoned-util@0.9.1 — sole maintainer, last publish 22 months ago
237
+ sketchy-helper@2.1.0 — sole maintainer, postinstall script detected
238
+
239
+ MEDIUM (3):
240
+ small-lib@1.0.0 — 800 weekly downloads (low popularity signal)
241
+ ...
242
+
243
+ LOW (18): no significant risk signals
244
+
245
+ INSTALL SCRIPTS:
246
+ node-gyp@9.4.0 — postinstall (native compilation, likely legitimate)
247
+ sketchy-helper@2.1.0 — postinstall (REVIEW: contents unknown)
248
+
249
+ RESULT: 1 Critical, 2 High, 3 Medium, 18 Low
250
+ Next steps: Update lodash to patch CVE. Review sketchy-helper postinstall script.
251
+ Consider alternatives to abandoned-util.
252
+ ```
253
+
254
+ ## Example Output
255
+
256
+ ```
257
+ Supply Chain Audit: my-project
258
+ Date: 2026-03-31
259
+ Packages evaluated: 24 direct + 3 deep transitives (depth > 5)
260
+
261
+ CRITICAL (1):
262
+ lodash@4.17.20 — CVE-2021-23337 (high severity, unpatched)
263
+
264
+ HIGH (2):
265
+ abandoned-util@0.9.1 — sole maintainer, last publish 22 months ago
266
+ sketchy-helper@2.1.0 — sole maintainer, postinstall script detected
267
+
268
+ MEDIUM (3):
269
+ small-lib@1.0.0 — 800 weekly downloads (low popularity signal)
270
+ ...
271
+
272
+ LOW (18): no significant risk signals
273
+
274
+ INSTALL SCRIPTS:
275
+ node-gyp@9.4.0 — postinstall (native compilation, likely legitimate)
276
+ sketchy-helper@2.1.0 — postinstall (REVIEW: contents unknown)
277
+
278
+ RESULT: 1 Critical, 2 High, 3 Medium, 18 Low
279
+ Next steps: Update lodash to patch CVE. Review sketchy-helper postinstall script.
280
+ Consider alternatives to abandoned-util.
281
+ ```