New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Write an infrastructure-as-code review checklist

by mohitagw15856 · MIT license · ★ 1,395 on GitHub · updated Sep 23

Infrastructure-as-Code Review cover

Write an infrastructure-as-code review checklist and conduct a structured review of Terraform, CloudFormation, Pulumi, or Ansible code. Use when asked to review IaC code, audit infrastructure configurations, check cloud security…

---
name: infra-as-code-review
description: "Write an infrastructure-as-code review checklist and conduct a structured review of Terraform, CloudFormation, Pulumi, or Ansible code. Use when asked to review IaC code, audit infrastructure configurations, check cloud security posture, or produce a reusable IaC review checklist. Produces a structured review report with severity-categorized findings, remediation guidance, and a reusable checklist."
---

# Infrastructure-as-Code Review

Produce a structured infrastructure-as-code review that applies security, reliability, and operational quality standards to a specific body of IaC code. The output serves two purposes: an actionable review report for the code at hand (with findings by severity and specific remediation steps), and a reusable checklist the team can apply to every future IaC change. If the user provides actual code, analyze it and populate the findings table with real issues. If no code is provided, produce the checklist and a template findings report.

## Required Inputs

Ask for these if not already provided:
- **IaC tool** — Terraform, CloudFormation, Pulumi, Ansible, or CDK
- **Cloud provider** — AWS, GCP, Azure, or multi-cloud
- **What the code provisions** — a brief description (e.g., "VPC, EKS cluster, and RDS instance for the payments service")
- **Security policies or naming standards in use** — any existing org standards to check against; if none, use sensible defaults
- **The IaC code itself** — paste or describe it; if not provided, produce the checklist template only and note findings require code

Overview

Produce a structured infrastructure-as-code review that applies security, reliability, and operational quality standards to a specific body of IaC code. The output serves two purposes: an actionable review report for the code at hand (with findings by severity and specific remediation steps), and a reusable checklist the team can apply to every future IaC change. If the user provides actual code, analyze it and populate the findings table with real issues. If no code is provided, produce the checklist and a template findings report.

Manual install (npx, ZIP)
Claude Codenpx skills add mohitagw15856/pm-claude-skills --skill infra-as-code-review -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/mohitagw15856/pm-claude-skills/tar.gz/f6ca79348c55 \ | tar -xz -C ~/.claude/skills --strip-components=2 pm-claude-skills-f6ca79348c55/skills/infra-as-code-review
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/3a9b292ff6636528ffb2/infra-as-code-review.zip" -OutFile "$env:TEMP\infra-as-code-review.zip"; Expand-Archive "$env:TEMP\infra-as-code-review.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md12.8 KB
Read the files here
mohitagw15856/f6ca7931 file
SKILL.md
Show the full text301 lines

Infrastructure-as-Code Review

Produce a structured infrastructure-as-code review that applies security, reliability, and operational quality standards to a specific body of IaC code. The output serves two purposes: an actionable review report for the code at hand (with findings by severity and specific remediation steps), and a reusable checklist the team can apply to every future IaC change. If the user provides actual code, analyze it and populate the findings table with real issues. If no code is provided, produce the checklist and a template findings report.

Required Inputs

Ask for these if not already provided:

  • IaC tool — Terraform, CloudFormation, Pulumi, Ansible, or CDK
  • Cloud provider — AWS, GCP, Azure, or multi-cloud
  • What the code provisions — a brief description (e.g., "VPC, EKS cluster, and RDS instance for the payments service")
  • Security policies or naming standards in use — any existing org standards to check against; if none, use sensible defaults
  • The IaC code itself — paste or describe it; if not provided, produce the checklist template only and note findings require code

Output Format


IaC Review Report: [What Is Being Provisioned]

Reviewer: [Name / Claude] IaC Tool: [Terraform / CloudFormation / Pulumi / Ansible / CDK] Cloud Provider: [AWS / GCP / Azure] Code Location: [Repo path or PR link] Review Date: [Date] Overall Risk: [Critical / High / Medium / Low]


Executive Summary

Severity Finding Count Resolved in This Review Carry-Over Risk
Critical [n] [n] [Yes/No — explain]
High [n] [n] [Yes/No — explain]
Medium [n] [n] [Yes/No — explain]
Low [n] [n] [Yes/No — explain]
Total [n] [n]

Recommendation: [Approve / Approve with Required Changes / Block — one sentence rationale]


Findings

Critical Findings
CRIT-01: [Finding Title]
Field Detail
Severity Critical
Category [IAM / Secrets / Encryption / Network / State / Naming / Cost]
Resource [resource_type.resource_name]
File / Line [path/to/file.tf:42]
Risk [What can go wrong — be specific about the attack vector or failure mode]

Current code:

# [paste the problematic snippet]
resource "aws_s3_bucket" "data" {
  bucket = "my-bucket"
  acl    = "public-read"   # PROBLEM: public read access
}

Remediation:

resource "aws_s3_bucket" "data" {
  bucket = "my-bucket"
}

resource "aws_s3_bucket_public_access_block" "data" {
  bucket                  = aws_s3_bucket.data.id
  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

Why this matters: [One sentence linking the specific risk to business impact — data exposure, compliance violation, etc.]


CRIT-02: [Next Critical Finding — repeat structure]

High Findings
HIGH-01: [Finding Title]
Field Detail
Severity High
Category [Category]
Resource [resource_type.resource_name]
File / Line [path/to/file.tf:line]
Risk [Specific risk description]

Current code:

# [problematic snippet]

Remediation:

# [fixed snippet]

Medium Findings
MED-01: [Finding Title]
Field Detail
Severity Medium
Category [Category]
Resource [resource_type.resource_name]
File / Line [path/to/file.tf:line]
Risk [Specific risk description]

Remediation: [Prose or code snippet — choose whichever is clearer for this finding]


Low Findings
LOW-01: [Finding Title]
Field Detail
Severity Low
Category [Category]
Resource [resource_type.resource_name]
File / Line [path/to/file.tf:line]
Suggestion [What to improve and why]

Reusable IaC Review Checklist

Use this checklist on every IaC pull request. Check every item; mark N/A only when the item genuinely does not apply to the resources being provisioned.

1. IAM and Access Control
  • No wildcard actions ("*") in IAM policies — policies follow least-privilege
  • No wildcard resource ("*") in IAM policies unless explicitly justified with a comment
  • IAM roles use condition keys to restrict scope (e.g., aws:RequestedRegion, sts:ExternalId)
  • No IAM access keys or credentials hardcoded or in plaintext variables
  • EC2 / compute instances use instance profiles, not hardcoded credentials
  • S3 bucket policies do not allow public access unless the bucket is explicitly a public asset bucket
  • Cross-account trust policies name specific account IDs, not "*"
  • Service accounts (GCP) / managed identities (Azure) follow naming conventions and have documented purpose
2. Secrets Management
  • No secrets, passwords, tokens, or API keys in plaintext in any .tf, .yaml, or .json file
  • No secrets in variable default values
  • Secrets sourced from Secrets Manager / Parameter Store / Vault — not from environment variables passed at plan time
  • sensitive = true is set on all output values and variables that contain secrets (Terraform)
  • State backend is encrypted — no unencrypted state files contain sensitive data
  • .gitignore or equivalent excludes *.tfvars, terraform.tfstate, and any file that may contain resolved secrets
3. Encryption at Rest
  • Storage resources (S3, EBS, RDS, DynamoDB, GCS, Azure Blob) have encryption at rest enabled
  • Customer-managed keys (CMK/KMS) are used where required by policy — not solely AWS/GCP/Azure managed keys
  • KMS key rotation is enabled for all CMKs
  • Database snapshots have encryption enabled
  • Encryption is not disabled via encrypted = false or equivalent
4. Encryption in Transit
  • Load balancers terminate TLS — HTTP-only listeners redirect to HTTPS or are absent
  • Minimum TLS version is 1.2; TLS 1.0 and 1.1 are explicitly disabled
  • RDS / database connections require SSL (require_ssl = true or equivalent parameter)
  • Internal service-to-service calls use TLS where the network is not fully private
  • S3 bucket policies include a Deny on non-TLS requests (aws:SecureTransport: false)
5. Network and Public Access
  • Security groups / firewall rules do not permit 0.0.0.0/0 ingress except on ports 80/443 for public-facing services
  • SSH (port 22) and RDP (port 3389) are not open to 0.0.0.0/0
  • Databases are in private subnets — not directly internet-routable
  • publicly_accessible = false on RDS instances unless explicitly required and documented
  • VPC has flow logs enabled
  • Network ACLs and security groups are layered (defense in depth)
  • S3 bucket public access block is enabled at the account and bucket level
6. Logging, Monitoring, and Audit
  • CloudTrail / Cloud Audit Logs / Azure Monitor is enabled across all regions
  • S3 access logging is enabled on buckets containing sensitive or regulated data
  • RDS enhanced monitoring or equivalent is enabled
  • CloudWatch alarms or equivalent are defined for critical metrics (CPU, disk, error rate)
  • Log retention periods are defined — logs not retained indefinitely or deleted within 7 days
7. Naming and Tagging Standards
  • All resources follow the team's naming convention: [env]-[team]-[resource-type]-[identifier]
  • Required tags are present on all taggable resources:
    • Environment (e.g., prod / staging / dev)
    • Team or Owner
    • Service or Application
    • CostCenter (if required by finance policy)
    • ManagedBy: terraform (or equivalent IaC tool tag)
  • No resources with default names (e.g., default-vpc, launch-wizard-1)
8. State Management and Backend
  • Remote state backend is configured — no local state in repository
  • State backend uses locking (DynamoDB for S3 backend, etc.)
  • State backend bucket/storage has versioning enabled
  • State backend bucket/storage has access logging enabled
  • Workspaces or separate state files are used per environment — no shared state between prod and non-prod
  • terraform.tfstate and *.tfstate.backup are in .gitignore
9. Module and Resource Structure
  • Modules are versioned with explicit version pins — no floating source = "git::...?ref=main"
  • Provider versions are pinned in required_providers — no unconstrained >= x.y
  • Terraform version is pinned in required_version
  • Modules have a clear single responsibility — not one module that provisions everything
  • No copy-paste duplication — repeated patterns use modules or loops (for_each, count)
  • Outputs expose only what downstream consumers need — no unnecessary output sprawl
10. Environment Parity
  • Prod and non-prod environments use the same module code, parameterized by environment variable
  • Instance sizes and replica counts differ by environment via variables — not by separate code branches
  • Non-prod does not have security controls disabled "to save money" (encryption off, logging off)
11. Cost Impact
  • Large instance types (e.g., r5.16xlarge) or storage allocations are justified in a comment
  • Data transfer costs are considered for cross-region or cross-AZ architectures
  • Reserved instance or committed use discount eligibility is noted for long-lived resources
  • Auto-scaling is configured for variable workloads — no fixed oversized fleets for spiky traffic
  • Lifecycle policies are set on S3 buckets storing time-bounded data (logs, backups)
12. Drift Risk
  • No resources that are commonly mutated in the console are managed by IaC without import documentation
  • lifecycle { prevent_destroy = true } is set on stateful resources in production (databases, state buckets)
  • ignore_changes is used sparingly and each instance is documented with a rationale comment
  • A plan is run against the live environment as part of the PR process — no unreviewed drift

Findings Summary Table

ID Title Severity Category File Status
CRIT-01 [Title] Critical [Category] [file:line] Open
HIGH-01 [Title] High [Category] [file:line] Open
MED-01 [Title] Medium [Category] [file:line] Open
LOW-01 [Title] Low [Category] [file:line] Open

Required Actions Before Merge

List only Critical and High findings that must be resolved before this code is merged:

  1. CRIT-01 [Title] — [One-line remediation instruction]
  2. HIGH-01 [Title] — [One-line remediation instruction]

Medium and Low findings should be tracked as follow-up issues with a committed resolution date.


Review conducted by [Reviewer] on [Date] — checklist version [1.0]


Quality Checks

  • Every finding includes: severity, category, specific resource name, file and line number, current code, and fixed code
  • Checklist covers all 12 categories: IAM, Secrets, Encryption at Rest, Encryption in Transit, Network, Logging, Naming/Tagging, State, Module Structure, Environment Parity, Cost, and Drift
  • Executive summary table is filled with real counts — not all zeros or all placeholders
  • "Required Actions Before Merge" section lists only Critical and High items
  • Code snippets in findings show both the problematic code AND the corrected version
  • Overall risk rating is justified by the highest-severity open finding
  • Checklist items are binary (checkable) — not narrative observations

Anti-Patterns

  • Do not mark a finding as Low if it involves hardcoded credentials or secrets in any form — always Critical
  • Do not review IaC in isolation from the deployment context — networking and IAM must be evaluated together
  • Do not produce narrative findings without the specific resource name, file, and line number
  • Do not skip the "Required Actions Before Merge" summary — reviewers need a clear blocking list, not just a full report
  • Do not approve code where encryption at rest or in transit is missing on data stores, even if not explicitly flagged by the requester
1---
2name: infra-as-code-review
3description: "Write an infrastructure-as-code review checklist and conduct a structured review of Terraform, CloudFormation, Pulumi, or Ansible code. Use when asked to review IaC code, audit infrastructure configurations, check cloud security posture, or produce a reusable IaC review checklist. Produces a structured review report with severity-categorized findings, remediation guidance, and a reusable checklist."
4---
5 
6# Infrastructure-as-Code Review
7 
8Produce a structured infrastructure-as-code review that applies security, reliability, and operational quality standards to a specific body of IaC code. The output serves two purposes: an actionable review report for the code at hand (with findings by severity and specific remediation steps), and a reusable checklist the team can apply to every future IaC change. If the user provides actual code, analyze it and populate the findings table with real issues. If no code is provided, produce the checklist and a template findings report.
9 
10## Required Inputs
11 
12Ask for these if not already provided:
13- **IaC tool** — Terraform, CloudFormation, Pulumi, Ansible, or CDK
14- **Cloud provider** — AWS, GCP, Azure, or multi-cloud
15- **What the code provisions** — a brief description (e.g., "VPC, EKS cluster, and RDS instance for the payments service")
16- **Security policies or naming standards in use** — any existing org standards to check against; if none, use sensible defaults
17- **The IaC code itself** — paste or describe it; if not provided, produce the checklist template only and note findings require code
18 
19## Output Format
20 
21---
22 
23# IaC Review Report: [What Is Being Provisioned]
24 
25**Reviewer:** [Name / Claude]
26**IaC Tool:** [Terraform / CloudFormation / Pulumi / Ansible / CDK]
27**Cloud Provider:** [AWS / GCP / Azure]
28**Code Location:** [Repo path or PR link]
29**Review Date:** [Date]
30**Overall Risk:** [Critical / High / Medium / Low]
31 
32---
33 
34## Executive Summary
35 
36| Severity | Finding Count | Resolved in This Review | Carry-Over Risk |
37|----------|---------------|------------------------|-----------------|
38| Critical | [n] | [n] | [Yes/No — explain] |
39| High | [n] | [n] | [Yes/No — explain] |
40| Medium | [n] | [n] | [Yes/No — explain] |
41| Low | [n] | [n] | [Yes/No — explain] |
42| **Total** | **[n]** | **[n]** | |
43 
44**Recommendation:** [Approve / Approve with Required Changes / Block — one sentence rationale]
45 
46---
47 
48## Findings
49 
50### Critical Findings
51 
52#### CRIT-01: [Finding Title]
53 
54| Field | Detail |
55|-------|--------|
56| **Severity** | Critical |
57| **Category** | [IAM / Secrets / Encryption / Network / State / Naming / Cost] |
58| **Resource** | `[resource_type.resource_name]` |
59| **File / Line** | `[path/to/file.tf:42]` |
60| **Risk** | [What can go wrong — be specific about the attack vector or failure mode] |
61 
62**Current code:**
63```hcl
64# [paste the problematic snippet]
65resource "aws_s3_bucket" "data" {
66 bucket = "my-bucket"
67 acl = "public-read" # PROBLEM: public read access
68}
69```
70 
71**Remediation:**
72```hcl
73resource "aws_s3_bucket" "data" {
74 bucket = "my-bucket"
75}
76 
77resource "aws_s3_bucket_public_access_block" "data" {
78 bucket = aws_s3_bucket.data.id
79 block_public_acls = true
80 block_public_policy = true
81 ignore_public_acls = true
82 restrict_public_buckets = true
83}
84```
85 
86**Why this matters:** [One sentence linking the specific risk to business impact — data exposure, compliance violation, etc.]
87 
88---
89 
90#### CRIT-02: [Next Critical Finding — repeat structure]
91 
92---
93 
94### High Findings
95 
96#### HIGH-01: [Finding Title]
97 
98| Field | Detail |
99|-------|--------|
100| **Severity** | High |
101| **Category** | [Category] |
102| **Resource** | `[resource_type.resource_name]` |
103| **File / Line** | `[path/to/file.tf:line]` |
104| **Risk** | [Specific risk description] |
105 
106**Current code:**
107```hcl
108# [problematic snippet]
109```
110 
111**Remediation:**
112```hcl
113# [fixed snippet]
114```
115 
116---
117 
118### Medium Findings
119 
120#### MED-01: [Finding Title]
121 
122| Field | Detail |
123|-------|--------|
124| **Severity** | Medium |
125| **Category** | [Category] |
126| **Resource** | `[resource_type.resource_name]` |
127| **File / Line** | `[path/to/file.tf:line]` |
128| **Risk** | [Specific risk description] |
129 
130**Remediation:** [Prose or code snippet — choose whichever is clearer for this finding]
131 
132---
133 
134### Low Findings
135 
136#### LOW-01: [Finding Title]
137 
138| Field | Detail |
139|-------|--------|
140| **Severity** | Low |
141| **Category** | [Category] |
142| **Resource** | `[resource_type.resource_name]` |
143| **File / Line** | `[path/to/file.tf:line]` |
144| **Suggestion** | [What to improve and why] |
145 
146---
147 
148## Reusable IaC Review Checklist
149 
150Use this checklist on every IaC pull request. Check every item; mark N/A only when the item genuinely does not apply to the resources being provisioned.
151 
152### 1. IAM and Access Control
153 
154- [ ] No wildcard actions (`"*"`) in IAM policies — policies follow least-privilege
155- [ ] No wildcard resource (`"*"`) in IAM policies unless explicitly justified with a comment
156- [ ] IAM roles use condition keys to restrict scope (e.g., `aws:RequestedRegion`, `sts:ExternalId`)
157- [ ] No IAM access keys or credentials hardcoded or in plaintext variables
158- [ ] EC2 / compute instances use instance profiles, not hardcoded credentials
159- [ ] S3 bucket policies do not allow public access unless the bucket is explicitly a public asset bucket
160- [ ] Cross-account trust policies name specific account IDs, not `"*"`
161- [ ] Service accounts (GCP) / managed identities (Azure) follow naming conventions and have documented purpose
162 
163### 2. Secrets Management
164 
165- [ ] No secrets, passwords, tokens, or API keys in plaintext in any `.tf`, `.yaml`, or `.json` file
166- [ ] No secrets in variable default values
167- [ ] Secrets sourced from Secrets Manager / Parameter Store / Vault — not from environment variables passed at plan time
168- [ ] `sensitive = true` is set on all output values and variables that contain secrets (Terraform)
169- [ ] State backend is encrypted — no unencrypted state files contain sensitive data
170- [ ] `.gitignore` or equivalent excludes `*.tfvars`, `terraform.tfstate`, and any file that may contain resolved secrets
171 
172### 3. Encryption at Rest
173 
174- [ ] Storage resources (S3, EBS, RDS, DynamoDB, GCS, Azure Blob) have encryption at rest enabled
175- [ ] Customer-managed keys (CMK/KMS) are used where required by policy — not solely AWS/GCP/Azure managed keys
176- [ ] KMS key rotation is enabled for all CMKs
177- [ ] Database snapshots have encryption enabled
178- [ ] Encryption is not disabled via `encrypted = false` or equivalent
179 
180### 4. Encryption in Transit
181 
182- [ ] Load balancers terminate TLS — HTTP-only listeners redirect to HTTPS or are absent
183- [ ] Minimum TLS version is 1.2; TLS 1.0 and 1.1 are explicitly disabled
184- [ ] RDS / database connections require SSL (`require_ssl = true` or equivalent parameter)
185- [ ] Internal service-to-service calls use TLS where the network is not fully private
186- [ ] S3 bucket policies include a `Deny` on non-TLS requests (`aws:SecureTransport: false`)
187 
188### 5. Network and Public Access
189 
190- [ ] Security groups / firewall rules do not permit `0.0.0.0/0` ingress except on ports 80/443 for public-facing services
191- [ ] SSH (port 22) and RDP (port 3389) are not open to `0.0.0.0/0`
192- [ ] Databases are in private subnets — not directly internet-routable
193- [ ] `publicly_accessible = false` on RDS instances unless explicitly required and documented
194- [ ] VPC has flow logs enabled
195- [ ] Network ACLs and security groups are layered (defense in depth)
196- [ ] S3 bucket public access block is enabled at the account and bucket level
197 
198### 6. Logging, Monitoring, and Audit
199 
200- [ ] CloudTrail / Cloud Audit Logs / Azure Monitor is enabled across all regions
201- [ ] S3 access logging is enabled on buckets containing sensitive or regulated data
202- [ ] RDS enhanced monitoring or equivalent is enabled
203- [ ] CloudWatch alarms or equivalent are defined for critical metrics (CPU, disk, error rate)
204- [ ] Log retention periods are defined — logs not retained indefinitely or deleted within 7 days
205 
206### 7. Naming and Tagging Standards
207 
208- [ ] All resources follow the team's naming convention: `[env]-[team]-[resource-type]-[identifier]`
209- [ ] Required tags are present on all taggable resources:
210 - [ ] `Environment` (e.g., prod / staging / dev)
211 - [ ] `Team` or `Owner`
212 - [ ] `Service` or `Application`
213 - [ ] `CostCenter` (if required by finance policy)
214 - [ ] `ManagedBy: terraform` (or equivalent IaC tool tag)
215- [ ] No resources with default names (e.g., `default-vpc`, `launch-wizard-1`)
216 
217### 8. State Management and Backend
218 
219- [ ] Remote state backend is configured — no local state in repository
220- [ ] State backend uses locking (DynamoDB for S3 backend, etc.)
221- [ ] State backend bucket/storage has versioning enabled
222- [ ] State backend bucket/storage has access logging enabled
223- [ ] Workspaces or separate state files are used per environment — no shared state between prod and non-prod
224- [ ] `terraform.tfstate` and `*.tfstate.backup` are in `.gitignore`
225 
226### 9. Module and Resource Structure
227 
228- [ ] Modules are versioned with explicit version pins — no floating `source = "git::...?ref=main"`
229- [ ] Provider versions are pinned in `required_providers` — no unconstrained `>= x.y`
230- [ ] Terraform version is pinned in `required_version`
231- [ ] Modules have a clear single responsibility — not one module that provisions everything
232- [ ] No copy-paste duplication — repeated patterns use modules or loops (`for_each`, `count`)
233- [ ] Outputs expose only what downstream consumers need — no unnecessary output sprawl
234 
235### 10. Environment Parity
236 
237- [ ] Prod and non-prod environments use the same module code, parameterized by environment variable
238- [ ] Instance sizes and replica counts differ by environment via variables — not by separate code branches
239- [ ] Non-prod does not have security controls disabled "to save money" (encryption off, logging off)
240 
241### 11. Cost Impact
242 
243- [ ] Large instance types (e.g., `r5.16xlarge`) or storage allocations are justified in a comment
244- [ ] Data transfer costs are considered for cross-region or cross-AZ architectures
245- [ ] Reserved instance or committed use discount eligibility is noted for long-lived resources
246- [ ] Auto-scaling is configured for variable workloads — no fixed oversized fleets for spiky traffic
247- [ ] Lifecycle policies are set on S3 buckets storing time-bounded data (logs, backups)
248 
249### 12. Drift Risk
250 
251- [ ] No resources that are commonly mutated in the console are managed by IaC without import documentation
252- [ ] `lifecycle { prevent_destroy = true }` is set on stateful resources in production (databases, state buckets)
253- [ ] `ignore_changes` is used sparingly and each instance is documented with a rationale comment
254- [ ] A plan is run against the live environment as part of the PR process — no unreviewed drift
255 
256---
257 
258## Findings Summary Table
259 
260| ID | Title | Severity | Category | File | Status |
261|----|-------|----------|----------|------|--------|
262| CRIT-01 | [Title] | Critical | [Category] | [file:line] | Open |
263| HIGH-01 | [Title] | High | [Category] | [file:line] | Open |
264| MED-01 | [Title] | Medium | [Category] | [file:line] | Open |
265| LOW-01 | [Title] | Low | [Category] | [file:line] | Open |
266 
267---
268 
269## Required Actions Before Merge
270 
271List only Critical and High findings that must be resolved before this code is merged:
272 
2731. **CRIT-01 [Title]** — [One-line remediation instruction]
2742. **HIGH-01 [Title]** — [One-line remediation instruction]
275 
276Medium and Low findings should be tracked as follow-up issues with a committed resolution date.
277 
278---
279 
280*Review conducted by [Reviewer] on [Date] — checklist version [1.0]*
281 
282---
283 
284## Quality Checks
285 
286- [ ] Every finding includes: severity, category, specific resource name, file and line number, current code, and fixed code
287- [ ] Checklist covers all 12 categories: IAM, Secrets, Encryption at Rest, Encryption in Transit, Network, Logging, Naming/Tagging, State, Module Structure, Environment Parity, Cost, and Drift
288- [ ] Executive summary table is filled with real counts — not all zeros or all placeholders
289- [ ] "Required Actions Before Merge" section lists only Critical and High items
290- [ ] Code snippets in findings show both the problematic code AND the corrected version
291- [ ] Overall risk rating is justified by the highest-severity open finding
292- [ ] Checklist items are binary (checkable) — not narrative observations
293 
294## Anti-Patterns
295 
296- [ ] Do not mark a finding as Low if it involves hardcoded credentials or secrets in any form — always Critical
297- [ ] Do not review IaC in isolation from the deployment context — networking and IAM must be evaluated together
298- [ ] Do not produce narrative findings without the specific resource name, file, and line number
299- [ ] Do not skip the "Required Actions Before Merge" summary — reviewers need a clear blocking list, not just a full report
300- [ ] Do not approve code where encryption at rest or in transit is missing on data stores, even if not explicitly flagged by the requester
301 
View all files on GitHub →

Details

Updated
Sep 23, 2026
License
MIT
Stars on the repo
★ 1,395
Checked
Source
mohitagw15856/pm-claude-skills ↗
Creator
mohitagw15856 · 193 listings
View creator

Made with infra-as-code-review

Infrastructure-as-Code Review — Galaxy 3D — fly through all 1170 skills as a glowing constellation you orbit and click into (from the mohitagw15856/pm-claude-skills README)
Infrastructure-as-Code Review — Galaxy 3D — fly through all 1170 skills as a glowing constellation you orbit and click into (from the mohitagw15856/pm-claude-skills README)

by mohitagw15856

Infrastructure-as-Code Review — PM Skills Wrapped — your practice turned into a shareable, Spotify-Wrapped-style story (from the mohitagw15856/pm-claude-skills README)
Infrastructure-as-Code Review — PM Skills Wrapped — your practice turned into a shareable, Spotify-Wrapped-style story (from the mohitagw15856/pm-claude-skills README)

by mohitagw15856

Similar skills

See all →
SkillFrom a business idea, app ideaAzure app onboardmicrosoft/skills · by microsoftEnd-to-end orchestrator: from a business idea, app idea, or existing app to running Azure deployment with cost estimates and pre-deploy approval. Analyzes your app, auto-detects the right Azure services, scaffolds infrastructure code, and deploys — tailored to your app, not a template. Handles moving existing apps to Azure without rewriting or with minimal changes. WHEN: bring your app to Azure, plan my app, cost to run, is my code ready to deploy, deploy my app to the cloud, deploy all my services, what Azure services do I need, plan my Azure deployment, deploy my new app to Azure, one-click deploy, I have an app and want it on Azure, migrate my app to Azure, help me get started, build an app, no code yet, starter project. DO NOT USE FOR: use azd for deployment(use azure-deploy), optimizing existing costs (use cost-optimization), code readiness checks only (use azure-app-onboard-prereq).★ 3.1k GitHub starsSkillAssess whether source code is ready to deploy to AzureAzure App Onboard Prereq — Repository Evaluationmicrosoft/skills · by microsoftAssess whether source code is ready to deploy to Azure — the check BEFORE infrastructure work. Evaluates build health, app completeness, dependencies and local services, stack compatibility, and deployment feasibility. Answers questions about what your app needs before it can be deployed — frameworks, dependencies, and configuration. Checks whether dependencies are compatible and identifies deployment blockers and unsupported frameworks. WHEN: "evaluate my repo", "is my app ready to deploy", "what does my app need to deploy", "what do I need before deploying", "does my app need", "can I ship this to Azure", "scan my repo for issues", "is this app deployable", "check if my app is ready for Azure", "do I need a Dockerfile", "what's blocking my deployment", "are there any blockers", "are my dependencies compatible", "does Azure support my framework", "what needs to change before deploying", "check my app configuration".★ 3.1k GitHub starsSkillConfigure Azure API Management as an AI Gateway for AIAzure aigatewaymicrosoft/azure-skills · by microsoftConfigure Azure API Management as an AI Gateway for AI models, MCP tools, and agents. WHEN: semantic caching, token limit, content safety, load balancing, AI model governance, MCP rate limiting, jailbreak detection, add Azure OpenAI backend, add AI Foundry model, test AI gateway, LLM policies, configure AI backend, token metrics, AI cost control, convert API to MCP, import OpenAPI to gateway.★ 1.6k GitHub starsSkillQuery and analyze data in Azure Data Explorer using KQLAzure Data Explorer (Kusto) Query & Analyticsmicrosoft/azure-skills · by microsoftQuery and analyze data in Azure Data Explorer (Kusto/ADX) using KQL for log analytics, telemetry, and time series analysis. WHEN: KQL queries, Kusto database queries, Azure Data Explorer, ADX clusters, log analytics, time series data, IoT telemetry, anomaly detection.★ 1.6k GitHub starsMCPRun any server from the Docker MCP Catalog in its ownDocker MCP gatewaydocker/mcp-gateway · by dockerDocker's own CLI plugin: run any server from the Docker MCP Catalog in its own container, behind one connection, with secrets kept out of env vars.★ 1.6k GitHub starsMCPOpen infrastructure for AI agents to discover and pay eachElisymelisymlabs/elisym · by elisymlabsOpen infrastructure for AI agents to discover and pay each other★ 17 GitHub stars

More from mohitagw15856

SkillDesign a 360-degree feedback survey or write a structured360-Degree Feedback Template Skillmohitagw15856/pm-claude-skills · by mohitagw15856Design a 360-degree feedback survey or write a structured 360 feedback report. Use when asked to build a 360 feedback process, write 360 feedback for a colleague, design a feedback survey, or produce a feedback report. Produces either a complete survey instrument with rating scales and open-ended questions, or a structured narrative feedback report with themes, strengths, and development areas.★ 1.4k GitHub starsSkillDesign statistically rigorous A/B tests for product featuresA/B Test Planner Skillmohitagw15856/pm-claude-skills · by mohitagw15856Design statistically rigorous A/B tests for product features, UI changes, onboarding flows, and pricing experiments. Use when asked to set up an experiment, design an A/B test, calculate sample size, or interpret test results. Produces a complete test plan with hypothesis, variant definitions, sample size, duration estimate, guardrail metrics, and a results interpretation guide.★ 1.4k GitHub starsSkillGenerate a WCAG 2.2 accessibility audit checklistAccessibility Audit Skillmohitagw15856/pm-claude-skills · by mohitagw15856Generate a WCAG 2.2 accessibility audit checklist and remediation suggestions for any UI or design. Use when asked to audit for accessibility, check WCAG compliance, review a design for a11y issues, or create an accessibility remediation plan. Produces a prioritised checklist with pass/fail assessments and specific fixes.★ 1.4k GitHub starsSkillBuild a structured account plan for any key customerAccount Plan Skillmohitagw15856/pm-claude-skills · by mohitagw15856Build a structured account plan for any key customer or target account. Use when asked to create an account plan, key account strategy, strategic account review, or territory plan. Produces a complete account plan with relationship map, growth opportunities, risks, and 90-day action plan.★ 1.4k GitHub starsSkillOptimize an article for Answer Engine Optimization so AIAEO Optimizer Skillmohitagw15856/pm-claude-skills · by mohitagw15856Optimize an article for Answer Engine Optimization (AEO) so AI engines like ChatGPT, Perplexity, and Claude can extract, quote, and cite it. Use when asked to AEO-optimize, make content AI-readable, improve AI citation chances, or adapt an article for answer engines. Produces an AEO-optimised rewrite with question headings, 50–80 word answer capsules, a paragraph-length audit, and flagged trust signals.★ 1.4k GitHub starsSkillConduct a structured ethical review of an AI or ML featureAI Ethics Review Skillmohitagw15856/pm-claude-skills · by mohitagw15856Conduct a structured ethical review of an AI or ML feature, model, or product. Use when preparing to deploy an AI system, assessing algorithmic risk, auditing a model for bias, or producing a responsible AI impact assessment. Produces a structured ethics review covering fairness, transparency, privacy, safety, accountability, and societal impact with a risk tier score, pre-deployment checklist, and prioritised mitigations.★ 1.4k GitHub stars