Skiff is a lightweight, extensible Command-Line Interface (CLI) designed for managing Terraform and Terragrunt infrastructure deployments at scale across multiple cloud environments. It utilizes a declarative YAML manifest for configuration. Skiff aims to abstract the complexities of directory structure organization, enabling platform and DevOps teams to focus on Terraform module development rather than structural management overhead.
- ⚙️ Service Types Catalog – Define reusable services (terraform modules ) like VPC, RDS, IAM
- 🧾 Declarative Manifest – Describe services and dependencies
- 🛠️ Template-based Terragrunt File Generation
- 🧭 Strategy-Driven Folder Layouts – Flexible, configurable directory structures
- 🏃 Command Runner – Run
terragruntcommands filtered by labels - 🔁 Dry-Run Support – Preview changes without executing them
go install github.com/nyambati/skiff@latestskiff initThis creates the project folder structure and a default .skiff config file.
.
├── .skiff # Project config (includes strategy)
├── manifests/ # Service types + service definitions manifest
│ ├── catalog.yaml
│ └── 123456789012.yaml
├── templates/ # Terragrunt templates
│ └── terragrunt.default.tmpl
└── terragrunt/ # Output folder (rendered files)skiff edit catalog --type vpc \
--values source="github.com/terraform-aws-modules/terraform-aws-vpc",version="4.16.0"skiff edit manifest \
--name my-manifest \
--metadata account_name=my_account,account_id=123456789012,env=productionskiff edit service \
--manifest my-manifest \
--service simple-vpcskiff generate --manifest my-manifest --labels env=prod,region=us-west-2skiff [plan,apply,destroy] --labels env=prod,region=us-west-2📚 Full Documentation
See docs/ for a complete guide including design philosophy, layout strategies, and customization options.
We’re building Skiff to be a reliable, developer-first IaC companion. PRs, issues, and discussions welcome!
MIT License