aws-sst-development
SST v4 (Ion) expert for managing AWS resources as code with the Pulumi-backed framework.
Skill by sickn33
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/sickn33-aws-sst-development
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: cloud
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/aws-sst-development
What's inside
- Skill name
aws-sst-development- Description
- SST v4 (Ion) expert for managing AWS resources as code with the Pulumi-backed framework.
- License
- MIT
- Instructions
- 167 lines in SKILL.md · view on GitHub
Files (6)
- SKILL.md
- UPSTREAM-LICENSE.txt
- UPSTREAM-NOTICE.md
- authoring.md · references/
- deploy-and-troubleshoot.md · references/
- testing.md · references/
SKILL.md (first lines)
## Bundled upstream support
Supporting files are included at skill-relative paths. See [UPSTREAM-NOTICE.md](UPSTREAM-NOTICE.md) for their pinned sources, licenses, hashes, and import changes.
# SST v4 for AWS
## When to Use
Use this skill when you need sST v4 (Ion) expert for managing AWS resources as code with the Pulumi-backed framework. Use when writing or editing sst.config.ts, building infra/ modules (sst.aws.Function/Bucket/Dynamo/Cron/Service/Router, sst.Secret, sst.Linkable, raw aws.* Pulumi resources), wiring resource links,...
SST v4 (the "Ion" engine) is a Pulumi-backed IaC framework: you describe AWS
resources in TypeScript and SST/Pulumi reconciles them into your account. It
gives you high-level `sst.aws.*` components (Function, Bucket, Dynamo, Cron,
Service, …) that expand into many underlying resources, plus an escape hatch to
*any* raw Pulumi `aws.*` resource for the long tail. This skill encodes a
set of project-derived patterns to author, link, test, deploy, and troubleshoot SST
stacks on AWS . The catalog review does not establish those incident or production-validation claims.
**SST and Pulumi are third-party — verify current syntax with Context7**
(`resolve-library-id` → `query-docs` for `sst` or `pulumi-aws`) when you're
unsure about a component's options. Verify AWS-side facts (service limits,
model IDs, IAM action names, region availability) with the AWS docs MCP, never
from memory. The patterns here are the *how*; the docs are the *what*.
## When you're invoked
Figure out which mode you're in and jump to the right reference:
| Situation | Go to |
|-----------|-------|
| New project, or adding a resource/module to an existing SST app | **Author** → `references/authoring.md` |
| Wiring one module's output into another (links, SSM, IAM scope) | **Author** → `references/authoring.md` § Sharing |
| Writing tests for infra so changes don't silently break | **Test** → `references/testing.md` |
| Running a deploy, or a deploy just failed | **Deploy/Operate** → `references/deploy-and-troubleshoot.md` |
| Migrating a resource between Pulumi types, renaming a physical name | **Deploy/Operate** → `references/deploy-and-troubleshoot.md` § Migrations |
Always read the relevant reference before editing — they carry the *why* behind
each rule, which matters more than the rule itself.
## Orientation: read the repo before you touch it
SST projects are conventional but not identical. Before editing, build a quick
map so your change matches the house style instead of fighting it:
1. **`sst.config.ts`** — the app name, `home`, providers/region, `defaultTags`,
any global `$transform` (Node runtime pin, bundle fixups), and the order in
which `run()` imports `infra/` modules. The import order *is* the dependency
order; respect it.
2. **`infra/`** — one file per domain (storage, functions, api, observability…).
This is where resources are declared. Check for an `infra/CLAUDE.md` — these
projects keep IaC-specific rules there, and it's the single most valuable
file to read first.
3. **`infra/tests/`** — source-level Vitest assertions that pin resource
invariants. If they exist, your change must keep them green and probably
needs a new assertion.
4. **`package.json` / `.nvmrc`** — package manager (npm vs pnpm), Node version,
and the `sst`/`pulumi` versions actually installed.
Run `npx sst version` to confirm you're on v4/Ion (the `$config` + `.sst/platform/`
signature). v2 (Classic) is CDK-based; v3 also introduced the Pulumi-backed Ion architecture. Verify v3-to-v4 breaking changes rather than classifying v3 as CDK-based.
## The conventions, and which are universal vs tunable
The projects this skill is built from share a deliberate house style. Some of it
is **universal** (true for any SST v4 + AWS project — apply it everywhere); some
is **project-specific** (a sensible default these projects chose — adopt it for
consistency, but recognize a project may differ).
**Universal — these principles hold for any SST v4 + AWS project:**
- **Control the Node runtime deliberately, in one place.** Don't leave it to
whatever the installed SST happens to default to. The idiom is a single global
`$transform(sst.aws.Function, (args) => { args.runtime ??= "nodejs24.x" })` in
`run()` — `??=` is correct here (the transform runs before the component
applies its own default, so it fills in only when the user didn't set one).
Recent SST already defaults to a current Node runtime, so check the installed
default first (Context7); the transform is then version-independence insurance
so a future SST downgrade can't silently move your fleet. See
`references/authoring.md`.
- **Never interpolate a Pulumi `Output<T>` into a plain JS template literal.**
Use `$interpolate` (or `pulumi.interpolate`). A bare top-level
`` `${bucket.arn}/*` `` stringifies the `Output` to a `[Output<T>]` placeholder
and produces a broken ARN that only fails at deploy time (it type-checks and
`sst dev` runs fine). The fix is `$interpolate``` `${bucket.arn}/*` ``. This
has caused prod deploy outages. See `references/authoring.md` § Outputs.
- **Plan stateful migrations before replacement.** Inspect type/URN/physical identity and provider-supported import/alias/state-move options. Never default to destroying a database/bucket just to free its name. A reviewed export/restore, parallel migration or preserved-resource adoption may avoid loss; any destructive recreate needs explicit downtime/data-loss acceptance and a tested recovery plan. See the migration reference.
- **Prefer typed `sst.aws.*` / `aws.*` resources over the
`aws.cloudcontrol.Resource` escape hatch.** CloudControl outputs are
stringly-typed and `oneOf` fields don't patch cleanly. Use it only when no
typed resource exists yet, and migrate off it when one ships.
**Project-specific defaults — adopt for consistency, but confirm per repo:**
- **Region `ap-northeast-1`**, `home: "aws"`, and `defaultTags` carrying
`Project` / `Stage` / `ManagedBy: "sst"`.
- **Stage-gated lifecycle**: `removal: stage === "prod" ? "retain" : "remove"`
and `protect: stage === "prod"` so prod resources survive a stack tear-down
and non-prod previews clean up.
- **SSM Parameter Store as the out-of-graph contract** under a
`/{app}/{stage}/{domain}/...` prefix — for consumers that aren't in the
Pulumi graph (CI scripts, sibling apps, operators). For *same-app* Lambdas,
prefer SST `link:` (it wires a real dependency edge and grants IAM); don't
route same-app sharing through SSM. See `references/authoring.md` § Sharing.
- **Lazy `await import("./infra/<module>")` inside `run()`** so `sst dev`
hot-reload stays light. (For testing, a module export still runs its top-level
`new sst.aws.*` unless it's wrapped in a factory function — see
`references/testing.md` for how to test infra.)
- **Source-level Vitest tests** on every infra module — a lightweight,
house-style regression net asserting on the *source text* (resource names,
index shapes, IAM scopes). It's a deliberate choice, not an SST limit: Pulumi
*does* support runtime mocks (`@pulumi/pulumi/runtime`) for behavioral graph
tests when a module has real logic. Source assertions don't replace a
preview-deploy + smoke test. See `references/testing.md`.
- **An observability gate**: every new Lambda/queue/schedule gets an alarm and
structured logging before merge. Whether you enforce this depends on the
project, but it's cheap insurance. See `references/deploy-and-troubleshoot.md`
§ Observability.
When you introduce a convention, say which bucket it's in ("this is universal"
vs "matching this repo's house style") so the user can override theFrom sickn33/agentic-awesome-skills, MIT.
More from sickn33/agentic-awesome-skills
- 0.881score
asset-inventory
devops-skills
Maintain IT asset inventory and configuration management database.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.881score
arm-templates
devops-skills
Deploy Azure resources with ARM templates and Bicep.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.881score
access-review
devops-skills
Conduct periodic access reviews and certifications.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.878score
ai-coding-agent-guardrails
devops-skills
Secure AI coding agents (Claude Code, Cursor, Codex, Copilot) with permission boundaries, secret protection, code review gates, and safe sandbox…
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.878score
agents-generator
OJPalenzuela
Generate project-specific AGENTS.md and companion rules by analyzing a codebase.
SkillAFreshness: A★ 48.4KClaude Code - 0.876score
aws-lambda
devops-skills
Build and deploy serverless functions on AWS Lambda.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.876score
aws-s3
devops-skills
Configure S3 buckets, policies, and lifecycle rules.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.876score
aws-iam
devops-skills
Manage IAM users, roles, and policies.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.876score
aws-rds
devops-skills
Provision and manage RDS databases.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.876score
azure-aks
devops-skills
Deploy and manage Azure Kubernetes Service clusters.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.876score
aws-vpc
devops-skills
Design and implement VPCs and networking.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.876score
aws-ecs-fargate
devops-skills
Deploy containers on ECS and Fargate.
SkillAFreshness: A★ 48.4KClaude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 48,428
- Forks
- 7,039
- Open issues
- 0
- Last commit (this folder)
- Oct 24, 2026 (3 days ago)
- Last release
- Oct 24, 2026 (3 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Website
- aaskills.tech/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from sickn33
- 0.665score
agentphone
sickn33
Build AI phone agents with AgentPhone API.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.665score
ai-seo
sickn33
Optimize content for AI search and LLM citations across AI Overviews, ChatGPT, Perplexity, Claude, Gemini, and similar systems.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.665score
agent-evaluation
sickn33
Evaluate agent behavior with versioned cases and explicit verifiers.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.665score
agent-memory-systems
sickn33
Design tenant-scoped memory, retrieval and retention for agents.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.665score
add-app-clip
sickn33
Add an iOS App Clip target to an Expo app.
SkillAFreshness: A★ 48.4KClaude Code +9 - 0.665score
angular-best-practices
sickn33
Angular performance optimization and best practices guide.
SkillAFreshness: A★ 48.4KClaude Code +9
Cite this page
aws-sst-development skill. Agent Mart. https://agentmart.dev/skills/sickn33-aws-sst-development (last updated 2026-10-24)