Fabric Builder
This skill generates idiomatic Terraform code using Cloud Foundation Fabric (CFF) modules, following established best practices and conventions.
Core Workflow
- Understand Request: Identify the GCP resources and relationships requested by the user.
- Fetch Module Info: Identify the relevant CFF module(s) from the
modules/folder on GitHub (GoogleCloudPlatform/cloud-foundation-fabric). - Generate Terraform: Output an idiomatic Terraform root module that consumes the CFF modules according to conventions.md.
Important Guidance
- Conventions & Best Practices: Consult conventions.md for guidelines on how to consume Fabric modules and write high-quality, idiomatic Terraform code (including module sources, version constraints, and provider configuration).
- Fetching Modules: Do not invent module inputs or outputs. Use the
fabric.pyscript to pull exact details (README, variables, examples) for a specific module from GitHub before using it.- To list available modules:
python3 scripts/fabric.py modules - To fetch details for a module (README):
python3 scripts/fabric.py fetch readme <module_name> - To fetch variables files:
python3 scripts/fabric.py fetch variables <module_name> - To fetch outputs files:
python3 scripts/fabric.py fetch outputs <module_name> - To fetch schema files (useful for factories):
python3 scripts/fabric.py fetch schemas <module_name> - To fetch the latest release version:
python3 scripts/fabric.py release - SSL Certification Verification: If you run into SSL certificate issues on your host machine, use the
--no-ssl-verifyflag (e.g.,python3 scripts/fabric.py --no-ssl-verify fetch readme <module_name>).
- To list available modules:
Guidelines for Output
- Root Module Output: Your output must be a complete Terraform root module that calls the appropriate CFF modules to fulfill the user's requirements.
- Follow Conventions: Strictly adhere to conventions.md for module sources, version constraints, provider configuration, and coding style.
- Use Fabric Modules: Rely on CFF modules instead of raw
google_resources whenever possible. - Example-based Learning: Always refer to the module's README (fetched via
scripts/fabric.py) for correct usage examples. - Formatting & Validation: Ensure the generated code is properly formatted. If possible, run
terraform fmt,terraform validate, andterraform planto check your work.