avm-tf-lifecycle
Skill1 starsChanged 2 months agoMITView on GitHub
Use this skill whenever an Azure Verified Module (AVM) is being proposed, approved, published, handed over to a new owner, orphaned, or deprecated — and whenever a contributor is choosing a version number for a Terraform AVM module release. Covers the four lifecycle stages (Proposed, Available, Orphaned, Deprecated), the 0.x.y pre-GA versioning rule that applies to ALL AVM modules right now, and the support obligations that come with module ownership. Trigger this skill on phrases like "propose an AVM module", "what version should I publish", "1.0.0", "GA", "deprecate this module", "module orphaned", "new owner", "handover", "release notes", "AVM lifecycle".
230 other projects use a version of this, 43 of them edited.
Adopted by
Most recently taken up by
- Azure/terraform-azurerm-avm-ptn-commercial-marketplaceword for word, first seen Oct 25, 2026
- Azure/terraform-azurerm-avm-ptn-aca-lza-hosting-environmentword for word, first seen Oct 15, 2026
- Azure/terraform-azurerm-avm-res-dataprotection-backupvaultword for word, first seen Oct 10, 2026
- Azure/terraform-azure-avm-res-signalrservice-webpubsubedited, first seen Oct 1, 2026
- Azure/terraform-azure-avm-res-insights-privatelinkscopeword for word, first seen Sep 30, 2026
- Azure/terraform-azure-avm-res-app-agentedited, first seen Sep 28, 2026
Other versions230 projects use a version of this.
Word for word · 187
- 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
177 more not listed
Edited · 43
- Azure/terraform-azurerm-avm-ptn-alz★ 13598% same
- Azure/terraform-azurerm-avm-res-keyvault-vault★ 5098% same
- Azure/terraform-azurerm-avm-ptn-cicd-agents-and-runners★ 4298% same
- Azure/terraform-azurerm-avm-res-web-site★ 3498% same
- Azure/terraform-azure-avm-ptn-alz-sub-vending★ 2798% same
- Azure/terraform-azurerm-avm-res-network-firewallpolicy★ 1598% same
- Azure/terraform-azurerm-avm-res-app-containerapp★ 1498% same
- Azure/terraform-azurerm-avm-res-cognitiveservices-account★ 1498% same
- Azure/terraform-azurerm-avm-res-machinelearningservices-workspace★ 1498% same
- Azure/terraform-azurerm-avm-res-compute-virtualmachinescaleset★ 1298% same
33 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.
- terraform/root/AGENTS.mdAGENTS.md
- terraform/root/.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-migrationSkill
- avm-tf-pattern-reviewSkill
- avm-tf-processSkill
- 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
5 rules. 2 are common, 0 are distinctive, and 3 are very specific to this project.
2
Common
Most of the 43 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Common: line 8
Every Azure Verified Module moves through four lifecycle stages.
- Very specific: line 84
Do not propose a
1.0.0release: If a user asks for one, explain that the AVM framework itself is not GA and point at the … - Very specific: line 96
Update the avm-module-owners-terraform Core Identity entitlement.
- Very specific: line 97
Update the CODEOWNERS file in the module's repo (Terraform) and add the new owner to the -module-owners- GitHub team (Bicep equivalent — …
- Common: line 100
If no replacement is found, the module enters Orphaned status — see above.
“Common” is measured: kept by at least 6 in 10 of the 43 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 module lifecycle (Terraform)
Every Azure Verified Module moves through four lifecycle stages. This skill teaches what each stage means, what the contributor's obligations are at each stage, and the version-numbering rule that constrains releases at every stage.
Authoritative source: https://raw.githubusercontent.com/Azure/Azure-Verified-Modules/refs/heads/main/docs/content/specs-defs/module-lifecycle.md
The four stages
Proposed ──✅──► Available ──orphaned──► Orphaned ──end of life──► Deprecated
│ ▲ │
│ └──── new owner ───────┘
❌
Rejected1. Proposed
The starting point for every new module. A contributor (anyone — Microsoft FTE or community) submits a module proposal issue in the central AVM repository using https://aka.ms/AVM/ModuleProposal.
The proposal MUST include:
- module name (following the naming convention — see
avm-tf-classifications) - language (Terraform)
- module class (resource, pattern, or utility — see
avm-tf-classifications) - module description
- module owner(s), if known (must be a Microsoft FTE — see
avm-tf-process)
Lifecycle approval does not relax the managed authoring rule: a new resource-deploying module repository uses AzAPI for every control-plane and supported direct Azure operation. Each permitted azurerm_* resource or data-source block must independently implement one specific unsupported data-plane/non-ARM operation, document the exact block and AzAPI gap with an upstream AzAPI issue or pull request, and be replaced when support ships. One valid block does not authorize another.
The AVM core team reviews the proposal. If accepted → Available. If rejected → the issue is closed and the lifecycle ends.
2. Available
The module has been developed, tested, published in the main branch and to the Terraform Registry. Consumers can use it in any environment. The module owner is responsible for ongoing maintenance and for responding to issues within the timescales in the Module Support page.
Publishing a new version of an Available module does NOT require a new proposal issue. Just submit a PR in the module's own repository. PR approval logic depends on owner count — see avm-tf-process.
3. Orphaned
A module is orphaned when its owner can no longer maintain it and no replacement has been found.
While orphaned:
- The AVM core team provides essential maintenance only (critical bug and security fixes).
- No new feature development until a new owner is found.
- An issue is opened on the central AVM repo to track ownership re-assignment.
- The module receives the
Status: Module Orphaned 🟡label.
The owner is responsible for finding a replacement before leaving, and must give the AVM core team warning. If a new owner is identified the module returns to Available.
4. Deprecated
End of life. Either because:
- An orphaned module's deprecation window has elapsed, OR
- The owner has chosen to deprecate (e.g. Azure has retired the underlying resource).
Deprecated modules receive the Status: Module Deprecated 🔴 label and are removed from active support.
The 0.x.y versioning rule
This rule applies to every Available AVM module today. It is not a choice.
The AVM framework is not GA (generally available). The CI framework, test automation and specification validation are not fully implemented across all supported languages yet. Hence modules MUST NOT be published at version
1.0.0or higher at this time.All modules MUST be published as a
0.x.ypre-release version (e.g.0.1.0,0.1.1,0.2.0) until the AVM team provides guidance that publishingv1.0.0is allowed.
Source: https://raw.githubusercontent.com/Azure/Azure-Verified-Modules/refs/heads/main/docs/content/contributing/process.md, SNFR12, and SNFR17.
Practical implications:
- The first release of a new module is
0.1.0, not1.0.0. - Breaking changes and feature updates bump the minor segment (
0.1.0→0.2.0), not the major segment. - Non-breaking, backward-compatible bug fixes bump the patch segment (
0.1.0→0.1.1). - Only the latest released version of a module is supported (SNFR12). If a consumer hits a bug on
0.3.0, the first triage step is "upgrade to the latest version". - Release notes MUST call out breaking changes clearly — consumers rely on these to decide whether to upgrade.
Do not propose a 1.0.0 release. If a user asks for one, explain that the AVM framework itself is not GA and point at the contributing/process page. The 0.x.y constraint is lifted only when the AVM core team explicitly publishes guidance allowing it.
Common pitfalls
- Promising long-term support for an old minor version. SNFR12 forbids this — owners aren't expected to maintain multiple major release lines.
- Skipping the proposal issue and publishing a new module repo. Without an approved proposal the module isn't an AVM module, even if the repo name follows the convention. Pattern modules in particular need the corresponding resource modules to also be proposed/available (PMNFR4).
- Treating "Orphaned" as a soft state. It blocks all feature work until a new owner takes over — be explicit about this when planning a contribution to an orphaned module.
Handover checklist for a departing owner
- Identify a replacement owner (Microsoft FTE — see
avm-tf-process). - Hand over context: open issues, in-flight PRs, known consumer pain points, release plans.
- Update the
avm-module-owners-terraformCore Identity entitlement. - Update the
CODEOWNERSfile in the module's repo (Terraform) and add the new owner to the-module-owners-GitHub team (Bicep equivalent — not applicable here, but worth knowing). - Notify the AVM core team via the central AVM repo.
If no replacement is found, the module enters Orphaned status — see above.
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.

