avm-tf-process
Skill2 starsChanged 2 days agoMITView on GitHub
Use for the AVM Terraform contribution process from module proposal and repository setup through implementation, Avm.Authoring validation, pull request review, and release.
231 other projects use a version of this, 22 of them edited.
Adopted by
Most recently taken up by
- Azure/terraform-azurerm-avm-res-avs-privatecloudword for word, first seen Nov 13, 2026
- Azure/terraform-azurerm-avm-ptn-odaa-identityword for word, first seen Nov 13, 2026
- Azure/terraform-azurerm-avm-res-app-managedenvironmentword for word, first seen Nov 13, 2026
- Azure/terraform-azurerm-avm-ptn-monitoring-amba-alzword for word, first seen Nov 13, 2026
- Azure/terraform-azurerm-avm-res-search-searchserviceword for word, first seen Nov 13, 2026
- Azure/terraform-azurerm-avm-ptn-azure-local-migrateword for word, first seen Nov 13, 2026
Other versions231 projects use a version of this.
Word for word · 209
- Azure/terraform-azurerm-avm-ptn-aks-production★ 44100% same
- Azure/terraform-azurerm-avm-ptn-aiml-landing-zone★ 42100% same
- Azure/terraform-azurerm-avm-res-compute-virtualmachine★ 42100% same
- Azure/terraform-azurerm-avm-res-containerservice-managedcluster★ 42100% same
- Azure/terraform-azurerm-avm-res-storage-storageaccount★ 39100% same
- Azure/terraform-azurerm-avm-res-network-privatednszone★ 32100% same
- Azure/terraform-azurerm-avm-ptn-alz-management★ 26100% same
- Azure/terraform-azurerm-avm-res-containerregistry-registry★ 23100% same
- Azure/terraform-azurerm-avm-ptn-network-private-link-private-dns-zones★ 22100% same
- Azure/terraform-azurerm-avm-res-devopsinfrastructure-pool★ 20100% same
199 more not listed
Edited · 22
- Azure/terraform-azurerm-avm-ptn-alz★ 13499% same
- Azure/terraform-azurerm-avm-res-keyvault-vault★ 5099% same
- Azure/terraform-azurerm-avm-ptn-cicd-agents-and-runners★ 4299% same
- Azure/terraform-azurerm-avm-res-web-site★ 3499% same
- Azure/terraform-azure-avm-ptn-alz-sub-vending★ 2799% same
- Azure/terraform-azurerm-avm-res-authorization-roleassignment★ 1999% same
- Azure/terraform-azurerm-avm-res-network-firewallpolicy★ 1599% same
- Azure/terraform-azurerm-avm-res-app-containerapp★ 1499% same
- Azure/terraform-azurerm-avm-ptn-alz-connectivity-hub-and-spoke-vnet★ 1099% same
- Azure/terraform-azurerm-avm-res-network-publicipaddress★ 1099% same
12 more not listed
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository15 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- avm-tf-azapiSkill
- avm-tf-classificationsSkill
- avm-tf-codestyleSkill
- avm-tf-conftestSkill
- avm-tf-documentationSkill
- avm-tf-interfacesSkill
- avm-tf-lifecycleSkill
- avm-tf-migrationSkill
- avm-tf-pattern-reviewSkill
- avm-tf-submodulesSkill
- avm-tf-telemetrySkill
- avm-tf-testingSkill
- avm-tf-tflintSkill
The file
We split this skill into the rules it gives an agent
10 rules. 8 are common, 1 is distinctive, and 1 is very specific to this project.
8
Common
Most of the 22 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Common: line 8
Use the current AVM process and specification pages from <https://azure.github.io/Azure-Verified-Modules/llms.txt>.
- Common: line 14
Before creating or restructuring a repository, read the current requirements for:
- Distinctive: line 26
Start from the current AVM Terraform template or governance-managed repository state.
- Common: line 43
When supporting configuration needs a direct Azure resource that the module under test does not supply, use an AzAPI resource, data source, …
- Common: line 59
Use the local specialized skills for implementation details, but resolve any conflict in favor of the current published spec.
- Common: line 63
Keep changes scoped and preserve unrelated history.
- Common: line 80
Do not add shell-hook counterparts.
- Common: line 106
Commit the complete worktree before running:
- Common: line 129
Follow the current AVM semantic-versioning and publishing process.
- Very specific: line 137
Use Avm.Authoring throughout.
“Common” is measured: kept by at least 6 in 10 of the 22 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AVM Terraform Contribution Process
Use the current AVM process and specification pages from https://azure.github.io/Azure-Verified-Modules/llms.txt. Older public setup pages or module repositories may still contain the retired launcher, Makefile, container, or Porch flow.
1. Confirm classification and ownership
Determine whether the work is a resource, pattern, or utility module. Confirm the approved module name and ownership from the AVM indexes and proposal rather than inventing a name.
Before creating or restructuring a repository, read the current requirements for:
- repository naming and visibility;
- owner and AVM team permissions;
- CODEOWNERS;
- branch protection and required checks;
- issue and pull request templates;
- release and publishing; and
- support lifecycle.
2. Establish the managed repository baseline
Start from the current AVM Terraform template or governance-managed repository state. Follow the MAR installation prerequisites to upgrade PSResourceGet and register MAR once; it is not registered by default. Import Avm.Authoring and synchronize managed files:
Install-PSResource -Name avm.authoring `
-Repository MAR `
-Scope CurrentUser
Import-Module Avm.Authoring
avm version
avm syncReview synchronized changes before continuing. Do not restore files from the retired Make, Porch, or container workflow.
3. Implement from current specifications
Build every new resource-deploying module repository on AzAPI. Do not declare or configure hashicorp/azurerm, and do not create any azurerm_* resource or data source for control-plane operations, convenience, or ordinary supporting infrastructure in implementation, submodules, examples, E2E configurations, Terraform tests, fixtures, setup or teardown Terraform, migration examples, documentation examples, or generated snippets.
When supporting configuration needs a direct Azure resource that the module under test does not supply, use an AzAPI resource, data source, or action. Each standalone Terraform root that performs direct Azure operations includes Azure/azapi in required_providers.
Permit hashicorp/azurerm ~> 4.0 only when required by an independently justified azurerm_* resource or data-source block. Each block scopes to one specific unsupported data-plane/non-ARM operation, documents the exact block and why AzAPI cannot implement it with an upstream AzAPI issue or pull request, and is replaced when support ships. Prefer an AVM TFLint override file, but use a justified line-level annotation when it avoids suppressing unrelated findings in the same scope. One valid block does not authorize another. Examples and tests may configure AzureRM only to exercise such blocks. Follow avm-tf-tflint.
Fetch llms.txt, then read each applicable raw spec page. At minimum, review:
- module classification and composition rules;
- TFFR3-TFFR8 for AzAPI;
- TFRMFR1 and TFNFR38 for parent and resource IDs;
- TFRMNFR1 and TFRMNFR2 for submodules and resource labels;
- TFNFR39 for file layout;
- standard interfaces and telemetry;
- tests and examples;
- documentation; and
- semantic versioning and breaking changes.
Use the local specialized skills for implementation details, but resolve any conflict in favor of the current published spec.
4. Develop on a focused branch
Keep changes scoped and preserve unrelated history. Add or update:
- Terraform implementation and exact types;
- root and submodule tests;
- representative examples;
_header.mdand_footer.md;- migration or upgrade-path coverage when state or addresses change; and
- generated README files through
Avm.Authoring.
Scripts and lifecycle hooks must be PowerShell. Supported hook names include:
tests/unit/setup.ps1;tests/integration/setup.ps1;examples/<name>/pre.ps1;examples/<name>/post.ps1; andexamples/<name>/tflint-pre.ps1.
Do not add shell-hook counterparts.
5. Run targeted tests
Choose the smallest tier that proves the change:
avm test unit
avm test integration
avm test e2e --example <example-name>Unit tests mock all required providers. Integration and E2E tests need real Azure authentication. E2E tests must prove deployment, idempotency, and cleanup.
6. Apply pre-commit changes
Run:
avm pre-commitFor Terraform this performs managed-file sync, fixable convention rules, transforms, formatting, and documentation generation. Review every generated or synchronized change and rerun targeted tests if the generated change affects behavior.
7. Commit, then run the full PR gate
Commit the complete worktree before running:
avm pr-checkavm pr-check requires a clean Git worktree. It checks sync, formatting, transforms, lint, APRL/AVMSEC policy evaluation, conventions, Terraform validation, and documentation. Unit tests remain a separate test tier and CI job; a passing PR check is not a substitute for required unit, integration, or E2E coverage.
8. Open and review the pull request
The pull request must explain:
- what changed and why;
- applicable specification IDs;
- compatibility or breaking-change impact;
- state migration steps when addresses or providers changed;
- tests and examples exercised; and
- confirmation that control-plane and supporting resources use AzAPI, plus the evidence and upstream link for any narrow data-plane/non-ARM AzureRM exception.
Review the final diff rather than only the hand-authored files. Managed and generated outputs are part of the change.
9. Release
Follow the current AVM semantic-versioning and publishing process. Confirm:
- the change classification matches the release version;
- generated documentation is current;
- required checks and test tiers passed;
- upgrade notes are included where needed; and
- repository permissions and release automation remain governance-compliant.
Use Avm.Authoring throughout. Do not substitute ./avm, avm.ps1, Make, Porch, Docker, Podman, or manually installed pinned tools.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

