Claude Skills Guide

Claude Code Pulumi TypeScript Infra Guide

Infrastructure as Code has evolved significantly, and combining Claude Code with Pulumi TypeScript projects creates a powerful workflow for managing cloud resources. This guide shows you practical patterns for using Claude Code to accelerate your Pulumi infrastructure development.

Setting Up Your Pulumi TypeScript Project

Before integrating Claude Code, ensure your Pulumi project is properly configured. Initialize a new TypeScript project if you haven’t already:

mkdir my-infra && cd my-infra
pulumi new typescript --name my-stack

Install the required dependencies and configure your cloud provider. For AWS, you’ll need the @pulumi/aws package. Claude Code can assist with package installation and initial project structure using the Bash tool.

How Claude Code Enhances Pulumi Workflows

Claude Code brings intelligent assistance to your infrastructure projects through natural language interaction. When working with Pulumi TypeScript, you can use several capabilities:

Code Generation: Describe the infrastructure you need, and Claude Code helps generate the TypeScript code. For example, “Create an S3 bucket with versioning enabled” produces the appropriate Pulumi code.

Debugging Support: When your stack fails to deploy, paste the error message and Claude Code analyzes the issue, suggests fixes, and explains what went wrong.

Documentation Reading: Use Claude Code’s web-fetching capabilities to pull Pulumi documentation, AWS provider references, or community examples directly into your workspace.

Writing Your First Pulumi Resource

Here’s a practical example of defining infrastructure with Pulumi TypeScript that Claude Code can help you build:

import * as aws from "@pulumi/aws";
import * as pulumi from "@pulumi/pulumi";

// Create an S3 bucket with encryption
const bucket = new aws.s3.Bucket("app-bucket", {
    versioning: {
        enabled: true,
    },
    serverSideEncryptionConfiguration: {
        rule: {
            applyServerSideEncryptionByDefault: {
                sseAlgorithm: "AES256",
            },
        },
    },
});

// Export the bucket name
export const bucketName = bucket.id;

Claude Code can generate variations of this code, add tags, modify the encryption settings, or extend it with additional resources like CloudFront distributions or IAM policies.

Managing Multi-Environment Deployments

Production infrastructure typically requires multiple environments. Use Pulumi stacks to manage dev, staging, and production:

pulumi stack init dev
pulumi stack init staging
pulumi stack init prod

Configure stack-specific configuration:

const config = new pulumi.Config();
const environment = config.require("environment");

const dbInstance = new aws.rds.Instance("app-db", {
    instanceClass: environment === "prod" ? "db.t3.medium" : "db.t3.small",
    allocatedStorage: environment === "prod" ? 100 : 20,
    engine: "postgres",
    engineVersion: "14.7",
    skipFinalSnapshot: environment !== "prod",
}, { protect: environment === "prod" });

This pattern ensures your production database receives protection against accidental deletion while development environments remain easily disposable.

Testing Infrastructure Code

Integrate testing into your Pulumi workflows using the testing skill. While Pulumi has built-in testing utilities, you can enhance validation with additional patterns:

import * as assert from "assert";

// Unit test for bucket configuration
function testBucketVersioning() {
    const bucket = new aws.s3.Bucket("test-bucket", {
        versioning: { enabled: true },
    });
    
    assert(bucket.versioning.enabled === true);
}

Run tests with pulumi preview before applying changes. Claude Code can generate test cases, explain testing patterns, and help debug failing assertions.

Integrating with CI/CD Pipelines

Automate your infrastructure deployments using GitHub Actions or similar CI systems. Here’s a practical workflow configuration:

name: Infrastructure Deployment
on:
  push:
    paths:
      - 'infra/**'
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: pulumi/actions@v4
        with:
          command: preview
          stack-name: production
        env:
          PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}

Claude Code helps you craft these pipeline configurations, explains the security implications of different approaches, and suggests optimizations for faster deployments.

Organizing Large-Scale Infrastructure

As your infrastructure grows, organize code into modules:

// networking.ts - Network module
export function createNetwork(vpcCidr: string, azs: string[]) {
    const vpc = new aws.ec2.Vpc("main", {
        cidrBlock: vpcCidr,
        enableDnsHostnames: true,
        enableDnsSupport: true,
    });

    const subnets = azs.map((az, index) => 
        new aws.ec2.Subnet(`subnet-${index}`, {
            vpcId: vpc.id,
            cidrBlock: `${vpcCidr.split('.')[0]}.${index + 1}.0.0/24`,
            availabilityZone: az,
        })
    );

    return { vpc, subnets };
}

Import and compose modules in your main stack:

import { createNetwork } from "./networking";
import { createSecurityGroups } from "./security";

const { vpc, subnets } = createNetwork("10.0.0.0/16", ["us-east-1a", "us-east-1b"]);
const securityGroups = createSecurityGroups(vpc.id);

This modular approach makes your infrastructure code maintainable and reusable across projects.

Leveraging Claude Skills for Infrastructure

Several Claude skills enhance your infrastructure development workflow:

Each skill complements your Pulumi workflow differently. The supermemory skill proves particularly valuable for maintaining institutional knowledge about your infrastructure architecture.

Best Practices Summary

  1. Use descriptive resource names: webServerSecurityGroup instead of sg1
  2. Enable stack protection: Protect production resources from accidental deletion
  3. Tag everything: Apply consistent tags for cost allocation and governance
  4. Version control your state: Use Pulumi Cloud or self-hosted backends
  5. Test before applying: Always run pulumi preview before pulumi up

Claude Code accelerates each of these practices through code generation, error analysis, and documentation assistance. The combination of intelligent AI assistance with Pulumi’s infrastructure as code platform creates a productive workflow for teams managing cloud resources.

Built by theluckystrike — More at zovo.one