> sst-ion

You are an expert in SST (Ion), the framework for building full-stack serverless applications on AWS. You help developers deploy Next.js, Remix, Astro, and API services with infrastructure-as-code defined in TypeScript, automatic IAM permissions, live Lambda debugging, secrets management, and zero-config deployments — replacing CDK/Terraform complexity with a developer-friendly abstraction over AWS services.

fetch
$curl "https://skillshub.wtf/TerminalSkills/skills/sst-ion?format=md"
SKILL.mdsst-ion

SST (Ion) — Full-Stack Serverless Framework

You are an expert in SST (Ion), the framework for building full-stack serverless applications on AWS. You help developers deploy Next.js, Remix, Astro, and API services with infrastructure-as-code defined in TypeScript, automatic IAM permissions, live Lambda debugging, secrets management, and zero-config deployments — replacing CDK/Terraform complexity with a developer-friendly abstraction over AWS services.

Core Capabilities

Infrastructure as Code

// sst.config.ts — Define your entire app
export default $config({
  app(input) {
    return {
      name: "my-saas",
      removal: input.stage === "production" ? "retain" : "remove",
      home: "aws",
      providers: { aws: { region: "us-east-1" } },
    };
  },
  async run() {
    // Database
    const db = new sst.aws.Postgres("MyDB", { scaling: { min: "0.5 ACU", max: "4 ACU" } });

    // S3 bucket for uploads
    const bucket = new sst.aws.Bucket("Uploads", {
      access: "public",
      cors: { allowOrigins: ["*"], allowMethods: ["GET", "PUT"] },
    });

    // Secrets
    const stripeKey = new sst.Secret("StripeKey");
    const openaiKey = new sst.Secret("OpenAIKey");

    // API
    const api = new sst.aws.Function("Api", {
      handler: "packages/api/src/handler.handler",
      link: [db, bucket, stripeKey],      // Auto-grants IAM permissions
      url: true,                          // Creates function URL
    });

    // Cron job
    new sst.aws.Cron("DailyReport", {
      schedule: "rate(1 day)",
      job: {
        handler: "packages/api/src/cron/daily-report.handler",
        link: [db],
        timeout: "5 minutes",
      },
    });

    // Queue
    const queue = new sst.aws.Queue("EmailQueue", {
      consumer: {
        handler: "packages/api/src/queue/email.handler",
        link: [db],
      },
    });

    // Next.js frontend
    const site = new sst.aws.Nextjs("Web", {
      path: "packages/web",
      link: [api, bucket, stripeKey],
      environment: { NEXT_PUBLIC_API_URL: api.url },
      domain: {
        name: "app.example.com",
        dns: sst.aws.dns(),
      },
    });

    return { api: api.url, site: site.url };
  },
});

Using Linked Resources

// packages/api/src/handler.ts — Access linked resources type-safely
import { Resource } from "sst";

export async function handler(event) {
  // Resource bindings — type-safe, auto-permissioned
  const dbUrl = Resource.MyDB.url;          // RDS connection string
  const bucketName = Resource.Uploads.name; // S3 bucket name
  const stripeKey = Resource.StripeKey.value; // Secret value

  // Upload to S3 (IAM permissions auto-granted by `link`)
  await s3.putObject({
    Bucket: Resource.Uploads.name,
    Key: `uploads/${event.fileName}`,
    Body: event.fileBuffer,
  });
}

Installation

# Install SST
curl -fsSL https://sst.dev/install | bash

# Create new project
sst init

# Development (live Lambda debugging)
sst dev

# Deploy
sst deploy --stage production

# Set secrets
sst secret set StripeKey sk_live_...

Best Practices

  1. Link for permissions — Use link: [resource] instead of manual IAM policies; SST auto-grants minimal permissions
  2. Resource bindings — Access linked resources via Resource.Name.property; fully typed, no env var juggling
  3. Stages for environments — Use --stage dev/staging/prod; each stage gets isolated resources
  4. Live debugging — Use sst dev for real-time Lambda debugging; edit code, test instantly, see logs
  5. Secrets management — Use sst.Secret for API keys; encrypted, per-stage, accessible via Resource
  6. Domain configuration — Use domain property on sites; SST handles SSL certificates and DNS records
  7. Monorepo structure — Use packages/ directory; separate api, web, shared code; SST links them automatically
  8. Removal policy — Set removal: "retain" in production; prevents accidental deletion of databases and buckets

> related_skills --same-repo

> zustand

You are an expert in Zustand, the small, fast, and scalable state management library for React. You help developers manage global state without boilerplate using Zustand's hook-based stores, selectors for performance, middleware (persist, devtools, immer), computed values, and async actions — replacing Redux complexity with a simple, un-opinionated API in under 1KB.

> zoho

Integrate and automate Zoho products. Use when a user asks to work with Zoho CRM, Zoho Books, Zoho Desk, Zoho Projects, Zoho Mail, or Zoho Creator, build custom integrations via Zoho APIs, automate workflows with Deluge scripting, sync data between Zoho apps and external systems, manage leads and deals, automate invoicing, build custom Zoho Creator apps, set up webhooks, or manage Zoho organization settings. Covers Zoho CRM, Books, Desk, Projects, Creator, and cross-product integrations.

> zod

You are an expert in Zod, the TypeScript-first schema declaration and validation library. You help developers define schemas that validate data at runtime AND infer TypeScript types at compile time — eliminating the need to write types and validators separately. Used for API input validation, form validation, environment variables, config files, and any data boundary.

> zipkin

Deploy and configure Zipkin for distributed tracing and request flow visualization. Use when a user needs to set up trace collection, instrument Java/Spring or other services with Zipkin, analyze service dependencies, or configure storage backends for trace data.

┌ stats

installs/wk0
░░░░░░░░░░
github stars17
███░░░░░░░
first seenMar 17, 2026
└────────────

┌ repo

TerminalSkills/skills
by TerminalSkills
└────────────

┌ tags

└────────────