event-driven-architect

Designs event-driven architectures with event sourcing, CQRS, and pub/sub patterns in TypeScript.

Updated Mar 16, 2026
One-click install
npx skills add https://github.com/zinohome/RTMessage --skill event-driven-architect-zinohome
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: event-driven-architect
Source: https://github.com/zinohome/RTMessage/tree/main/.github/skills/event-driven-architect
Command: npx skills add https://github.com/zinohome/RTMessage --skill event-driven-architect-zinohome

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires ioredis.

What problem does it solve? Building decoupled, scalable systems requires correctly implementing domain events, event buses, event sourcing, and CQRS, which is error-prone when done from scratch without proven patterns. ## Core Features & Use Cases - Domain Event Design: Define type-safe event payloads, event creators, and aggregate event unions in TypeScript. - Event Bus Implementation: Provides both in-memory EventEmitter-based and Redis pub/sub event buses with stream persistence. - Event Sourcing & CQRS: Implements aggregates that rebuild state from events, an event store repository, and read-model projectors for separated command/query paths. - Use Case: When building an order management system, use this Skill to define OrderCreated/OrderPaid/OrderShipped events, wire handlers for email and inventory, and project a denormalized read model for fast queries. ## Quick Start Ask the AI to design an event-driven order system with domain events, an event bus, and CQRS read models using this Skill.

Frequently Asked Questions about event-driven-architect

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I implement event sourcing in TypeScript?▼

Event sourcing in TypeScript stores state changes as immutable domain events rather than current state. Define an aggregate that applies events to mutate state, persist uncommitted events to an event store, and rebuild the aggregate by replaying events in order.

What is the difference between an in-memory and Redis event bus?▼

An in-memory event bus uses Node.js EventEmitter for pub/sub within a single process, while a Redis event bus publishes events across processes and services via Redis channels. Redis also supports streams for event replay and persistence.

How does CQRS work with event sourcing?▼

CQRS separates command handling, which appends events through aggregates, from queries that read denormalized read models. Projectors subscribe to events and update the read model, keeping writes consistent and reads fast.

When should I not use event sourcing?▼

Event sourcing adds complexity and is unnecessary for simple CRUD applications without audit or replay requirements. It fits best when you need complete history, temporal queries, or decoupled reactions to state changes.

How do I handle failed event handlers?▼

Wrap handlers in try/catch so one failing subscriber does not break others, and route failures to a dead letter queue for later inspection. Handlers should also be idempotent to tolerate duplicate event delivery.