acc-check-bounded-contexts
Analyzes bounded context boundaries in DDD projects. Detects cross-context coupling, shared kernel violations, context mapping issues, and ubiquitous language inconsistencies. Generates context map diagrams and boundary recommendations.
Best use case
acc-check-bounded-contexts is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Analyzes bounded context boundaries in DDD projects. Detects cross-context coupling, shared kernel violations, context mapping issues, and ubiquitous language inconsistencies. Generates context map diagrams and boundary recommendations.
Teams using acc-check-bounded-contexts should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/acc-check-bounded-contexts/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How acc-check-bounded-contexts Compares
| Feature / Agent | acc-check-bounded-contexts | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Analyzes bounded context boundaries in DDD projects. Detects cross-context coupling, shared kernel violations, context mapping issues, and ubiquitous language inconsistencies. Generates context map diagrams and boundary recommendations.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Bounded Contexts Analyzer
## Overview
This skill analyzes PHP DDD projects for bounded context boundary issues, cross-context coupling, and context mapping violations.
## Bounded Context Concepts
| Concept | Definition | Violation Indicator |
|---------|------------|---------------------|
| Bounded Context | Explicit boundary with its own domain model | Missing namespace separation |
| Ubiquitous Language | Consistent terminology within context | Same term, different meanings |
| Context Map | Relationships between contexts | Unclear dependencies |
| Anti-Corruption Layer | Translation between contexts | Direct foreign model usage |
| Shared Kernel | Deliberately shared code | Unintentional sharing |
| Published Language | Public API contracts | Breaking changes |
## Detection Patterns
### Phase 1: Context Discovery
```bash
# Identify bounded contexts from directory structure
Glob: **/src/**/Domain/*
Glob: **/src/**/Context/*
Glob: **/src/**/Bounded/*
Glob: **/src/**/Module/*
# Namespace-based contexts
Grep: "namespace.*\\\\Domain\\\\|namespace.*\\\\Context\\\\" --glob "**/*.php"
# Composer autoload namespaces
Read: composer.json (check autoload paths for context namespaces)
```
**Context Indicators:**
- Top-level namespace under `src/` (e.g., `Order`, `User`, `Payment`)
- Explicit `Domain/` subfolder per context
- `BoundedContext/` or `Context/` folder structure
### Phase 2: Cross-Context Coupling Detection
#### Direct Cross-Context Imports
```bash
# Find cross-context imports (most critical)
# Pattern: Context A importing from Context B's Domain layer
# Order context importing User domain
Grep: "use Order\\\\.*\\\\Domain" --glob "**/User/**/*.php"
Grep: "use User\\\\.*\\\\Domain" --glob "**/Order/**/*.php"
# General pattern: Domain layer importing another Domain
Grep: "use [A-Z][a-z]+\\\\Domain\\\\" --glob "**/Domain/**/*.php"
# Direct entity references across contexts
Grep: "use.*\\\\Entity\\\\(?!.*\\\\self)" --glob "**/Domain/**/*.php"
```
#### Foreign Aggregate References
```bash
# Aggregates referencing foreign entities directly
Grep: "private.*[A-Z][a-z]+Entity\|private readonly [A-Z][a-z]+" --glob "**/Aggregate/**/*.php"
# Should use ID references only
# Good: private UserId $userId
# Bad: private User $user (from another context)
# Detect direct object references vs ID references
Grep: "\\$user[^I]|\\$order[^I]|\\$customer[^I]" --glob "**/Domain/**/*.php"
```
#### Shared Repository Usage
```bash
# Repository from one context used in another
Grep: "UserRepositoryInterface" --glob "**/Order/**/*.php"
Grep: "OrderRepositoryInterface" --glob "**/User/**/*.php"
# Generic repository pattern violations
Grep: "RepositoryInterface" --glob "**/*.php"
# Check if implementations span contexts
```
### Phase 3: Shared Kernel Analysis
```bash
# Identify potential shared kernel (common code between contexts)
Glob: **/Shared/**/*.php
Glob: **/Common/**/*.php
Glob: **/Core/**/*.php
Glob: **/SharedKernel/**/*.php
# Find duplicated Value Objects across contexts
# Same class name in multiple contexts
Glob: **/Domain/**/Email.php
Glob: **/Domain/**/Money.php
Glob: **/Domain/**/Address.php
# Shared events
Grep: "class.*Event.*implements|extends.*Event" --glob "**/Shared/**/*.php"
```
**Shared Kernel Rules:**
- Must be explicitly designated
- Minimal and stable
- Changes require agreement from all context owners
- Should contain only Value Objects, not Entities
### Phase 4: Context Map Relationships
#### Upstream/Downstream Detection
```bash
# Event publishers (upstream)
Grep: "EventDispatcher|MessageBus|publish\(" --glob "**/Domain/**/*.php"
Grep: "class.*Event\s*\{|final readonly class.*Event" --glob "**/Domain/**/*.php"
# Event subscribers (downstream)
Grep: "EventSubscriber|MessageHandler|Listener" --glob "**/*.php"
Grep: "function __invoke\(.*Event" --glob "**/*.php"
# Check which context publishes and which subscribes
```
#### Customer/Supplier Relationships
```bash
# API clients (customer role)
Grep: "ApiClient|HttpClient|RestClient" --glob "**/Infrastructure/**/*.php"
# API providers (supplier role)
Grep: "Controller|Action|Endpoint" --glob "**/Presentation/**/*.php"
```
#### Anti-Corruption Layer Detection
```bash
# ACL presence
Glob: **/AntiCorruption/**/*.php
Glob: **/ACL/**/*.php
Glob: **/Adapter/**/*.php
Glob: **/Translator/**/*.php
# Missing ACL (direct external model usage)
Grep: "use External\\\\|use ThirdParty\\\\|use Legacy\\\\" --glob "**/Domain/**/*.php"
```
### Phase 5: Ubiquitous Language Analysis
```bash
# Find same term with different meanings
# Example: "Account" in User context vs Payment context
# Find class with same name in different contexts
Glob: **/User/**/Account.php
Glob: **/Payment/**/Account.php
Glob: **/Billing/**/Account.php
# Find similar entity names
Glob: **/Domain/**/User.php
Glob: **/Domain/**/Customer.php
Glob: **/Domain/**/Client.php
# Inconsistent naming
Grep: "class Order|class Purchase|class Sale" --glob "**/Domain/**/*.php"
```
## Report Format
```markdown
# Bounded Context Analysis Report
## Context Map
```mermaid
graph TB
subgraph "Order Context"
O_Domain[Domain]
O_App[Application]
end
subgraph "User Context"
U_Domain[Domain]
U_App[Application]
end
subgraph "Payment Context"
P_Domain[Domain]
P_App[Application]
end
subgraph "Shared Kernel"
SK[Money, Currency]
end
O_Domain -->|"uses ID only"| U_Domain
O_Domain -->|"publishes events"| P_Domain
O_Domain --> SK
U_Domain --> SK
P_Domain --> SK
```
## Detected Contexts
| Context | Location | Entities | Events | Dependencies |
|---------|----------|----------|--------|--------------|
| Order | `src/Order/` | 5 | 8 | User (ID), Payment (event) |
| User | `src/User/` | 3 | 4 | None |
| Payment | `src/Payment/` | 4 | 6 | Order (event) |
| Shared | `src/Shared/` | 0 | 0 | All contexts |
## Critical Issues
### BC-001: Cross-Context Entity Reference
- **File:** `src/Order/Domain/Entity/Order.php:15`
- **Issue:** Direct reference to User entity instead of UserId
- **Code:** `private User $user` (from User context)
- **Expected:** `private UserId $userId`
- **Impact:** Tight coupling, breaks context isolation
- **Refactoring:** Replace with ID reference, use ACL if needed
- **Skills:** `acc-create-value-object` (for UserId), `acc-create-anti-corruption-layer`
### BC-002: Missing Anti-Corruption Layer
- **File:** `src/Payment/Infrastructure/Gateway/StripeGateway.php`
- **Issue:** Stripe models used directly in domain
- **Code:** `use Stripe\PaymentIntent;`
- **Impact:** External API changes affect domain
- **Refactoring:** Create PaymentIntent adapter/translator
- **Skills:** `acc-create-anti-corruption-layer`
### BC-003: Unintended Shared Kernel
- **Files:**
- `src/Order/Domain/ValueObject/Address.php`
- `src/User/Domain/ValueObject/Address.php`
- **Issue:** Duplicated Address VO without explicit sharing
- **Impact:** Inconsistent behavior, maintenance burden
- **Refactoring:** Either consolidate to Shared Kernel or differentiate
- **Skills:** `acc-create-value-object`
## Warning Issues
### BC-004: Ambiguous Ubiquitous Language
- **Context 1:** `src/User/` uses `Account` for user profile
- **Context 2:** `src/Payment/` uses `Account` for financial account
- **Issue:** Same term, different meanings
- **Refactoring:** Rename to `UserProfile` and `PaymentAccount`
### BC-005: Missing Published Language
- **Context:** Order
- **Issue:** No explicit contract for inter-context communication
- **Events published:** 8
- **Documented:** 0
- **Refactoring:** Create event schema documentation
### BC-006: Upstream Without Events
- **Context:** User (upstream)
- **Downstream:** Order, Payment (via direct queries)
- **Issue:** Downstream contexts query User directly
- **Refactoring:** User should publish events, downstreams react
## Context Relationship Matrix
| From \ To | Order | User | Payment | Shared |
|-----------|-------|------|---------|--------|
| Order | - | ID ref | Events | Uses |
| User | - | - | - | Uses |
| Payment | Queries | Queries | - | Uses |
| Shared | - | - | - | - |
**Legend:**
- ID ref: References only by ID (good)
- Events: Async event communication (good)
- Queries: Direct query (warning)
- Uses: Shared kernel usage (acceptable)
## Recommendations
### Immediate Actions
1. Replace direct entity references with ID Value Objects
2. Add ACL for external service integrations
### Short-term
3. Document published language (event contracts)
4. Consolidate or differentiate duplicated VOs
### Long-term
5. Consider event-driven communication between contexts
6. Review shared kernel scope
```
## Context Integration Patterns
### Recommended Patterns
| Pattern | When to Use | Skills |
|---------|-------------|--------|
| ID Reference | Entity association across contexts | `acc-create-value-object` |
| Domain Events | Async communication | `acc-create-domain-event` |
| ACL | External systems, legacy | `acc-create-anti-corruption-layer` |
| Shared Kernel | Common VOs (Money, etc.) | `acc-create-value-object` |
| Published Language | Public contracts | Documentation |
### Anti-patterns
| Anti-pattern | Issue | Remediation |
|--------------|-------|-------------|
| Direct Entity Reference | Tight coupling | Use ID + resolve via query |
| Shared Entities | Ownership unclear | Split or explicit ownership |
| Cross-Context Repository | Boundary violation | Use events or ACL |
| Synchronous Cross-Context Calls | Temporal coupling | Use async events |
## Quick Analysis Commands
```bash
# Detect bounded contexts
echo "=== Bounded Contexts ===" && \
find src -maxdepth 2 -type d -name "Domain" && \
echo "=== Cross-Context Imports ===" && \
for ctx in $(find src -maxdepth 1 -type d | tail -n +2); do \
name=$(basename $ctx); \
grep -rn "use .*\\\\Domain\\\\" --include="*.php" "$ctx" | grep -v "use $name"; \
done && \
echo "=== Shared Kernel ===" && \
find src -type d -name "Shared" -o -name "Common" -o -name "Core"
```
## Integration
Works with:
- `acc-ddd-auditor` — Domain model quality
- `acc-structural-auditor` — Layer violations
- `acc-ddd-generator` — Generate missing components
## References
- "Domain-Driven Design" (Eric Evans) — Chapter 14: Context Mapping
- "Implementing Domain-Driven Design" (Vaughn Vernon) — Chapter 3: Context Maps
- Strategic DDD patterns documentationRelated Skills
acc-check-leaky-abstractions
Detects leaky abstractions in PHP code. Identifies implementation details exposed in interfaces, concrete returns from abstract methods, framework leakage into domain, and infrastructure concerns in application layer.
acc-check-encapsulation
Analyzes PHP code for encapsulation violations. Detects public mutable state, exposed internals, Tell Don't Ask violations, getter/setter abuse, and information hiding breaches.
a11y-self-check
Proactively validates Claude Code's own generated HTML/JSX/TSX output for accessibility before presenting to users. Use this skill automatically when generating UI code to ensure WCAG 2.1 AA compliance.
asyncredux-check-internet-mixin
Add the CheckInternet mixin to ensure network connectivity before action execution. Covers automatic error dialogs, combining with NoDialog for custom UI handling, and AbortWhenNoInternet for silent abort.
accessibility-design-checklist
Эксперт по accessibility дизайну. Используй для WCAG, a11y чеклистов и inclusive design.
accessibility-design-checker
Ensures designs meet accessibility requirements including WCAG compliance, color contrast, keyboard navigation, screen reader support, and focus management. Reviews designs for accessibility issues and provides recommendations.
accessibility-basic-check
Run a basic accessibility checklist for UI changes. Use when a junior developer needs quick a11y guidance.
mailcheck-automation
Automate Mailcheck tasks via Rube MCP (Composio). Always search tools first for current schemas.
ddd-check
DDD設計原則チェッカー(AIDLC ドキュメントと実装コードの一貫性を検証)
COMPLIANCE_CHECK
Apply the OpenAI SDK compliance checklist to audit files or directories and produce a Markdown report with findings and suggested fixes. Use when asked to "check compliance", "run compliance check", or "audit against OpenAI SDK rules".
check-ceph-health
Check Ceph storage health on OpenShift OCS/ODF clusters. Use when PVCs are stuck in Pending, storage provisioning fails, Ceph is degraded, OSDs are full, or cluster storage needs diagnosis.
acc-check-immutability
Analyzes PHP code for immutability violations. Checks Value Objects, Events, DTOs for readonly properties, no setters, final classes, and wither patterns. Ensures domain objects maintain invariants.