Enforces IaC security rules (IAC-1 through IAC-5). Loaded by the conductor for security audits and review operations on infrastructure-as-code files. Detects public storage buckets, containers running as root, missing encryption-at-rest, wildcard IAM policies, and exposed ports in security groups. Supports Terraform HCL, CloudFormation YAML/JSON, and Kubernetes manifests; other dialects are skipped gracefully.
From clean-code-codexnpx claudepluginhub mikecubed/agent-orchestration --plugin clean-code-codexThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Precedence: SEC- (BLOCK)* → TDD → ARCH/TYPE → IAC- (BLOCK)* → all quality checks.
Supported dialects:
.tf files).yaml, .json with AWSTemplateFormatVersion or Resources: key).yaml with apiVersion: and kind: keys)Severity: BLOCK | Languages: terraform, yaml, json | Source: CCC
What it prohibits: S3 buckets, GCS buckets, or Azure blobs with public
read/write ACL or bucket policy allowing * principal.
Detection:
acl = "public-read", acl = "public-read-write" in Terraform resources"Principal": "*" in bucket policies (CloudFormation or Terraform JSON)spec.accessModes: [ReadWriteMany] without access control on Kubernetes PVCsPublicAccessBlockConfiguration set to false or absent on S3 resourcesagent_action:
IAC-1 (BLOCK): Public storage bucket at {file}:{line} — resource '{resource_name}' allows public access.privateblock_public_acls = true, block_public_policy = true)Severity: BLOCK | Languages: yaml, json | Source: CCC
What it prohibits: Container or pod running with UID 0 or without a non-root security context.
Detection:
securityContext.runAsNonRoot: true on container or pod specsecurityContext.runAsUser: 0securityContext entirely on container specs in Deployment, StatefulSet,
DaemonSet, Job, CronJob, or Pod resourcesagent_action:
IAC-2 (BLOCK): Container running as root at {file}:{line} — resource '{resource_name}' has no non-root security context.securityContext: { runAsNonRoot: true, runAsUser: 1000 } to container spec# WAIVER: commentSeverity: BLOCK | Languages: terraform, yaml, json | Source: CCC
What it prohibits: Storage resources (S3, RDS, EBS, DynamoDB) without encryption enabled.
Detection:
encrypted = false or missing encrypted on EBS volumesserver_side_encryption_configuration block on S3 bucketsstorage_encrypted = false or absent on RDS resourcesserver_side_encryption on DynamoDB tablesAWS::RDS::DBInstance without StorageEncrypted: trueagent_action:
IAC-3 (BLOCK): Missing encryption at rest at {file}:{line} — resource '{resource_name}' has no encryption configured.encrypted = true on EBS/RDS resourcesserver_side_encryption_configuration block with KMS key referenceSeverity: BLOCK | Languages: terraform, yaml, json | Source: CCC
What it prohibits: IAM role, policy, or Kubernetes RBAC rule granting *
on Actions/resources or verbs: ["*"].
Detection:
"Action": "*" or "Action": ["*"] in IAM policy documents"Resource": "*" combined with broad Action grantsresources: ["*"] and verbs: ["*"]aws_iam_policy_document with actions = ["*"]agent_action:
IAC-4 (BLOCK): Wildcard IAM policy at {file}:{line} — resource '{resource_name}' grants unrestricted permissions.Severity: WARN (22/3389) / BLOCK (0-65535 open) | Languages: terraform, yaml, json | Source: CCC
What it prohibits: Security group ingress rule allowing port 22 (SSH),
3389 (RDP), or 0-65535 from 0.0.0.0/0 or ::/0.
Detection:
cidr_blocks = ["0.0.0.0/0"] with from_port = 0, to_port = 65535 → BLOCKcidr_blocks = ["0.0.0.0/0"] with from_port = 22 or from_port = 3389 → WARNipv6_cidr_blocks = ["::/0"] with same port patternsAWS::EC2::SecurityGroup with CidrIp: 0.0.0.0/0 and open port rangesagent_action:
IAC-5 (BLOCK|WARN): Exposed port at {file}:{line} — resource '{resource_name}' allows {port_range} from {cidr}.cidr_blocks to known IP ranges or VPC CIDROutput format per violation:
IAC-N | BLOCK/WARN | <resource name> | <violation description> | Remediation: <guidance>
Activation:
Loaded by the conductor for security and review operations when IaC file
types are detected. Signal phrases: "IaC review", "Terraform", "CloudFormation",
"Kubernetes manifest", "infrastructure security", "check my yaml".
Report schema: see skills/conductor/shared-contracts.md.