Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add fmind/dot --skill infra-as-codegit clone --depth 1 https://github.com/fmind/dotWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/fmind/dot/infra-as-code)<a href="https://agentmods.dev/skills/fmind/dot/infra-as-code"><img src="https://agentmods.dev/badge/skills/fmind/dot/infra-as-code/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/fmind/dot/infra-as-code"><img src="https://agentmods.dev/badge/skills/fmind/dot/infra-as-code.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00020 | $0.01601 |
| Opus 5.5 | $0.00008 | $0.00640 |
| Sonnet 5.5 | $0.00004 | $0.00320 |
| Haiku 4.5 | $0.00002 | $0.00160 |
Grade A, and why
infra-as-code scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 61 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Infrastructure as Code
Canonical infrastructure as code with OpenTofu (the open-source Terraform fork; the binary is tofu). A repository that needs a BSL-licensed feature or employer-mandated HashiCorp Terraform pins terraform in its own mise configuration and documents the deviation.
Defaults
- Default to OpenTofu via mise:
opentofutool,tofubinary; verify provider, backend, state, and language-feature compatibility before a Terraform migration. - Use the template tasks and hooks: mise.toml exposes the canonical vocabulary per mise —
checkfans out to format, validate, lint (tflint), scan (trivy), and leaks; lefthook.yml wires the hooks per lefthook. - Generate docs with terraform-docs:
mise run buildinjects the inputs/outputs table between theTF_DOCSmarkers inREADME.md(add them once at scaffold time) per terraform-docs.yml, without cloud access. - Authenticate without service-account keys: Application Default Credentials locally; Workload Identity Federation in CI per github-actions.
Workflow
- Resolve the target: identify the root module, backend, workspace (
tofu workspace show), cloud project, credentials, and the authorized change scope. A fresh clone runsmise run installfirst: validation, linting, and tests needtofu initproviders andtflint --initrulesets. - Edit minimally: change the smallest root module that owns the resource; keep one state per concern (one GCS
prefixper small root module: smaller blast radius, faster plans). - Check before planning: run
mise run checkandmise run test; tests stay offline only while every provider is mocked (the starter'smock_provider), otherwise plan-mode tests can authenticate, refresh state, and read data sources. Native tests overtests/*.tftest.hclusecommand = plan(main.tftest.hcl); encode "must never happen" rules (public buckets, missing labels) ascheck:scantrivy findings or plan-test assertions. - Plan explicitly:
mise run planwritestmp/plan.tfplanfor the selected backend, workspace, and cloud target; feed secrets per State and secrets below. A plan can access APIs, state, and data sources, so keep plan and apply out of automatic gates. - Review the plan: read
tofu show tmp/plan.tfplanand flag every replacement, destroy, IAM change, and cost-relevant resource before asking for apply authority. - Apply the reviewed plan when authorized:
tofu apply tmp/plan.tfplanagainst the same target, then delete the saved plan. - Verify: re-read the changed resources and run the same target's plan with its secret inputs, e.g.
sops exec-env secrets.enc.env 'tofu plan -input=false -detailed-exitcode'; exit 0 means no remaining drift, 2 means pending changes, 1 is an error.
What ships with it
13 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/scaffold.md 3.0 KB
- references/state-encryption.md 1.6 KB
- templates/gitignore 433 B
- templates/lefthook.yml 600 B
- templates/main.tf 568 B
- templates/main.tftest.hcl 1020 B
- templates/mise.toml 3.1 KB
- templates/outputs.tf 188 B
- templates/terraform-docs.yml 208 B
- templates/terraform.example.tfvars 203 B
- templates/tflint.hcl 436 B
- templates/variables.tf 704 B
- templates/versions.tf 1.7 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today Changed c85aec792f2f
- 4d ago Changed 6880c2c7cc4e
- 9d ago Changed · -2 lines b9af8b8a3a52
- 11d ago Changed 4bca80edc7d3
- 12d ago Changed · -7 lines · -2 tokens per session 8e00a248adf5
- 14d ago Changed 8d9f57541aa4
- 20d ago Changed 9202eeefc999
- 23d ago Changed d3cff11216c2
- 29d ago First seen · 70 lines · 22 tokens per session scan A 67afb522e061
infra-as-code is a skill published in the GitHub repository fmind/dot (11 stars, last pushed yesterday), licensed MIT. It adds 20 tokens to every session and 1,601 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-17.
Other skills, from other repositories
cloud-run
Deploy container services to Google Cloud Run with Artifact Registry, keyless CI identity, Secret Manager, ko, or Dockerfiles.
google-cloud-operations
Operate Google Cloud with gcloud: pin account, configuration, project, and billing context for IAM, APIs, logs, and audits outside deployment.
terraform-stack
Canonical infrastructure-as-code stack — OpenTofu-first with tflint, trivy config scans, terraform-docs, native tests, and GCS state. Use for any Terraform or OpenTofu work.
dotfiles-bootstrap
Bootstrap a workstation with the dotfiles framework. Takes a GitHub user / owner+repo / explicit clone URL and runs dot init (which shells out to chezmoi) with the right safety prompts. Honors the active agent profile (ask / plan / apply / audit) so it defaults to dry-run in safer modes and full apply in apply.
vibe
Delegate a coding task to a cheap AI model (Mistral Vibe by default, but any provider Vibe knows about — DeepSeek, Gemini Flash, etc.) and supervise the result via git diff. Claude orchestrates, the cheap model codes. Claude consumes 500-1500 tokens per delegation regardless of how many file reads the delegate does…
scaffold-terraform
Scaffold a Terraform infrastructure project with CI/CD (plan on PR, apply on push), AWS OIDC auth, .envrc, and standard files. Uses terraform CLI as the native tool. Loads on top of scaffold-project (run that first for cross-language standard files). Use when creating infrastructure repos, or when the user mentions…