复制安装命令
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
Domain Model as a Service
用 Codex 或 Claude 安装复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它先审查 Skill 页面再帮你安装。
复制前请先查看来源、License 和安全提示。
来源文件:README.md
Domain Model as a Service
Modern Reactive CQRS Architecture Microservice Development Framework
Based on DDD & Event Sourcing
Domain-Driven · Event-Driven · Test-Driven · Declarative Design · Reactive · CQRS · Event Sourcing
Wow received the KaiCode’26 Excellent Award. The official results highlighted its modular DDD/CQRS design, disciplined multi-reviewer code review, Testcontainers-based integration testing, enforced test coverage thresholds, Detekt static analysis, bilingual documentation, and long history of semantically versioned releases on Maven Central.
Click the button above to create a new repository from Wow Project Template, then clone it and start writing your domain model.
Wow 8.x supports Spring Boot 4.x, Java 17+
Wow 6.x supports Spring Boot 3.x, Java 17+
As business complexity grows, traditional CRUD architectures hit bottlenecks — tangled database schemas, painful sharding, and fragile distributed transactions. Domain-Driven Design and Event Sourcing address these problems, but often come with steep learning curves and implementation overhead.
Wow was built to change that. After years of production validation, it distills DDD + ES into a developer-friendly framework where you focus on the domain model, and Wow handles the rest.
For developers:
PROJECTED signal instead of guessing sync delays; no more "wait 1 second and refresh"For enterprises:

| Feature | Description |
|---|---|
| Domain Model as a Service | Just write the domain model, Wow auto-generates OpenAPI interfaces — no controller boilerplate needed |
| Test Suite | Given→When→Expect pattern (AggregateSpec / SagaSpec), 80%+ coverage made easy |
| High Performance | AppendOnly writes to event store, query-oriented search engines for reads — 59k+ TPS in stress tests |
| Horizontal Scalability | No sharding rules needed, business code unchanged when scaling out |
| Distributed Transactions | Saga orchestration pattern for carefully managed multi-service transactions |
| Event Compensation | Visual dashboard + automatic retry with configurable RetrySpec for eventual consistency |
| Read-Write Separation | SENT / PROCESSED / PROJECTED wait plans eliminate sync-delay guesswork |
| Observability | End-to-end OpenTelemetry integration for tracing, metrics, and debugging |
| Reactive | Non-blocking async messaging with Project Reactor throughout the entire stack |
| Event Sourcing | Full state history via event replay, enabling powerful audit and time-travel debugging |
| Business Intelligence | Rich event-sourced data with real-time sync to data warehouses, minimal ETL cost |
Stress test of the example application (2 min):
| Operation | Wait Plan | Avg TPS | Peak TPS | Avg Latency |
|---|---|---|---|---|
| Add To Cart | SENT | 59,625 | 82,312 | 29 ms |
| Add To Cart | PROCESSED | 18,696 | 24,141 | 239 ms |
| Create Order | SENT | 47,838 | 86,200 | 217 ms |
| Create Order | PROCESSED | 18,230 | 25,506 | 268 ms |
Given → When → Expect

AggregateVerifier)class CartSpec : AggregateSpec<Cart, CartState>({
on {
whenCommand(AddCartItem(productId = "productId", quantity = 1)) {
expectNoError()
expectEventType(CartItemAdded::class)
expectState {
items.assert().hasSize(1)
}
}
}
})
SagaVerifier)class CartSagaSpec : SagaSpec<CartSaga>({
on {
whenEvent(event = mockk<OrderCreated> {
every { items } returns listOf(orderItem)
every { fromCart } returns true
}, ownerId = ownerId) {
expectCommandType(RemoveCartItem::class)
}
}
})
| Single Class | Inheritance | Aggregation |
|---|---|---|
Load Aggregate
Aggregate State Flow
Send Command
Observability




| Project | Description |
|---|---|
| CosId | Universal, flexible, high-performance distributed ID generator |
| CoSec | Multi-tenant reactive security framework based on RBAC and policies |
| CoCache | Distributed consistent secondary cache framework |
| Simba | Easy-to-use, flexible distributed lock service |
| CoSky | High-performance, low-cost microservice governance platform |
| CoApi | Zero-boilerplate HTTP client auto-configuration for Spring 6 |
| FluentAssert | Kotlin fluent assertion library for readable and expressive tests |
| Example | Language | Description |
|---|---|---|
| Order Service | Kotlin | Aggregates, sagas, projections — full DDD demo |
| Bank Transfer | Java | Simple event sourcing demo |
Wow is released under the Apache 2.0 License.
name: wow
description: |
Wow framework assistant for building reactive DDD + Event Sourcing + CQRS microservices in Kotlin/Java on JVM 17+ with Spring Boot.
Use this skill when a task involves Wow framework semantics:
- DDD aggregates, command/event/state modeling, bounded contexts, tenant/owner routing
- CQRS, Event Sourcing, event stores, snapshots, projections, read models
- Saga orchestration, event processors, retry policy, PrepareKey
- Command gateway, wait plans, command bus, WebFlux command endpoints
- Wow tests: AggregateSpec, SagaSpec, AggregateVerifier, SagaVerifier
- Wow annotations such as @AggregateRoot, @OnCommand, @OnSourcing, @OnEvent, @StatelessSaga, @ProjectionProcessor, @EventProcessor, @AfterCommand, @OnError, @Retry, @BoundedContext, @CreateAggregate, @CommandRoute
Do not trigger for unrelated Kotlin, Gradle, frontend, or documentation tasks unless Wow framework behavior or APIs are directly relevant.
compatibility: Kotlin 2.3, JVM 17+, Spring Boot 4.x, Gradle, MongoDB, Kafka, ReactorUse this as the router for Wow framework work. For end-to-end aggregate or saga development, route to ../wow-development-workflow/SKILL.md. For focused lookup, load the smallest reference file that matches the task, then verify exact APIs in the current checkout before editing code.
Before writing or changing Wow code, verify the current implementation with rg, rg --files, and nearby source files. Examples in this skill and its references are navigation aids, not a substitute for the target repository's APIs.
Useful first searches:
rg -n "@AggregateRoot|@OnCommand|@OnSourcing|@StatelessSaga|@ProjectionProcessor" . -g "*.kt"
rg -n "AggregateSpec<|SagaSpec<|aggregateVerifier|sagaVerifier" . -g "*.kt"
rg -n "@ConfigurationProperties|class .*Properties" wow-spring-boot-starter -g "*.kt"
| User Task | Load |
|---|---|
| Develop, complete, restructure, or enhance aggregate or saga behavior end-to-end | ../wow-development-workflow/SKILL.md |
| Model or change aggregate, command, event, state, bounded context, lifecycle | references/modeling.md, then references/annotations.md |
| Add or update annotations | references/annotations.md |
| Write AggregateSpec, SagaSpec, verifier, lifecycle tests, FluentAssert assertions | references/testing.md |
| Build saga orchestration or cross-aggregate process behavior | ../wow-development-workflow/SKILL.md, then references/annotations.md and references/testing.md |
| Build projection or event processor behavior | references/annotations.md, then references/testing.md |
| Use command gateway, wait plan, wait chain, idempotency, HTTP wait headers | references/command-gateway.md |
| Write Query DSL, pagination, projection, sort, query service calls | references/dsl.md |
| Configure Spring Boot starter, storage, buses, feature switches | references/configuration.md |
| Implement uniqueness or reservation with PrepareKey | references/prepare-key.md |
| Review Wow code, PR diffs, framework semantics, or test coverage | ../wow-code-review/SKILL.md |
| Debug failing commands, events, sourcing, sagas, projections, waits, queries, config, or tests | ../wow-debugging/SKILL.md |
Wow applications normally separate command handling from state mutation:
Command -> Command Aggregate -> Event -> EventStore -> EventBus
-> State Aggregate sourcing
-> Projection / Saga / EventProcessor
Prefer the Aggregate Pattern: command aggregate handles commands and returns events; state aggregate mutates only through sourcing handlers. Avoid direct state mutation in command handlers.
Before finishing Wow code changes, check:
@Summary and @Description metadata when they are part of the API/domain contract.<FieldName>Capable interfaces where reuse improves clarity.Any or multiple event types declare explicit return metadata when the current API requires it.AggregateSpec; saga orchestration is tested with SagaSpec.me.ahoo.test.asserts.assert / .assert().settings.gradle.kts, not hard-coded api or domain placeholders.| Reference | When to Use |
|---|---|
references/modeling.md | Aggregate pattern, bounded context, lifecycle, routing, state rebuild |
references/annotations.md | Annotation parameters and handler conventions |
references/testing.md | AggregateSpec, SagaSpec, verifier APIs, fork/ref, FluentAssert |
references/command-gateway.md | Wait plans, idempotency, LocalFirst, command rewriter, HTTP headers |
references/dsl.md | Query DSL operators, pagination, sort, projection, query execution |
references/configuration.md | Spring Boot starter configuration and feature switches |
references/prepare-key.md | PrepareKey uniqueness/reservation workflows |
Run the skill lint before finishing changes to this skill set:
python3 scripts/skill_lint.py
评论 (0)
暂无评论,成为第一个评论者吧!