Terraform and OpenTofu Guide
agentscope-ai/QwenPaw
Guidance for writing and testing Terraform and OpenTofu code: module structure, naming, test approaches, CI/CD workflows, state handling and security scanning.
Terraform and OpenTofu orchestration: plan/apply/deploy, workspace management, backend config, varfile generation, authentication, binary selection (terraform/tofu), mixed-binary setups
$ npx skills add cloudposse/atmos --skill atmos-terraform -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install cloudposse/atmos atmos-terraform --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agent-skills/skills/atmos-terraform .claude/skills/atmos-terraform && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "atmos-terraform" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-terraform into .claude/skills/atmos-terraform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-terraform", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-terraformType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add cloudposse/atmos --skill atmos-terraform -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install cloudposse/atmos atmos-terraform --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .agents/skills && cp -r skills-src/agent-skills/skills/atmos-terraform .agents/skills/atmos-terraform && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "atmos-terraform" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-terraform into .agents/skills/atmos-terraform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-terraform", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cloudposse/atmos --skill atmos-terraform -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install cloudposse/atmos atmos-terraform --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/agent-skills/skills/atmos-terraform .cursor/skills/atmos-terraform && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "atmos-terraform" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-terraform into .cursor/skills/atmos-terraform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-terraform", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/cloudposse/atmos.git --path agent-skills/skills/atmos-terraform--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add cloudposse/atmos --skill atmos-terraform -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install cloudposse/atmos atmos-terraform --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/agent-skills/skills/atmos-terraform .gemini/skills/atmos-terraform && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "atmos-terraform" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-terraform into .gemini/skills/atmos-terraform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-terraform", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install cloudposse/atmos atmos-terraformInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add cloudposse/atmos --skill atmos-terraform -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .github/skills && cp -r skills-src/agent-skills/skills/atmos-terraform .github/skills/atmos-terraform && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "atmos-terraform" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-terraform into .github/skills/atmos-terraform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-terraform", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cloudposse/atmos --skill atmos-terraform -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install cloudposse/atmos atmos-terraform --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cloudposse/atmos.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/agent-skills/skills/atmos-terraform .opencode/skills/atmos-terraform && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "atmos-terraform" agent skill from https://github.com/cloudposse/atmos/tree/main/agent-skills/skills/atmos-terraform into .opencode/skills/atmos-terraform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "atmos-terraform", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
atmos-terraformTerraform and OpenTofu orchestration: plan/apply/deploy, workspace management, backend config, varfile generation, authentication, binary selection (terraform/tofu), mixed-binary setups
Atmos Terraform is an agent skill from cloudposse/atmos. Terraform and OpenTofu orchestration: plan/apply/deploy, workspace management, backend config, varfile generation, authentication, binary selection (terraform/tofu), mixed-binary setups
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/backend-configuration.md`, `references/commands-reference.md` and `references/toolchain-pinning.md`).
It sits in DevOps & Cloud, covering Infrastructure as code. It works with Terraform. The repository describes itself as: Atmos is the open-source runtime for infrastructure — it builds, authenticates, and ships Terraform, OpenTofu, Packer, Ansible, Kubernetes, Helm, and containers the same way on… The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fbae93f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
terraformtofuFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
atmos.toolsFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Atmos Terraform loads about 5.1k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 50 tokens; SKILL.md has 1,939 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from cloudposse/atmos at commit fbae93f, republished under its Apache-2.0 licence (© cloudposse). 1,939 words, ~5,112 tokens.
.claude/skills/atmos-terraform/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Atmos wraps the Terraform or OpenTofu CLI to provide stack-aware orchestration of infrastructure operations. Instead of manually managing workspaces, backends, variable files, and authentication for each component, Atmos resolves the full configuration from stack manifests and handles all of these concerns automatically.
Everything in this skill applies identically to Terraform and OpenTofu. The atmos terraform command
namespace is the same regardless of which binary is configured -- atmos terraform plan runs tofu plan when
the binary is set to tofu. Use the user's terminology in responses (if they say "OpenTofu," say "OpenTofu").
Atmos defaults to the terraform binary. Switch to OpenTofu by setting components.terraform.command: tofu
in atmos.yaml. The setting cascades through CLI > env > config > defaults precedence and can be overridden
at multiple levels for mixed setups.
# atmos.yaml
components:
terraform:
command: tofu # All atmos terraform commands invoke `tofu` instead of `terraform`
base_path: components/terraformOr via environment variable:
export ATMOS_COMPONENTS_TERRAFORM_COMMAND=tofu
atmos terraform plan vpc -s dev # Runs: tofu planUse terraform.overrides.command in a stack manifest to switch the binary for everything in that stack:
# stacks/orgs/acme/plat/prod/_defaults.yaml
terraform:
overrides:
command: tofuSet command on an individual component to run a single component on a different binary than the rest of
the stack (useful for legacy components that haven't been validated on OpenTofu, or new components testing
OpenTofu-specific features):
components:
terraform:
legacy-vpc:
command: terraform # This component stays on Terraform
vars: ...
new-eks:
command: tofu # This component runs on OpenTofu
vars: ...Pass --terraform-command on the CLI to override for a single command:
atmos terraform plan vpc -s dev --terraform-command=tofuThe Atmos toolchain installs and pins both Terraform and OpenTofu so the same binary version runs
on every developer machine and in CI. Binary selection (command: terraform vs command: tofu)
and binary version pinning (dependencies.tools.terraform vs dependencies.tools.opentofu) are
independent settings -- command says which binary Atmos invokes, dependencies.tools.<name> says
which version the toolchain installs. Always pin both together; setting command: tofu without a
matching opentofu dependency leaves you at the mercy of whatever tofu is on PATH.
Pinning can be applied at four scopes, in increasing precedence:
.tool-versions (asdf-compatible) at the repo root for defaults everyone shares.dependencies.tools in a stack default to pin a whole stack scope.terraform.dependencies.tools to default every Terraform/OpenTofu component.dependencies.tools on an individual component for migrations or one-offs.Atmos installs declared tools when running the component. Use atmos toolchain install only to
pre-warm a cache, bootstrap a shell, or troubleshoot a specific binary. For full YAML examples,
resolution order, ad-hoc installs, and the inspection workflow, see
references/toolchain-pinning.md and the
atmos-toolchain skill.
terraform. Switching back is not zero-effort.removed blocks -- supported by both binaries in recent versions; no Atmos-side difference.registry.opentofu.org by default; pinned modules sourced
from registry.terraform.io still work in OpenTofu but consult the relevant registry availability when
the user reports a missing module.terraform.required_version -- OpenTofu respects this constraint; pin appropriately.terraform { backend ... } block -- identical syntax in both binaries; no Atmos-side change needed.For users running mixed Terraform/OpenTofu deployments, the per-component or per-stack override pattern is the right tool. Do not propose a project-wide switch unless the user has validated all components against OpenTofu.
When you run any atmos terraform command, Atmos performs the following sequence:
backend.tf.json file in the component directory with the
correct backend settings (S3 bucket, key, region, etc.) derived from the stack config.terraform.tfvars.json file containing all vars defined for the
component in the stack.provision.backend.enabled: true, creates the backend storage
(e.g., S3 bucket) before Terraform init.terraform init -- Initializes the working directory with the generated backend config, skipping
it automatically when nothing relevant changed (init.mode), and adding -reconfigure/-upgrade only
when required (init.reconfigure/init.upgrade). Cleans .terraform/environment first.terraform plan, apply, destroy, etc. with the generated
varfile and any additional flags.This means a single command like atmos terraform plan vpc -s plat-ue2-dev replaces what would normally
require multiple manual steps: configuring the backend, writing tfvars, running init, selecting the workspace,
and then running plan.
Generates a Terraform execution plan showing what changes would be made.
atmos terraform plan <component> -s <stack>By default, Atmos saves the plan to a file using the naming convention <context>-<component>.planfile.
This planfile can later be used with --from-plan to apply the exact reviewed changes.
# Basic plan
atmos terraform plan vpc -s plat-ue2-dev
# Skip planfile generation (useful for Terraform Cloud)
atmos terraform plan vpc -s dev --skip-planfile
# Plan with custom output path
atmos terraform plan vpc -s dev -out=/tmp/my-plan.tfplan
# Plan only specific resources
atmos terraform plan vpc -s dev -target=aws_subnet.privateApplies Terraform changes. Supports interactive approval, planfile-based apply, and auto-approve.
atmos terraform apply <component> -s <stack># Interactive apply (prompts for confirmation)
atmos terraform apply vpc -s plat-ue2-dev
# Apply from a previously generated plan
atmos terraform plan vpc -s dev
atmos terraform apply vpc -s dev --from-plan
# Apply a specific planfile
atmos terraform apply vpc -s dev --planfile /tmp/my-plan.tfplan
# Auto-approved apply (no confirmation prompt)
atmos terraform apply vpc -s dev -auto-approveCombines plan and apply with automatic approval. This is the most common command for CI/CD pipelines.
atmos terraform deploy <component> -s <stack>Key differences from apply:
-auto-approve -- no interactive confirmation--deploy-run-init to control whether init runs# Deploy a component
atmos terraform deploy vpc -s plat-ue2-dev
# Deploy from a previously generated plan
atmos terraform deploy vpc -s dev --from-plan
# Deploy a specific planfile
atmos terraform deploy vpc -s dev --planfile /tmp/vpc-plan.tfplanDestroys all resources managed by a component in a stack. Accepts -auto-approve and -target=...
just like upstream Terraform: atmos terraform destroy vpc -s dev.
Atmos runs terraform init automatically before plan, apply, and deploy, but only when needed (init.mode),
adding -reconfigure/-upgrade only when required (init.reconfigure/init.upgrade); --skip-init
disables auto-init for one invocation. Upstream init flags pass through when invoked directly
(-reconfigure, -upgrade, -migrate-state): atmos terraform init vpc -s dev -reconfigure.
--ui)plan, apply, deploy, init, and destroy support a --ui flag that renders a live,
Docker-build-style progress view (spinners, a dependency tree, per-resource status) instead of
raw Terraform output:
atmos terraform apply vpc -s dev --uiEnable it by default via components.terraform.ui.enabled: true in atmos.yaml or
ATMOS_TERRAFORM_UI=true; pass --ui=false to override a config-enabled default for one run.
The UI auto-disables when output is piped, in CI (CI=true), or on unsupported commands.
refresh doesn't support it — Terraform's refresh doesn't emit the structured -json output
the UI depends on; --ui refresh prints a warning and falls back to standard output.
Atmos supports executing Terraform commands across multiple components simultaneously using filter flags.
These work with plan, apply, and deploy.
# All components in all stacks
atmos terraform plan --all
# All components in a specific stack
atmos terraform plan --stack prod
# Specific components across stacks
atmos terraform deploy --components vpc,eks
# Only components affected by git changes (in dependency order)
atmos terraform deploy --affected
# Affected with dependents included
atmos terraform deploy --affected --include-dependents
# Filter by YQ query expression
atmos terraform plan --query '.vars.tags.team == "eks"'
# Combine filters
atmos terraform plan --affected --stack prod
# Always preview first with --dry-run
atmos terraform deploy --all --dry-runAtmos computes the Terraform workspace name from stack context (namespace, tenant, environment,
stage, component), runs terraform init -reconfigure (always, regardless of init.reconfigure), and
selects (or creates) the workspace on every invocation. Explicit management is also available:
atmos terraform workspace vpc -s plat-ue2-dev.
For stable workspace keys across component implementations, use metadata.name on an abstract
base component (name: vpc, component: vpc/v2); for dynamic naming, workspace_key_prefix
under backend: accepts Go templates. Toggle the runtime behavior via
components.terraform.init.reconfigure (supersedes init_run_reconfigure) and
workspaces_enabled in atmos.yaml. Full examples are in
references/backend-configuration.md.
With components.terraform.auto_generate_backend_file: true in atmos.yaml, Atmos reads
backend_type and backend from the resolved stack config, deep-merges through the stack
hierarchy (org → tenant → environment → stage → component), and writes backend.tf.json into
the component directory before terraform init. Add backend.tf.json to .gitignore.
Regenerate manually with atmos terraform generate backend vpc -s plat-ue2-dev. For full
examples covering S3, GCS, Azure, and remote backends, plus workspace key prefix patterns, see
references/backend-configuration.md.
Atmos generates terraform.tfvars.json from the vars section in the stack configuration. This happens
automatically before plan/apply/deploy, but can also be invoked manually:
atmos terraform generate varfile vpc -s plat-ue2-dev
# Output to a custom file
atmos terraform generate varfile vpc -s plat-ue2-dev -f vars.jsonGenerate planfiles in JSON or YAML format for review or integration with tools like Checkov:
atmos terraform generate planfile vpc -s plat-ue2-dev
atmos terraform generate planfile vpc -s dev --format=json
atmos terraform generate planfile vpc -s dev --format=yaml --file=planfile.yamlTerraform commands can use Atmos auth identities from atmos.yaml or component-level auth.identity.
Keep detailed provider/profile setup in atmos-auth; this skill should only recommend the Terraform
runtime controls:
atmos terraform plan vpc -s prod --identity prod-admin
atmos terraform plan vpc -s dev --identity ""Backend configuration and backend provisioning are different:
backend_type and backend tell Terraform where state lives and generate backend.tf.json.provision.backend.enabled: true tells Atmos to create the backend storage before first use.Set provision.backend.enabled: true in stack config to auto-provision backend infrastructure,
solving the Terraform bootstrap problem. Manual provisioning is available via
atmos terraform backend create/list/describe/update/delete. Backend provisioning currently applies
to Terraform components. See
references/backend-configuration.md for details.
Use source for just-in-time component provisioning and pair it with provision.workdir for isolated
per-instance execution. Workdirs prevent shared .terraform, lockfile, backend, and varfile collisions
when the same component source is used by multiple stacks or runs.
components:
terraform:
vpc:
source:
uri: github.com/cloudposse-terraform-components/aws-vpc.git
version: 1.450.0
provision:
workdir:
enabled: trueWith workdirs enabled, Atmos stages the provisioned source into the instance workdir and runs Terraform there. Without workdirs, source provisioning targets the component path.
The shell command drops you into a shell pre-configured with all the context for a component in a stack.
Varfiles, backend config, and workspace are all set up so you can run native Terraform commands directly.
atmos terraform shell vpc -s plat-ue2-devInside the shell:
terraform.tfvars.json and backend.tf.json are generatedATMOS_SHLVL tracks shell nesting levelCustomize the shell prompt in atmos.yaml:
components:
terraform:
shell:
prompt: "atmos [{{.Stack}}] {{.Component}} $ "Atmos supports output, validate, state, clean, console, fmt, get, import, show,
taint/untaint, force-unlock, refresh, graph, and providers -- all standard Terraform
subcommands with the same atmos terraform <cmd> <component> -s <stack> syntax. For the complete
reference, see references/commands-reference.md.
# Common examples
atmos terraform output vpc -s dev vpc_id
atmos terraform state list vpc -s dev
atmos terraform clean vpc -s dev| Flag | Short | Description |
|---|---|---|
--stack | -s | Target Atmos stack (required for single-component) |
--dry-run | Preview without executing | |
--skip-init | Skip automatic terraform init | |
--from-plan | Apply a previously generated planfile | |
--all | Target all components | |
--affected | Target git-affected components | |
--identity | Override authentication identity |
Use -- to pass flags directly to Terraform: atmos terraform plan vpc -s dev -- -refresh=false.
For a default that should apply on every run instead of being retyped, declare it under
components.terraform.flags (or a stack/component-level flags: block) — see
Configuration in atmos.yaml below.
For the complete flag reference, see references/commands-reference.md.
You can use filesystem paths instead of component names:
cd components/terraform/vpc
atmos terraform plan . -s dev
atmos terraform apply . -s devSupported path formats: ., ./component, ../sibling, /absolute/path.
If a path matches multiple components, Atmos prompts for selection in interactive mode.
atmos describe component vpc -s plat-ue2-dev -- show the fully resolved configuration
(merged vars, backend, workspace name, metadata, settings).atmos terraform plan vpc -s dev --dry-run -- preview what Atmos will do without executing.TF_LOG=DEBUG atmos terraform plan vpc -s dev -- enable upstream Terraform debug logging.Key settings under components.terraform include auto_generate_backend_file, init.mode,
init.reconfigure, init.upgrade (see init above), workspaces_enabled, deploy_run_init,
apply_auto_approve, and plan.skip_planfile. Each has a matching ATMOS_COMPONENTS_TERRAFORM_*
environment variable override. See
references/backend-configuration.md for complete configuration details.
components.terraform.flags sets fleet-wide defaults for terraform CLI execution flags
(lock_timeout, lock, parallelism, refresh, compact_warnings) — e.g. lock_timeout: "5m"
so concurrent runs retry a held state lock instead of failing on Terraform's 0s default. The
same flags: block can be set at the stack level (root-level terraform: block) and per
component, each overriding the layer below field-by-field. See
Flags.
Use the two-stage plan/apply workflow for production. Run plan first, review the output, then
apply --from-plan to ensure exactly the reviewed changes are applied.
Use deploy for automated pipelines. It combines plan and apply with auto-approve, ideal for CI/CD.
Always preview multi-component operations with --dry-run before executing --all or --affected.
Let Atmos manage backend configuration. Set auto_generate_backend_file: true and define backend
settings in stack manifests rather than hardcoding in Terraform modules.
Use atmos describe component to debug configuration resolution issues. It shows the fully merged
result of all stack manifest inheritance.
Add generated files to .gitignore. The backend.tf.json and terraform.tfvars.json files are
generated at runtime and should not be committed.
Use atmos terraform shell for interactive debugging. It sets up the full context so you can
run native terraform commands directly.
Enable backend provisioning (provision.backend.enabled: true) to solve the Terraform bootstrap
problem and ensure backends exist before first use.
Use source provisioning with workdirs when components are pulled via source, especially in CI
or any multi-stack workflow that can run concurrently.
atmos terraform subcommands, see references/commands-reference.md© cloudposse, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in agent-skills/skills/atmos-terraform of cloudposse/atmos.
Open the folder on GitHubat commit fbae93f
Atmos Terraform next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Atmos Terraform this skillcloudposse/atmos | 1.4k | — | ~5.1k | Automated safety check: Pass | Apache-2.0 | |
| Terraform and OpenTofu Guideagentscope-ai/QwenPaw | 36k | 6 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Terraform Skillantonbabenko/terraform-skill | 2.4k | 1 repos | ~5.1k | Automated safety check: Pass | Apache-2.0 | |
| Review Docshashicorp/terraform-provider-aws | 11k | — | ~1.3k | Automated safety check: Pass | MPL-2.0 | |
| Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit | 260 | 6 repos | ~1.1k | Automated safety check: Notes | Custom licence | |
| Cloudflarehodgef/apiker | 127 | 7 repos | ~2.2k | Automated safety check: Pass | MIT |
agentscope-ai/QwenPaw
Guidance for writing and testing Terraform and OpenTofu code: module structure, naming, test approaches, CI/CD workflows, state handling and security scanning.
antonbabenko/terraform-skill
A skill your agent uses when writing, reviewing, or debugging Terraform/OpenTofu modules, tests, CI, scans, or state ops - diagnoses failure mode (identity churn, secrets, blast radius, CI drift…
hashicorp/terraform-provider-aws
Review a Terraform AWS Provider PR's end-user documentation (website/docs//.markdown): whether docs are needed, description openings, argument/attribute style, section structure, tags wording, code…
maslennikov-ig/claude-code-orchestrator-kit
Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…
hodgef/apiker
Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), feature flags (Flagship), networking (Tunnel, Spectrum), security (WAF…
patrickchugh/terravision
Draw cloud architecture diagrams for AWS, Azure or GCP with the official provider icon sets, using TerraVision.
cloudposse/atmos
A skill your agent uses when implementing, finishing, documenting, or reviewing a fix, repair, remediation, bug fix, debug-and-fix task, workflow fix, infrastructure fix, or any change that should…
cloudposse/atmos
Atmos Terraform linting with TFLint: standalone atmos terraform lint, component-aware config discovery and toolchain versions, TFLint rule configuration, and lifecycle hooks/CI findings.
cloudposse/atmos
Blog post authoring for Atmos: MDX template, frontmatter, website/blog/tags.yml and authors.yml rules, problem-first framing, backtick-opening ban, optional cast embeds, and no-Go-internals leakage.
cloudposse/atmos
Decide whether a PR's new or changed default needs edition-journal handling (pkg/edition, docs/prd/editions.md), and do the mechanical work if so: journal entries, the four-layer default check…
cloudposse/atmos
Migrate to Atmos from native Terraform, Terraform Workspaces, Terramate, Terragrunt, Make, Just, or Task; migrate tool versions from mise or Aqua CLI; migrate AWS/GCP/Azure CLI configs, Leapp…
cloudposse/atmos
Start an hourly background loop that keeps the current branch's PR rebased, its addressed CodeRabbit threads resolved, its CI checks passing, its lint clean, its tests passing with adequate patch…
Works with
Categories
Terraform and OpenTofu orchestration: plan/apply/deploy, workspace management, backend config, varfile generation, authentication, binary selection (terraform/tofu), mixed-binary setups. Atmos Terraform is an agent skill from cloudposse/atmos.
Atmos Terraform fits situations like: tasks that involve Infrastructure as code.
Run `npx skills add cloudposse/atmos --skill atmos-terraform -a claude-code`. Or copy the skill folder (agent-skills/skills/atmos-terraform in cloudposse/atmos) into .claude/skills/atmos-terraform in your project. Claude Code loads it when a task matches its description.
Run `npx skills add cloudposse/atmos --skill atmos-terraform -a codex`. Or copy the skill folder (agent-skills/skills/atmos-terraform in cloudposse/atmos) into .agents/skills/atmos-terraform in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cloudposse/atmos --skill atmos-terraform -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/atmos-terraform, .gemini/skills/atmos-terraform, .github/skills/atmos-terraform and .opencode/skills/atmos-terraform in your project.
Going by SKILL.md and its folder, Atmos Terraform needs the command-line tools its instructions call (terraform and tofu). Our summary lists: Docker.
SKILL.md names 1 domain. As links in the text: atmos.tools. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Atmos Terraform is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.1k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Atmos Terraform: Terraform and OpenTofu Guide (agentscope-ai/QwenPaw, 36k stars), Terraform Skill (antonbabenko/terraform-skill, 2.4k stars), Review Docs (hashicorp/terraform-provider-aws, 11k stars) and Senior DevOps Toolkit (maslennikov-ig/claude-code-orchestrator-kit, 260 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
cloudposse (a GitHub organization) maintains it in cloudposse/atmos, which has 1,398 GitHub stars. The repository holds 70 skills in this directory. The repository was last updated on October 9, 2026.
Source: cloudposse/atmos on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.