standards-pulumi-typescript
Skill0 starsChanged 4 months agoMITView on GitHub
Use this skill whenever you write, refactor, or review Pulumi programs or ComponentResource abstractions in TypeScript, including resource Args, Input and Output handling, component design, project and stack structure, resource identity, secrets, and stack testing, even if the user only asks to add a resource. Load standards-typescript for general TypeScript style.
In this repository34 other files it gives its agents.
- AGENTS.mdAGENTS.md
- mcpSkill
- pattern-orchestration-complexSkill
- pattern-task-breakdownSkill
- role-architectSkill
- role-code-reviewSkill
- role-data-engineerSkill
- role-developerSkill
- role-orchestratorSkill
- role-product-engineerSkill
- role-qa-engineerSkill
- role-security-auditorSkill
- role-site-reliability-engineerSkill
- role-technical-writerSkill
- standards-analysisSkill
- standards-api-designSkill
- standards-codeSkill
- standards-databaseSkill
- standards-documentationSkill
- standards-go-concurrencySkill
- standards-go-performanceSkill
- standards-goSkill
- standards-go-testingSkill
- standards-markdownSkill
- standards-observabilitySkill
- standards-pythonSkill
- standards-securitySkill
- standards-shellSkill
- standards-skill-authoringSkill
- standards-testingSkill
- standards-typescriptSkill
- tool-storeSkill
- workflow-debuggingSkill
- workflow-pi-extensionSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 8 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Write Pulumi TypeScript as a readable model of infrastructure.
- Distinctive: line 12
Inspect: Read project, package, TypeScript, stack configuration, provider versions, nearby components, and repository commands.
- Distinctive: line 14
Implement: Keep construction deterministic, preserve Pulumi dataflow, parent component children, use aliases for supported identity changes …
- Very specific: line 15
Verify: Run formatting, linting, type-checking, and tests.
- Very specific: line 19
Never run pulumi up, destroy resources, modify state, or rotate secrets without explicit user approval.
- Very specific: line 20
Never create resources inside apply, pulumi.all(...).apply, promises, event handlers, or other deferred callbacks.
- Distinctive: line 24
Keep logical names, type tokens, parents, projects, and stacks stable.
- Distinctive: line 25
Keep secrets in Pulumi secret configuration or an external secret system.
- Distinctive: line 32
Read only the references needed for the task:
- Very specific: line 34
Read Abstractions and components before choosing an abstraction, designing a public component API, wrapping provider resources, or …
- Very specific: line 35
Read Types and dataflow when defining generated provider <Resource>Args, custom <Component>Args, constants or finite choices, Input/Output …
- Distinctive: line 36
Read Topology and project structure when changing graph shape, files, project or stack boundaries, providers, or stack references.
- Distinctive: line 37
Read Lifecycle and security before renaming, reparenting, moving, importing, protecting, or replacing resources, and whenever …
- Very specific: line 38
Read Validation and review when writing tests, reviewing a change, preparing CI, or interpreting pulumi preview.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Pulumi TypeScript Standards
Write Pulumi TypeScript as a readable model of infrastructure. Keep composition roots small, domain boundaries explicit, resource identities stable, and abstractions no stronger than necessary.
Baseline workflow
- Inspect: Read project, package, TypeScript, stack configuration, provider versions, nearby components, and repository commands. Capture a baseline preview before a state-sensitive refactor when access permits.
- Design: Identify ownership, lifecycle, security boundaries, dependencies, and identity. Choose the lowest useful abstraction and define inputs and outputs first.
- Implement: Keep construction deterministic, preserve Pulumi dataflow, parent component children, use aliases for supported identity changes within one state, and plan explicit state transfers across stacks or projects.
- Verify: Run formatting, linting, type-checking, and tests. Run
pulumi previewfor each affected stack when access permits, then inspect every operation.
Non-negotiable safety rules
- Never run
pulumi up, destroy resources, modify state, or rotate secrets without explicit user approval. - Never create resources inside
apply,pulumi.all(...).apply, promises, event handlers, or other deferred callbacks. Useapplyonly to transform values. - Pass
pulumi.Output<T>directly to compatiblepulumi.Input<T>resource properties. Usepulumi.interpolatefor strings andpulumi.allonly for transformations that need multiple outputs. - Resource existence, count, loops, branches, component selection, and graph topology must depend on plain synchronously known values.
pulumi.Input<T>is suitable for resource properties; anOutput<T>must not control whether or how many resources are registered. - Let input/output dataflow infer dependencies. Add
dependsOnonly for a real dependency Pulumi cannot infer. - Keep logical names, type tokens, parents, projects, and stacks stable. Use aliases for supported identity changes within one state; use an explicit state transfer or import-and-adoption workflow across states. Reject unexplained creates, replacements, or deletes in preview.
- Keep secrets in Pulumi secret configuration or an external secret system. Never unwrap, log, convert to plaintext, or export sensitive values without a justified cross-stack contract.
- Set
parent: thison every child of aComponentResource, use stable derived child names, and callregisterOutputsonce after assigning public outputs. - Omit provider physical names unless an external contract requires them. Use explicit providers for multi-account, multi-region, or multi-cluster deployments.
- Parse and validate configuration and external data at the boundary. TypeScript types and assertions are not runtime validation.
Route detailed work
Read only the references needed for the task:
- Read Abstractions and components before choosing an abstraction, designing a public component API, wrapping provider resources, or implementing/reviewing
ComponentResource. - Read Types and dataflow when defining generated provider
<Resource>Args, custom<Component>Args, constants or finite choices,Input/Outputvalues, transformations, or dependencies. - Read Topology and project structure when changing graph shape, files, project or stack boundaries, providers, or stack references.
- Read Lifecycle and security before renaming, reparenting, moving, importing, protecting, or replacing resources, and whenever configuration, credentials, or secrets are involved.
- Read Validation and review when writing tests, reviewing a change, preparing CI, or interpreting
pulumi preview. - For cross-cutting work, read all applicable references; component refactors usually require abstractions, topology, lifecycle, and validation.
Baseline review questions
Before finishing, confirm that the entry point communicates the architecture; topology uses only synchronous values; no resource is created in deferred code; dependencies follow outputs; component children have parents; identities and secrets remain safe; generated provider types are used at provider boundaries; and preview shows no unexplained destructive operation.
Source precedence
Treat the IaC best-practices blog series as architectural context, not as an API reference. Prefer the current Pulumi documentation, Node.js SDK reference, provider schema and generated types, installed CLI help, and repository-pinned package behavior when sources differ. Verify version-sensitive commands, options, package APIs, Pulumi Cloud features, and IAM terminology against current documentation before using them.
See also
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

