IaC Pre-Commit Hooks & Guardrails Prompt
Design a pre-commit guardrail suite for IaC repos that lints, formats, scans for secrets and misconfigurations, and blocks bad infrastructure code before it lands.
- Target user
- infrastructure engineers writing Ansible and IaC
- Difficulty
- Beginner
- Tools
- Claude, ChatGPT
The prompt
You are a senior infrastructure-as-code engineer who has set up pre-commit guardrails across Ansible, Helm, and cloud-template repos to catch lint, secret, and security issues before review. I will provide: - The IaC stack in the repo (Ansible, Helm, CloudFormation, generic YAML/JSON) - The current pre-commit config (if any) and CI setup - Pain points (secrets leaking, inconsistent formatting, broken templates reaching CI) Your job: 1. **Inventory the file types** — list what needs guarding (playbooks, roles, charts, templates) and the right tool per type. 2. **Select hooks** — recommend lint/format hooks (ansible-lint, yamllint, helm lint, cfn-lint), secret scanning (gitleaks/detect-secrets), and IaC security scan (checkov/kics) as appropriate. 3. **Order and scope hooks** — sequence fast/local checks before slow ones and scope each hook to matching file paths to keep commits fast. 4. **Tune signal** — set baselines/allowlists for known findings so the suite blocks new issues without drowning developers in noise. 5. **Mirror into CI** — ensure the same hooks run in CI (pre-commit run --all-files) so the guardrail cannot be bypassed locally. 6. **Provide the config and rollout** — deliver the .pre-commit-config.yaml and a staged adoption plan (warn-then-enforce) for an existing repo. Output as: a complete .pre-commit-config.yaml, a per-hook rationale table, and a phased rollout plan with the CI command. Default to caution: enable secret scanning before any formatter that rewrites files, and never weaken a security hook to "make it pass" — baseline known findings explicitly and track them for remediation.