domain-identification-grouping
This Claude Code skill groups architectural components into logical business domains to prepare for service-based architecture planning. Use it when organizing existing codebases by business capability, mapping components to domains, or preparing component-to-service extraction, but not for discovering entirely new domains or analyzing component coupling patterns.
git clone --depth 1 https://github.com/tech-leads-club/agent-skills /tmp/domain-identification-grouping && cp -r /tmp/domain-identification-grouping/packages/skills-catalog/skills/(architecture)/domain-identification-grouping ~/.claude/skills/domain-identification-groupingSKILL.md
# Domain Identification and Grouping This skill groups architectural components into logical domains (business areas) to prepare for creating domain services in a service-based architecture. ## How to Use ### Quick Start Request analysis of your codebase: - **"Group components into logical domains"** - **"Identify component domains for service-based architecture"** - **"Create domain groupings from components"** - **"Analyze which components belong to which domains"** ### Usage Examples **Example 1: Domain Identification** ``` User: "Group components into logical domains" The skill will: 1. Analyze component responsibilities and relationships 2. Identify business domains based on functionality 3. Group components into domains 4. Create domain diagrams 5. Suggest namespace refactoring for domain alignment ``` **Example 2: Domain Analysis** ``` User: "Which domain should the billing components belong to?" The skill will: 1. Analyze billing component functionality 2. Check relationships with other components 3. Identify appropriate domain (e.g., Customer or Financial) 4. Recommend domain assignment ``` **Example 3: Domain Refactoring** ``` User: "What namespace refactoring is needed to align components with domains?" The skill will: 1. Compare current component namespaces to identified domains 2. Identify misaligned components 3. Suggest namespace changes 4. Create refactoring plan ``` ### Step-by-Step Process 1. **Identify Domains**: Analyze business capabilities and component relationships 2. **Group Components**: Assign components to appropriate domains 3. **Validate Groupings**: Ensure components fit well in their domains 4. **Refactor Namespaces**: Align component namespaces with domains 5. **Create Domain Map**: Visualize domain structure and component groupings ## When to Use Apply this skill when: - After identifying, sizing, and analyzing component dependencies - Before creating domain services (Pattern 6) - When planning service-based architecture migration - Analyzing component relationships and business alignment - Preparing for domain-driven design implementation - Grouping components for better organization ## Core Concepts ### Domain Definition A **domain** is a logical grouping of components that: - Represents a distinct business capability or area - Contains related components that work together - Has clear boundaries and responsibilities - Can become a domain service in service-based architecture **Examples**: - **Customer Domain**: Customer profile, billing, support contracts - **Ticketing Domain**: Ticket creation, assignment, routing, completion - **Reporting Domain**: Ticket reports, expert reports, financial reports ### Component Domain Relationship **One-to-Many**: A single domain contains multiple components ``` Domain: Customer ├── Component: Customer Profile ├── Component: Billing Payment ├── Component: Billing History └── Component: Support Contract ``` ### Domain Manifestation Domains are physically manifested through **namespace structure**: **Before Domain Alignment**: ``` services/billing/payment services/billing/history services/customer/profile services/supportcontract ``` **After Domain Alignment**: ``` services/customer/billing/payment services/customer/billing/history services/customer/profile services/customer/supportcontract ``` Notice how all customer-related functionality is grouped under `.customer` domain. ## Analysis Process ### Phase 1: Identify Business Domains Analyze the codebase to identify distinct business domains: 1. **Examine Component Responsibilities** - Read component names and descriptions - Understand what each component does - Identify business capabilities 2. **Look for Business Language** - Group components by business vocabulary - Example: "billing", "payment", "invoice" → Financial domain - Example: "customer", "profile", "contract" → Customer domain 3. **Identify Domain Boundaries** - Where do business concepts change? - What are the distinct business areas? - How do components relate to business capabilities? 4. **Collaborate with Business Stakeholders** - Validate domain identification with product owners - Ensure domains align with business understanding - Get feedback on domain boundaries **Example Domain Identification**: ```markdown ## Identified Domains 1. **Ticketing Domain** (ss.ticket) - Ticket creation, assignment, routing, completion - Customer surveys - Knowledge base 2. **Customer Domain** (ss.customer) - Customer profile - Billing and payment - Support contracts 3. **Reporting Domain** (ss.reporting) - Ticket reports - Expert reports - Financial reports 4. **Admin Domain** (ss.admin) - User maintenance - Expert profile management 5. **Shared Domain** (ss.shared) - Login - Notification ``` ### Phase 2: Group Components into Domains Assign each component to an appropriate domain: 1. **Analyze Component Functionality** - What business capability does it support? - What domain vocabulary does it use? - What other components does it relate to? 2. **Check Component Relationships** - Which components are frequently used together? - What are the dependencies between components? - Do components share data or workflows? 3. **Assign to Domain** - Place component in domain that best fits its functionality - Ensure component aligns with domain's business language - Verify component relationships support domain grouping 4. **Handle Edge Cases** - Components that don't fit clearly: Analyze more deeply - Components that fit multiple domains: Choose primary domain - Shared components: May belong to Shared domain **Example Component Grouping**: ```markdown ## Component Domain Assignment ### Ticketing Domain (ss.ticket) - Ticket Shared (ss.ticket.shared) - Ticket Maintenance (ss.ticket.maintenance) - Ticket Completion (ss.ticket.completion) - Ticket Assign (ss.ti
Finds duplicate business logic spread across multiple components and suggests consolidation. Use when asking "where is this logic duplicated?", "find common code between services", "what can be consolidated?", "detect shared domain logic", or analyzing component overlap before refactoring. Do NOT use for code-level duplication detection (use linters) or dependency analysis (use coupling-analysis).
Detects misplaced classes and fixes component hierarchy problems — finds code that should belong inside a component but sits at the root level. Use when asking "clean up component structure", "find orphaned classes", "fix module hierarchy", "flatten nested components", or analyzing why namespaces have misplaced code. Do NOT use for dependency analysis (use coupling-analysis) or domain grouping (use domain-identification-grouping).
Maps architectural components in a codebase and measures their size to identify what should be extracted first. Use when asking "how big is each module?", "what components do I have?", "which service is too large?", "analyze codebase structure", "size my monolith", or planning where to start decomposing. Do NOT use for runtime performance sizing or infrastructure capacity planning.
Analyzes coupling between modules using the three-dimensional model (strength, distance, volatility) from "Balancing Coupling in Software Design". Use when asking "are these modules too coupled?", "show me dependencies", "analyze integration quality", "which modules should I decouple?", "coupling report", or evaluating architectural health. Do NOT use for domain boundary analysis (use domain-analysis) or component sizing (use component-identification-sizing).
Creates step-by-step decomposition plans and migration roadmaps for breaking apart monolithic applications. Use when asking "what order should I extract services?", "plan my migration", "create a decomposition roadmap", "prioritize what to split", "monolith to microservices strategy", or tracking decomposition progress. Do NOT use for domain analysis (use domain-analysis) or component sizing (use component-identification-sizing).
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).
AI frontend specialist and design consultant that guides users through a structured discovery process before generating any code. Collects visual references, design tokens, typography, icons, layout preferences, and brand guidelines to ensure the final output matches the user's vision with high fidelity. Use when the user asks to build, design, create, or improve any frontend interface — websites, landing pages, dashboards, components, apps, emails, forms, modals, or any UI element. Also triggers on "build me a UI", "design a page", "create a component", "improve this layout", "make this look better", "frontend", "interface", "redesign", or when the user provides mockups, screenshots, or design references. Do NOT use for backend logic, API design, database schemas, or non-visual code tasks.
Use when planning legacy system migrations, codebase modernization, monolith decomposition, microservices consolidation, cross-language rewrites, or framework upgrades. Invoke for strangler fig pattern, incremental migration strategy, or refactoring roadmaps. Do NOT use for domain analysis (use domain-analysis), component sizing (use component-identification-sizing), or step-by-step decomposition plans (use decomposition-planning-roadmap).