pulumi-arm-to-pulumi

Convert Azure ARM and Bicep templates into Pulumi programs with import validation.

Updated Apr 30, 2026
One-click install
npx skills add https://github.com/AdityaBorkar/igbot-fork --skill pulumi-arm-to-pulumi-adityaborkar
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: pulumi-arm-to-pulumi
Source: https://github.com/AdityaBorkar/igbot-fork/tree/main/.agents/skills/pulumi-arm-to-pulumi
Command: npx skills add https://github.com/AdityaBorkar/igbot-fork --skill pulumi-arm-to-pulumi-adityaborkar

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Migrating Azure infrastructure defined in ARM or Bicep templates to Pulumi requires manual translation with no automated converter, and importing existing Azure resources often produces preview diffs that are hard to resolve systematically. ## Core Features & Use Cases - Template Conversion: Translates ARM template resources, parameters, variables, copy loops, conditionals, and dependencies into Pulumi code using the azure-native or azure classic providers. - Resource Import: Imports existing Azure resources via inline import IDs and drives pulumi preview to a zero-diff state using a structured resolution workflow. - Migration Reporting: Produces a PR-ready migration report with ARM-to-Pulumi resource mappings, provider decisions, and validation instructions. - Use Case: A platform team with a deployed ARM template for storage accounts and web apps converts it to a TypeScript Pulumi program, imports the live resources, and iterates on preview diffs until no changes remain. ## Quick Start Ask the assistant to convert your ARM template file into a Pulumi TypeScript program and import the existing Azure resources with zero-diff validation.

Frequently Asked Questions about pulumi-arm-to-pulumi

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert an ARM template to Pulumi?▼

ARM to Pulumi conversion is manual since no automated converter exists. Analyze the template's resources, parameters, variables, and dependencies, then rewrite each resource using the azure-native provider, mapping parameters to Pulumi config and outputs to stack exports.

How do I import existing Azure resources into Pulumi?▼

Use the inline import resource option with the Azure Resource ID, formatted as /subscriptions/{id}/resourceGroups/{rg}/providers/{namespace}/{type}/{name}. Find IDs with az resource show or az resource list, then run pulumi preview to validate.

Should I use the azure-native or azure classic provider?▼

Default to azure-native for full Azure Resource Manager API coverage. Fall back to the azure classic provider when azure-native lacks specific features or when simplified abstractions like LinuxWebApp or inline subnets are preferable.

Why does pulumi preview show diffs after importing Azure resources?▼

Azure returns dynamically set default values not present in your code. Add missing removed properties to your code, use ignoreChanges only for computed read-only properties, and update changed values to match the desired state, then re-run preview.

How are ARM template child resources handled in Pulumi?▼

Some ARM properties are separate Pulumi resources, such as WebAppApplicationSettings for app settings. These must be declared and imported separately using their child resource ID, which extends the parent resource ID path.