All skills
microsoft avatar

/azure-enterprise-infra-planner

@d58859a
by microsoftmicrosoft/skills3.1k stars
351

Architect and provision enterprise Azure infrastructure from workload descriptions. For cloud architects and platform engineers planning networking, identity, security, compliance, and multi-resource topologies with WAF alignment. Generates Bicep or Terraform directly (no azd). WHEN: 'plan Azure infrastructure', 'architect Azure landing zone', 'design hub-spoke network', 'plan multi-region DR topology', 'set up VNets firewalls and private endpoints', 'subscription-scope Bicep deployment', 'Azure Backup for VM workloads'. PREFER azure-prepare FOR app-centric workflows.

Use this Skill: https://skilld.dev/gh/microsoft/skills/azure-enterprise-infra-planner

This session only. Nothing lands on disk.

referencesreferenced-workload.md

≈1.9k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Referenced-Workload Handling (on-demand)

Read this when the user provides something that already EXISTS — a live Azure resource / resource group / subscription, IaC (Bicep/Terraform/ARM) or an infra plan, or a general doc describing current infrastructure/requirements. If the input is purely NEW requirements with nothing existing, it's greenfield — ignore this file and run the normal phases.

The switched-up flow (referenced mode)

  1. Confirm it's referenced. Does anything already exist (a resource group/subscription, IaC/plan, or a doc describing current resources)? If yes, use this flow.
  2. Inventory the existing resources from whatever was provided. Capture a COMPLETE inventory — every resource type, plus topology/relationships (VNet/subnet, private endpoints, identity bindings) and key configurations (SKU/tier, TLS version, public-access setting, region). Do not omit resources or invent ones that are not present:
    • Resource group / subscription → introspect (az resource list / az graph query) → real resources with resource IDs.
    • IaC / infra plan (Bicep/Terraform/ARM, infrastructure-plan.json, terraform show -json) → parse resource / existing / data blocks → logical resources.
    • General doc → extract any existing resources it mentions.
  3. Gather insights from ALL provided context. Mine every input the user gave — docs, IaC comments, resource tags, requirements, naming conventions, region, resiliency tier, PADU/preferences, cost and compliance constraints — and record them as insights (the same channel Phase 3 already applies). These shape the new workload just like tenant insights do.
  4. Surface them and ask which to incorporate. Present the existing resources you found and ask which ones to incorporate (reference + wire) into the new workload. Recommend a sensible default — incorporate the ones the new workload clearly depends on; never recreate them.
  5. Generate the complete IaC incorporating the chosen (or recommended-default) existing resources: reference them (existing / data, real ID for live, a param otherwise) and wire the new resources to them, honoring the gathered insights. Never emit a new resource for something that already exists.

Answer-first (ask AND generate — never stall)

Open with a plain-language summary of the existing infrastructure you inventoried and the additive change you understood, then an explicit confirmation checkpoint ("Confirm this understanding before I proceed to deploy"), and then generate the complete, deployable IaC in the SAME response using the recommended default. Order within the turn: (1) summary of what exists + what you'll add, (2) explicit "confirm before I proceed" gate, (3) the generated IaC, (4) the "which to incorporate?" choice and any assumptions. Never end a turn with only a summary or a question, and never deploy before the user confirms. If you lack a value (region, an existing resource's ID/name), declare a parameter and proceed. The confirmation gate governs deployment (Phase 7), not whether you generate the plan/IaC — you always generate; you never deploy without an explicit, risk-acknowledged go-ahead.

Inputs (three shapes → one normalized inventory)

Shape Inputs Referencing precision
Actual state a live Azure resource, resource group, or subscription real resource IDs → reference exactly (existing/data)
Declared state Bicep / Terraform / ARM, or an infra plan (infrastructure-plan.json, terraform show -json) logical → reference by parameter (or build, if it's a spec)
Requirements/context any general doc with info/requirements the user wants mine for requirements + any existing-resource mentions

Inputs can combine (e.g. a resource group + a requirements doc). If a declared file is ambiguous ("reference existing vs. build new?"), make the most likely assumption, state it, and generate — ask at most one question, after the code.

For each existing resource, assign a ROLE (the "if needed" filter)

  • Reference + integrate — the new workload depends on it → reference it AND wire it in: RBAC role assignment, diagnostics → existing Log Analytics, private endpoints into the existing VNet/subnet, secrets from the existing Key Vault, connection to the existing Event Hubs, use the existing managed identity, etc.
  • Retain — keep, must not recreate, nothing new connects → leave it; note "retained, out of scope".
  • Ignore — irrelevant → omit.

Never emit a new resource for a resource that already exists. Reference it.

Deploy (referenced mode)

Referenced mode does not skip Phase 7 — the deliverable is deployed new infrastructure that integrates with what already exists. Run phases/7-deploy.md with these guardrails:

  • Same destructive-action gate. Present the risks and require an explicit, risk-acknowledged "deploy" reply sent after the risks are shown. The original prompt never satisfies the gate.
  • Additive only. The deployment must add the new resources and their wiring. The referenced resources are declared as existing/data (not resource), so a normal deploy never touches them.
  • Incremental mode, never Complete. For Bicep use the default incremental mode — never --mode Complete (it would delete resources absent from the template, including the referenced ones). For Terraform, the referenced resources are data sources / imported, so apply must show no destroy against them — abort if the plan proposes destroying or replacing a referenced resource.
  • Preview first. Always run az deployment ... --what-if (Bicep) or terraform plan (Terraform) and confirm the diff only creates new resources and modifies nothing on the referenced ones before applying.
  • Deploy into the existing scope when integrating. Target the referenced resource group/subscription so RBAC, private endpoints, and diagnostics wire into the existing resources.

How this rides the existing phases

  • Phase 1: normalize the reference into insights.json — existing resources (real ID or param), must_not_recreate, integration points, requirements, tier.
  • Phase 3: existing "apply insights" logic assigns roles and picks references over new resources.
  • Phase 5: verify — (a) no duplicate of an existing resource; (b) every declared dependency on an existing resource is actually wired; (c) cross-module outputs.X you consume is declared by that module (prevents BCP053); (d) source unmodified.
  • Phase 6: emit new resources (secure-by-default) + existing/data references + the wiring. Real ID inline for actual-state; a param for declared/doc inputs.
  • Phase 7: DO NOT skip deploy — run Phase 7 like greenfield, honoring the destructive-action gate. The difference is scope: deploy only the new resources and their wiring; never modify, recreate, or destroy the referenced/existing resources. See "Deploy (referenced mode)" below.

Secure-by-default (Phase 6)

Private endpoints + publicNetworkAccess: Disabled on data services; managed identity over keys; storage allowSharedKeyAccess: false; Key Vault soft-delete + purge protection; AKS managed identity + disable local accounts; minimum TLS 1.2.

Source: SKILL.md on GitHub

No alerts15d3 checks · Risk SAFE
  • Gen Agent Trust Hub15d

    This skill provides a comprehensive framework for planning and deploying Azure infrastructure. It follows a rigorous 7-phase gated pipeline that incorporates multiple security checkpoints, including mandatory security scanning with Checkov, 'secure-by-default' infrastructure patterns, and explicit user-approval gates for deployment. No security issues were identified.

  • Socket15d

    No alerts

  • Snyk15d

    Risk: LOW · No issues

Signed by skilld at d58859a. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated last month
metadata
{
  "author": "Microsoft",
  "version": "1.4.1"
}

README badge

README badge for microsoft/skills/azure-enterprise-infra-planner