Design and implement event stores for event-sourced systems. Use when building event sourcing infrastructure, choosing event store technologies, or implementing event persistence patterns.
Install with Tessl CLI
npx tessl i github:Dicklesworthstone/pi_agent_rust --skill event-store-design80
Quality
70%
Does it follow best practices?
Impact
99%
1.15xAverage score across 3 eval scenarios
Optimize this skill with Tessl
npx tessl skill review --optimize ./tests/ext_conformance/artifacts/agents-wshobson/backend-development/skills/event-store-design/SKILL.mdPostgreSQL event store schema
Events table exists
100%
100%
UUID primary key with gen_random_uuid()
50%
100%
stream_type column
100%
100%
event_data as JSONB
62%
100%
metadata as JSONB with default
100%
100%
global_position as BIGSERIAL
87%
100%
Unique stream version constraint
100%
100%
Stream query index
100%
100%
Global position index
87%
100%
Snapshots table
70%
100%
Subscription checkpoints table
100%
100%
Stream ID naming guidance
44%
100%
Without context: $0.4488 · 2m 19s · 16 turns · 16 in / 8,029 out tokens
With context: $0.3808 · 1m 29s · 16 turns · 293 in / 4,016 out tokens
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
12%
87%
Stream ID with aggregate type
87%
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%
Without context: $0.3680 · 1m 54s · 12 turns · 12 in / 7,178 out tokens
With context: $0.5971 · 2m 22s · 25 turns · 87 in / 7,629 out tokens
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%
Without context: $0.4351 · 2m 32s · 15 turns · 16 in / 7,654 out tokens
With context: $0.4497 · 2m 3s · 16 turns · 310 in / 6,145 out tokens
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.