К основному содержанию
скилл CX Codex

domain-analysis — скилл для Claude Code: границы сервисов по DDD

Разбирает кодовую базу на поддомены Core, Supporting и Generic и подсказывает, где провести границы сервисов. Пригодится перед распилом монолита.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add tech-leads-club/agent-skills --skill domain-analysis -a claude-code
Открыть на GitHub

Что делает domain-analysis

Скилл идёт по коду и вытаскивает бизнес-концепции, а не инфраструктуру: сущности, сервисы, сценарии, контроллеры. Дальше группирует их по общему языку предметной области. Термин в одном контексте значит одно, в другом — другое, и это как раз то, что скилл пытается развести.

Классификация идёт по дереву решений: конкурентное преимущество — Core Domain, нужны знания конкретного бизнеса — Supporting, обычная функция — Generic. Для каждой группы считается оценка связности по четырём признакам: общий словарь, совместное использование, связи данных, изменения вместе. Итог — от 0 до 10.

Отдельно ловятся пять типовых проблем: смешение словарей, жёсткие связи между доменами, класс на несколько бизнес-задач, Generic-код внутри Core и неясные границы. На выходе — карта доменов с предложенными bounded context и способами интеграции. Не берите скилл для группировки уже готовых компонентов или анализа зависимостей: для этого в том же наборе есть другие скиллы.

Какие задачи решает

  • разложить монолит на поддомены Core, Supporting и Generic
  • найти места, где один термин значит разное в разных частях кода
  • посчитать связность группы концепций по общей формуле
  • вытащить Generic-логику вроде отправки писем из биллинга
  • выбрать способ интеграции между контекстами

Примеры запросов агенту

  • проанализируй этот репозиторий и покажи, какие в нём домены
  • где провести границы сервисов в этом коде?
  • найди bounded context и классифицируй поддомены

Как установить domain-analysis

1Через Skills CLI (Vercel)

npx skills add tech-leads-club/agent-skills --skill domain-analysis -a claude-code

2Вручную: положить файлы

~/.claude/skills/domain-analysis/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/domain-analysis/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о domain-analysis

Как установить domain-analysis в Claude?

Выполните npx skills add tech-leads-club/agent-skills --skill domain-analysis -a claude-code. Скилл встанет в ~/.claude/skills/domain-analysis/SKILL.md.

Что делает domain-analysis?

Сканирует код, выделяет бизнес-концепции, группирует их по языку предметной области и предлагает границы bounded context по принципам DDD Strategic Design.

Чем domain-analysis отличается от domain-identification-grouping?

Первый ищет домены и границы с нуля. Второй нужен, когда компоненты уже есть и их надо разложить по доменам. Для анализа зависимостей есть coupling-analysis.

Исходный текст

SKILL.md · MIT
---
name: domain-analysis
description: Maps business domains and suggests service boundaries in any codebase using DDD Strategic Design. Use when asking "what are the domains in this codebase?", "where should I draw service boundaries?", "identify bounded contexts", "classify subdomains", "DDD analysis", or analyzing domain cohesion. Do NOT use for grouping existing components into domains (use domain-identification-grouping) or dependency analysis (use coupling-analysis).
---

# Subdomain Identification & Bounded Context Analysis

This skill analyzes codebases to identify subdomains (Core, Supporting, Generic) and suggest bounded contexts following Domain-Driven Design Strategic Design principles.

## When to Use

Apply this skill when:

- Analyzing domain boundaries in any codebase
- Identifying Core, Supporting, and Generic subdomains
- Mapping bounded contexts from problem space to solution space
- Assessing domain cohesion and detecting coupling issues
- Planning domain-driven refactoring
- Understanding business capabilities in code

## Core Principles

### Subdomain Classification

**Core Domain**: Competitive advantage, highest business value, requires best developers

- Indicators: Complex business logic, frequent changes, domain experts needed

**Supporting Subdomain**: Essential but not differentiating, business-specific

- Indicators: Supports Core Domain, moderate complexity, business-specific rules

**Generic Subdomain**: Common functionality, could be outsourced

- Indicators: Well-understood problem, low differentiation, standard functionality

### Bounded Context

An explicit linguistic boundary where domain terms have specific, unambiguous meanings.

- Primary nature: Linguistic boundary, not technical
- Key rule: Inside boundary, all Ubiquitous Language terms are unambiguous
- Goal: Align 1 subdomain to 1 bounded context (ideal)

## Analysis Process

### Phase 1: Extract Concepts

Scan codebase for business concepts (not infrastructure):

1. **Entities** (domain models with identity)
   - Patterns: `@Entity`, `class`, domain models
   - Focus: Business concepts, not technical classes

2. **Services** (business operations)
   - Patterns: `*Service`, `*Manager`, `*Handler`
   - Focus: Business logic, not technical utilities

3. **Use Cases** (business workflows)
   - Patterns: `*UseCase`, `*Command`, `*Handler`
   - Focus: Business processes, not CRUD

4. **Controllers/Resolvers** (entry points)
   - Patterns: `*Controller`, `*Resolver`, API endpoints
   - Focus: Business capabilities, not technical routes

### Phase 2: Group by Ubiquitous Language

For each concept, determine:

**Primary Language Context**

- What business vocabulary does this belong to?
- Examples:
  - `Subscription`, `Invoice`, `Payment` → Billing language
  - `Movie`, `Video`, `Episode` → Content language
  - `User`, `Authentication` → Identity language

**Linguistic Boundaries**

- Where do term meanings change?
- Same term, different meaning = different bounded context
- Example: "Customer" in Sales vs "Customer" in Support

**Concept Relationships**

- Which concepts naturally belong together?
- Which share business vocabulary?
- Which reference each other?

### Phase 3: Identify Subdomains

A subdomain has:

- Distinct business capability
- Independent business value
- Unique vocabulary
- Multiple related entities working together
- Cohesive set of business operations

**Common Domain Patterns**:

- Billing/Subscription: Payments, invoices, plans
- Content/Catalog: Media, products, inventory
- Identity/Access: Users, authentication, authorization
- Analytics: Metrics, dashboards, insights
- Notifications: Messages, alerts, communications

**Classify Each Subdomain**:

Use this decision tree:

```
Is it a competitive advantage?
  YES → Core Domain
  NO → Does it require business-specific knowledge?
        YES → Supporting Subdomain
        NO → Generic Subdomain
```

### Phase 4: Assess Cohesion

**High Cohesion Indicators** ✅

- Concepts share Ubiquitous Language
- Concepts frequently used together
- Direct business relationships
- Changes to one affect others in group
- Solve same business problem

**Low Cohesion Indicators** ❌

- Different business vocabularies mixed
- Concepts rarely used together
- No direct business relationship
- Changes don't affect others
- Solve different business problems

**Cohesion Score Formula**:

```
Score = (
  Linguistic Cohesion (0-3) +    // Shared vocabulary
  Usage Cohesion (0-3) +         // Used together
  Data Cohesion (0-2) +          // Entity relationships
  Change Cohesion (0-2)          // Change together
) / 10

8-10: High Cohesion ✅
5-7:  Medium Cohesion ⚠️
0-4:  Low Cohesion ❌
```

### Phase 5: Detect Low Cohesion Issues

**Rule 1: Linguistic Mismatch**

- Problem: Different business vocabularies mixed
- Example: `User` (identity) + `Subscription` (billing) in same service
- Action: Suggest separation into different bounded contexts

**Rule 2: Cross-Domain Dependencies**

- Problem: Tight coupling between domains
- Example: Service A directly instantiates entities from Domain B
- Action: Suggest interface-based integration

**Rule 3: Mixed Responsibilities**

- Problem: Single class handles multiple business concerns
- Example: Service handling both billing and content
- Action: Suggest splitting by subdomain

**Rule 4: Generic in Core**

- Problem: Generic functionality in core business logic
- Example: Email sending in billing service
- Action: Extract to Generic Subdomain

**Rule 5: Unclear Boundaries**

- Problem: Cannot determine which domain concept belongs to
- Example: Entity with relationships to multiple domains
- Action: Clarify boundaries, possibly split concept

### Phase 6: Map Bounded Contexts

For each subdomain identified, suggest bounded context:

**Bounded Context Characteristics**:

- Name reflects Ubiquitous Language
- Contains complete domain model
- Has explicit integration points
- Clear linguistic boundary

**Integration Patterns**:

- Shared Kernel: Shared model between contexts (use sparingly)
- Customer/Supplier: Downstream depends on upstream
- Conformist: Downstream conforms to upstream
- Anti-corruption Layer: Translation layer between contexts
- Open Host Service: Published interface for integration
- Published Language: Well-documented integration protocol

## Output Format

### Domain Map

For each domain/subdomain:

```markdown
## Domain: {Name}

**Type**: Core Domain | Supporting Subdomain | Generic Subdomain

**Ubiquitous Language**: {key business terms}

**Business Capability**: {what business problem it solves}

**Key Concepts**:

- {Concept} (Entity|Service|UseCase) - {brief description}

**Subdomains** (if applicable):

1. {Subdomain} (Core|Supporting|Generic)
   - Concepts: {list}
   - Cohesion: {score}/10
   - Dependencies: → {other domains}

**Suggested Bounded Context**: {Name}Context

- Linguistic boundary: {where terms have specific meaning}
- Integration: {how it should integrate with other contexts}

**Dependencies**:

- → {OtherDomain} via {interface/API}
- ← {OtherDomain} via {interface/API}

**Cohesion Score**: {score}/10
```

### Cohesion Matrix

```markdown
## Cross-Domain Cohesion

| Domain A | Domain B | Cohesion | Issue              | Recommendation          |
| -------- | -------- | -------- | ------------------ | ----------------------- |
| Billing  | Identity | 2/10     | ❌ Direct coupling | Use interface           |
| Content  | Billing  | 6/10     | ⚠️ Usage tracking  | Event-based integration |
```

### Low Cohesion Report

```markdown
## Issues Detected

### Priority: High

**Issue**: {description}

- **Location**: {file/class/method}
- **Problem**: {what's wrong}
- **Concepts**: {involved concepts}
- **Cohesion**: {score}/10
- **Recommendation**: {suggested fix}

### Priority: Medium

{similar format}
```

### Bounded Context Map

```markdown
## Suggested Bounded Contexts

### {ContextName}Context

**Contains Subdomains**:

- {Subdomain1} (Core)
- {Subdomain2} (Supporting)

**Ubiquitous Language**:

- Term: Definition in this context

**Integration Requirements**:

- Consumes from: {OtherContext} via {pattern}
- Publishes to: {OtherContext} via {pattern}

**Implementation Notes**:

- Separate persistence
- Independent deployment
- Explicit API boundaries
```

## Best Practices

### Do's ✅

- Focus on business language, not code structure
- Let Ubiquitous Language guide boundaries
- Measure cohesion objectively
- Identify clear integration points
- Classify every subdomain (Core/Supporting/Generic)
- Look for linguistic boundaries first

### Don'ts ❌

- Don't group by technical layers
- Don't force single global model
- Don't ignore linguistic differences
- Don't couple domains directly
- Don't create contexts by architecture
- Don't eliminate all dependencies (some are necessary)

## Analysis Checklist

**For Each Concept**:

- [ ] What business language does it belong to?
- [ ] What domain/subdomain is it part of?
- [ ] Is it Core, Supporting, or Generic?
- [ ] What other concepts does it relate to?
- [ ] Are dependencies within same domain?
- [ ] Any linguistic mismatches?

**For Each Domain**:

- [ ] What is the Ubiquitous Language?
- [ ] What are the key concepts?
- [ ] What are the subdomains?
- [ ] Which is the Core Domain?
- [ ] What are cross-domain dependencies?
- [ ] Is internal cohesion high?
- [ ] Are boundaries clear?

**For Cohesion Analysis**:

- [ ] Calculate cohesion scores
- [ ] Identify low cohesion areas
- [ ] Map cross-domain dependencies
- [ ] Flag linguistic mismatches
- [ ] Note tight coupling
- [ ] Suggest boundary clarifications

## Quick Reference

### Subdomain Decision Tree

```
Analyze business capability
└─ Is it competitive advantage?
   ├─ YES → Core Domain
   └─ NO → Is it business-specific?
      ├─ YES → Supporting Subdomain
      └─ NO → Generic Subdomain
```

### Cohesion Quick Check

```
Same vocabulary? → High linguistic cohesion
Used together? → High usage cohesion
Direct relationships? → High data cohesion
Change together? → High change cohesion

All high → Strong subdomain candidate
Mix of high/low → Review boundaries
All low → Likely wrong grouping
```

### Bounded Context Signals

```
Clear boundary signs:
✅ Distinct Ubiquitous Language
✅ Concepts have unambiguous meaning
✅ Different meanings across contexts
✅ Clear integration points

Unclear boundary signs:
❌ Same terms with same meanings everywhere
❌ Concepts used identically across system
❌ No clear linguistic differences
❌ Tight coupling everywhere
```

## Anti-Patterns to Avoid

**Big Ball of Mud**

- Everything connected to everything
- No clear boundaries
- Mixed vocabularies
- Prevention: Explicit bounded contexts

**All-Inclusive Model**

- Single model for entire business
- Impossible global definitions
- Creates conflicts
- Prevention: Embrace multiple contexts

**Mixed Linguistic Concepts**

- Different vocabularies in same context
- Example: User/Permission with Forum/Post
- Prevention: Keep linguistic associations

## Notes

- This is strategic analysis, not tactical implementation
- Focus on WHAT domains exist, not HOW to implement
- Some cross-domain dependencies are normal
- Low cohesion doesn't always mean "bad," it means "needs attention"
- Generic Subdomains naturally have lower cohesion
- Always validate with domain experts when possible

## Validation Criteria

Good domain identification has:

- ✅ Clear boundaries with distinct Ubiquitous Language
- ✅ High internal cohesion within domains
- ✅ Explicit cross-domain dependencies
- ✅ Business alignment with capabilities
- ✅ Actionable recommendations for issues

© tech-leads-club · MIT · tech-leads-club/agent-skills

Похожие скиллы

Всё по теме «Код-ревью и рефакторинг» →
codebase-analysis solatis Скилл для быстрого знакомства с незнакомым репозиторием: запускает Python-скрипт, который сам обходит проект и собирает картину структуры, потоков и решений. CX Codex +1 580установок domain-driven-design wondelai Скилл для ИИ-агента, который заставляет его сначала разобраться в бизнес-модели, а потом называть классы и резать модули: контексты, агрегаты, единый язык. Пригодится, когда код разошёлся с бизнесом. CX Codex +1 7 200установок m09-domain actionbook Свод правил по предметно-ориентированному проектированию на Rust. Помогает ИИ моделировать сущности, агрегаты и объекты-значения с учётом системы владения. CX Codex +1 3 300установок ddd-validate ruvnet Проверяет границы ограниченных контекстов в коде на TypeScript и выявляет утечки между доменами. Пригодится при аудите архитектуры DDD и перед слиянием общих правок. CX Codex +1 736установок V3 DDD Architecture ruvnet Скилл раскладывает монолитный orchestrator из claude-flow v3 по пяти bounded contexts и собирает домены в микрокернель с шиной событий. CX Codex +1 1 100установок refactoring-analysis Pedro Nauck Анализирует архитектуру проекта по запахам кода Фаулера и формирует отчёт в docs/_refacs/. Помогает запланировать рефакторинг без форматирования и аудита безопасности. CX Codex +1 404установок

Из того же набора11

security-best-practices Скилл проводит ревью кода на соответствие практикам безопасности для Python, JavaScript/TypeScript и Go и предлагает правки. CX Codex +1 358установок tlc-spec-driven Организует разработку фич по спецификации через четыре фазы: Specify, Design, Tasks и Execute. Автоматически подбирает глубину и проверяет гейты скриптами на Python. CX Codex +1 1 200установок subagent-creator Помогает описать субагента: файл с frontmatter, промпт, шаги и формат отчёта. Нужен, когда задаче требуется отдельный контекст. CX Codex +1 909установок technical-design-doc-creator Помогает составить технический дизайн-документ (TDD, RFC, спеку) перед разработкой через интерактивные вопросы. Пригодится при согласовании архитектуры и миграций в команде. CX Codex +1 609установок nestjs-modular-monolith Ведёт от анализа домена до кода: границы модулей, DDD, Clean Architecture и CQRS в одном бэкенде на NestJS. CX Codex +1 329установок mermaid-studio Скилл для создания диаграмм Mermaid, проверки синтаксиса и рендера в SVG, PNG или ASCII. Пригодится, когда нужно описать архитектуру или схему базы данных. CX Codex +1 324установок coding-guidelines Скилл задаёт поведенческие правила для агента при написании и рефакторинге кода. Он снижает число типичных ошибок нейросетей, отдавая приоритет аккуратности перед скоростью. CX Codex +1 322установок perf-lighthouse Скилл запускает аудит Lighthouse через консоль или Node API, считывает метрики и настраивает бюджеты производительности. Помогает внедрить проверки скорости в CI и разобрать JSON-отчёты. CX Codex +1 320установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой