Azure Verified Modules (AVM) requirements and best practices for developing certified Azure Terraform modules. Use when creating or reviewing Azure modules that need AVM certification.
Core workflow and checklists for AVM-compliant Terraform modules.
Upstream source: AVM Terraform Requirements
| Reference | Content | |---|---| | references/avm-requirements.md | Full TFFR/TFNFR requirement specs | | references/examples.md | Bad-vs-good HCL patterns | | references/vnet-guide.md | VNet injection workflow + tier-specific examples |
source = "Azure/xxx/azurerm" + version = "1.2.3"azurerm ~> 4.0 and/or azapi ~> 2.0 onlyprovider blocks in modules (except configuration_aliases)snake_casing everywherefor_each with map() or set() using static keys onlyignore_changes not quoted (e.g., [tags] not ["tags"])coalesce()/try() for defaults instead of ternaryenabled / module_depends_on variablestype and description; required first (alphabetical), then optionalnullable = falsesensitive = false (it's the default); no default values for sensitive inputsdeprecated_variables.tf with DEPRECATED prefixsensitive = true for confidential datadeprecated_outputs.tfdefault = falsemoved blocks (no destroy/recreate)Verify exact networking requirements from official docs before writing any VNet injection, subnet delegation, or NSG config. Requirements differ across tiers/SKUs within the same service — wrong config leads to cryptic failures (MethodNotAllowedInPricingTier), subnet delegation conflicts, or missing NSG rules.
Follow the step-by-step verification workflow and tier-specific HCL examples in references/vnet-guide.md.
Before submitting, verify:
.terraform-docs.yml, CODEOWNERSfor_each keysFor full requirement details, see references/avm-requirements.md. For bad-vs-good HCL examples, see references/examples.md.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer