pulumi-arm-to-pulumi
pulumi/agent-skills
Convert or migrate Azure ARM (Azure Resource Manager) templates, Bicep templates, or code to Pulumi, including importing existing Azure resources. This skill MUST be loaded whenever a user requests migration, conversion, or import of ARM templates, Bicep templates, ARM code, Bicep code, or Azure resources to Pulumi.
...Expand allAbout pulumi-arm-to-pulumi
A structured workflow for converting or migrating Azure ARM (Azure Resource Manager) templates, Bicep, or Azure code to Pulumi, including importing existing Azure resources into Pulumi management. It is meant to be loaded whenever such a migration, conversion, or import is requested, and it will revise any migration plan already drafted before the skill was loaded to align with its requirements.
The success criteria are strict: every ARM resource must either appear in the Pulumi program or be explicitly justified in the report; the output must be structurally valid and capable of a successful pulumi preview; and when importing existing resources, preview must show zero diffs (no creates, updates, replaces, or deletes), with any differences resolved through a Preview Resolution Workflow. A formal migration report suitable for a pull request is always produced, covering the ARM-to-Pulumi resource mapping, provider decisions, behavioral differences, and manual steps.
The workflow proceeds in order. Information gathering verifies Azure credentials (using an ESC environment and az login) and analyzes the ARM template with jq to extract resource types, parameters, variables, dependsOn arrays, copy loops, and conditionals, optionally building a resource inventory with az resource list and show. Code conversion is manual, as there is no automated ARM converter, defaulting to the azure-native provider with the classic azure provider as a fallback, preserving all conditionals, loops, and dependencies, in the user's chosen language. Optional resource import uses the inline import resource option with Azure Resource IDs that follow a predictable subscription, resource-group, and provider path, then validates for zero diffs. Finally, stack configuration is set to match ARM parameters. Companion references arm-conversion-patterns.md and arm-import.md provide the detailed mapping patterns and import and zero-diff debugging procedures.
FAQ
Is there an automated tool to convert ARM templates?
No. The skill states ARM-to-Pulumi conversion requires manual translation and that you are responsible for the complete conversion, though reference patterns guide the mapping.
Which Pulumi provider should I use?
Default to @pulumi/azure-native for full Azure Resource Manager API coverage, and fall back to the classic @pulumi/azure provider when azure-native lacks a feature or a simpler abstraction is needed.
What does zero-diff import validation mean?
After importing existing resources, pulumi preview must show no creates, updates, replaces, or deletes. Any diffs are resolved with the Preview Resolution Workflow described in arm-import.md.
How are Azure credentials set up?
Through an ESC environment that provides credentials, using pulumi env run with az login (service principal and federated token), then verifying with az account show. The skill asks which ESC environment to use if none is given.
What is delivered at the end of a migration?
A formal migration report suitable for a pull request, including the ARM-to-Pulumi resource mapping, provider decisions, behavioral differences, any missing or manual steps, and validation instructions.
All Files
5 filesagents/openai.yaml0.2 KBViewarm-conversion-patterns.md12.4 KBViewarm-import.md13.4 KBViewuse_cases.yaml0.7 KBViewSKILL.md10.1 KBViewAll Files
0 filesInstall pulumi-arm-to-pulumi
Download and extract the skill files to your .claude/skills/ directory.
Download ZIPClone the repository and copy the skill files to your project.
git clone https://github.com/pulumi/agent-skills/blob/main/migration/skills/pulumi-arm-to-pulumi/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copy





Home
