Help us improve
Share bugs, ideas, or general feedback.
npx claudepluginhub naporin0624/claude-plugin-hono-electron --plugin hono-electron-ipcHow this skill is triggered — by the user, by Claude, or both
Slash command
/hono-electron-ipc:skills/cqrs-patternThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
---
Designs and implements CQRS patterns for scalable systems, covering logical separation, separate read models, event-sourced CQRS, and query optimization.
Guides implementing CQRS pattern with TypeScript: separate read/write models, command handlers with Prisma, denormalized read models for complex queries.
Guides implementing CQRS to separate read and write models, optimize query performance, and build event-sourced systems.
Share bugs, ideas, or general feedback.
| Aspect | Query (Read) | Command (Write) |
|---|---|---|
| Return Type | Observable<T> | ResultAsync<void, Error> |
| Side Effects | None | Database writes, notifications |
| Topic | File |
|---|---|
| Service interface design | SERVICE-INTERFACE.md |
| Observable patterns | OBSERVABLE-PATTERN.md |
| Result types | RESULT-TYPES.md |
| Main process subscription | MAIN-PROCESS-SUBSCRIPTION.md |
interface UserService {
// Queries → Observable
list(): Observable<User[]>;
get(id: string): Observable<User | undefined>;
// Commands → ResultAsync
create(data: CreateUserData): ResultAsync<void, ApplicationError>;
}
Use BehaviorSubject to bridge: commands trigger #notify.next(), queries subscribe to it.