## Build & Development Commands
- Use **Terraform** to provision infrastructure using `terraform init`, `plan`, and `apply` workflows
- Use **Docker** for building and managing container images (`docker build`, `docker run`, `docker compose`)
- Manage Kubernetes workloads with `kubectl`, and deploy Helm charts via `helm install` and `helm upgrade`
- Use **Python**, **Bash**, or **PowerShell** scripts to automate local and remote operations
- Use **Ansible** to automate provisioning and configuration with reproducible playbooks
- Prefer **Makefiles** or task runners (like `justfile`) to simplify command execution
## Testing Guidelines
- Validate Terraform code with `terraform validate` and `tflint`
- Lint and test Dockerfiles using `hadolint` and custom smoke tests
- Use `yamllint`, `kubeval`, and `helm lint` for Kubernetes manifests and Helm charts
- Use CI pipelines (GitLab or GitHub Actions) to run static analysis, integration tests, and dry runs
- Validate Ansible playbooks with `ansible-lint` and test using `molecule` if applicable
- Write and run Python unit tests using `pytest` and check for formatting with `black` and `flake8`
## Code Style & Guidelines
- Use consistent YAML formatting and descriptive comments for Helm values and Kubernetes manifests
- Follow **Terraform style conventions**: lowercase resource names, clear variable descriptions, and module use
- Write **modular, reusable** Helm charts with sensible default values
- Keep **Dockerfiles** minimal, readable, and pinned to stable base images
- Use **GitOps practices**: infrastructure and application states must be declaratively stored in Git
- Prefer small, well-named Git commits with clear messages describing the change
- Follow language-specific style guides for Python, Bash, and PowerShell
## Documentation Guidelines
- Provide a clear `README.md` for each repo or module with usage, prerequisites, and setup instructions
- Include inline comments in Helm templates, Terraform modules, and Ansible playbooks for maintainability
- Document CI/CD pipelines with pipeline diagrams or `README` sections for manual trigger instructions
- Maintain environment and infrastructure documentation in a central location (e.g., `docs/` folder or Wiki)
- Keep changelogs and version info up to date if distributing reusable charts, modules, or roles