Convert ARM templates, Bicep, or existing Azure resources to Pulumi infrastructure code.
Works with
Handles complete ARM template conversion to Pulumi (TypeScript, Python, Go, C#, Java, or YAML) with support for parameters, variables, loops, conditionals, and nested templates
Supports both azure-native (full API coverage) and azure (classic, simplified) providers; automatically selects the right provider for each resource
Imports existing deployed Azure resources into Pulumi with zero-diff vali
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionpulumi-arm-to-pulumiExecute the skills CLI command in your project's root directory to begin installation:
Fetches pulumi-arm-to-pulumi from pulumi/agent-skills and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate pulumi-arm-to-pulumi. Access via /pulumi-arm-to-pulumi in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Create detailed user stories, acceptance criteria, and feature specs
Example
Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios
Reduce spec writing time by 50%, ensure comprehensive coverage
Research competitors, compare features, identify gaps
Example
Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities
Complete competitive research in 2 hours instead of 2 days
Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs
Example
Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale
0
total installs
0
this week
34
GitHub stars
0
upvotes
Run in your terminal
0
installs
0
this week
34
stars
If you have already generated a migration plan before loading this skill, you MUST:
The migration output MUST meet all of the following:
Complete Resource Coverage
Successful Deployment
pulumi preview (assuming proper config).Zero-Diff Import Validation (if importing existing resources)
pulumi preview must show:
Final Migration Report
If a user-provided ARM template is incomplete, ambiguous, or missing artifacts, ask targeted questions before generating Pulumi code.
If there is ambiguity on how to handle a specific resource property on import, ask targeted questions before altering Pulumi code.
Follow this workflow exactly and in this order:
Running Azure CLI commands (e.g., az resource list, az resource show). Requires initial login using ESC and az login
Setting up Azure CLI using ESC:
pulumi env run {org}/{project}/{environment} -- bash -c 'az login --service-principal -u "$ARM_CLIENT_ID" --tenant "$ARM_TENANT_ID" --federated-token "$ARM_OIDC_TOKEN"'. ESC is not required after establishing the sessionaz account showaz account list --query "[].{Name:name, SubscriptionId:id, IsDefault:isDefault}" -o tableFor detailed ESC information: Load the pulumi-esc skill by calling the tool "Skill" with name = "pulumi-esc"
ARM templates do not have the concept of "stacks" like CloudFormation. Read the ARM template JSON file directly:
# View template structure
cat template.json | jq '.resources[] | {type: .type, name: .name}'
# View parameters
cat template.json | jq '.parameters'
# View variables
cat template.json | jq '.variables'
Extract:
Documentation: ARM Template Structure
If the ARM template has already been deployed and you're importing existing resources:
# List all resources in a resource group
az resource list \
--resource-group <resource-group-name> \
--output json
# Get specific resource details
az resource show \
--ids <resource-id> \
--output json
# Query specific properties using JMESPath
az resource show \
--ids <resource-id> \
--query "{name:name, location:location, properties:properties}" \
--output json
Documentation: Azure CLI Documentation
IMPORTANT: ARM to Pulumi conversion requires manual translation. There is NO automated conversion tool for ARM templates. You are responsible for the complete conversion.
Provider Strategy:
@pulumi/azure-native for full Azure Resource Manager API coverage@pulumi/azure (classic provider) when azure-native doesn't support specific features or when you need simplified abstractionsDocumentation:
Language Support:
Complete Coverage:
Follow conversion patterns in arm-conversion-patterns.md.
arm-conversion-patterns.md provides:
After conversion, you can optionally import existing resources to be managed by Pulumi. If the user does not request this, suggest it as a follow-up step to conversion.
CRITICAL: When the user requests importing existing Azure resources into Pulumi, see arm-import.md for detailed import procedures and zero-diff validation workflows.
arm-import.md provides:
Inline Import Approach:
import resource option with Azure Resource IDspulumi-cdk-importer)Azure Resource IDs:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}Zero-Diff Validation:
pulumi preview after importSet up stack configuration matching ARM template parameters:
# Set Azure region
pulumi config set azure-native:location eastus --stack dev
# Set application parameters
pulumi config set storageAccountName mystorageaccount --stack dev
# Set secret parameters
pulumi config set --secret adminPassword MyS3cr3tP@ssw0rd --stack dev
After achieving zero diff in preview (if importing), validate the migration:
Review all exports:
pulumi stack output
Verify resource relationships:
pulumi stack graph
Test application functionality (if applicable)
Document any manual steps required post-migration
If the user asks for help planning or performing an ARM to Pulumi migration, use the information above to guide the user through the conversion and import process.
When the user wants additional information, use the web-fetch tool to get content from the official Pulumi documentation:
Microsoft Azure Documentation:
When performing a migration, always produce:
pulumi config set commandsKeep code syntactically valid and clearly separated by files.
Make data-driven prioritization decisions faster
Draft PRDs, status updates, and stakeholder presentations
Example
Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement
Save 3-5 hours/week on communication overhead
Prerequisites
Time Estimate
30-60 minutes to see productivity improvements
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
✗ Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
mattpocock/skills
parcadei/continuous-claude-v3
cursor/plugins
ailabs-393/ai-labs-claude-skills
pproenca/dot-skills
mattpocock/skills
pulumi-arm-to-pulumi has been reliable in day-to-day use. Documentation quality is above average for community skills.
Useful defaults in pulumi-arm-to-pulumi — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
We added pulumi-arm-to-pulumi from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
I recommend pulumi-arm-to-pulumi for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Solid pick for teams standardizing on skills: pulumi-arm-to-pulumi is focused, and the summary matches what you get after install.
We added pulumi-arm-to-pulumi from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
Useful defaults in pulumi-arm-to-pulumi — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
We added pulumi-arm-to-pulumi from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
pulumi-arm-to-pulumi has been reliable in day-to-day use. Documentation quality is above average for community skills.
pulumi-arm-to-pulumi fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
showing 1-10 of 69