CtrlK
BlogDocsLog inGet started
Tessl Logo

projection-patterns

Build read models and projections from event streams. Use when implementing CQRS read sides, building materialized views, or optimizing query performance in event-sourced systems.

85

1.59x
Quality

66%

Does it follow best practices?

Impact

97%

1.59x

Average score across 6 eval scenarios

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

npx tessl skill review --optimize ./plugins/backend-development/skills/projection-patterns/SKILL.md
SKILL.md
Quality
Evals
Security

Evaluation results

100%

56%

Library Checkout Read Model

Core projection class structure

Criteria
Without context
With context

Event dataclass

83%

100%

stream_id field

0%

100%

global_position field

0%

100%

version field

0%

100%

Projection ABC

100%

100%

Abstract name property

0%

100%

Abstract handles method

0%

100%

Abstract apply method

0%

100%

asyncpg Pool usage

0%

100%

Pool acquire pattern

0%

100%

Handler dispatch dict

100%

100%

Denormalized table

100%

100%

Three event types handled

100%

100%

Separate handler methods

100%

100%

100%

52%

Resilient Event Projection Runner

Projector checkpointing and rebuild

Criteria
Without context
With context

Projector constructor

100%

100%

Projections list

0%

100%

Register method

33%

100%

Polling interval

0%

100%

Default batch size 100

100%

100%

Rebuild batch size 1000

0%

100%

Checkpoint default to 0

100%

100%

Checkpoint save per event

0%

100%

Saves global_position

0%

100%

Rebuild deletes checkpoint

100%

100%

Rebuild uses projection name

42%

100%

Handles unregistered types

100%

100%

84%

15%

SaaS Usage Analytics Projections

Aggregating upserts and multi-table transactions

Criteria
Without context
With context

ON CONFLICT upsert

100%

100%

Incremental counter update

100%

100%

Transaction for multi-table

58%

100%

Both tables in transaction

100%

100%

asyncpg Pool pattern

0%

100%

Idempotent daily upsert

100%

100%

Handler dispatch dict

0%

0%

Error handling present

25%

0%

Date extraction for daily key

50%

100%

Separate projection classes

100%

100%

Implementation notes file

100%

100%

100%

40%

Product Catalog Search Service

Elasticsearch search projection

Criteria
Without context
With context

AsyncElasticsearch import

0%

100%

AsyncElasticsearch constructor param

0%

100%

Index attribute

100%

100%

Projection ABC inheritance

50%

100%

handles() returns product events

0%

100%

es.index() for creation

100%

100%

es.update() for ProductUpdated

100%

100%

es.update() for price change

100%

100%

es.delete() for removal

100%

100%

Async apply method

0%

100%

design_notes mentions client

71%

100%

design_notes maps operations

100%

100%

100%

32%

Multi-View Read Model for a SaaS Subscription Platform

Independent projections and denormalized read models

Criteria
Without context
With context

Three separate classes

100%

100%

No cross-projection references

100%

100%

Projection ABC inheritance

0%

100%

asyncpg Pool pattern

0%

100%

Denormalized user profile

100%

100%

ON CONFLICT upsert for daily metrics

100%

100%

Date slice for daily key

0%

100%

Incremental counter in upsert

100%

100%

Support ticket schema

100%

100%

Handler dispatch dict

0%

100%

architecture_notes mentions independence

100%

100%

architecture_notes mentions denormalization

100%

100%

100%

19%

Production-Ready Projector with Observability

Projection lag monitoring and error resilience

Criteria
Without context
With context

Projector constructor args

40%

100%

Polling interval 0.1s

0%

100%

Lag calculation present

100%

100%

Lag warning logged

100%

100%

Configurable lag threshold

100%

100%

Exception catch in run loop

100%

100%

Error log with context

100%

100%

Checkpoint default to 0

100%

100%

Checkpoint save per event

62%

100%

global_position for checkpoint

25%

100%

observability_notes covers ordering

100%

100%

observability_notes covers lag detection

100%

100%

Repository
wshobson/agents
Evaluated
Agent
Claude Code
Model
Claude Sonnet 4.6

Table of Contents

Is this your skill?

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.