Design and implement event stores for event-sourced systems. Use when building event sourcing infrastructure, choosing event store technologies, or implementing event persistence patterns.
82
59%
Does it follow best practices?
Impact
97%
1.15xAverage score across 6 eval scenarios
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./plugins/backend-development/skills/event-store-design/SKILL.mdPostgreSQL event store schema
Events table exists
100%
100%
UUID primary key with gen_random_uuid()
0%
100%
stream_type column
0%
100%
event_data as JSONB
100%
100%
metadata as JSONB with default
100%
100%
global_position as BIGSERIAL
75%
100%
Unique stream version constraint
100%
100%
Stream query index
100%
100%
Global position index
87%
100%
Snapshots table
100%
100%
Subscription checkpoints table
100%
100%
Stream ID naming guidance
22%
100%
Python asyncpg event store client
Uses asyncpg
100%
100%
Transaction wrapping
100%
100%
Optimistic concurrency check
100%
100%
Event ID for idempotency
100%
100%
Correlation/causation IDs in metadata
25%
75%
Stream ID with aggregate type
100%
100%
Subscription checkpoint persistence
100%
100%
Checkpoint upsert pattern
100%
100%
Backpressure / poll interval
100%
100%
read_stream ordered by version
100%
100%
read_all ordered by global_position
100%
100%
No update/delete of events
100%
100%
EventStoreDB client and technology selection
Uses esdbclient package
100%
100%
StreamState.ANY for unconditional append
100%
100%
StreamState.NO_STREAM for new streams
0%
100%
Category projection stream naming
100%
100%
current_version parameter used
100%
100%
NewEvent for constructing events
100%
100%
Data encoded as bytes
100%
100%
Technology selection rationale
100%
100%
Subscription or read implementation
100%
100%
No update or delete of events
100%
100%
Stream ID includes aggregate type
100%
100%
DynamoDB event store implementation
PK uses STREAM# prefix
0%
100%
SK uses VERSION# prefix with zero-padding
33%
100%
GSI for global ordering
66%
100%
GSI1PK set to constant 'EVENTS'
0%
100%
Uses batch_writer for appending
0%
0%
Optimistic concurrency via conditional write
100%
100%
read_stream uses KeyConditionExpression
100%
100%
Stream ID naming with aggregate type
62%
75%
Table definition provided
100%
100%
Uses boto3 DynamoDB resource
100%
100%
Event schema design and metadata best practices
Stream ID includes aggregate type
100%
100%
Correlation ID in metadata
100%
100%
Causation ID in metadata
100%
100%
Schema/event version field
100%
100%
Event ID for idempotency
100%
100%
Payload excludes large/derived data
100%
100%
No UPDATE/DELETE guidance
100%
100%
Concrete event examples in JSON
100%
100%
Metadata separate from payload
100%
100%
Event type naming
100%
100%
Timestamp field
100%
100%
Event store technology selection and comparison
DynamoDB for serverless team
100%
100%
PostgreSQL for existing stack team
100%
100%
Kafka for high-throughput team
100%
100%
Kafka per-stream query limitation
100%
100%
Comparison table present
100%
100%
EventStoreDB described as pure event sourcing
87%
100%
PostgreSQL manual implementation limitation
87%
100%
DynamoDB query limitations noted
100%
100%
Justification per recommendation
100%
100%
Marten mentioned
85%
100%
Technology output file
100%
100%
70444e5
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.