pulumi-arm-to-pulumi▌
pulumi/agent-skills · updated Apr 8, 2026
MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.
Convert ARM templates, Bicep, or existing Azure resources to Pulumi infrastructure code.
- ›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
IMPORTANT: PLAN ADJUSTMENT REQUIRED
If you have already generated a migration plan before loading this skill, you MUST:
- Review your existing plan against the workflows and requirements in this skill
- Identify any gaps, missing steps, or incorrect assumptions
- Update and revise your plan to align with this skill's guidance
- Communicate the adjusted plan to the user before proceeding
CRITICAL SUCCESS REQUIREMENTS
The migration output MUST meet all of the following:
-
Complete Resource Coverage
- Every ARM template resource MUST:
- Be represented in the Pulumi program OR
- Be explicitly justified in the final report.
- Every ARM template resource MUST:
-
Successful Deployment
- The produced Pulumi program must be structurally valid and capable of a successful
pulumi preview(assuming proper config).
- The produced Pulumi program must be structurally valid and capable of a successful
-
Zero-Diff Import Validation (if importing existing resources)
- After import,
pulumi previewmust show:- NO updates
- NO replaces
- NO creates
- NO deletes
- Any diffs must be resolved using the Preview Resolution Workflow. See arm-import.md.
- After import,
-
Final Migration Report
- Always output a formal migration report suitable for a Pull Request.
- Include:
- ARM → Pulumi resource mapping
- Provider decisions (azure-native vs azure)
- Behavioral differences
- Missing or manually required steps
- Validation instructions
WHEN INFORMATION IS MISSING
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.
MIGRATION WORKFLOW
Follow this workflow exactly and in this order:
1. INFORMATION GATHERING
1.1 Verify Azure Credentials
Running Azure CLI commands (e.g., az resource list, az resource show). Requires initial login using ESC and az login
- If the user has already provided an ESC environment, use it.
- If no ESC environment is specified, ask the user which ESC environment to use before proceeding with Azure CLI commands.
Setting up Azure CLI using ESC:
- ESC environments can provide Azure credentials through environment variables or Azure CLI configuration
- Login to Azure using ESC to provide credentials, e.g:
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 session - Verify credentials are working:
az account show - Confirm subscription:
az account list --query "[].{Name:name, SubscriptionId:id, IsDefault:isDefault}" -o table
For detailed ESC information: Load the pulumi-esc skill by calling the tool "Skill" with name = "pulumi-esc"
1.2 Analyze ARM Template Structure
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:
- Resource types and names
- Parameters and their default values
- Variables and expressions
- Dependencies (dependsOn arrays)
- Nested templates or linked templates
- Copy loops (iteration constructs)
- Conditional deployments (condition property)
Documentation: ARM Template Structure
1.3 Build Resource Inventory (if importing existing resources)
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
2. CODE CONVERSION (ARM → PULUMI)
IMPORTANT: ARM to Pulumi conversion requires manual translation. There is NO automated conversion tool for ARM templates. You are responsible for the complete conversion.
Key Conversion Principles
-
Provider Strategy:
- Default: Use
@pulumi/azure-nativefor full Azure Resource Manager API coverage - Fallback: Use
@pulumi/azure(classic provider) when azure-native doesn't support specific features or when you need simplified abstractions
Documentation:
- Default: Use
-
Language Support:
- TypeScript/JavaScript: Most common, excellent IDE support
- Python: Great for data teams and ML workflows
- C#: Natural fit for .NET teams
- Go: High performance, strong typing
- Java: Enterprise Java teams
- YAML: Simple declarative approach
- Choose based on user preference or existing codebase
-
Complete Coverage:
- Convert ALL resources in the ARM template
- Preserve all conditionals, loops, and dependencies
- Maintain parameter and variable logic
Follow conversion patterns in arm-conversion-patterns.md.
arm-conversion-patterns.md provides:
- Parameters, variables, and outputs mapping
- Copy loops, conditionals, and dependsOn translation
- Nested templates → ComponentResource
- Azure Classic provider examples (VNet, App Service)
- TypeScript output handling and common pitfalls
3. RESOURCE IMPORT (EXISTING RESOURCES) - OPTIONAL
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 ID patterns and examples
- Azure Resource ID format conventions
- Child resource handling (e.g., WebAppApplicationSettings)
- Preview Resolution Workflow for achieving zero-diff after import
- Step-by-step debugging for property conflicts
Key Import Principles
-
Inline Import Approach:
- Use
importresource option with Azure Resource IDs - No separate import tool (unlike
pulumi-cdk-importer)
- Use
-
Azure Resource IDs:
- Follow predictable pattern:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} - Can be generated by convention or queried via Azure CLI
- Follow predictable pattern:
-
Zero-Diff Validation:
- Run
pulumi previewafter import - Resolve all diffs using Preview Resolution Workflow
- Goal: NO updates, replaces, creates, or deletes
- Run
4. PULUMI CONFIGURATION
Set 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
5. VALIDATION
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
WORKING WITH THE USER
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.
FOR DETAILED DOCUMENTATION
When the user wants additional information, use the web-fetch tool to get content from the official Pulumi documentation:
- ARM Migration Guide: https://www.pulumi.com/docs/iac/adopting-pulumi/migrating-to-pulumi/from-arm/
- Azure Native Provider: https://www.pulumi.com/registry/packages/azure-native/
- Azure Classic Provider: https://www.pulumi.com/registry/packages/azure/
Microsoft Azure Documentation:
- ARM Template Reference: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/
- Azure CLI Reference: https://learn.microsoft.com/en-us/cli/azure/
- Azure Resource IDs: https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource
OUTPUT FORMAT (REQUIRED)
When performing a migration, always produce:
- Overview (high-level description)
- Migration Plan Summary
- ARM template resources identified
- Conversion strategy (language, providers)
- Import approach (if applicable)
- Pulumi Code Outputs (organized by file)
- Main program file
- Component resources (if any)
- Configuration instructions
- Resource Mapping Table (ARM → Pulumi)
- ARM resource type → Pulumi resource type
- ARM resource name → Pulumi logical name
- Import ID (if importing)
- Preview Resolution Notes (if importing)
- Diffs encountered
- Resolution strategy applied
- Properties ignored vs. added
- Final Migration Report (PR-ready)
- Summary of changes
- Testing instructions
- Known limitations
- Next steps
- Configuration Setup
- Required config values
- Example
pulumi config setcommands
Keep code syntactically valid and clearly separated by files.
How to use pulumi-arm-to-pulumi on Cursor
AI-first code editor with Composer
Prerequisites
Before installing skills in Cursor, ensure your development environment meets these requirements:
- ›Cursor installed and configured on your development machine
- ›Node.js version 16.0+ with npm package manager (verify with
node --version) - ›Active project directory or workspace where you want to add pulumi-arm-to-pulumi
Execute installation command
Execute the skills CLI command in your project's root directory to begin installation:
The skills CLI fetches pulumi-arm-to-pulumi from GitHub repository pulumi/agent-skills and configures it for Cursor.
Select Cursor when prompted
The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:
Verify installation
Confirm successful installation by checking the skill directory location:
Reload or restart Cursor to activate pulumi-arm-to-pulumi. Access the skill through slash commands (e.g., /pulumi-arm-to-pulumi) or your agent's skill management interface.
Security & Verification Notice
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 development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.
List & Monetize Your Skill
Submit your Claude Code skill and start earning
Use Cases▌
User Story & Requirements Generation
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
Competitive Analysis
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
Roadmap Prioritization
Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs
Example
Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale
Make data-driven prioritization decisions faster
Stakeholder Communication
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
Implementation Guide▌
Prerequisites
- ›Claude Desktop or compatible AI client
- ›Access to product documentation and roadmap tools (Jira, Notion, etc.)
- ›Understanding of product management frameworks (RICE, Jobs-to-be-Done, etc.)
- ›Stakeholder contact information and communication channels
Time Estimate
30-60 minutes to see productivity improvements
Installation Steps
- 1.Install product management skill
- 2.Start with user story generation for known feature
- 3.Progress to competitive analysis: research 2-3 competitors
- 4.Use for roadmap prioritization: apply RICE/ICE scoring
- 5.Draft stakeholder communications and refine based on feedback
- 6.Build template library for recurring PM tasks
- 7.Share effective prompts with product team
Common Pitfalls
- ⚠Not validating competitive research—verify facts before sharing
- ⚠Accepting user stories without involving engineering team
- ⚠Over-relying on frameworks without qualitative judgment
- ⚠Not customizing outputs to company culture and communication style
- ⚠Skipping stakeholder validation of generated requirements
Best Practices▌
✓ Do
- +Validate research and competitive analysis with real data
- +Collaborate with engineering when generating technical requirements
- +Customize frameworks and templates to your company context
- +Use skill for first drafts, refine with stakeholder input
- +Document successful prompt patterns for PM tasks
- +Combine AI efficiency with human judgment and intuition
✗ Don't
- −Don't publish competitive analysis without fact-checking
- −Don't finalize user stories without engineering review
- −Don't make prioritization decisions solely on AI scoring
- −Don't skip customer validation of generated requirements
- −Don't ignore company-specific context and culture
💡 Pro Tips
- ★Provide context: company goals, constraints, customer feedback
- ★Ask for alternatives: 'Show 3 ways to prioritize this roadmap'
- ★Request stakeholder-specific formatting: 'Executive summary vs. engineering spec'
- ★Use skill for 70% generation + 30% customization to company needs
When to Use This▌
✓ 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.
Learning Path▌
- 1Basic: user stories, feature specs, status updates
- 2Intermediate: competitive analysis, prioritization frameworks, PRDs
- 3Advanced: product strategy, go-to-market planning, OKR setting
- 4Expert: product vision, market positioning, business model innovation
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.4★★★★★69 reviews- ★★★★★James Wang· Dec 24, 2024
pulumi-arm-to-pulumi has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Soo Ndlovu· Dec 20, 2024
Useful defaults in pulumi-arm-to-pulumi — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Omar Perez· Dec 16, 2024
We added pulumi-arm-to-pulumi from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Ren Bansal· Dec 16, 2024
I recommend pulumi-arm-to-pulumi for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
- ★★★★★Neel Rao· Dec 12, 2024
Solid pick for teams standardizing on skills: pulumi-arm-to-pulumi is focused, and the summary matches what you get after install.
- ★★★★★Isabella Torres· Nov 27, 2024
We added pulumi-arm-to-pulumi from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Ren Malhotra· Nov 15, 2024
Useful defaults in pulumi-arm-to-pulumi — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Neel Nasser· Nov 15, 2024
We added pulumi-arm-to-pulumi from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Nia Thompson· Nov 11, 2024
pulumi-arm-to-pulumi has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Mei Chawla· Nov 7, 2024
pulumi-arm-to-pulumi fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
showing 1-10 of 69