What problem does it solve? Designing reusable Pulumi infrastructure components is error-prone: missing registerOutputs leaves components stuck in "creating", hardcoded child names cause collisions, and union types in args break multi-language SDK generation. This Skill provides the patterns and anti-patterns needed to author correct, distributable ComponentResource classes. ## Core Features & Use Cases - Component Anatomy Guidance: Covers the four required elements of every component: extending ComponentResource with a type URN, accepting standard constructor parameters, setting parent on children, and calling registerOutputs. - Args Interface Design: Enforces Input<T> wrapping, flat structures, no union types, and no callbacks so components remain serializable across TypeScript, Python, Go, C#, Java, and YAML. - Multi-Language Packaging & Distribution: Explains PulumiPlugin.yaml setup, per-language entry points, pulumi package add consumption, and publishing via private registry, git tags, or package managers. - Use Case: A platform team refactors repeated S3 bucket configurations into a SecureBucket component with encryption and versioning on by default, then publishes it to the Pulumi private registry so Python and YAML teams can consume it. ## Quick Start Ask the assistant to create a new Pulumi ComponentResource class for your infrastructure pattern, following the component anatomy and args design rules.