event-sourcing — скилл для Claude Code: события, CQRS и аудит
Скилл для ИИ-агента, который помогает проектировать event sourcing и CQRS: хранилище событий, агрегаты, проекции и снапшоты. Пригодится, когда нужна история изменений и запросы к состоянию на любой момент.
npx skills add aj-geddes/useful-ai-prompts --skill event-sourcing -a claude-codeЧто делает event-sourcing
Скилл объясняет подход, при котором состояние хранится не как одна текущая запись, а как последовательность событий. Из этого следуют аудит, временные запросы и воспроизведение событий заново. Внутри есть краткий пример на TypeScript с интерфейсами DomainEvent и Aggregate и классом EventStore с методом appendEvents, а полные реализации вынесены в каталог references/.
В справочниках четыре темы: хранилище событий на TypeScript, проекции как модели чтения, хранилище на PostgreSQL и снапшоты для производительности. Отдельный блок лучших практик перечисляет, что делать и чего избегать: хранить события неизменно, версионировать их, использовать оптимистичную блокировку, не мутировать прошлые события и не ходить в хранилище событий за чтением.
Скилл даёт подход и примеры кода, а не готовую библиотеку. Если в проекте уже есть ORM с изменяемыми сущностями, схему придётся перестраивать: события пишутся только на добавление, а чтение идёт через проекции. Проверьте, что ваша СУБД и способ деплоя выдержат такой поток записи.
Какие задачи решает
- построить аудит изменений по каждому агрегату
- получить состояние объекта на произвольный момент времени
- разделить запись событий и чтение через проекции
- добавить снапшоты, чтобы не перечитывать всю историю
- пережить смену схемы события без потери старых записей
Примеры запросов агенту
- Спроектируй event store для заказов: агрегат, события, оптимистичная блокировка по версии
- Покажи, как построить проекцию для списка заказов на PostgreSQL
- Добавь снапшоты для агрегата с длинной историей событий
Как установить event-sourcing
1Через Skills CLI (Vercel)
npx skills add aj-geddes/useful-ai-prompts --skill event-sourcing -a claude-code2Вручную: положить файлы
~/.claude/skills/event-sourcing/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/event-sourcing/
1Через Skills CLI (Vercel)
npx skills add aj-geddes/useful-ai-prompts --skill event-sourcing -a codex2Вручную: положить файлы
.agents/skills/event-sourcing/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add aj-geddes/useful-ai-prompts --skill event-sourcing -a cursor2Вручную: положить файлы
.cursor/skills/event-sourcing/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install aj-geddes/useful-ai-prompts event-sourcing2Вручную: положить файлы
.github/skills/event-sourcing/SKILL.md1Через Skills CLI (Vercel)
npx skills add aj-geddes/useful-ai-prompts --skill event-sourcing -a gemini-cli2Командой платформы
gemini skills install https://github.com/aj-geddes/useful-ai-prompts --path skills/event-sourcingВручную: положить файлы
.devin/skills/event-sourcing/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add aj-geddes/useful-ai-prompts --skill event-sourcing -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора118
Похожие
Рядом в теме «Бэкенд и API»
Всё по теме «Бэкенд и API» →Вопросы о event-sourcing
Как установить event-sourcing в Claude?
Выполните npx skills add aj-geddes/useful-ai-prompts --skill event-sourcing -a claude-code. После этого файл скилла лежит в ~/.claude/skills/event-sourcing/SKILL.md.
Что делает event-sourcing?
Описывает event sourcing и CQRS: как хранить изменения в виде событий, собирать агрегаты и строить проекции для чтения. Внутри есть пример на TypeScript и ссылки на подробные реализации.
Нужна ли конкретная база данных?
Нет, подход не привязан к одной СУБД. В справочниках разобран вариант хранилища событий на PostgreSQL, остальные примеры даны на TypeScript.
Исходный текст
SKILL.md · MIT
---
name: event-sourcing
description: >
Implement event sourcing and CQRS patterns using event stores, aggregates, and
projections. Use when building audit trails, temporal queries, or systems
requiring full history.
---
# Event Sourcing
## Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Quick Start](#quick-start)
- [Reference Guides](#reference-guides)
- [Best Practices](#best-practices)
## Overview
Store state changes as a sequence of events rather than the current state, enabling temporal queries, audit trails, and event replay.
## When to Use
- Audit trail requirements
- Temporal queries (state at any point in time)
- Event-driven microservices
- CQRS implementations
- Financial systems
- Complex domain models
- Debugging and analysis
- Compliance and regulation
## Quick Start
Minimal working example:
```typescript
interface DomainEvent {
id: string;
aggregateId: string;
aggregateType: string;
eventType: string;
data: any;
metadata: {
userId?: string;
timestamp: number;
version: number;
};
}
interface Aggregate {
id: string;
version: number;
}
class EventStore {
private events: DomainEvent[] = [];
async appendEvents(
aggregateId: string,
expectedVersion: number,
events: Omit<DomainEvent, "id" | "metadata">[],
// ... (see reference guides for full implementation)
```
## Reference Guides
Detailed implementations in the `references/` directory:
| Guide | Contents |
|---|---|
| [Event Store (TypeScript)](references/event-store-typescript.md) | Event Store (TypeScript) |
| [Projections (Read Models)](references/projections-read-models.md) | Projections (Read Models) |
| [Event Store with PostgreSQL](references/event-store-with-postgresql.md) | Event Store with PostgreSQL |
| [Snapshots for Performance](references/snapshots-for-performance.md) | Snapshots for Performance |
## Best Practices
### ✅ DO
- Store events immutably
- Version your events
- Use optimistic concurrency
- Create snapshots for performance
- Use projections for queries
- Keep events small and focused
- Include metadata (timestamp, user, etc.)
- Handle event versioning/migration
### ❌ DON'T
- Mutate past events
- Store current state only
- Skip concurrency checks
- Query event store for reads
- Make events too large
- Forget about event schema evolution
© aj-geddes · MIT · aj-geddes/useful-ai-prompts