Azure Defaults
Apply the canonical defaults from
.github/copilot-instructions.md
without duplicating them here. Live governance discovered for the target scope
always overrides repository defaults.
Prerequisites
- Read the canonical Azure Defaults section once per session.
- Read
04-governance-constraints.json when it exists.
- Read
sku-manifest.json for creative SKU decisions; do not derive SKUs from
artifact prose.
- Load only the reference needed for the current decision.
IaC Workflow
- Resolve governance precedence — apply live policy constraints before
fallback regions, tags, networking, cost, or security defaults.
- Generate one stable suffix — derive it once from deployment scope and
pass it to every globally unique resource name.
- Apply CAF naming — use resource-specific abbreviations and length limits;
load naming examples when constraints
differ by service.
- Resolve AVM modules live — prefer AVM, pin the latest stable version at
plan time, and record justified stale-pin exceptions in the IaC contract.
- Apply canonical security defaults — use the canonical baseline and load
AVM pitfalls only when module
parameters or lifecycle constraints require detail.
- Run conditional planning gates — apply VNet and cost-monitoring workflows
when their triggers hold; governance remains authoritative.
- Check service lifecycle — use the latest supported GA LTS runtime and
reject retired, classic, preview, or short-lifecycle choices for durable
production workloads unless explicitly approved.
- Validate the output — run the stack validator and the security, AVM pin,
SKU coverage, and governance checks relevant to the produced IaC.
IaC-Specific Invariants
- Unique suffix: generate one deterministic suffix per deployment scope and
pass it into modules rather than recomputing it independently.
- AVM-first: do not hand-roll a resource with an applicable stable AVM module.
- Live pins: resolve module versions at plan time; training-data pins are not
evidence of currency.
- Governance wins: discovered policy overrides every fallback in the
canonical defaults and this workflow.
- VNet planning is interactive: confirm CIDRs when a workload requires VNet
integration, private endpoints, or a VNet-attached service. Production cannot
defer the gate.
- Cost monitoring is explicit: production requires the governed budget,
notification, and anomaly-monitoring contract; non-production exceptions must
use a documented mode.
- Lifecycle is verified live: selectable engine and runtime versions require
current support-policy evidence.
Validation
npm run validate:region-canonical
npm run validate:iac-security-baseline
npm run validate:avm-versions:freeze
npm run validate:sku-iac-coverage
Then run bicep build and bicep lint, or terraform fmt -check and
terraform validate, for the selected stack.
Reference Index
Load references progressively; do not read the directory wholesale.
| Decision area |
References |
| Naming and tags |
Naming examples, tag strategy |
| AVM and security |
AVM modules, security and AVM pitfalls |
| Networking |
VNet planning, identity resolution |
| Cost and sizing |
Cost baseline, Bicep, Terraform, pricing, service matrices |
| Governance and lifecycle |
Governance discovery, policy effects, deprecated services, workflow gates |
| Architecture and review |
WAF criteria, research workflow, review protocol, deep review |
| IaC implementation |
Terraform conventions, plan decisions, Azure CLI auth |
| Artifact integration |
Artifact categories, cost delegation, service class menu |
1---2name: azure-defaults3description: **UTILITY SKILL** — Applies canonical Azure defaults through an IaC workflow covering governance precedence, CAF naming, AVM-first composition, unique suffixes, cost monitoring, VNet planning, and lifecycle checks. WHEN: "Azure naming convention", "CAF naming", "resource tags", "AVM module", "security baseline", "region default". DO NOT USE FOR: artifact templates or pricing lookups.4license: MIT5---67# Azure Defaults89Apply the canonical defaults from10[`.github/copilot-instructions.md`](../../copilot-instructions.md#azure-defaults-canonical)11without duplicating them here. Live governance discovered for the target scope12always overrides repository defaults.1314## Prerequisites1516- Read the canonical Azure Defaults section once per session.17- Read `04-governance-constraints.json` when it exists.18- Read `sku-manifest.json` for creative SKU decisions; do not derive SKUs from19 artifact prose.20- Load only the reference needed for the current decision.2122## IaC Workflow23241. **Resolve governance precedence** — apply live policy constraints before25 fallback regions, tags, networking, cost, or security defaults.262. **Generate one stable suffix** — derive it once from deployment scope and27 pass it to every globally unique resource name.283. **Apply CAF naming** — use resource-specific abbreviations and length limits;29 load [naming examples](references/naming-full-examples.md) when constraints30 differ by service.314. **Resolve AVM modules live** — prefer AVM, pin the latest stable version at32 plan time, and record justified stale-pin exceptions in the IaC contract.335. **Apply canonical security defaults** — use the canonical baseline and load34 [AVM pitfalls](references/security-baseline-full.md) only when module35 parameters or lifecycle constraints require detail.366. **Run conditional planning gates** — apply VNet and cost-monitoring workflows37 when their triggers hold; governance remains authoritative.387. **Check service lifecycle** — use the latest supported GA LTS runtime and39 reject retired, classic, preview, or short-lifecycle choices for durable40 production workloads unless explicitly approved.418. **Validate the output** — run the stack validator and the security, AVM pin,42 SKU coverage, and governance checks relevant to the produced IaC.4344## IaC-Specific Invariants4546- **Unique suffix**: generate one deterministic suffix per deployment scope and47 pass it into modules rather than recomputing it independently.48- **AVM-first**: do not hand-roll a resource with an applicable stable AVM module.49- **Live pins**: resolve module versions at plan time; training-data pins are not50 evidence of currency.51- **Governance wins**: discovered policy overrides every fallback in the52 canonical defaults and this workflow.53- **VNet planning is interactive**: confirm CIDRs when a workload requires VNet54 integration, private endpoints, or a VNet-attached service. Production cannot55 defer the gate.56- **Cost monitoring is explicit**: production requires the governed budget,57 notification, and anomaly-monitoring contract; non-production exceptions must58 use a documented mode.59- **Lifecycle is verified live**: selectable engine and runtime versions require60 current support-policy evidence.6162## Validation6364```bash65npm run validate:region-canonical66npm run validate:iac-security-baseline67npm run validate:avm-versions:freeze68npm run validate:sku-iac-coverage69```7071Then run `bicep build` and `bicep lint`, or `terraform fmt -check` and72`terraform validate`, for the selected stack.7374## Reference Index7576Load references progressively; do not read the directory wholesale.7778| Decision area | References |79| --- | --- |80| Naming and tags | [Naming examples](references/naming-full-examples.md), [tag strategy](references/tag-strategy.md) |81| AVM and security | [AVM modules](references/avm-modules.md), [security and AVM pitfalls](references/security-baseline-full.md) |82| Networking | [VNet planning](references/vnet-planning.md), [identity resolution](references/identity-resolution.md) |83| Cost and sizing | [Cost baseline](references/cost-alerts-baseline.md), [Bicep](references/cost-alerts-bicep.md), [Terraform](references/cost-alerts-terraform.md), [pricing](references/pricing-guidance.md), [service matrices](references/service-matrices.md) |84| Governance and lifecycle | [Governance discovery](references/governance-discovery.md), [policy effects](references/policy-effect-decision-tree.md), [deprecated services](references/deprecated-services.md), [workflow gates](references/workflow-gates.md) |85| Architecture and review | [WAF criteria](references/waf-criteria.md), [research workflow](references/research-workflow.md), [review protocol](references/adversarial-review-protocol.md), [deep review](references/adversarial-review-deep.md) |86| IaC implementation | [Terraform conventions](references/terraform-conventions.md), [plan decisions](references/plan-design-decisions.md), [Azure CLI auth](references/azure-cli-auth-validation.md) |87| Artifact integration | [Artifact categories](references/artifact-type-categories.md), [cost delegation](references/cost-estimate-parent-contract.md), [service class menu](references/service-class-menu.md) |