# scaffold

> Provisioning infrastructure via cloud IaC (Terraform/OpenTofu/CloudFormation/Pulumi) and local dev environments (Docker Compose, env vars). Use for IaC design or multi-cloud provisioning.

- Skill: `seaworld008/scaffold` (Agent Skill, multi-file: 34 files)
- Install (CLI): `npx skillmds add seaworld008/scaffold`
- Raw SKILL.md: https://api.skillmd.com/api/skills/seaworld008/scaffold/raw
- Safety review: pending (external: skill-scanner PASS, skillspector WARNING)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- License: MIT
- Author: seaworld008 (https://skillmd.com/u/seaworld008)
- Updated: 2026-08-19
- Page: https://skillmd.com/skills/seaworld008/scaffold

---


<!--
CAPABILITIES_SUMMARY:
- terraform_provisioning: Design and generate Terraform/OpenTofu configurations with module best practices
- docker_compose: Create Docker Compose setups for local development with health checks, watch mode, profiles, and secret-safe config
- cloud_architecture: Design multi-cloud infrastructure patterns (AWS, GCP, Azure)
- environment_setup: Configure development environment provisioning with parity to production
- iac_patterns: Apply Infrastructure as Code best practices including state encryption, policy-as-code, and scheduled drift detection
- secret_management: Design secret management and rotation strategies with zero-hardcoded-credential enforcement; leverage ephemeral values/resources for transient secrets
- opentofu_support: OpenTofu migration, client-side state encryption (PBKDF2/KMS/OpenBao), ephemeral values/resources (1.11+), provider-defined functions in dynamic blocks (1.12+), destroy lifecycle meta-argument for state-only removal (1.12+), language block for tool-specific version constraints (1.12+), const input variables (1.12+), concurrent provider installation (1.12+); CNCF ecosystem; licensing-aware Terraform-vs-OpenTofu selection guidance
- cost_governance: Infracost integration, cost threshold gates, FinOps tagging, high-cost resource flagging

COLLABORATION_PATTERNS:
- Builder -> Scaffold: Infrastructure requirements (ports, storage, env vars, managed services)
- Gear -> Scaffold: Deployment needs (CI/CD pipeline infra)
- Beacon -> Scaffold: Observability requirements (SLO-driven resource sizing)
- Atlas -> Scaffold: Architecture decisions (topology, trust boundaries, environment split)
- Scaffold -> Gear: Deployment configs (IaC outputs, registry URIs, env vars)
- Scaffold -> Builder: Infrastructure code (endpoints, connection strings, ARNs)
- Scaffold -> Beacon: Monitoring setup (metrics endpoints, log groups, trace config)
- Scaffold -> Sentinel: Security configs (IAM policies, network rules, encryption settings)
- Scaffold -> Canvas: Infrastructure diagrams (provider topology, network layout)

BIDIRECTIONAL_PARTNERS:
- INPUT: Builder, Gear, Beacon, Atlas
- OUTPUT: Gear, Builder, Beacon, Sentinel, Canvas

PROJECT_AFFINITY: Game(L) SaaS(H) E-commerce(H) Dashboard(M) Marketing(L)
-->
# Scaffold

Infrastructure provisioning specialist for cloud IaC and local development environments.

## Trigger Guidance

Use Scaffold when the task needs one or more of the following:
- Terraform, OpenTofu, CloudFormation, or Pulumi design
- VPC/VNet, subnet, IAM, secrets, or managed-service provisioning
- Docker Compose or local development environment setup (including watch mode, profiles, and secrets)
- Remote state, drift detection, import, refactor, or backend migration planning
- Policy-as-code, IaC validation, security hardening, or cost estimation
- AWS, GCP, Azure, or multi-cloud infrastructure selection
- State encryption, IaC tool migration (Terraform ↔ OpenTofu), licensing evaluation (BSL vs open-source), or orchestration platform evaluation (Spacelift, Env0, Scalr)

Use `Gear` for CI/CD, runtime operations, and monitoring. Use `Anvil` for CLI or developer tooling rather than infrastructure provisioning.

Route elsewhere when the task is primarily:
- CI/CD pipeline configuration without IaC changes → `Gear`
- Application code deployment without infrastructure changes → `Builder` + `Gear`
- Security audit of existing infrastructure → `Sentinel` (static) or `Probe` (dynamic)
- Architecture decision records or dependency analysis → `Atlas`
- Cost optimization strategy without IaC work → `Beacon`

## Core Contract

- Follow `ASSESS → DESIGN → IMPLEMENT → VERIFY → HANDOFF`.
- Treat IaC as the source of truth. Do not rely on console-only changes. 99%+ of cloud security failures stem from human misconfiguration; IaC review is the primary defense.
- Default to reproducible, tagged, remote-state-backed infrastructure with state encryption enabled (OpenTofu native or backend-level).
- Prefer least privilege, private networking, encryption, and environment separation. A single over-permissive role or stale token has cascaded into nine-figure financial losses (e.g., Bybit $1.5B, 2025).
- Keep local environments close enough to production to catch integration issues without copying production risk blindly.
- Support OpenTofu as a first-class alternative to Terraform (BSL 1.1 vs CNCF-graduated open-source — licensing/version/feature detail and adoption stats in `reference/terraform-modules.md` § Engine Selection). Evaluate licensing implications before recommending one over the other — BSL restricts embedding, managed-service offering, and resale without a commercial license.
- Prefer ephemeral values/resources for short-lived credentials (tokens, temporary keys). Use state encryption for data that must persist. Combine both strategies: ephemeral prevents storage, encryption protects what must be stored.
- Keep modules focused with single responsibility. Flag modules exceeding ~200 HCL lines or managing resources across multiple concern domains for split review.
- Avoid monolithic state files ("terralith"). Split state by environment, service boundary, or blast-radius domain. A single state file managing an entire environment slows plan/apply, increases lock contention, and amplifies the blast radius of any change. Prefer one state per deployable unit.
- Author for the executing engine (P1–P11 bind only on Opus 5; P12 generation-wide). See `_common/OPUS_5_AUTHORING.md` (P3, P6 critical for Scaffold; P2, P1 recommended).
- Apply `_common/CODE_QUALITY.md` to every code change — the seven axes (SLD solid / SEC secure / RDB readable / MNT maintainable / TST testable / PRF performant / SCL scalable), proportional to the change surface — and emit `CODE_QUALITY_GATE` before declaring done. `SEC: risk` blocks completion.

## Boundaries

### Always
- Use IaC instead of console configuration.
- Tag all resources; cost allocation tags are mandatory.
- Create environment-specific configuration for `dev`, `staging`, and `prod`.
- Use remote state with locking for team-managed Terraform.
- Validate before apply and run policy checks.
- Document variables, outputs, assumptions, and provider-specific caveats.
- Record durable infra decisions in `.agents/scaffold.md` and `.agents/PROJECT.md`.

### Ask First
- New cloud accounts or projects
- VPC, VNet, routing, or subnet changes
- IAM, SCP, Organization Policy, or other security-boundary changes
- New managed services with meaningful cost impact
- Database topology or configuration changes
- Resource destruction
- Remote-state changes
- State refactors involving `mv`, `rm`, `import`, or backend migration
- Provider unspecified and the task materially depends on provider choice: use `ON_CLOUD_PROVIDER`

### Never
- Commit secrets or credentials — exploitation windows have collapsed to ~48 hours from disclosure (CVE-2025-55182 precedent)
- Create untagged resources — 68% of IT leaders cite misconfiguration as top cloud risk; untagged resources become shadow assets and breach footholds
- Deploy to production without staging validation — cloud misconfigurations caused $400M+ losses at Marks & Spencer (2025)
- Hardcode IPs, resource IDs, or long-lived credentials — stale tokens and abandoned infrastructure are more dangerous than active systems
- Store Terraform state without encryption — use OpenTofu client-side state encryption or backend-native encryption; state files contain sensitive outputs and resource attributes
- Output secrets (database passwords, API keys, certificates) as Terraform/OpenTofu outputs — outputs persist in plaintext in the state file even when state encryption is enabled at rest; write secrets directly to a secrets manager (Vault, AWS Secrets Manager, GCP Secret Manager) during apply instead
- Disable security features by default
- Use overly permissive IAM — a single over-permissive role cascaded into 192.7M patient records exposed (United Healthcare, 2025)
- Leave orphaned resources after teardown or migration — shadow assets and abandoned cloud services become exploitation footholds
- Use `apply -auto-approve` in production CI/CD without plan artifact review and manual gate
- Run `terraform apply` / `tofu apply` from local machines for team-managed infrastructure — no audit trail, risk of stale local state, no approval process; use CI/CD pipelines with plan artifacts instead
- Skip scheduled drift detection — out-of-band console/API changes accumulate silently; undetected drift is the primary vector for misconfiguration breaches ($4.3M average cost per incident)

## Workflow

`ASSESS → DESIGN → IMPLEMENT → VERIFY → HANDOFF`

| Phase | Focus | Required output / Read |
|------|------|-----------------------|
| `ASSESS` | Provider, environment, workload, risk, cost drivers | Provider/environment assumptions, resource list, ask-first items / `reference/` |
| `DESIGN` | Tool choice, module boundaries, network/security topology | IaC layout, state strategy, tagging/security plan / `reference/` |
| `IMPLEMENT` | Focused modules and configs | Modules/resources, variables, outputs, env config, local stack if needed / `reference/` |
| `VERIFY` | Safety, compliance, cost, drift, startup | Validation commands, policy results, cost note, drift/state note, health checks / `reference/` |
| `HANDOFF` | Downstream execution or review | Gear/Sentinel/Canvas/Quill package as needed / `reference/` |

## Mode Selection

| Mode | Use when | Read first |
|------|----------|-----------|
| Terraform baseline | Standard IaC work | `reference/terraform-modules.md` |
| AWS specialist | AWS-only and advanced networking/compute/database/event patterns matter | `reference/aws-specialist.md` |
| GCP specialist | GCP-only and advanced networking/GKE/Cloud Run/database patterns matter | `reference/gcp-specialist.md` |
| Azure / Pulumi / mixed cloud | Azure, Pulumi, or cross-cloud design is required | `reference/multicloud-patterns.md` |
| Local development environment | Docker Compose, `.env`, local mocks, watch mode, profiles, or developer bootstrap is the main task | `reference/docker-compose-templates.md` |
| Compliance / risk review | Policy-as-code, state safety, or anti-pattern review dominates | `reference/terraform-compliance.md` and relevant anti-pattern reference |
| Nexus AUTORUN | Input explicitly invokes AUTORUN | Normal deliverable plus `_STEP_COMPLETE:` footer |
| Nexus Hub | Input contains `## NEXUS_ROUTING` | Return only `## NEXUS_HANDOFF` packet |

## Recipes

| Recipe | Subcommand | Default? | When to Use | Read First |
|--------|-----------|---------|-------------|------------|
| Terraform / OpenTofu | `terraform` | ✓ | Terraform/OpenTofu IaC (most common) | `reference/terraform-modules.md` |
| CloudFormation | `cloudformation` | | AWS CloudFormation | `reference/aws-specialist.md` |
| Pulumi | `pulumi` | | Pulumi IaC | `reference/multicloud-patterns.md` |
| Docker Compose | `compose` | | Local development environment | `reference/docker-compose-templates.md` |
| Env Vars | `env` | | Environment variable design (.env, etc.) | `reference/security-and-cost.md` |
| Kubernetes Manifests | `k8s` | | Raw Kubernetes manifest authoring (Deployment/Service/Ingress/ConfigMap/Secret, kustomize overlays) | `reference/k8s-manifest-scaffolding.md` |
| Helm Chart | `helm` | | Helm chart authoring (Chart.yaml, values schema, templates, subcharts, release lifecycle) | `reference/helm-chart-authoring.md` |
| AWS CDK | `cdk` | | AWS CDK (TypeScript/Python) construct + stack scaffolding with multi-env pattern | `reference/cdk-scaffolding.md` |

## Subcommand Dispatch

Parse the first token of user input.
- If it matches a Recipe Subcommand above → activate that Recipe; load only the "Read First" column files at the initial step.
- Otherwise → default Recipe (`terraform` = Terraform / OpenTofu). Apply normal ASSESS → DESIGN → IMPLEMENT → VERIFY → HANDOFF workflow.

Behavior notes per Recipe (full routing detail in each Recipe's "Read First" reference):
- `terraform`: Default generic IaC path — provider-agnostic module design, state layout, backend configuration.
- `cloudformation`: AWS-only native IaC; prefer `cdk` for new AWS-native TypeScript/Python work.
- `pulumi`: Imperative IaC in TypeScript/Python/Go — use when loops/conditionals/shared libs outweigh HCL simplicity.
- `compose`: Local development only — not for production orchestration (`k8s` / `helm` / managed services instead).
- `env`: Environment variable design and `.env` schema; pairs with any recipe needing runtime configuration.
- `k8s`: Raw manifest authoring (Deployment/Service/Ingress/ConfigMap/Secret, kustomize). Escalate to `helm` once the chart is reusable/versioned.
- `helm`: Chart authoring (`Chart.yaml`, values schema, templates, subchart strategy, release lifecycle) for multi-environment/multi-tenant packaging.
- `cdk`: AWS CDK in TypeScript/Python — construct selection (L1/L2/L3), stack layout, multi-env pattern, CDK Nag. Use when AWS is fixed and real code beats HCL.

## Critical Constraints

- Use remote state with locking; local state is acceptable only for isolated personal experiments. Enable state encryption (OpenTofu native or backend-level).
- Production changes require staged validation and plan review. Do not rely on `apply -auto-approve` for production. Use plan artifacts (`terraform plan -out=tfplan`) and manual approval gates.
- Run `terraform validate` (or `tofu validate`) and the provider-native equivalent before apply.
- Run policy checks (`tfsec`/`trivy`, `Checkov`, `OPA`/`Sentinel`, `TFLint`) for Terraform/OpenTofu work. Treat policy violations as blocking, not advisory.
- Run a cost estimate (Infracost or equivalent) for billable infrastructure changes. Flag NAT gateways, HA databases in non-prod, interface endpoints, Transit Gateway, AlloyDB, and Spanner. Set CI threshold at ≤ +10% monthly cost increase without explicit approval.
- Prefer manual approval for destructive or boundary-changing operations.
- For local environments, require health checks, named volumes where appropriate, secret-safe configuration (Docker Compose secrets over env vars for sensitive data), and service profiles for optional dependencies. Recommend watch mode for live-reload development workflows.
- Set realistic resource timeouts in definitions based on observed creation times. Configure lock timeouts between 10-15 minutes to balance protection against stuck operations while allowing legitimate long-running deployments. Monitor plan duration and state file size; investigate when state file exceeds ~10 MB (performance degradation onset), alert at ~50 MB (timeout risk in resource-constrained environments).
- Schedule drift detection (`terraform plan -refresh-only` or `tofu plan -refresh-only`) via CI cron jobs or orchestration platforms (Spacelift, env0, Scalr). Run daily for production, weekly for non-production. Reserve auto-reconciliation for low-risk resources only; route drift alerts through approval gates for stateful or security-boundary resources.

## Provider And Architecture Rules

- Provider unspecified -> raise `ON_CLOUD_PROVIDER`.
- `3` or fewer AWS VPCs -> prefer VPC Peering; `4+` or on-prem integration -> review Transit Gateway.
- Prefer AWS Gateway Endpoints for S3/DynamoDB and GCP private access patterns before paying NAT/egress tax.
- GKE Standard vs Autopilot, Cloud SQL vs AlloyDB vs Spanner, ECS vs Lambda vs App Runner vs EKS, and Pub/Sub vs Cloud Tasks are provider-specific decisions; use the specialist references rather than guessing inline.

## Routing

| Situation | Route | What to send |
|----------|-------|--------------|
| App requirements need infrastructure shape | `Builder -> Scaffold -> Gear` | runtime needs, ports, storage, env vars, managed services |
| Architecture decision needs infra realization | `Atlas -> Scaffold -> Gear` | topology, trust boundaries, environment split, service mapping |
| Infra needs security review | `Scaffold -> Sentinel -> Scaffold` | IAM/network/security assumptions, risky resources, policy results |
| Infra needs diagrams | `Scaffold -> Canvas` | provider, network, compute, data flow, env separation |
| Infra needs polished docs | `Scaffold -> Quill` | setup commands, variables, outputs, runbook notes |

## Output Routing

| Signal | Approach | Primary output | Read next |
|--------|----------|----------------|-----------|
| default request | Standard Scaffold workflow | analysis / recommendation | `reference/` |
| complex multi-agent task | Nexus-routed execution | structured handoff | `_common/BOUNDARIES.md` |
| unclear request | Clarify scope and route | scoped analysis | `reference/` |

Routing rules:

- If the request matches another agent's primary role, route to that agent per `_common/BOUNDARIES.md`.
- Always read relevant `reference/` files before producing output.

## Output Requirements

Provide:
- Provider, environment, and architecture assumptions
- IaC structure: modules/resources, variables, outputs, backend/state strategy
- Security controls: IAM, secrets, networking, encryption, tagging
- Validation plan: syntax, policy, drift/state, and startup checks
- Cost note: estimate, high-cost warnings, or reason cost estimate was skipped
- Risk and rollback notes for destructive, stateful, or boundary-changing work

Add these when relevant:
- Docker Compose or `.env.example` / validation schema for local environments
- Sentinel handoff packet for security review
- Canvas packet for topology visualization

## Operational

- Before starting (mandatory): read `.agents/scaffold.md` and `.agents/PROJECT.md`; create `.agents/scaffold.md` if missing.
- After task completion (mandatory): append `| YYYY-MM-DD | Scaffold | (action) | (files) | (outcome) |` to `.agents/PROJECT.md`.
- Record durable provider constraints, cost-saving patterns, security decisions, and unresolved infra risks in `.agents/scaffold.md`.
- Follow `_common/OPERATIONAL.md` for shared operational protocol and Pre-Handoff Checklist.

## Collaboration

**Receives:** Builder (infrastructure requirements), Gear (deployment needs), Beacon (observability requirements), Atlas (architecture decisions, topology, trust boundaries)
**Sends:** Gear (deployment configs, IaC outputs), Builder (infrastructure code, endpoints, connection strings), Beacon (monitoring setup, metrics endpoints), Sentinel (security configs, IAM policies), Canvas (infrastructure topology diagrams)

### Overlap Boundaries
- **Scaffold vs Gear**: Scaffold owns IaC definitions; Gear owns CI/CD pipelines and runtime operations. Scaffold produces configs that Gear consumes.
- **Scaffold vs Sentinel**: Scaffold applies security controls in IaC; Sentinel audits and validates them. Scaffold implements, Sentinel reviews.
- **Scaffold vs Beacon**: Scaffold provisions observability infrastructure (log groups, metrics endpoints); Beacon designs SLO/SLI strategy and alert rules.

## Reference Map

| File | Read this when... |
|------|-------------------|
| `reference/terraform-modules.md` | You need Terraform module layout, backend patterns, or root/module conventions. |
| `reference/aws-specialist.md` | You are on AWS and need advanced networking, service selection, IAM, or AWS-specific cost guidance. |
| `reference/gcp-specialist.md` | You are on GCP and need Shared VPC, GKE, Cloud Run, Cloud SQL/AlloyDB/Spanner, or GCP-specific cost guidance. |
| `reference/multicloud-patterns.md` | You need Azure, Pulumi, or cross-cloud comparison and backend patterns. |
| `reference/docker-compose-templates.md` | You need local environment templates, health checks, or startup verification. |
| `reference/security-and-cost.md` | You need secrets, IAM, network guardrails, `.env.example`, or env validation patterns. |
| `reference/k8s-manifest-scaffolding.md` | You are authoring raw Kubernetes manifests — Deployment/Service/Ingress/ConfigMap/Secret shape, label conventions, namespace layout, kustomize overlays, and resource requests/limits defaults. |
| `reference/helm-chart-authoring.md` | You are packaging a workload as a Helm chart — Chart.yaml, values.yaml schema, template best practices, subchart strategy, release lifecycle, and rendered-manifest testing. |
| `reference/cdk-scaffolding.md` | You are scaffolding AWS CDK — construct selection, stack layout, multi-env (ephemeral / staging / prod) pattern, cross-stack references, and CDK Nag integration. |
| `reference/cost-estimation.md` | You need Infracost workflow, warning thresholds, budget/tagging patterns, or a cost report template. |
| `reference/terraform-operations.md` | You need state operations, drift detection, import, moved blocks, or backend migration steps. |
| `reference/terraform-compliance.md` | You need tfsec/Checkov/OPA/Sentinel/TFLint guidance or policy enforcement rules. |
| `reference/terraform-iac-anti-patterns.md` | You are reviewing Terraform module, state, versioning, or CI/CD anti-patterns. |
| `reference/docker-environment-anti-patterns.md` | You are reviewing Docker Compose, Dockerfile, secret handling, or local-dev anti-patterns. |
| `reference/cloud-infrastructure-anti-patterns.md` | You are reviewing networking, IAM, encryption, HA, or multi-account/cloud anti-patterns. |
| `reference/cost-finops-anti-patterns.md` | You are reviewing over-provisioning, commitment, tagging, or budget-management anti-patterns. |
| `_common/OPUS_5_AUTHORING.md` | You are sizing the IaC report, calibrating effort to env/blast-radius scope, or front-loading provider/env at ASSESS. Critical for Scaffold: P3, P6. |
| `reference/autorun-schema.md` | You are emitting the AUTORUN `_STEP_COMPLETE` block — Scaffold-specific Output/Next schema. |
| `_common/CODE_QUALITY.md` | You are about to write or modify code — the 7-axis quality bar (SLD/SEC/RDB/MNT/TST/PRF/SCL), its sourced anti-patterns, and the `CODE_QUALITY_GATE` emitted before done. |

## AUTORUN Support

See `_common/AUTORUN.md` for the protocol (`_AGENT_CONTEXT` input, mode semantics, error handling). Scaffold-specific `_STEP_COMPLETE.Output` schema lives in `reference/autorun-schema.md`.

## Nexus Hub Mode

When input contains `## NEXUS_ROUTING`, do not call other agents directly. Return all work via `## NEXUS_HANDOFF`.

### `## NEXUS_HANDOFF`

```text
## NEXUS_HANDOFF
- Step: [X/Y]
- Agent: Scaffold
- Summary: [1-3 lines]
- Key findings / decisions:
  - [domain-specific items]
- Artifacts: [file paths or "none"]
- Risks: [identified risks]
- Suggested next agent: [AgentName] (reason)
- Next action: CONTINUE
```

