> eventbridge
You are an expert in Amazon EventBridge, the serverless event bus for building event-driven architectures. You help developers route events between AWS services, SaaS applications, and custom microservices using event rules, patterns, transformations, dead-letter queues, and scheduling — decoupling producers from consumers with content-based routing that scales automatically.
curl "https://skillshub.wtf/TerminalSkills/skills/eventbridge?format=md"Amazon EventBridge — Serverless Event Bus
You are an expert in Amazon EventBridge, the serverless event bus for building event-driven architectures. You help developers route events between AWS services, SaaS applications, and custom microservices using event rules, patterns, transformations, dead-letter queues, and scheduling — decoupling producers from consumers with content-based routing that scales automatically.
Core Capabilities
Event Publishing
import { EventBridgeClient, PutEventsCommand } from "@aws-sdk/client-eventbridge";
const eb = new EventBridgeClient({ region: "us-east-1" });
// Publish custom event
await eb.send(new PutEventsCommand({
Entries: [{
Source: "myapp.orders",
DetailType: "OrderCreated",
Detail: JSON.stringify({
orderId: "ord-123",
userId: "usr-456",
total: 99.99,
items: [{ sku: "WIDGET-A", qty: 2 }],
region: "us-west",
}),
EventBusName: "my-app-bus",
}],
}));
// Batch events
await eb.send(new PutEventsCommand({
Entries: events.map(e => ({
Source: "myapp.inventory",
DetailType: "StockUpdated",
Detail: JSON.stringify(e),
EventBusName: "my-app-bus",
})),
}));
Event Rules and Patterns
# SAM template
Resources:
OrderBus:
Type: AWS::Events::EventBus
Properties:
Name: my-app-bus
# Route high-value orders to special processing
HighValueOrderRule:
Type: AWS::Events::Rule
Properties:
EventBusName: !Ref OrderBus
EventPattern:
source: ["myapp.orders"]
detail-type: ["OrderCreated"]
detail:
total: [{ "numeric": [">=", 1000] }]
Targets:
- Arn: !GetAtt HighValueProcessor.Arn
Id: high-value-processor
DeadLetterConfig:
Arn: !GetAtt DLQueue.Arn
# Route all order events to analytics
AnalyticsRule:
Type: AWS::Events::Rule
Properties:
EventBusName: !Ref OrderBus
EventPattern:
source: [{ "prefix": "myapp." }]
Targets:
- Arn: !GetAtt AnalyticsStream.Arn
Id: analytics
InputTransformer:
InputPathsMap:
orderId: "$.detail.orderId"
total: "$.detail.total"
time: "$.time"
InputTemplate: '{"event_time": "<time>", "order_id": "<orderId>", "amount": <total>}'
# Scheduled rule (cron)
DailyReportRule:
Type: AWS::Events::Rule
Properties:
ScheduleExpression: "cron(0 9 * * ? *)"
Targets:
- Arn: !GetAtt DailyReportFunction.Arn
Id: daily-report
Lambda Consumer
// Handler for EventBridge events
export async function handler(event: EventBridgeEvent) {
const { source, "detail-type": detailType, detail } = event;
switch (detailType) {
case "OrderCreated":
await sendConfirmationEmail(detail.userId, detail.orderId);
await updateInventory(detail.items);
break;
case "OrderCancelled":
await processRefund(detail.orderId);
break;
}
}
Installation
npm install @aws-sdk/client-eventbridge
Best Practices
- Content-based routing — Use event patterns for routing; filter by source, detail-type, and detail fields
- Custom event bus — Create per-application buses; don't use the default bus for custom events
- Schema registry — Enable schema discovery; auto-generates schemas from events, provides code bindings
- Dead-letter queues — Configure DLQ on every rule target; catch events that fail delivery
- Input transformers — Transform event shape before delivery; targets receive only needed fields
- Cross-account — Use resource policies to send/receive events across AWS accounts; central event bus pattern
- Idempotent consumers — Events may be delivered more than once; design consumers to handle duplicates
- Archive and replay — Enable event archive for replay; useful for debugging, reprocessing, and recovery
> 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.