avm-tf-tflint
Skill1 starsChanged 2 months agoMITView on GitHub
Use whenever an AVM Terraform task involves TFLint findings, AVM rule names, rule applicability, severity, exclusions, exceptions, override files, or lint validation. Covers the current canonical avm_* rules and the Avm.Authoring override merge process. Trigger on "tflint", "lint failure", "disable rule", "ignore rule", "rule override", "avm.tflint", "severity", and any AVM TFLint rule identifier.
232 other projects use a version of this.
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-webpubsubword for word, 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-agentword for word, first seen Sep 28, 2026
Other versions232 projects use a version of this.
Word for word · 232
- Azure/terraform-azurerm-avm-ptn-alz★ 135100% same
- Azure/terraform-azurerm-avm-res-keyvault-vault★ 50100% same
- Azure/terraform-azurerm-avm-ptn-aks-production★ 44100% same
- Azure/terraform-azurerm-avm-ptn-aiml-landing-zone★ 42100% same
- Azure/terraform-azurerm-avm-ptn-cicd-agents-and-runners★ 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-web-site★ 34100% same
- Azure/terraform-azurerm-avm-res-network-privatednszone★ 32100% same
222 more not listed
Edited · 0
None found.
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-lifecycleSkill
- avm-tf-migrationSkill
- avm-tf-pattern-reviewSkill
- avm-tf-processSkill
- avm-tf-submodulesSkill
- avm-tf-telemetrySkill
- avm-tf-testingSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 11 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
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
- Very specific: line 8
Use TFLint through Avm.Authoring.
- Distinctive: line 12
Before diagnosing a finding or changing rule configuration:
- Distinctive: line 14
Read the current AVM TFLint rules and configuration overrides.
- Very specific: line 15
Read the current Azure/tflint-ruleset-avm rule inventory.
- Distinctive: line 16
Check the latest released ruleset when a plugin version or supported option matters.
- Very specific: line 29
If the version gate reports a stale installation, run avm update, re-import the module, and retry.
- Distinctive: line 31
Do not approximate the managed configuration with a separately installed TFLint binary, custom plugin setup, Make, Porch, or a container.
- Distinctive: line 35
Use the supported AVM override files by default.
- Distinctive: line 49
Read the rule guidance and its linked AVM specification.
- Distinctive: line 51
Prefer a compliant code change.
- Distinctive: line 52
If an exception is justified, decide whether a line-level annotation preserves more coverage than the narrowest supported override file.
- Distinctive: line 56
Never disable a rule merely to make CI pass.
- Distinctive: line 70
Use normal TFLint rule configuration with the current canonical rule name:
- Distinctive: line 142
Run the managed command and address findings from each owner.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AVM Terraform TFLint
Use TFLint through Avm.Authoring. Fix violations instead of suppressing them unless the published AVM requirement genuinely does not apply.
Read current sources first
Before diagnosing a finding or changing rule configuration:
- Read the current AVM TFLint rules and configuration overrides.
- Read the current
Azure/tflint-ruleset-avmrule inventory. - Check the latest released ruleset when a plugin version or supported option matters.
- Fetch the linked AVM specification for the reported rule before changing Terraform.
The published rules guide controls applicability and the supported override process. The released plugin controls valid rule identifiers and configuration. Do not rely on an older module, cached rule name, or this inventory when a live source differs.
Run the managed toolchain
Import-Module Avm.Authoring
avm version
avm lintIf the version gate reports a stale installation, run avm update, re-import the module, and retry. Run avm pre-commit before linting when managed sync or transforms can affect the configuration. Use avm pr-check only after committing the complete worktree because it requires a clean worktree.
Do not approximate the managed configuration with a separately installed TFLint binary, custom plugin setup, Make, Porch, or a container.
Prefer configuration overrides
Use the supported AVM override files by default. They make exceptions visible, reviewable, and consistent across the intended root, submodule, or example scope.
Use a line-level TFLint annotation when a single finding is exceptional and disabling the rule for the full supported configuration scope would hide unrelated findings. TFLint annotations can suppress issues only in valid, parseable Terraform and only when the rule permits annotations. Read the current TFLint annotation documentation before using one.
# This declaration is consumed after the managed transform runs.
# tflint-ignore: terraform_unused_declarations
avm_azapi_header = join(" ", [for k, v in local.avm_azapi_headers : "${k}=${v}"])Name only the specific rule and explain the reason. Do not use all. Avoid file-level annotations unless the entire file genuinely needs the same exception.
Override only after investigating
- Read the rule guidance and its linked AVM specification.
- Confirm the rule applies to the failing root, submodule, or example.
- Prefer a compliant code change.
- If an exception is justified, decide whether a line-level annotation preserves more coverage than the narrowest supported override file.
- Explain why the exception is valid, its exact scope, and any issue or pull request that will remove it.
- Re-run
avm lintand inspect the merged-scope result.
Never disable a rule merely to make CI pass. Keep exceptions temporary where possible. A scope-wide override does not authorize unrelated violations in that scope; manually review the scope for any additional occurrences.
Supported override files
| File | Scope |
avm.tflint.override.hcl | Root module checks. |
avm.tflint_module.override.hcl | Every direct submodule under modules/*. |
avm.tflint_example.override.hcl | Every direct example under examples/*. |
modules/<name>/avm.tflint.override.hcl | One direct submodule only. |
examples/<name>/avm.tflint.override.hcl | One direct example only. |
Avm.Authoring merges the immutable AVM base configuration first, then the matching repository-wide scope override, then the target-directory override. The target override wins for that direct submodule or example. Nested module and example roots are prohibited, so do not invent override paths below modules/* or examples/*.
Use normal TFLint rule configuration with the current canonical rule name:
# This pattern module does not represent one resource, so RMFR7 does not apply.
rule "avm_output_resource_id_required" {
enabled = false
}AVM plugin rules also accept severity = "error", "warning", or "notice":
# Track legacy interface migration without blocking unrelated maintenance.
rule "avm_interface_lock_deprecated" {
enabled = true
severity = "notice"
}Per-rule severity changes are separate from TFLint's global --minimum-failure-severity process threshold.
For a narrowly approved AzureRM exception, prefer an override of avm_provider_azurerm_disallowed in the narrowest supported scope and list every permitted azurerm_* block in the justification comments with the AzAPI gap and upstream issue or pull request. If the scope contains other AzureRM checks that must remain enforced, use a justified line-level annotation for the exceptional finding instead. Manually verify that no undocumented AzureRM declarations or usages exist.
Canonical rule names
Ruleset v1.0.0 removed all legacy aliases. Every AVM rule identifier starts with avm_. Old names such as provider_azurerm_disallowed, required_output_rmfr7, resource_types, retry, and timeouts are invalid in current configuration.
This is the current v1.0.0 inventory. Verify it against the live sources above before use.
| Rule | Scope | Default severity |
avm_azapi_data_response_export_values_required | All module scopes | Error |
avm_azapi_replace_triggers_refs_valid | All module scopes | Error |
avm_azapi_resource_tags_required | All module scopes | Error |
avm_azapi_response_export_values_required | All module scopes | Error |
avm_interface_customer_managed_key | All module scopes | Error |
avm_interface_diagnostic_settings | All module scopes | Error |
avm_interface_ignore_body_changes | All module scopes | Error |
avm_interface_location | All module scopes | Error |
avm_interface_lock | All module scopes | Error |
avm_interface_lock_deprecated | All module scopes | Notice |
avm_interface_managed_identities | All module scopes | Error |
avm_interface_private_endpoints | All module scopes | Error |
avm_interface_private_endpoints_deprecated | All module scopes | Notice |
avm_interface_private_endpoints_manage_dns_zone_group | All module scopes | Error |
avm_interface_resource_types | All module scopes | Error |
avm_interface_retry | All module scopes | Error |
avm_interface_role_assignments | All module scopes | Error |
avm_interface_role_assignments_deprecated | All module scopes | Notice |
avm_interface_tags | All module scopes | Error |
avm_interface_timeouts | All module scopes | Error |
avm_output_entire_resource_disallowed | Module scopes | Error |
avm_output_resource_id_required | Root module | Error |
avm_provider_azapi_version_constraint | Module scopes | Error |
avm_provider_azurerm_disallowed | Module scopes | Error |
avm_provider_azurerm_version_constraint | Module scopes | Error |
avm_provider_modtm_version_constraint | Module scopes | Error |
avm_terraform_configuration_file_required | Module scopes | Error |
avm_terraform_ignore_changes_unquoted_references | All module scopes | Error |
avm_terraform_literal_heredoc_disallowed | All module scopes | Notice |
avm_terraform_module_source_required | Module scopes | Error |
avm_terraform_provider_block_disallowed | Module scopes | Warning |
avm_terraform_sensitive_variable_default_disallowed | All module scopes | Warning |
Understand adjacent tooling
The AVM plugin does not duplicate all formatting and Terraform checks:
- MAPOTF owns deterministic ordering, file placement transforms, formatting, and removal of redundant explicit
nullable = true. - The standard Terraform TFLint plugin validates Terraform and provider requirement declarations.
- The AVM ruleset adds AVM-specific specification checks.
Run the managed command and address findings from each owner. Do not create an AVM-rule override for a formatting problem owned by MAPOTF.
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.

