Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/all-anchors.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ include::anchors/user-story-mapping.adoc[leveloffset=+2]

include::anchors/adr-according-to-nygard.adoc[leveloffset=+2]

include::anchors/cqrs.adoc[leveloffset=+2]

include::anchors/arc42.adoc[leveloffset=+2]

include::anchors/atam.adoc[leveloffset=+2]
Expand Down
49 changes: 49 additions & 0 deletions docs/anchors/cqrs.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
= CQRS (Command Query Responsibility Segregation)
:categories: software-architecture
:roles: software-architect, software-developer
Comment on lines +2 to +3
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Metadaten bitte auf die erlaubten Kanon-Werte umstellen.

:categories: und :roles: verwenden hier Slugs statt der im Repo vorgegebenen Bezeichnungen. Damit fällt der Anchor aus dem einheitlichen Metadaten-Schema.

Vorgeschlagene Anpassung
-:categories: software-architecture
-:roles: software-architect, software-developer
+:categories: Architecture & Design
+:roles: Software Architect, Software Developer/Engineer

As per coding guidelines, docs/anchors/*.adoc: Use categories (comma-separated in :categories: attribute) from the 10 defined categories … and use roles (comma-separated in :roles: attribute) from the 12 defined professional roles.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
:categories: software-architecture
:roles: software-architect, software-developer
:categories: Architecture & Design
:roles: Software Architect, Software Developer/Engineer
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/anchors/cqrs.adoc` around lines 2 - 3, Die Metadaten in
docs/anchors/cqrs.adoc verwenden nicht die vorgegebenen Kanon-Werte: ersetze die
aktuellen Slug-Werte in den Attributen :categories: und :roles: durch die
erlaubten, komma-separierten Kanon-Namen aus dem Projektstandard (verwende genau
eine oder mehrere der 10 definierten Kategorien im :categories:-Feld und eine
oder mehrere der 12 definierten Rollen im :roles:-Feld), prüfe und korrigiere
die Schreibweise/Groß-/Kleinschreibung so sie exakt mit den definierten Werten
übereinstimmt und behalte die vorhandene Attribut-Syntax unverändert (z. B.
aktualisiere die Zeilen mit :categories: und :roles: im Header von cqrs.adoc).

:proponents: Greg Young, Bertrand Meyer, Udi Dahan
:related: domain-driven-design, hexagonal-architecture, fowler-patterns
:tags: cqrs, cqs, architecture, commands, queries, read-write-separation

[%collapsible]
====
Also known as:: CQS at architectural scale

[discrete]
== *Core Concepts*:

Command Query Separation (CQS):: Bertrand Meyer's principle — methods either change state (commands) or return data (queries), never both

Commands:: Write operations that change state and return void; represent intent as immutable command objects

Queries:: Read operations that return data with no side effects; safe to retry and cache

Separate read/write models:: Independent data models optimized for their respective purpose

Eventual consistency:: Read model may lag behind write model; acceptable trade-off for scalability

Event-based synchronization:: Domain events propagate changes from write side to read side projections

Independent scalability:: Read and write sides can be scaled, deployed, and optimized independently

Event sourcing optional:: CQRS does not require event sourcing; the patterns are complementary but independent


Key Proponents:: Greg Young (coined CQRS), Bertrand Meyer (CQS origin, "Object-Oriented Software Construction", 1988), Udi Dahan

[discrete]
== *When to Use*:

* Systems with asymmetric read/write workloads
* Complex domains where read and write models diverge significantly
* Event-sourced systems requiring materialized views
* High-performance systems needing independent scaling of reads and writes
* Collaborative domains with task-based UIs

[discrete]
== *Related Anchors*:

* <<domain-driven-design,Domain-Driven Design>> - Often combined with CQRS for complex domains
* <<hexagonal-architecture,Hexagonal Architecture>> - Ports and adapters complement CQRS separation
* <<fowler-patterns,Fowler Patterns>> - CQRS builds on enterprise application patterns
Comment on lines +46 to +48
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Die Related-Links zeigen auf vermutlich nicht existente Anchor-IDs.

<<domain-driven-design,...>>, <<hexagonal-architecture,...>> und <<fowler-patterns,...>> referenzieren IDs, die in den verknüpften Dateien laut den bereitgestellten Snippets nicht explizit definiert sind. So brechen die internen Links leicht. Entweder die Ziel-Dateien mit [[...]]-IDs versehen oder hier auf die tatsächlich vorhandenen IDs verlinken.

As per coding guidelines, **/*.adoc: Create internal links in AsciiDoc using anchor IDs with [[anchor-id]] before section headers and links using <<anchor-id,Link Text>> syntax.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/anchors/cqrs.adoc` around lines 46 - 48, Die internen AsciiDoc-Links
`<<domain-driven-design,Domain-Driven Design>>`,
`<<hexagonal-architecture,Hexagonal Architecture>>` und
`<<fowler-patterns,Fowler Patterns>>` verweisen auf Anchor-IDs, die offenbar in
den Zieldateien fehlen; fix das, indem du entweder in den jeweiligen Ziel-Docs
die entsprechenden Anchors `[[domain-driven-design]]`,
`[[hexagonal-architecture]]` und `[[fowler-patterns]]` direkt vor den
zugehörigen Abschnittsüberschriften einfügst, oder passe die Links hier an die
tatsächlich vorhandenen Anchor-IDs in den Zieldateien an so dass
`<<anchor-id,Link Text>>` auf existierende `[[anchor-id]]` verweist.

====
4 changes: 4 additions & 0 deletions skill/semantic-anchor-translator/references/catalog.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ Source: https://github.com/LLM-Coding/Semantic-Anchors
- **Proponents:** Gernot Starke, Peter Hruschka
- **Core:** 12-section template for documenting software architecture

### CQRS (Command Query Responsibility Segregation)
- **Proponents:** Greg Young, Bertrand Meyer, Udi Dahan
- **Core:** Separate read/write models, commands return void, queries return data with no side effects, independent scalability

### C4-Diagrams
- **Core:** Context, Container, Component, Code — 4 zoom levels

Expand Down
Loading