@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.
- package/dist/agents/skills/claude-code/add-harness-component/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/align-documentation/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/check-mechanical-constraints/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/cleanup-dead-code/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/detect-doc-drift/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/enforce-architecture/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-accessibility/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-api-design/SKILL.md +304 -0
- package/dist/agents/skills/claude-code/harness-api-design/skill.yaml +74 -0
- package/dist/agents/skills/claude-code/harness-architecture-advisor/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-auth/SKILL.md +279 -0
- package/dist/agents/skills/claude-code/harness-auth/skill.yaml +81 -0
- package/dist/agents/skills/claude-code/harness-autopilot/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-brainstorming/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-caching/SKILL.md +309 -0
- package/dist/agents/skills/claude-code/harness-caching/skill.yaml +73 -0
- package/dist/agents/skills/claude-code/harness-chaos/SKILL.md +295 -0
- package/dist/agents/skills/claude-code/harness-chaos/skill.yaml +72 -0
- package/dist/agents/skills/claude-code/harness-code-review/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-codebase-cleanup/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-compliance/SKILL.md +303 -0
- package/dist/agents/skills/claude-code/harness-compliance/skill.yaml +78 -0
- package/dist/agents/skills/claude-code/harness-containerization/SKILL.md +284 -0
- package/dist/agents/skills/claude-code/harness-containerization/skill.yaml +80 -0
- package/dist/agents/skills/claude-code/harness-data-pipeline/SKILL.md +274 -0
- package/dist/agents/skills/claude-code/harness-data-pipeline/skill.yaml +81 -0
- package/dist/agents/skills/claude-code/harness-data-validation/SKILL.md +343 -0
- package/dist/agents/skills/claude-code/harness-data-validation/skill.yaml +75 -0
- package/dist/agents/skills/claude-code/harness-database/SKILL.md +258 -0
- package/dist/agents/skills/claude-code/harness-database/skill.yaml +80 -0
- package/dist/agents/skills/claude-code/harness-debugging/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-dependency-health/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-deployment/SKILL.md +255 -0
- package/dist/agents/skills/claude-code/harness-deployment/skill.yaml +77 -0
- package/dist/agents/skills/claude-code/harness-design/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-design-mobile/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-design-system/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-design-web/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-diagnostics/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-docs-pipeline/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-dx/SKILL.md +276 -0
- package/dist/agents/skills/claude-code/harness-dx/skill.yaml +76 -0
- package/dist/agents/skills/claude-code/harness-e2e/SKILL.md +245 -0
- package/dist/agents/skills/claude-code/harness-e2e/skill.yaml +78 -0
- package/dist/agents/skills/claude-code/harness-event-driven/SKILL.md +280 -0
- package/dist/agents/skills/claude-code/harness-event-driven/skill.yaml +77 -0
- package/dist/agents/skills/claude-code/harness-execution/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-feature-flags/SKILL.md +287 -0
- package/dist/agents/skills/claude-code/harness-feature-flags/skill.yaml +74 -0
- package/dist/agents/skills/claude-code/harness-git-workflow/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-hotspot-detector/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-i18n/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-i18n-process/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-i18n-workflow/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-impact-analysis/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-incident-response/SKILL.md +223 -0
- package/dist/agents/skills/claude-code/harness-incident-response/skill.yaml +78 -0
- package/dist/agents/skills/claude-code/harness-infrastructure-as-code/SKILL.md +279 -0
- package/dist/agents/skills/claude-code/harness-infrastructure-as-code/skill.yaml +80 -0
- package/dist/agents/skills/claude-code/harness-integration-test/SKILL.md +271 -0
- package/dist/agents/skills/claude-code/harness-integration-test/skill.yaml +73 -0
- package/dist/agents/skills/claude-code/harness-integrity/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-knowledge-mapper/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-load-testing/SKILL.md +274 -0
- package/dist/agents/skills/claude-code/harness-load-testing/skill.yaml +79 -0
- package/dist/agents/skills/claude-code/harness-ml-ops/SKILL.md +341 -0
- package/dist/agents/skills/claude-code/harness-ml-ops/skill.yaml +79 -0
- package/dist/agents/skills/claude-code/harness-mobile-patterns/SKILL.md +326 -0
- package/dist/agents/skills/claude-code/harness-mobile-patterns/skill.yaml +82 -0
- package/dist/agents/skills/claude-code/harness-mutation-test/SKILL.md +251 -0
- package/dist/agents/skills/claude-code/harness-mutation-test/skill.yaml +70 -0
- package/dist/agents/skills/claude-code/harness-observability/SKILL.md +283 -0
- package/dist/agents/skills/claude-code/harness-observability/skill.yaml +78 -0
- package/dist/agents/skills/claude-code/harness-onboarding/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-parallel-agents/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-perf/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-perf-tdd/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-planning/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-pre-commit-review/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-product-spec/SKILL.md +285 -0
- package/dist/agents/skills/claude-code/harness-product-spec/skill.yaml +72 -0
- package/dist/agents/skills/claude-code/harness-property-test/SKILL.md +281 -0
- package/dist/agents/skills/claude-code/harness-property-test/skill.yaml +71 -0
- package/dist/agents/skills/claude-code/harness-refactoring/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-release-readiness/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-resilience/SKILL.md +255 -0
- package/dist/agents/skills/claude-code/harness-resilience/skill.yaml +76 -0
- package/dist/agents/skills/claude-code/harness-roadmap/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-secrets/SKILL.md +293 -0
- package/dist/agents/skills/claude-code/harness-secrets/skill.yaml +76 -0
- package/dist/agents/skills/claude-code/harness-security-review/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-security-scan/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-skill-authoring/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-soundness-review/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-sql-review/SKILL.md +315 -0
- package/dist/agents/skills/claude-code/harness-sql-review/skill.yaml +74 -0
- package/dist/agents/skills/claude-code/harness-state-management/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-tdd/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-test-advisor/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-test-data/SKILL.md +268 -0
- package/dist/agents/skills/claude-code/harness-test-data/skill.yaml +74 -0
- package/dist/agents/skills/claude-code/harness-ux-copy/SKILL.md +271 -0
- package/dist/agents/skills/claude-code/harness-ux-copy/skill.yaml +77 -0
- package/dist/agents/skills/claude-code/harness-verification/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-verify/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/harness-visual-regression/SKILL.md +257 -0
- package/dist/agents/skills/claude-code/harness-visual-regression/skill.yaml +74 -0
- package/dist/agents/skills/claude-code/initialize-harness-project/skill.yaml +1 -0
- package/dist/agents/skills/claude-code/validate-context-engineering/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/add-harness-component/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/align-documentation/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/check-mechanical-constraints/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/cleanup-dead-code/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/detect-doc-drift/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/enforce-architecture/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-accessibility/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-api-design/SKILL.md +304 -0
- package/dist/agents/skills/gemini-cli/harness-api-design/skill.yaml +74 -0
- package/dist/agents/skills/gemini-cli/harness-architecture-advisor/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-auth/SKILL.md +279 -0
- package/dist/agents/skills/gemini-cli/harness-auth/skill.yaml +81 -0
- package/dist/agents/skills/gemini-cli/harness-autopilot/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-brainstorming/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-caching/SKILL.md +309 -0
- package/dist/agents/skills/gemini-cli/harness-caching/skill.yaml +73 -0
- package/dist/agents/skills/gemini-cli/harness-chaos/SKILL.md +295 -0
- package/dist/agents/skills/gemini-cli/harness-chaos/skill.yaml +72 -0
- package/dist/agents/skills/gemini-cli/harness-code-review/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-compliance/SKILL.md +303 -0
- package/dist/agents/skills/gemini-cli/harness-compliance/skill.yaml +78 -0
- package/dist/agents/skills/gemini-cli/harness-containerization/SKILL.md +284 -0
- package/dist/agents/skills/gemini-cli/harness-containerization/skill.yaml +80 -0
- package/dist/agents/skills/gemini-cli/harness-data-pipeline/SKILL.md +274 -0
- package/dist/agents/skills/gemini-cli/harness-data-pipeline/skill.yaml +81 -0
- package/dist/agents/skills/gemini-cli/harness-data-validation/SKILL.md +343 -0
- package/dist/agents/skills/gemini-cli/harness-data-validation/skill.yaml +75 -0
- package/dist/agents/skills/gemini-cli/harness-database/SKILL.md +258 -0
- package/dist/agents/skills/gemini-cli/harness-database/skill.yaml +80 -0
- package/dist/agents/skills/gemini-cli/harness-debugging/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-dependency-health/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-deployment/SKILL.md +255 -0
- package/dist/agents/skills/gemini-cli/harness-deployment/skill.yaml +77 -0
- package/dist/agents/skills/gemini-cli/harness-design/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-design-mobile/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-design-system/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-design-web/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-diagnostics/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-docs-pipeline/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-dx/SKILL.md +276 -0
- package/dist/agents/skills/gemini-cli/harness-dx/skill.yaml +76 -0
- package/dist/agents/skills/gemini-cli/harness-e2e/SKILL.md +245 -0
- package/dist/agents/skills/gemini-cli/harness-e2e/skill.yaml +78 -0
- package/dist/agents/skills/gemini-cli/harness-event-driven/SKILL.md +280 -0
- package/dist/agents/skills/gemini-cli/harness-event-driven/skill.yaml +77 -0
- package/dist/agents/skills/gemini-cli/harness-execution/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-feature-flags/SKILL.md +287 -0
- package/dist/agents/skills/gemini-cli/harness-feature-flags/skill.yaml +74 -0
- package/dist/agents/skills/gemini-cli/harness-git-workflow/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-hotspot-detector/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-i18n/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-i18n-process/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-i18n-workflow/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-impact-analysis/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-incident-response/SKILL.md +223 -0
- package/dist/agents/skills/gemini-cli/harness-incident-response/skill.yaml +78 -0
- package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/SKILL.md +279 -0
- package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/skill.yaml +80 -0
- package/dist/agents/skills/gemini-cli/harness-integration-test/SKILL.md +271 -0
- package/dist/agents/skills/gemini-cli/harness-integration-test/skill.yaml +73 -0
- package/dist/agents/skills/gemini-cli/harness-integrity/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-knowledge-mapper/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-load-testing/SKILL.md +274 -0
- package/dist/agents/skills/gemini-cli/harness-load-testing/skill.yaml +79 -0
- package/dist/agents/skills/gemini-cli/harness-ml-ops/SKILL.md +341 -0
- package/dist/agents/skills/gemini-cli/harness-ml-ops/skill.yaml +79 -0
- package/dist/agents/skills/gemini-cli/harness-mobile-patterns/SKILL.md +326 -0
- package/dist/agents/skills/gemini-cli/harness-mobile-patterns/skill.yaml +82 -0
- package/dist/agents/skills/gemini-cli/harness-mutation-test/SKILL.md +251 -0
- package/dist/agents/skills/gemini-cli/harness-mutation-test/skill.yaml +70 -0
- package/dist/agents/skills/gemini-cli/harness-observability/SKILL.md +283 -0
- package/dist/agents/skills/gemini-cli/harness-observability/skill.yaml +78 -0
- package/dist/agents/skills/gemini-cli/harness-onboarding/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-parallel-agents/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-perf/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-perf-tdd/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-planning/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-pre-commit-review/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-product-spec/SKILL.md +285 -0
- package/dist/agents/skills/gemini-cli/harness-product-spec/skill.yaml +72 -0
- package/dist/agents/skills/gemini-cli/harness-property-test/SKILL.md +281 -0
- package/dist/agents/skills/gemini-cli/harness-property-test/skill.yaml +71 -0
- package/dist/agents/skills/gemini-cli/harness-refactoring/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-release-readiness/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-resilience/SKILL.md +255 -0
- package/dist/agents/skills/gemini-cli/harness-resilience/skill.yaml +76 -0
- package/dist/agents/skills/gemini-cli/harness-roadmap/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-secrets/SKILL.md +293 -0
- package/dist/agents/skills/gemini-cli/harness-secrets/skill.yaml +76 -0
- package/dist/agents/skills/gemini-cli/harness-security-review/SKILL.md +240 -0
- package/dist/agents/skills/gemini-cli/harness-security-review/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-security-scan/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-skill-authoring/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-soundness-review/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-sql-review/SKILL.md +315 -0
- package/dist/agents/skills/gemini-cli/harness-sql-review/skill.yaml +74 -0
- package/dist/agents/skills/gemini-cli/harness-state-management/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-tdd/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-test-advisor/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-test-data/SKILL.md +268 -0
- package/dist/agents/skills/gemini-cli/harness-test-data/skill.yaml +74 -0
- package/dist/agents/skills/gemini-cli/harness-ux-copy/SKILL.md +271 -0
- package/dist/agents/skills/gemini-cli/harness-ux-copy/skill.yaml +77 -0
- package/dist/agents/skills/gemini-cli/harness-verification/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-verify/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/harness-visual-regression/SKILL.md +257 -0
- package/dist/agents/skills/gemini-cli/harness-visual-regression/skill.yaml +74 -0
- package/dist/agents/skills/gemini-cli/initialize-harness-project/skill.yaml +1 -0
- package/dist/agents/skills/gemini-cli/validate-context-engineering/skill.yaml +1 -0
- package/dist/{agents-md-P2RHSUV7.js → agents-md-XU3BHE22.js} +1 -1
- package/dist/{architecture-ESOOE26S.js → architecture-2R5Z4ZAF.js} +2 -2
- package/dist/bin/harness-mcp.js +14 -13
- package/dist/bin/harness.js +22 -21
- package/dist/{check-phase-gate-S2MZKLFQ.js → check-phase-gate-2OFZ7OWW.js} +3 -2
- package/dist/{chunk-LD3DKUK5.js → chunk-4ZMOCPYO.js} +1 -1
- package/dist/{chunk-5VY23YK3.js → chunk-65FRIL4D.js} +2 -2
- package/dist/{chunk-L2KLU56K.js → chunk-AOZRDOIP.js} +2 -2
- package/dist/{chunk-MACVXDZK.js → chunk-DZS7CJKL.js} +4 -4
- package/dist/{chunk-7PZWR4LI.js → chunk-IM32EEDM.js} +9 -9
- package/dist/{chunk-2YPZKGAG.js → chunk-IMFVFNJE.js} +1 -1
- package/dist/{chunk-HD4IBGLA.js → chunk-N5G5QMS3.js} +24 -1
- package/dist/{chunk-MI5XJQDY.js → chunk-ND6PNADU.js} +23 -9
- package/dist/{chunk-7KQSUZVG.js → chunk-NERR4TAO.js} +729 -436
- package/dist/{chunk-PSNN4LWX.js → chunk-NOPU4RZ4.js} +2 -2
- package/dist/{chunk-KELT6K6M.js → chunk-PQ5YK4AY.js} +287 -258
- package/dist/{chunk-WPPDRIJL.js → chunk-QY4T6YAZ.js} +3 -3
- package/dist/{chunk-RZSUJBZZ.js → chunk-SSKDAOX5.js} +31 -28
- package/dist/{chunk-2VU4MFM3.js → chunk-TKJZKICB.js} +6 -6
- package/dist/{chunk-GNGELAXY.js → chunk-TS3XWPW5.js} +1 -1
- package/dist/chunk-UAX4I5ZE.js +217 -0
- package/dist/{chunk-VRFZWGMS.js → chunk-XYLGHKG6.js} +5 -1
- package/dist/{chunk-6N4R6FVX.js → chunk-YBJ262QL.js} +1 -1
- package/dist/{chunk-3KOLLWWE.js → chunk-Z77YQRQT.js} +11 -207
- package/dist/{ci-workflow-4NYBUG6R.js → ci-workflow-EHV65NQB.js} +1 -1
- package/dist/{create-skill-WPXHSLX2.js → create-skill-XSWHMSM5.js} +2 -2
- package/dist/{dist-WF4C7A4A.js → dist-2B363XUH.js} +1 -1
- package/dist/{dist-M6BQODWC.js → dist-HXHWB7SV.js} +2 -2
- package/dist/{docs-BPYCN2DR.js → docs-FZOPM4GK.js} +4 -2
- package/dist/{engine-LXLIWQQ3.js → engine-OL4T6NZS.js} +1 -1
- package/dist/{entropy-4VDVV5CR.js → entropy-LVHJMFGH.js} +2 -2
- package/dist/{feedback-63QB5RCA.js → feedback-IHLVLMRD.js} +1 -1
- package/dist/{generate-agent-definitions-QABOJG56.js → generate-agent-definitions-64S3CLEZ.js} +3 -3
- package/dist/{glob-helper-5OHBUQAI.js → glob-helper-R5FXNUPS.js} +1 -1
- package/dist/{graph-loader-KO4GJ5N2.js → graph-loader-GJZ4FN4Y.js} +1 -1
- package/dist/index.d.ts +35 -8
- package/dist/index.js +23 -21
- package/dist/{loader-Z2IT7QX3.js → loader-DPYFB6R6.js} +1 -1
- package/dist/{mcp-KQHEL5IF.js → mcp-JQUI7BVZ.js} +14 -13
- package/dist/{performance-26BH47O4.js → performance-ZTVSUANN.js} +2 -2
- package/dist/{review-pipeline-GHR3WFBI.js → review-pipeline-76JHKGSV.js} +1 -1
- package/dist/{runtime-PDWD7UIK.js → runtime-X7U6SC7K.js} +1 -1
- package/dist/{security-UQFUZXEN.js → security-FWQZF2IZ.js} +1 -1
- package/dist/skill-executor-XZLYZYAK.js +8 -0
- package/dist/{validate-N7QJOKFZ.js → validate-GCHZJIL7.js} +2 -2
- package/dist/{validate-cross-check-EDQ5QGTM.js → validate-cross-check-STFHYMAZ.js} +1 -1
- package/package.json +3 -3
- package/dist/skill-executor-RG45LUO5.js +0 -8
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: harness-incident-response
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Runbook generation, postmortem analysis, and SLO/SLA tracking
|
|
4
|
+
cognitive_mode: diagnostic-investigator
|
|
5
|
+
triggers:
|
|
6
|
+
- manual
|
|
7
|
+
- on_bug_fix
|
|
8
|
+
platforms:
|
|
9
|
+
- claude-code
|
|
10
|
+
- gemini-cli
|
|
11
|
+
tools:
|
|
12
|
+
- Bash
|
|
13
|
+
- Read
|
|
14
|
+
- Write
|
|
15
|
+
- Edit
|
|
16
|
+
- Glob
|
|
17
|
+
- Grep
|
|
18
|
+
- emit_interaction
|
|
19
|
+
cli:
|
|
20
|
+
command: harness skill run harness-incident-response
|
|
21
|
+
args:
|
|
22
|
+
- name: path
|
|
23
|
+
description: Project root path
|
|
24
|
+
required: false
|
|
25
|
+
- name: mode
|
|
26
|
+
description: "Operating mode: runbook, postmortem, or slo. Auto-detected when omitted."
|
|
27
|
+
required: false
|
|
28
|
+
- name: severity
|
|
29
|
+
description: "Incident severity: sev1, sev2, sev3, sev4. Defaults to sev3."
|
|
30
|
+
required: false
|
|
31
|
+
mcp:
|
|
32
|
+
tool: run_skill
|
|
33
|
+
input:
|
|
34
|
+
skill: harness-incident-response
|
|
35
|
+
path: string
|
|
36
|
+
type: rigid
|
|
37
|
+
tier: 3
|
|
38
|
+
internal: false
|
|
39
|
+
keywords:
|
|
40
|
+
- incident
|
|
41
|
+
- runbook
|
|
42
|
+
- postmortem
|
|
43
|
+
- SLO
|
|
44
|
+
- SLA
|
|
45
|
+
- SLI
|
|
46
|
+
- on-call
|
|
47
|
+
- alert
|
|
48
|
+
- severity
|
|
49
|
+
- MTTR
|
|
50
|
+
- MTTD
|
|
51
|
+
- error budget
|
|
52
|
+
- incident management
|
|
53
|
+
- PagerDuty
|
|
54
|
+
- OpsGenie
|
|
55
|
+
stack_signals:
|
|
56
|
+
- "runbooks/"
|
|
57
|
+
- "docs/runbooks/"
|
|
58
|
+
- "docs/incidents/"
|
|
59
|
+
- "docs/postmortems/"
|
|
60
|
+
- "slo.yaml"
|
|
61
|
+
- ".pagerduty*"
|
|
62
|
+
phases:
|
|
63
|
+
- name: assess
|
|
64
|
+
description: Determine incident scope, severity, and affected services from available evidence
|
|
65
|
+
required: true
|
|
66
|
+
- name: investigate
|
|
67
|
+
description: Trace root cause through logs, metrics, dependencies, and recent changes
|
|
68
|
+
required: true
|
|
69
|
+
- name: document
|
|
70
|
+
description: Generate runbooks, postmortem reports, and timeline reconstructions
|
|
71
|
+
required: true
|
|
72
|
+
- name: improve
|
|
73
|
+
description: Propose SLO adjustments, alerting improvements, and preventive action items
|
|
74
|
+
required: true
|
|
75
|
+
state:
|
|
76
|
+
persistent: false
|
|
77
|
+
files: []
|
|
78
|
+
depends_on: []
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# Harness Infrastructure as Code
|
|
2
|
+
|
|
3
|
+
> Terraform, CloudFormation, and Pulumi analysis. Module structure, state management, drift prevention, and security posture for infrastructure definitions.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
- When reviewing or designing Terraform, CloudFormation, or Pulumi configurations
|
|
8
|
+
- When auditing IaC module structure, naming conventions, and state management
|
|
9
|
+
- On PRs that modify infrastructure definitions or add new cloud resources
|
|
10
|
+
- NOT for CI/CD pipeline configuration (use harness-deployment)
|
|
11
|
+
- NOT for container orchestration (use harness-containerization)
|
|
12
|
+
- NOT for application-level security (use harness-security-review)
|
|
13
|
+
|
|
14
|
+
## Process
|
|
15
|
+
|
|
16
|
+
### Phase 1: DETECT -- Identify IaC Tool and Structure
|
|
17
|
+
|
|
18
|
+
1. **Detect IaC tooling.** Scan the project for infrastructure definitions:
|
|
19
|
+
- `*.tf` files -- Terraform (HCL)
|
|
20
|
+
- `terraform/` directory with `.terraform.lock.hcl`
|
|
21
|
+
- `cloudformation/`, `*.template.yaml`, `*.template.json` -- CloudFormation
|
|
22
|
+
- `Pulumi.yaml`, `Pulumi.*.yaml` -- Pulumi
|
|
23
|
+
- `cdk.json`, `cdk.out/` -- AWS CDK
|
|
24
|
+
- `infrastructure/`, `infra/` -- common IaC directories
|
|
25
|
+
|
|
26
|
+
2. **Identify provider and backend.** Parse configuration for:
|
|
27
|
+
- Cloud providers (AWS, GCP, Azure) and their versions
|
|
28
|
+
- State backend (S3, GCS, Azure Blob, Terraform Cloud, local)
|
|
29
|
+
- Provider authentication method (environment variables, profiles, OIDC)
|
|
30
|
+
- Lock file presence and provider version constraints
|
|
31
|
+
|
|
32
|
+
3. **Map module structure.** Build a dependency tree of modules:
|
|
33
|
+
- Root modules and their child module references
|
|
34
|
+
- Module source types (local path, registry, git)
|
|
35
|
+
- Module versioning (pinned vs. unpinned)
|
|
36
|
+
- Input variables and output values per module
|
|
37
|
+
- Shared modules used across multiple root configurations
|
|
38
|
+
|
|
39
|
+
4. **Detect environment separation.** Identify how environments are managed:
|
|
40
|
+
- Workspaces (Terraform workspaces)
|
|
41
|
+
- Directory-per-environment (`environments/dev/`, `environments/prod/`)
|
|
42
|
+
- Variable files per environment (`terraform.tfvars`, `prod.tfvars`)
|
|
43
|
+
- Backend configuration per environment
|
|
44
|
+
|
|
45
|
+
5. **Present detection summary:**
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
IaC Detection:
|
|
49
|
+
Tool: Terraform v1.7
|
|
50
|
+
Provider: AWS (us-east-1, us-west-2)
|
|
51
|
+
Backend: S3 with DynamoDB locking
|
|
52
|
+
Modules: 8 local, 3 registry
|
|
53
|
+
Environments: dev, staging, prod (directory-per-env)
|
|
54
|
+
State files: 3 (one per environment)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### Phase 2: ANALYZE -- Evaluate Patterns and Anti-Patterns
|
|
60
|
+
|
|
61
|
+
1. **Check state management.** Verify state is properly configured:
|
|
62
|
+
- Remote backend with locking (not local state for shared infrastructure)
|
|
63
|
+
- State encryption at rest enabled
|
|
64
|
+
- State file does not contain secrets in plain text
|
|
65
|
+
- State is segmented per environment (no single state file for all environments)
|
|
66
|
+
- Backend configuration uses variables, not hardcoded values
|
|
67
|
+
|
|
68
|
+
2. **Evaluate module design.** Check modules for:
|
|
69
|
+
- Single responsibility (one module does one thing)
|
|
70
|
+
- Input validation (variable validation blocks or type constraints)
|
|
71
|
+
- Output completeness (downstream consumers can get what they need)
|
|
72
|
+
- No hardcoded values that should be variables
|
|
73
|
+
- README or documentation for each module
|
|
74
|
+
- Consistent naming conventions across modules
|
|
75
|
+
|
|
76
|
+
3. **Check resource naming and tagging.** Verify:
|
|
77
|
+
- Resources follow a consistent naming convention (e.g., `{project}-{env}-{resource}`)
|
|
78
|
+
- Required tags are present on all taggable resources (environment, team, cost-center)
|
|
79
|
+
- Tag values are consistent (no mix of "prod" and "production")
|
|
80
|
+
- Names do not contain environment-specific values in shared modules
|
|
81
|
+
|
|
82
|
+
4. **Analyze dependency management.** Check for:
|
|
83
|
+
- Provider version constraints (required_providers block)
|
|
84
|
+
- Module version pinning (exact version or range)
|
|
85
|
+
- Lock file committed to version control
|
|
86
|
+
- No circular dependencies between modules
|
|
87
|
+
- Implicit dependencies are made explicit with depends_on where needed
|
|
88
|
+
|
|
89
|
+
5. **Check for common anti-patterns:**
|
|
90
|
+
- Monolithic root modules (everything in one configuration)
|
|
91
|
+
- Hardcoded AMI IDs, account numbers, or region values
|
|
92
|
+
- Resources created outside of IaC (drift risk)
|
|
93
|
+
- Overly permissive IAM policies (wildcards on actions or resources)
|
|
94
|
+
- Missing lifecycle rules (prevent_destroy on critical resources)
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### Phase 3: DESIGN -- Recommend Structure and Patterns
|
|
99
|
+
|
|
100
|
+
1. **Recommend module decomposition.** If monolithic configurations are detected:
|
|
101
|
+
- Propose a module hierarchy based on service boundaries
|
|
102
|
+
- Separate networking, compute, storage, and security into distinct modules
|
|
103
|
+
- Design shared modules for common patterns (e.g., tagged S3 bucket, VPC)
|
|
104
|
+
- Provide module interface design (inputs, outputs)
|
|
105
|
+
|
|
106
|
+
2. **Design state management strategy.** Recommend:
|
|
107
|
+
- One state file per environment per service
|
|
108
|
+
- Remote backend with encryption and locking
|
|
109
|
+
- State import plan for any resources created outside IaC
|
|
110
|
+
- Cross-state data sharing via `terraform_remote_state` or SSM parameters
|
|
111
|
+
|
|
112
|
+
3. **Recommend drift detection workflow.** Design a process to catch manual changes:
|
|
113
|
+
- Scheduled `terraform plan` in CI to detect drift
|
|
114
|
+
- Alert on any planned changes that were not initiated by a PR
|
|
115
|
+
- Runbook for reconciling detected drift (import vs. revert)
|
|
116
|
+
- Tag resources as IaC-managed for auditability
|
|
117
|
+
|
|
118
|
+
4. **Design environment promotion.** Recommend a workflow for infrastructure changes:
|
|
119
|
+
- Changes applied to dev first, then promoted to staging, then production
|
|
120
|
+
- Variable files per environment with appropriate overrides
|
|
121
|
+
- Approval gates before production applies
|
|
122
|
+
- Plan output reviewed as part of PR process
|
|
123
|
+
|
|
124
|
+
5. **Recommend security hardening.** For each provider:
|
|
125
|
+
- Least-privilege IAM roles for IaC execution
|
|
126
|
+
- No inline policies (use managed policies or policy documents)
|
|
127
|
+
- Encryption enabled by default on all storage resources
|
|
128
|
+
- Network security groups with explicit deny rules
|
|
129
|
+
- Sensitive variables marked with `sensitive = true`
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### Phase 4: VALIDATE -- Verify Configuration Correctness
|
|
134
|
+
|
|
135
|
+
1. **Run static analysis.** Execute available validation tools:
|
|
136
|
+
- Terraform: `terraform validate`, `terraform fmt -check`
|
|
137
|
+
- CloudFormation: `cfn-lint` or `aws cloudformation validate-template`
|
|
138
|
+
- Pulumi: type checking via the chosen language runtime
|
|
139
|
+
- CDK: `cdk synth` to verify template generation
|
|
140
|
+
- General: `tflint`, `checkov`, or `tfsec` for security checks
|
|
141
|
+
|
|
142
|
+
2. **Verify variable completeness.** For each root module:
|
|
143
|
+
- All declared variables have descriptions
|
|
144
|
+
- Required variables have no default values
|
|
145
|
+
- Optional variables have sensible defaults
|
|
146
|
+
- Variable types are specific (not `any`)
|
|
147
|
+
- Validation blocks exist for constrained values (e.g., allowed regions)
|
|
148
|
+
|
|
149
|
+
3. **Check plan safety.** If a plan output is available:
|
|
150
|
+
- No unexpected resource deletions
|
|
151
|
+
- No changes to resources marked with `prevent_destroy`
|
|
152
|
+
- Replacements are expected (not caused by force-new arguments)
|
|
153
|
+
- Plan matches the intended change described in the PR
|
|
154
|
+
|
|
155
|
+
4. **Verify security posture.** Run security-focused checks:
|
|
156
|
+
- No public S3 buckets or storage accounts
|
|
157
|
+
- No security groups allowing 0.0.0.0/0 on sensitive ports
|
|
158
|
+
- Encryption enabled on RDS, EBS, S3, and other storage
|
|
159
|
+
- IAM policies follow least privilege
|
|
160
|
+
- No credentials or secrets in variable defaults or outputs
|
|
161
|
+
|
|
162
|
+
5. **Generate validation report:**
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
IaC Validation: [PASS/WARN/FAIL]
|
|
166
|
+
|
|
167
|
+
Format check: PASS (all files formatted)
|
|
168
|
+
Validate: PASS (no syntax errors)
|
|
169
|
+
Security scan: WARN (2 findings)
|
|
170
|
+
- modules/storage/main.tf: S3 bucket missing server-side encryption
|
|
171
|
+
- modules/network/main.tf: security group allows 0.0.0.0/0 on port 22
|
|
172
|
+
Module design: WARN (3 modules missing input validation)
|
|
173
|
+
State management: PASS (remote backend with locking)
|
|
174
|
+
|
|
175
|
+
Recommendations:
|
|
176
|
+
1. Add aws_s3_bucket_server_side_encryption_configuration resource
|
|
177
|
+
2. Restrict SSH access to VPN CIDR range
|
|
178
|
+
3. Add variable validation blocks to network, compute, and storage modules
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Harness Integration
|
|
184
|
+
|
|
185
|
+
- **`harness skill run harness-infrastructure-as-code`** -- Primary invocation for IaC analysis.
|
|
186
|
+
- **`harness validate`** -- Run after configuration changes to verify project health.
|
|
187
|
+
- **`harness check-deps`** -- Verify IaC tool dependencies are installed.
|
|
188
|
+
- **`emit_interaction`** -- Present design recommendations and gather decisions on module structure.
|
|
189
|
+
|
|
190
|
+
## Success Criteria
|
|
191
|
+
|
|
192
|
+
- IaC tooling, provider, and backend are correctly identified
|
|
193
|
+
- Module structure is mapped with dependency relationships
|
|
194
|
+
- State management is verified as remote, encrypted, and locked
|
|
195
|
+
- Resource naming and tagging follow consistent conventions
|
|
196
|
+
- Security posture is evaluated with no critical findings unaddressed
|
|
197
|
+
- Static analysis tools pass without errors
|
|
198
|
+
|
|
199
|
+
## Examples
|
|
200
|
+
|
|
201
|
+
### Example: Terraform AWS Multi-Environment Setup
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
Phase 1: DETECT
|
|
205
|
+
Tool: Terraform v1.6.4
|
|
206
|
+
Provider: AWS (hashicorp/aws ~> 5.0)
|
|
207
|
+
Backend: S3 (us-east-1) with DynamoDB locking
|
|
208
|
+
Modules: 5 local (vpc, ecs, rds, s3, iam), 2 registry (datadog, cloudwatch)
|
|
209
|
+
Environments: dev, staging, prod (directory-per-env with shared modules)
|
|
210
|
+
|
|
211
|
+
Phase 2: ANALYZE
|
|
212
|
+
State management: PASS (remote, encrypted, locked, per-env)
|
|
213
|
+
Module design: WARN
|
|
214
|
+
- modules/ecs has 450 lines -- recommend splitting into ecs-cluster
|
|
215
|
+
and ecs-service modules
|
|
216
|
+
- modules/rds missing variable validation for instance_class
|
|
217
|
+
Naming: PASS (consistent {project}-{env}-{resource} pattern)
|
|
218
|
+
Tags: WARN (cost-center tag missing on 3 resources)
|
|
219
|
+
Anti-patterns: 1 hardcoded AMI in modules/ecs/main.tf
|
|
220
|
+
|
|
221
|
+
Phase 3: DESIGN
|
|
222
|
+
1. Split modules/ecs into ecs-cluster and ecs-service
|
|
223
|
+
2. Add data source for AMI lookup instead of hardcoded value
|
|
224
|
+
3. Add variable validation: instance_class must be db.t3.* or db.r6g.*
|
|
225
|
+
4. Add cost-center tag to default_tags in provider configuration
|
|
226
|
+
5. Add scheduled terraform plan for drift detection in CI
|
|
227
|
+
|
|
228
|
+
Phase 4: VALIDATE
|
|
229
|
+
terraform fmt: PASS
|
|
230
|
+
terraform validate: PASS
|
|
231
|
+
tfsec: WARN (2 findings -- see above)
|
|
232
|
+
checkov: PASS
|
|
233
|
+
Result: WARN -- 5 improvements recommended, no blocking issues
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Example: CloudFormation with CDK
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
Phase 1: DETECT
|
|
240
|
+
Tool: AWS CDK v2.120 (TypeScript)
|
|
241
|
+
Provider: AWS (us-west-2)
|
|
242
|
+
Backend: CloudFormation (managed by CDK)
|
|
243
|
+
Stacks: 3 (NetworkStack, ComputeStack, StorageStack)
|
|
244
|
+
Environments: dev and prod via CDK context
|
|
245
|
+
|
|
246
|
+
Phase 2: ANALYZE
|
|
247
|
+
Stack design: PASS (clean separation by concern)
|
|
248
|
+
Cross-stack references: PASS (using CfnOutput and Fn::ImportValue)
|
|
249
|
+
Security: WARN
|
|
250
|
+
- ComputeStack: EC2 instance has public IP and open SSH
|
|
251
|
+
- StorageStack: DynamoDB table missing point-in-time recovery
|
|
252
|
+
CDK constructs: Using L2 constructs (good -- higher abstraction)
|
|
253
|
+
|
|
254
|
+
Phase 3: DESIGN
|
|
255
|
+
1. Add bastion host pattern instead of direct SSH to EC2
|
|
256
|
+
2. Enable point-in-time recovery on DynamoDB table
|
|
257
|
+
3. Add cdk-nag for automated security checks in synthesis
|
|
258
|
+
4. Add stack-level tags via Tags.of(stack).add()
|
|
259
|
+
|
|
260
|
+
Phase 4: VALIDATE
|
|
261
|
+
cdk synth: PASS (3 templates generated)
|
|
262
|
+
cfn-lint: PASS (all templates valid)
|
|
263
|
+
Security: WARN (2 findings)
|
|
264
|
+
Result: WARN -- 2 security improvements needed
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Gates
|
|
268
|
+
|
|
269
|
+
- **No local state for shared infrastructure.** Terraform configurations managing shared resources must use a remote backend with locking. Local state is blocking for any non-experimental configuration.
|
|
270
|
+
- **No unpinned provider versions.** Provider version constraints must be explicit. Using `>=` without an upper bound or omitting version constraints entirely is a blocking finding.
|
|
271
|
+
- **No public access to sensitive resources.** S3 buckets, databases, or storage accounts with public access enabled are blocking security findings.
|
|
272
|
+
- **No credentials in IaC files.** Hardcoded access keys, passwords, or tokens in Terraform variables, CloudFormation parameters, or Pulumi configuration are blocking findings.
|
|
273
|
+
|
|
274
|
+
## Escalation
|
|
275
|
+
|
|
276
|
+
- **When state is corrupted or diverged:** Do not attempt automatic recovery. Report the state of divergence, recommend `terraform state pull` for backup, and advise manual reconciliation with a plan review before any apply.
|
|
277
|
+
- **When resources exist outside IaC management:** Recommend a phased import strategy. Provide `terraform import` commands for each resource and note that import does not generate configuration -- the HCL must be written manually.
|
|
278
|
+
- **When module versions are significantly outdated:** Present the version gap and changelog summary. If breaking changes exist, recommend a separate PR for the upgrade with a plan review before applying.
|
|
279
|
+
- **When IaC tool version conflicts exist between team members:** Recommend pinning the tool version in `.terraform-version` (tfenv) or `Pulumi.yaml` and adding version checks to CI.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: harness-infrastructure-as-code
|
|
2
|
+
version: "1.0.0"
|
|
3
|
+
description: Terraform, CloudFormation, Pulumi patterns and IaC best practices
|
|
4
|
+
cognitive_mode: advisory-guide
|
|
5
|
+
tier: 3
|
|
6
|
+
internal: false
|
|
7
|
+
keywords:
|
|
8
|
+
- Terraform
|
|
9
|
+
- CloudFormation
|
|
10
|
+
- Pulumi
|
|
11
|
+
- IaC
|
|
12
|
+
- infrastructure
|
|
13
|
+
- HCL
|
|
14
|
+
- CDK
|
|
15
|
+
- AWS
|
|
16
|
+
- GCP
|
|
17
|
+
- Azure
|
|
18
|
+
- state
|
|
19
|
+
- module
|
|
20
|
+
- provider
|
|
21
|
+
- resource
|
|
22
|
+
stack_signals:
|
|
23
|
+
- "*.tf"
|
|
24
|
+
- "terraform/"
|
|
25
|
+
- "cloudformation/"
|
|
26
|
+
- "*.template.yaml"
|
|
27
|
+
- "*.template.json"
|
|
28
|
+
- "Pulumi.yaml"
|
|
29
|
+
- "cdk.json"
|
|
30
|
+
- "infrastructure/"
|
|
31
|
+
triggers:
|
|
32
|
+
- manual
|
|
33
|
+
- on_new_feature
|
|
34
|
+
- on_pr
|
|
35
|
+
platforms:
|
|
36
|
+
- claude-code
|
|
37
|
+
- gemini-cli
|
|
38
|
+
tools:
|
|
39
|
+
- Bash
|
|
40
|
+
- Read
|
|
41
|
+
- Write
|
|
42
|
+
- Edit
|
|
43
|
+
- Glob
|
|
44
|
+
- Grep
|
|
45
|
+
- emit_interaction
|
|
46
|
+
cli:
|
|
47
|
+
command: harness skill run harness-infrastructure-as-code
|
|
48
|
+
args:
|
|
49
|
+
- name: path
|
|
50
|
+
description: Project root path
|
|
51
|
+
required: false
|
|
52
|
+
- name: provider
|
|
53
|
+
description: Cloud provider context (aws, gcp, azure)
|
|
54
|
+
required: false
|
|
55
|
+
- name: tool
|
|
56
|
+
description: IaC tool to focus on (terraform, cloudformation, pulumi, cdk)
|
|
57
|
+
required: false
|
|
58
|
+
mcp:
|
|
59
|
+
tool: run_skill
|
|
60
|
+
input:
|
|
61
|
+
skill: harness-infrastructure-as-code
|
|
62
|
+
path: string
|
|
63
|
+
type: rigid
|
|
64
|
+
phases:
|
|
65
|
+
- name: detect
|
|
66
|
+
description: Identify IaC tool, provider, and module structure
|
|
67
|
+
required: true
|
|
68
|
+
- name: analyze
|
|
69
|
+
description: Evaluate resource definitions, state management, and module patterns
|
|
70
|
+
required: true
|
|
71
|
+
- name: design
|
|
72
|
+
description: Recommend module decomposition, naming, and drift prevention
|
|
73
|
+
required: true
|
|
74
|
+
- name: validate
|
|
75
|
+
description: Verify configuration correctness and security posture
|
|
76
|
+
required: true
|
|
77
|
+
state:
|
|
78
|
+
persistent: false
|
|
79
|
+
files: []
|
|
80
|
+
depends_on: []
|