lukasniessen/terrashark
Prevent Terraform/OpenTofu hallucinations by diagnosing and fixing failure modes: identity churn, secret exposure, blast-radius mistakes, CI drift, and compliance gate gaps. Use when generating, reviewing, refactoring, or migrating IaC and when building delivery/testing pipelines.
npx skills add https://github.com/LukasNiessen/terrashark --skill terrashark
Run this workflow top to bottom.
Record before writing code:
terraform or tofu) and exact versionIf unknown, state assumptions explicitly.
Select one or more based on user intent and risk:
Primary references:
references/identity-churn.mdreferences/secret-exposure.mdreferences/blast-radius.mdreferences/ci-drift.mdreferences/compliance-gates.mdSupplemental references (only when needed):
references/testing-matrix.mdreferences/quick-ops.mdreferences/examples-good.mdreferences/examples-bad.mdreferences/examples-neutral.mdreferences/coding-standards.mdreferences/module-architecture.mdreferences/ci-delivery-patterns.mdreferences/security-and-governance.mdreferences/do-dont-patterns.mdreferences/mcp-integration.mdConditional references (CRR; load only on detected signals):
references/conditional/backend-state-safety.md (backend is s3, azurerm, gcs, remote, cloud, pg, consul, or local, or task mentions backend migration, locking, state backup, or restore)references/conditional/trusted-modules.md (provider is aws, azurerm, google, oci, or ibm)Do not load multiple conditional references unless the task spans multiple detected backends, providers, or tools.
For each fix, include:
When applicable, output:
moved, import strategy)When a trusted registry module covers the requested resource and the user has not asked for raw HCL, default to that module with an exact version pin (see references/conditional/trusted-modules.md).
Always provide command sequence tailored to runtime and risk tier.
Never recommend direct production apply without reviewed plan and approval.
Return:
Take lukasniessen/terrashark from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.