What problem does it solve? Pulumi programs often fail in subtle ways: resources created inside apply() callbacks disappear from previews, refactored resources get destroyed and recreated, and plaintext secrets leak into state files. This Skill provides a structured set of practices to write, review, and refactor Pulumi infrastructure code correctly. ## Core Features & Use Cases - Output and Dependency Handling: Enforces passing Outputs directly as inputs, using pulumi.interpolate instead of manual unwrapping, and never creating resources inside apply() callbacks. - Component Structure: Guides grouping related resources into ComponentResource classes with parent: this set on all children for correct hierarchy and state management. - Secrets and Safe Refactoring: Covers encrypting secrets with --secret flags and Pulumi ESC from day one, plus using aliases to preserve resource identity during renames and moves. - Deployment Safety: Requires pulumi preview before every deployment, with CI/CD integration patterns for GitHub Actions. - Use Case: When reviewing a teammate's Pulumi pull request that renames an S3 bucket and moves it into a component, use this Skill to verify aliases are present so the bucket is not destroyed and recreated in production. ## Quick Start Review my Pulumi TypeScript program for best practice violations and suggest fixes for any issues found.