Terravision Cloud Diagrams
patrickchugh/terravision
Draw cloud architecture diagrams for AWS, Azure or GCP with the official provider icon sets, using TerraVision.
A skill your agent uses for AVM Terraform AzAPI resources, provider constraints, ARM schemas, parent IDs, resource types, retries, timeouts, response exports, replacement triggers, and…
$ npx skills add Azure/terraform-azurerm-avm-ptn-alz --skill avm-tf-azapi -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Azure/terraform-azurerm-avm-ptn-alz avm-tf-azapi --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Azure/terraform-azurerm-avm-ptn-alz.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/avm-tf-azapi .claude/skills/avm-tf-azapi && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "avm-tf-azapi" agent skill from https://github.com/Azure/terraform-azurerm-avm-ptn-alz/tree/main/.github/skills/avm-tf-azapi into .claude/skills/avm-tf-azapi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avm-tf-azapi", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Azure/terraform-azurerm-avm-ptn-alz/tree/main/.github/skills/avm-tf-azapiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Azure/terraform-azurerm-avm-ptn-alz --skill avm-tf-azapi -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Azure/terraform-azurerm-avm-ptn-alz avm-tf-azapi --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Azure/terraform-azurerm-avm-ptn-alz.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/avm-tf-azapi .agents/skills/avm-tf-azapi && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "avm-tf-azapi" agent skill from https://github.com/Azure/terraform-azurerm-avm-ptn-alz/tree/main/.github/skills/avm-tf-azapi into .agents/skills/avm-tf-azapi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avm-tf-azapi", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Azure/terraform-azurerm-avm-ptn-alz --skill avm-tf-azapi -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Azure/terraform-azurerm-avm-ptn-alz avm-tf-azapi --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Azure/terraform-azurerm-avm-ptn-alz.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/avm-tf-azapi .cursor/skills/avm-tf-azapi && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "avm-tf-azapi" agent skill from https://github.com/Azure/terraform-azurerm-avm-ptn-alz/tree/main/.github/skills/avm-tf-azapi into .cursor/skills/avm-tf-azapi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avm-tf-azapi", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Azure/terraform-azurerm-avm-ptn-alz.git --path .github/skills/avm-tf-azapi--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Azure/terraform-azurerm-avm-ptn-alz --skill avm-tf-azapi -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Azure/terraform-azurerm-avm-ptn-alz avm-tf-azapi --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Azure/terraform-azurerm-avm-ptn-alz.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/avm-tf-azapi .gemini/skills/avm-tf-azapi && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "avm-tf-azapi" agent skill from https://github.com/Azure/terraform-azurerm-avm-ptn-alz/tree/main/.github/skills/avm-tf-azapi into .gemini/skills/avm-tf-azapi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avm-tf-azapi", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Azure/terraform-azurerm-avm-ptn-alz avm-tf-azapiInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Azure/terraform-azurerm-avm-ptn-alz --skill avm-tf-azapi -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Azure/terraform-azurerm-avm-ptn-alz.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/avm-tf-azapi .github/skills/avm-tf-azapi && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "avm-tf-azapi" agent skill from https://github.com/Azure/terraform-azurerm-avm-ptn-alz/tree/main/.github/skills/avm-tf-azapi into .github/skills/avm-tf-azapi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avm-tf-azapi", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Azure/terraform-azurerm-avm-ptn-alz --skill avm-tf-azapi -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Azure/terraform-azurerm-avm-ptn-alz avm-tf-azapi --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Azure/terraform-azurerm-avm-ptn-alz.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/avm-tf-azapi .opencode/skills/avm-tf-azapi && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "avm-tf-azapi" agent skill from https://github.com/Azure/terraform-azurerm-avm-ptn-alz/tree/main/.github/skills/avm-tf-azapi into .opencode/skills/avm-tf-azapi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "avm-tf-azapi", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
avm-tf-azapiA skill your agent uses for AVM Terraform AzAPI resources, provider constraints, ARM schemas, parent IDs, resource types, retries, timeouts, response exports, replacement triggers, and…
Avm Tf Azapi is an agent skill from Azure/terraform-azurerm-avm-ptn-alz, published by the product's own GitHub organization. Use for AVM Terraform AzAPI resources, provider constraints, ARM schemas, parent IDs, resource types, retries, timeouts, response exports, replacement triggers, and ignorebodychanges.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts and reference files (for example `references/tfpluginschema.md`).
It sits in DevOps & Cloud, covering Infrastructure as code. It works with Terraform and Microsoft Azure. The repository describes itself as: Terraform Azure Verified Pattern Module for Azure Landing Zone Management Groups and Policy. The licence is MIT.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e2a318c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (PowerShell), which the agent can run.
Shell commands in SKILL.md call:
pwshFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
azure.github.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Avm Tf Azapi loads about 2.9k tokens when it runs, and up to ~4k if it reads all its reference files. Until then it costs about 50 tokens; SKILL.md has 957 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from Azure/terraform-azurerm-avm-ptn-alz at commit e2a318c, republished under its MIT licence (© Azure). 957 words, ~2,881 tokens.
.claude/skills/avm-tf-azapi/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Read the current TFFR3-TFFR8, TFNFR38, TFRMFR1, TFRMNFR1, and TFRMNFR2 pages through https://azure.github.io/Azure-Verified-Modules/llms.txt before implementing or reviewing an AzAPI resource.
Every new AVM Terraform module repository that deploys Azure resources MUST use AzAPI for every control-plane resource and every supported direct Azure operation. Do not declare or configure hashicorp/azurerm, and do not create any azurerm_* resource or data source for convenience or ordinary supporting infrastructure.
This managed-authoring prohibition applies to the root implementation, submodules, examples, E2E configurations, Terraform tests, fixtures, setup or teardown Terraform, migration examples, documentation examples, and generated snippets. When supporting Terraform needs a direct Azure resource that the module under test does not supply, use an AzAPI resource, data source, or action.
TFFR3 requires:
terraform {
required_providers {
azapi = {
source = "Azure/azapi"
version = "~> 2.12"
}
}
}~> 2.12 means >= 2.12, < 3.0. The 2.12 floor is required for ignore_body_changes.
Every standalone Terraform root that performs a direct Azure operation MUST include Azure/azapi in required_providers. Use azapi_resource, azapi_data_plane_resource, azapi_resource_action, azapi_update_resource, or an AzAPI data source as appropriate. Do not start a new module from an AzureRM implementation and treat migration as future work.
hashicorp/azurerm ~> 4.0 is permitted only when required for a data-plane or other non-ARM operation that genuinely cannot be implemented with those AzAPI resource forms. Each azurerm_* resource or data-source block independently scopes to one specific unsupported 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. Do not use the exception for any control-plane resource. Follow avm-tf-tflint.
For Microsoft.Example/widgets, the deterministic TFFR6 key is example_widgets:
resource "azapi_resource" "this" {
type = var.resource_types.example_widgets
name = var.name
parent_id = var.parent_id
location = var.location
body = {
properties = {
skuName = var.sku_name
}
}
ignore_body_changes = length(var.ignore_body_changes.example_widgets) > 0 ? var.ignore_body_changes.example_widgets : null
replace_triggers_refs = [
"properties.skuName",
]
response_export_values = [
"properties.provisioningState",
]
retry = var.retry
dynamic "timeouts" {
for_each = var.timeouts == null ? [] : [var.timeouts]
content {
create = timeouts.value.create
read = timeouts.value.read
update = timeouts.value.update
delete = timeouts.value.delete
}
}
}The primary resource label is this. Satellite resources such as locks, role assignments, and diagnostic settings use descriptive labels.
type: always read from var.resource_types.<deterministic_key>.response_export_values: present on every resource, even when empty.replace_triggers_refs: omit when no body paths require replacement. When present, use a non-empty static list of unique, valid JMESPath body paths; do not include name or location.retry: assigned directly from var.retry.timeouts: emitted with a dynamic block from var.timeouts.ignore_body_changes: read from the field for this specific resource and collapse [] to null.tags: set exactly to var.tags when the current AVM ruleset capability snapshot marks the resource type as taggable; omit it for unsupported types.The same requirements apply to equivalent AzAPI resource types, not only azapi_resource.
resource_typesDrop Microsoft., lowercase the provider token without splitting internal capitals, convert each resource path segment to snake case, and join the tokens with underscores:
| ARM type | Key |
|---|---|
Microsoft.Example/widgets | example_widgets |
Microsoft.Example/widgets/parts | example_widgets_parts |
Microsoft.Authorization/roleAssignments | authorization_role_assignments |
Microsoft.KeyVault/vaults/secrets | keyvault_vaults_secrets |
Microsoft.Network/virtualNetworks/subnets | network_virtual_networks_subnets |
variable "resource_types" {
type = object({
example_widgets = optional(string, "Microsoft.Example/widgets@2024-01-01")
authorization_locks = optional(string, "Microsoft.Authorization/locks@2020-05-01")
example_widgets_parts = optional(object({
example_widgets_parts = optional(string)
}), {})
})
default = {}
nullable = false
description = <<DESCRIPTION
AzAPI resource types and API versions used by the module.
- `example_widgets` - Resource type and API version for the widget.
- `authorization_locks` - Resource type and API version for locks.
- `example_widgets_parts` - Resource-type overrides passed to the part submodule.
- `example_widgets_parts.example_widgets_parts` - Resource type and API-version override for parts.
DESCRIPTION
}Each module owns the stable API-version defaults for resources it declares. A parent's nested submodule slot mirrors the child variable but does not repeat the child's string defaults. Document every owned-resource field and every nested submodule field in the variable description.
ignore_body_changesThe shape uses the same keys and module tree as resource_types, but each owned resource has a list of body paths:
variable "ignore_body_changes" {
type = object({
example_widgets = optional(list(string), [])
example_widgets_parts = optional(object({
example_widgets_parts = optional(list(string), [])
}), {})
})
default = {}
nullable = false
description = <<DESCRIPTION
Body-relative paths to ignore for each AzAPI resource. Paths use dot notation.
Changes take effect only after apply. Ignored configuration is not sent to Azure
until the path is removed.
- `example_widgets` - Paths ignored on the widget resource.
- `example_widgets_parts` - Paths passed to the part submodule.
- `example_widgets_parts.example_widgets_parts` - Paths ignored on part resources.
DESCRIPTION
}Rules:
optional(list(string), []) field for each AzAPI resource owned by the module;tags or properties.sku.name;null;Non-empty values require Terraform 1.11 or later. Prefer static lifecycle.ignore_changes when the ignored references are compile-time static. Static lifecycle references are unquoted, for example ignore_changes = [tags].
Resource modules accept an existing parent scope through required parent_id:
variable "parent_id" {
type = string
nullable = false
description = "The fully-qualified ARM resource ID of the existing resource group into which the widget will be deployed."
validation {
condition = can(provider::azapi::parse_resource_id("Microsoft.Resources/resourceGroups", var.parent_id))
error_message = "`parent_id` must be a valid resource group resource ID."
}
}The expected type is a literal string. Apply the same TFNFR38 pattern to every ARM resource ID input, including optional, collection, and nested values. Do not accept resource_group_name or construct the parent ID inside a resource module.
Polymorphic inputs that legitimately accept multiple unrelated resource types should not be validated against one arbitrary type. For a general polymorphic input, follow the TFNFR38 exception and leave it without resource-type validation. For an extension-resource module's parent_id, follow TFRMFR1 instead: require a non-empty fully-qualified ID beginning with /subscriptions/ or /providers/, and document the exception in the README.
ARM subresources are full local submodules. The parent owns cardinality:
module "part" {
source = "./modules/part"
for_each = var.parts
name = each.value.name
parent_id = azapi_resource.this.id
resource_types = var.resource_types.example_widgets_parts
retry = var.retry
timeouts = var.timeouts
ignore_body_changes = var.ignore_body_changes.example_widgets_parts
}The child declares one azapi_resource.this without count or for_each.
Export only properties needed by outputs. Prefer discrete computed outputs:
output "resource_id" {
value = azapi_resource.this.id
description = "The resource ID of the deployed widget."
}
output "provisioning_state" {
value = azapi_resource.this.output.properties.provisioningState
description = "The provisioning state returned by Azure."
}Put secrets in sensitive_body, make secret inputs ephemeral where required by the current specs, and use sensitive_body_version to make changes detectable without persisting secret values.
Use the repository's PowerShell schema helper rather than guessing:
pwsh .github/skills/avm-tf-azapi/scripts/Get-AzureSchema.ps1 versions Microsoft.Example/widgets
pwsh .github/skills/avm-tf-azapi/scripts/Get-AzureSchema.ps1 get Microsoft.Example/widgets 2024-01-01Include required writable properties in body, exclude read-only properties, export needed read-only values, and put write-only secret properties in sensitive_body. Prefer a stable API version unless the resource or required feature is preview-only.
For Terraform provider schema inspection beyond ARM body schemas, see the tfpluginschema reference.
When moving from AzureRM:
moved block or documented state migration;resource_types, retry, timeouts, and ignore_body_changes;avm pre-commit, commit, then run avm pr-check on the clean worktree.AzureRM code and azurerm_* addresses are source input for migration only. Do not carry the AzureRM provider, resources, or data sources into generated target implementation, examples, tests, fixtures, setup or teardown Terraform, or documentation snippets unless the target still requires the documented unsupported data-plane/non-ARM operation.
© Azure, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts, references) in .github/skills/avm-tf-azapi of Azure/terraform-azurerm-avm-ptn-alz.
Open the folder on GitHubat commit e2a318c
Avm Tf Azapi next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Avm Tf Azapi this skillAzure/terraform-azurerm-avm-ptn-alz | 135 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Terravision Cloud Diagramspatrickchugh/terravision | 1.6k | — | ~5.6k | Automated safety check: Notes | AGPL-3.0-only | |
| TerrasharkLukasNiessen/terrashark | 714 | — | ~843 | Automated safety check: Pass | MIT | |
| Provider Verificationmondoohq/mql | 411 | — | ~3.7k | Automated safety check: Pass | Custom licence | |
| Tirith MigrateStackGuardian/tirith | 170 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Terraform Azurerm Set Diff Analyzergithub/awesome-copilot | 40k | 1 repos | ~547 | Automated safety check: Pass | MIT |
patrickchugh/terravision
Draw cloud architecture diagrams for AWS, Azure or GCP with the official provider icon sets, using TerraVision.
LukasNiessen/terrashark
Prevent Terraform/OpenTofu hallucinations by diagnosing and fixing failure modes: identity churn, secret exposure, blast-radius mistakes, CI drift, and compliance gate gaps.
mondoohq/mql
Verify mql provider resource/field changes against real cloud infrastructure.
StackGuardian/tirith
Translate existing policy-as-code into Tirith policies. An agent skill from StackGuardian/tirith.
github/awesome-copilot
Analyze Terraform plan JSON output for AzureRM Provider to distinguish between false-positive diffs (order-only changes in Set-type attributes) and actual resource changes.
StackGuardian/tirith
Generate a Tirith policy set for an existing Terraform or OpenTofu repository, covering organization standards such as required tags, naming conventions, allowed regions, permitted resource types…
Azure/terraform-azurerm-avm-ptn-alz
A skill your agent uses for AVM Terraform validation, provider-mocked unit tests, real-Azure integration tests, E2E example tests, PowerShell hooks, OIDC, policy checks, and Avm.Authoring CI behavior.
Azure/terraform-azurerm-avm-ptn-alz
A skill your agent uses whenever a contributor is deciding what KIND of Azure Verified Module to build in Terraform — resource module, pattern module, or utility module — or is naming a module /…
Azure/terraform-azurerm-avm-ptn-alz
A skill your agent uses for AVM Terraform file layout, HCL style, variables, outputs, validation, lifecycle syntax, provider requirements, and Avm.Authoring formatting.
Azure/terraform-azurerm-avm-ptn-alz
A skill your agent uses whenever an AVM Terraform task involves Conftest, OPA, Rego, APRL, AVMSEC, policy findings, policy exceptions, or files under an example exceptions directory.
Azure/terraform-azurerm-avm-ptn-alz
A skill your agent uses for AVM Terraform generated README content, header.md, footer.md, examples documentation, terraform-docs inputs, and Avm.Authoring documentation checks.
Azure/terraform-azurerm-avm-ptn-alz
A skill your agent uses for AVM Terraform diagnostic settings, role assignments, locks, managed identities, private endpoints, customer-managed keys, tags, and AzAPI control interfaces.
Works with
Categories
A skill your agent uses for AVM Terraform AzAPI resources, provider constraints, ARM schemas, parent IDs, resource types, retries, timeouts, response exports, replacement triggers, and…. Avm Tf Azapi is an agent skill from Azure/terraform-azurerm-avm-ptn-alz, published by the product's own GitHub organization. Use for AVM Terraform AzAPI resources, provider constraints, ARM schemas, parent IDs, resource types, retries, timeouts, response exports, replacement triggers, and ignorebodychanges.
Avm Tf Azapi fits situations like: AVM Terraform AzAPI resources; provider constraints; response exports; replacement triggers.
Run `npx skills add Azure/terraform-azurerm-avm-ptn-alz --skill avm-tf-azapi -a claude-code`. Or copy the skill folder (.github/skills/avm-tf-azapi in Azure/terraform-azurerm-avm-ptn-alz) into .claude/skills/avm-tf-azapi in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Azure/terraform-azurerm-avm-ptn-alz --skill avm-tf-azapi -a codex`. Or copy the skill folder (.github/skills/avm-tf-azapi in Azure/terraform-azurerm-avm-ptn-alz) into .agents/skills/avm-tf-azapi in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Azure/terraform-azurerm-avm-ptn-alz --skill avm-tf-azapi -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/avm-tf-azapi, .gemini/skills/avm-tf-azapi, .github/skills/avm-tf-azapi and .opencode/skills/avm-tf-azapi in your project.
Going by SKILL.md and its folder, Avm Tf Azapi needs PowerShell for the scripts in its folder and the command-line tools its instructions call (pwsh). Our summary lists: PowerShell.
SKILL.md names 1 domain. As links in the text: azure.github.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Avm Tf Azapi is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Avm Tf Azapi: Terravision Cloud Diagrams (patrickchugh/terravision, 1.6k stars), Terrashark (LukasNiessen/terrashark, 714 stars), Provider Verification (mondoohq/mql, 411 stars) and Tirith Migrate (StackGuardian/tirith, 170 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Azure (a GitHub organization, an official publisher) maintains it in Azure/terraform-azurerm-avm-ptn-alz, which has 135 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 6, 2026.
Source: Azure/terraform-azurerm-avm-ptn-alz on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.