New to Claude Skills? Learn how to install them →

wshobson on GitHub

CQRS Implementation

Free

Master Command Query Responsibility Segregation patterns.

Get this skill

Free · Opens the source repo

What CQRS Implementation does

The CQRS Implementation skill provides a comprehensive guide for developers looking to adopt the Command Query Responsibility Segregation (CQRS) architectural pattern. This pattern is particularly useful when there is a need to separate read and write operations in a system, allowing for independent scaling of these operations. By implementing CQRS, teams can optimize query performance and manage complex data models more effectively. This skill is ideal for those building event-sourced systems or working on applications with high-performance reporting requirements.

The guide outlines the core components of CQRS, including commands, queries, command handlers, query handlers, and events. It emphasizes the importance of separating command and query models to address different needs and ensuring that the architecture can evolve independently. The skill also provides best practices for implementing CQRS, such as using eventual consistency and validating commands before state changes. These practices help prevent common pitfalls and promote a robust architecture.

Included within this skill are templates and detailed worked examples that can assist developers in applying CQRS principles to their projects. The references/details.md file serves as a valuable resource for concrete implementations, making it easier for users to get started with CQRS without having to reinvent the wheel. This skill is particularly beneficial for software architects, backend developers, and teams working on large-scale systems where performance and maintainability are critical.

When to use it

Use this skill when you need to separate read and write operations in your application, especially for scalable architectures or event-sourced systems.

When not to use it

This skill may not be suitable for simple applications where the overhead of CQRS does not justify the benefits, or when immediate consistency is a strict requirement.

What you can build with it

Scaling an E-commerce Application

Implement CQRS to manage high traffic during sales events, ensuring that read operations for product listings do not impact write operations for inventory management.

Building a Reporting Dashboard

Use CQRS to optimize complex queries for a reporting dashboard, allowing for efficient data retrieval without slowing down transaction processing.

Developing an Event-Sourced System

Adopt CQRS while building an event-sourced application to clearly separate the command side from the query side, enhancing maintainability and performance.

How to install CQRS Implementation

View source

1. Install with the skills CLI

npx skills add wshobson/agents/cqrs-implementation --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by wshobson

CQRS Implementation

Comprehensive guide to implementing CQRS (Command Query Responsibility Segregation) patterns.

When to Use This Skill

  • Separating read and write concerns
  • Scaling reads independently from writes
  • Building event-sourced systems
  • Optimizing complex query scenarios
  • Different read/write data models needed
  • High-performance reporting requirements

Core Concepts

1. CQRS Architecture

                    ┌─────────────┐
                    │   Client    │
                    └──────┬──────┘
                           │
              ┌────────────┴────────────┐
              │                         │
              ▼                         ▼
       ┌─────────────┐          ┌─────────────┐
       │  Commands   │          │   Queries   │
       │    API      │          │    API      │
       └──────┬──────┘          └──────┬──────┘
              │                         │
              ▼                         ▼
       ┌─────────────┐          ┌─────────────┐
       │  Command    │          │   Query     │
       │  Handlers   │          │  Handlers   │
       └──────┬──────┘          └──────┬──────┘
              │                         │
              ▼                         ▼
       ┌─────────────┐          ┌─────────────┐
       │   Write     │─────────►│    Read     │
       │   Model     │  Events  │   Model     │
       └─────────────┘          └─────────────┘

2. Key Components

ComponentResponsibility
CommandIntent to change state
Command HandlerValidates and executes commands
EventRecord of state change
QueryRequest for data
Query HandlerRetrieves data from read model
ProjectorUpdates read model from events

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

  • Separate command and query models - Different needs
  • Use eventual consistency - Accept propagation delay
  • Validate in command handlers - Before state change
  • Denormalize read models - Optimize for queries
  • Version your events - For schema evolution

Don'ts

  • Don't query in commands - Use only for writes
  • Don't couple read/write schemas - Independent evolution
  • Don't over-engineer - Start simple
  • Don't ignore consistency SLAs - Define acceptable lag

Frequently asked questions about CQRS Implementation

Similar skills