# Event Store Design > Design and implement event stores for event-sourced systems. Use when building event sourcing infrastructure, choosing event store technologies, or implementing event persistence patterns. Source: https://skillsagentes.com/skills/wshobson/agents/event-store-design Repository: https://github.com/wshobson/agents Author: wshobson License: MIT Updated: hace 2 meses Context cost: 47 tok installed, 1k tok once triggered, 3.9k tok with every bundled file Bundle: 2 files, 15 KB Permissions requested: none declared ## Install ```bash npx -y skills add wshobson/agents --skill event-store-design --agent claude-code ``` ## What it does - Guía el diseño de arquitecturas de event store para sistemas basados en event sourcing - Compara tecnologías como EventStoreDB, PostgreSQL, Kafka, DynamoDB y Marten - Define requisitos clave: append-only, ordenación, versionado, suscripciones e idempotencia - Aporta buenas prácticas sobre stream IDs, correlation/causation IDs y evolución de esquemas ## Use it when - Al diseñar infraestructura de event sourcing - Al elegir entre distintas tecnologías de event store - Al implementar un event store propio - Al optimizar el almacenamiento y la recuperación de eventos, o planificar su escalado ## What triggers it - "Ayúdame a diseñar el esquema de un event store para mi sistema" - "¿Qué tecnología de event store me conviene, EventStoreDB o PostgreSQL?" - "Necesito implementar concurrencia optimista en mi event store" ## Before you install - Para plantillas y ejemplos detallados, consultar el archivo references/details.md. ## Files - SKILL.md — 4 KB - references/details.md — 11 KB ## SKILL.md Reproduced verbatim from wshobson/agents under MIT. This section is the upstream document and is in English. # Event Store Design Comprehensive guide to designing event stores for event-sourced applications. ## When to Use This Skill - Designing event sourcing infrastructure - Choosing between event store technologies - Implementing custom event stores - Optimizing event storage and retrieval - Setting up event store schemas - Planning for event store scaling ## Core Concepts ### 1. Event Store Architecture ``` ┌─────────────────────────────────────────────────────┐ │ Event Store │ ├─────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Stream 1 │ │ Stream 2 │ │ Stream 3 │ │ │ │ (Aggregate) │ │ (Aggregate) │ │ (Aggregate) │ │ │ ├─────────────┤ ├─────────────┤ ├─────────────┤ │ │ │ Event 1 │ │ Event 1 │ │ Event 1 │ │ │ │ Event 2 │ │ Event 2 │ │ Event 2 │ │ │ │ Event 3 │ │ ... │ │ Event 3 │ │ │ │ ... │ │ │ │ Event 4 │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ ├─────────────────────────────────────────────────────┤ │ Global Position: 1 → 2 → 3 → 4 → 5 → 6 → ... │ └─────────────────────────────────────────────────────┘ ``` ### 2. Event Store Requirements | Requirement | Description | | ----------------- | ---------------------------------- | | **Append-only** | Events are immutable, only appends | | **Ordered** | Per-stream and global ordering | | **Versioned** | Optimistic concurrency control | | **Subscriptions** | Real-time event notifications | | **Idempotent** | Handle duplicate writes safely | ## Technology Comparison | Technology | Best For | Limitations | | ---------------- | ------------------------- | -------------------------------- | | **EventStoreDB** | Pure event sourcing | Single-purpose | | **PostgreSQL** | Existing Postgres stack | Manual implementation | | **Kafka** | High-throughput streaming | Not ideal for per-stream queries | | **DynamoDB** | Serverless, AWS-native | Query limitations | | **Marten** | .NET ecosystems | .NET specific | ## Templates and detailed worked examples Full template library and detailed worked examples live in `references/details.md`. Read that file when you need the concrete templates. ## Best Practices ### Do's - **Use stream IDs that include aggregate type** - `Order-{uuid}` - **Include correlation/causation IDs** - For tracing - **Version events from day one** - Plan for schema evolution - **Implement idempotency** - Use event IDs for deduplication - **Index appropriately** - For your query patterns ### Don'ts - **Don't update or delete events** - They're immutable facts - **Don't store large payloads** - Keep events small - **Don't skip optimistic concurrency** - Prevents data corruption - **Don't ignore backpressure** - Handle slow consumers --- Skills Agentes — https://skillsagentes.com/skills/wshobson/agents/event-store-design