What problem does it solve?
ComponentResource implementations are often error-prone and hard to reuse across languages and teams; authors commonly forget parent linkage, registerOutputs, or design serializable args, which leads to stuck resources, leaked implementation details, and inaccessible SDKs. This Skill turns component creation, interface design, multi-language packaging, and distribution into a repeatable, correct process so teams can publish and consume components safely.
Core Features & Use Cases
- Authoring lifecycle guidance: correct super type URN, set parent on children, expose minimal outputs, and always call registerOutputs at the end of the constructor.
- Args and API design: wrap properties in Input<T>, avoid union types and functions, keep interfaces flat, and apply sensible defaults for composability and SDK compatibility.
- Multi-language packaging and distribution: prepare PulumiPlugin.yaml and entry points for nodejs/python/go/dotnet, publish to private registries or git, and follow best practices for versioning and CI publishing.
Quick Start
Design a TypeScript ComponentResource named StaticSite that wraps an S3 bucket, accepts Input-wrapped args for indexDocument and errorDocument, sets parent on all child resources, registers outputs for bucketName and websiteUrl, and includes a PulumiPlugin.yaml for multi-language packaging.