| name | ddd-check-incremental |
| description | Incremental DDD compliance check — scans only changed/new Java files in git diff and validates against DDD layer rules. Use before every commit. |
| model | claude-sonnet-4-20250514 |
| allowed-tools | Read, Grep, Glob, Bash |
| user-invocable | true |
DDD Incremental Compliance Check
Check only new or modified Java files against DDD layer rules. Fast, pre-commit focused.
Trigger
Run when user says "check my changes", "DDD check", "review this code", or before committing.
Workflow
Step 1: Find Changed Files
git diff --cached --name-only --diff-filter=ACMR | grep '\.java$'
git diff --name-only --diff-filter=ACMR | grep '\.java$'
git diff HEAD --name-only --diff-filter=ACMR | grep '\.java$'
If no Java files changed, report: "No Java files changed — nothing to check."
Step 2: Classify Each File by Layer
Map file path to DDD layer:
| Package Pattern | Layer | Rule File |
|---|
**/ddd/common/** | Common | (structural rules only) |
**/ddd/domain/** | Domain | rules/domain-layer.md |
**/ddd/application/** | Application | rules/application-layer.md |
**/ddd/adaptor/** | Adaptor | rules/adaptor-layer.md |
**/ddd/infrastructure/** | Infrastructure | rules/infrastructure-layer.md |
**/ddd/client/** | Client | rules/client-layer.md |
**/ddd/model/** | Model | rules/model-layer.md |
Step 3: Read Relevant Rule Files
Load only the rule files matching the changed layers. Plus always load rules/anti-patterns.md.
Step 4: Check Each Changed File
For each changed file, read it and validate against:
- Structural rules — correct base class, correct package, correct naming
- Dependency rules — no forbidden imports (e.g. domain must not import infrastructure)
- Anti-patterns — cross-check against
rules/anti-patterns.md
Step 5: Report
Format output as:
## DDD Check: {branch} → {n} files changed
### {FilePath}.java — {Layer}
🔴 CRITICAL: {problem}. {fix}.
🟡 HIGH: {problem}. {fix}.
### Summary
- {n} files checked
- {x} violations (C: {a}, H: {b}, M: {c}, L: {d})
Severity
| Level | Criteria |
|---|
| CRITICAL | Architecture violation — wrong layer dependency, missing base class, domain depends on infrastructure |
| HIGH | Rule violation — wrong naming, public setter on aggregate, wrong exception mode |
| MEDIUM | Convention deviation — missing JavaDoc, wrong file location |
| LOW | Style suggestion |
Key Checks
Domain Layer (MOST CRITICAL):
Application Layer:
Infrastructure Layer:
Client Layer:
Important
- Do NOT check unchanged files — incremental only
- Reference the specific rule section when flagging violations (e.g. "rules/domain-layer.md Section A.3")
- Suggest the exact fix, not just the problem
- If a violation is intentional, note it but don't flag as CRITICAL
- Only report real problems — don't report "looks good" for files with zero issues