pulumi-component

Author reusable Pulumi ComponentResource classes with controlled outputs.

19|3|Updated Mar 11, 2026
One-click install
npx skills add https://github.com/dirien/yet-another-agent-harness --skill pulumi-component-dirien
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: pulumi-component
Source: https://github.com/dirien/yet-another-agent-harness/tree/main/.claude/skills/pulumi-component
Command: npx skills add https://github.com/dirien/yet-another-agent-harness --skill pulumi-component-dirien

SYSTEM DOCUMENTATION & REQUIREMENTS

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.

Frequently Asked Questions about pulumi-component

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create reusable Pulumi components that work across multiple languages?

To create reusable Pulumi components, author a ComponentResource class that encapsulates related resources and exposes controlled outputs, ensuring correct type URNs, parent linkage, and multi-language packaging for TypeScript, Python, Go, and C# distribution.

Why do my Pulumi ComponentResource child resources get stuck or leak implementation details?

Child resources in Pulumi ComponentResource implementations get stuck when authors forget parent linkage or fail to call registerOutputs at the end of the constructor, leading to inaccessible SDKs and leaked implementation details.

How should I design the args interface for a Pulumi ComponentResource?

Design Pulumi ComponentResource args interfaces by wrapping properties in Input<T>, avoiding union types and functions, keeping interfaces flat, and applying sensible defaults to ensure composability and SDK compatibility.

What is the best way to package and distribute Pulumi components for multi-language SDKs?

The best way to package Pulumi components is to prepare a PulumiPlugin.yaml and appropriate entry points for nodejs, python, go, and dotnet, then publish to private registries or git following versioning and CI publishing best practices.

Does Pulumi ComponentResource support TypeScript, Python, Go, and C# simultaneously?

Pulumi ComponentResource supports component design tasks across TypeScript, Python, Go, and C#, including multi-language packaging and distribution to ensure components are accessible and consumable across different SDKs.

When should I call registerOutputs in a Pulumi ComponentResource constructor?

You should always call registerOutputs at the end of the constructor in a Pulumi ComponentResource to expose minimal outputs like bucketName and websiteUrl, preventing stuck resources and ensuring correct state registration.