.claude/skills/ts-aws-lambda/SKILL.md
You are an expert in AWS Lambda, Amazon's serverless compute service. You help developers build event-driven applications using Lambda functions triggered by API Gateway, S3 events, SQS queues, DynamoDB streams, and scheduled events — with support for Node.js, Python, Go, Rust, Java, and container images, automatic scaling from zero to thousands of concurrent executions, and pay-per-invocation pricing.
npx skillsauth add eliferjunior/Claude aws-lambdaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an expert in AWS Lambda, Amazon's serverless compute service. You help developers build event-driven applications using Lambda functions triggered by API Gateway, S3 events, SQS queues, DynamoDB streams, and scheduled events — with support for Node.js, Python, Go, Rust, Java, and container images, automatic scaling from zero to thousands of concurrent executions, and pay-per-invocation pricing.
// handler.ts — API Gateway Lambda (Node.js/TypeScript)
import { APIGatewayProxyHandlerV2 } from "aws-lambda";
export const handler: APIGatewayProxyHandlerV2 = async (event) => {
const { httpMethod, pathParameters, body, queryStringParameters } = event;
try {
switch (httpMethod) {
case "GET": {
const id = pathParameters?.id;
if (id) {
const item = await db.get({ TableName: "users", Key: { id } });
return { statusCode: 200, body: JSON.stringify(item.Item) };
}
const items = await db.scan({ TableName: "users" });
return { statusCode: 200, body: JSON.stringify(items.Items) };
}
case "POST": {
const data = JSON.parse(body || "{}");
await db.put({ TableName: "users", Item: { id: uuid(), ...data } });
return { statusCode: 201, body: JSON.stringify({ created: true }) };
}
default:
return { statusCode: 405, body: "Method not allowed" };
}
} catch (error) {
console.error(error);
return { statusCode: 500, body: JSON.stringify({ error: "Internal error" }) };
}
};
# handler.py — S3 event trigger (Python)
import json
import boto3
from PIL import Image
import io
s3 = boto3.client("s3")
def handler(event, context):
"""Process uploaded images: resize and create thumbnails.
Triggered by S3 PutObject events on the uploads/ prefix.
"""
for record in event["Records"]:
bucket = record["s3"]["bucket"]["name"]
key = record["s3"]["object"]["key"]
# Download original
response = s3.get_object(Bucket=bucket, Key=key)
image = Image.open(io.BytesIO(response["Body"].read()))
# Create thumbnail
image.thumbnail((300, 300))
buffer = io.BytesIO()
image.save(buffer, format="JPEG", quality=85)
buffer.seek(0)
# Upload thumbnail
thumb_key = key.replace("uploads/", "thumbnails/")
s3.put_object(
Bucket=bucket,
Key=thumb_key,
Body=buffer,
ContentType="image/jpeg",
)
return {"statusCode": 200, "processed": len(event["Records"])}
# template.yaml — AWS SAM template
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Globals:
Function:
Runtime: nodejs20.x
Timeout: 30
MemorySize: 256
Environment:
Variables:
TABLE_NAME: !Ref UsersTable
Resources:
ApiFunction:
Type: AWS::Serverless::Function
Properties:
Handler: dist/handler.handler
Events:
GetUsers:
Type: Api
Properties:
Path: /users
Method: get
CreateUser:
Type: Api
Properties:
Path: /users
Method: post
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref UsersTable
ImageProcessor:
Type: AWS::Serverless::Function
Properties:
Handler: handler.handler
Runtime: python3.12
MemorySize: 1024
Timeout: 60
Events:
S3Upload:
Type: S3
Properties:
Bucket: !Ref UploadsBucket
Events: s3:ObjectCreated:*
Filter:
S3Key:
Rules:
- Name: prefix
Value: uploads/
Policies:
- S3CrudPolicy:
BucketName: !Ref UploadsBucket
UsersTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: users
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: id
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
UploadsBucket:
Type: AWS::S3::Bucket
# Deploy with SAM
sam build
sam deploy --guided # First time
sam deploy # Subsequent
sam local start-api # Local development
sam logs --tail --name ApiFunction # Stream logs
# SAM CLI
brew install aws-sam-cli
# Or: pip install aws-sam-cli
# AWS CLI
brew install awscli
aws configure # Set credentials
development
Expert guidance for Fireworks AI, the platform for running open-source LLMs (Llama, Mixtral, Qwen, etc.) with enterprise-grade speed and reliability. Helps developers integrate Fireworks' inference API, fine-tune models, and deploy custom model endpoints with function calling and structured output support.
development
Convert any website into clean, structured data with Firecrawl — API-first web scraping service. Use when someone asks to "turn a website into markdown", "scrape website for LLM", "Firecrawl", "extract website content as clean text", "crawl and convert to structured data", or "scrape website for RAG". Covers single-page scraping, full-site crawling, structured extraction, and LLM-ready output.
tools
Expert guidance for Firebase, Google's platform for building and scaling web and mobile applications. Helps developers set up authentication, Firestore/Realtime Database, Cloud Functions, hosting, storage, and analytics using Firebase's SDK and CLI.
development
When the user needs to build file upload functionality for a web application. Use when the user mentions "file upload," "image upload," "upload endpoint," "multipart upload," "presigned URL," "S3 upload," "file validation," "upload to cloud storage," or "accept user files." Handles upload endpoints, file validation (type, size, magic bytes), cloud storage integration, and upload status tracking. For image/video processing after upload, see media-transcoder.