Wardn Hub
MCP ServersSkillsCategoriesAPI docsSubmit server
Submit server
Wardn HubTrusted MCP server directory.

Registry

  • MCP Servers
  • Skills
  • Categories

Resources

  • API docs
  • Score method

Contribute

  • Submit server
  • Advertise
© 2026 Wardn Hub
Wardn Hub
MCP ServersSkillsCategoriesAPI docsSubmit server
Submit server
skills/tech-leads-club/agent-skills/packages-skills-catalog-skills-architecture-domain-identification-grouping

domain-identification-grouping

1
tech-leads-club/agent-skills·Developer Tools·Audit passed·Snapshot 73fef9ae6991

Summary

Groups existing components into logical business domains to plan service-based architecture. Use when asking "which components belong together?", "group these into services", "organize by domain", "component-to-domain mapping", or planning service extraction from an existing codebase. Do NOT use for identifying new domains from scratch (use domain-analysis) or analyzing coupling (use coupling-analysis).

SKILL.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
Installs
0
  • Group Components: Assign components to appropriate domains
  • Validate Groupings: Ensure components fit well in their domains
  • Refactor Namespaces: Align component namespaces with domains
  • 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:

    ## 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:

    ## 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.ticket.assign)
    - Ticket Route (ss.ticket.route)
    - KB Maintenance (ss.ticket.kb.maintenance)
    - KB Search (ss.ticket.kb.search)
    - Survey (ss.ticket.survey)
    
    ### Customer Domain (ss.customer)
    
    - Customer Profile (ss.customer.profile)
    - Billing Payment (ss.customer.billing.payment)
    - Billing History (ss.customer.billing.history)
    - Support Contract (ss.customer.supportcontract)
    
    ### Reporting Domain (ss.reporting)
    
    - Reporting Shared (ss.reporting.shared)
    - Ticket Reports (ss.reporting.tickets)
    - Expert Reports (ss.reporting.experts)
    - Financial Reports (ss.reporting.financial)
    

    Phase 3: Validate Domain Groupings

    Ensure components fit well in their assigned domains:

    1. Check Cohesion

      • Do components in domain share business language?
      • Are components frequently used together?
      • Do components have direct relationships?
    2. Verify Boundaries

      • Are domain boundaries clear?
      • Do components belong to only one domain?
      • Are there components that don't fit anywhere?
    3. Assess Completeness

      • Are all components assigned to a domain?
      • Are domains cohesive and well-formed?
      • Do domains represent distinct business capabilities?
    4. Get Stakeholder Validation

      • Review domain groupings with product owners
      • Ensure domains align with business understanding
      • Get feedback on domain boundaries

    Validation Checklist:

    • All components assigned to a domain
    • Domains have clear boundaries
    • Components fit well in their domains
    • Domains represent distinct business capabilities
    • Stakeholders validate domain groupings

    Phase 4: Refactor Namespaces for Domain Alignment

    Align component namespaces with identified domains:

    1. Compare Current vs Target Namespaces

      • Current: services/billing/payment
      • Target: services/customer/billing/payment
      • Change: Add .customer domain node
    2. Identify Refactoring Needed

      • Which components need namespace changes?
      • What domain nodes need to be added?
      • Are there components already aligned?
    3. Create Refactoring Plan

      • List components needing namespace changes
      • Specify target namespace for each
      • Prioritize refactoring work
    4. Execute Refactoring

      • Update component namespaces
      • Update imports/references
      • Verify all references updated

    Example Namespace Refactoring:

    ## Namespace Refactoring Plan
    
    ### Customer Domain Alignment
    
    | Component        | Current Namespace   | Target Namespace            | Action        |
    | ---------------- | ------------------- | --------------------------- | ------------- |
    | Billing Payment  | ss.billing.payment  | ss.customer.billing.payment | Add .customer |
    | Billing History  | ss.billing.history  | ss.customer.billing.history | Add .customer |
    | Customer Profile | ss.customer.profile | ss.customer.profile         | No change     |
    | Support Contract | ss.supportcontract  | ss.customer.supportcontract | Add .customer |
    
    ### Ticketing Domain Alignment
    
    | Component      | Current Namespace | Target Namespace         | Action      |
    | -------------- | ----------------- | ------------------------ | ----------- |
    | KB Maintenance | ss.kb.maintenance | ss.ticket.kb.maintenance | Add .ticket |
    | KB Search      | ss.kb.search      | ss.ticket.kb.search      | Add .ticket |
    | Survey         | ss.survey         | ss.ticket.survey         | Add .ticket |
    

    Phase 5: Create Domain Map

    Visualize domain structure and component groupings:

    1. Create Domain Diagram

      • Show domains as boxes
      • Show components within each domain
      • Show relationships between domains
    2. Document Domain Structure

      • List domains and their components
      • Describe domain responsibilities
      • Note domain boundaries
    3. Create Domain Inventory

      • Table of domains and components
      • Component counts per domain
      • Size metrics per domain

    Example Domain Map:

    ## Domain Map
    

    ┌─────────────────────────────────────┐ │ Ticketing Domain (ss.ticket) │ ├─────────────────────────────────────┤ │ • Ticket Shared │ │ • Ticket Maintenance │ │ • Ticket Completion │ │ • Ticket Assign │ │ • Ticket Route │ │ • KB Maintenance │ │ • KB Search │ │ • Survey │ └─────────────────────────────────────┘ │ │ uses ▼ ┌─────────────────────────────────────┐ │ Customer Domain (ss.customer) │ ├─────────────────────────────────────┤ │ • Customer Profile │ │ • Billing Payment │ │ • Billing History │ │ • Support Contract │ └─────────────────────────────────────┘

    
    ## Output Format
    
    ### Domain Identification Report
    
    ```markdown
    ## Domain Identification
    
    ### Domain: Customer (ss.customer)
    
    **Business Capability**: Manages customer relationships, billing, and support contracts
    
    **Components**:
    - Customer Profile (ss.customer.profile)
    - Billing Payment (ss.customer.billing.payment)
    - Billing History (ss.customer.billing.history)
    - Support Contract (ss.customer.supportcontract)
    
    **Component Count**: 4
    **Total Size**: ~15,000 statements (18% of codebase)
    
    **Domain Cohesion**: ✅ High
    - Components share customer-related vocabulary
    - Components frequently used together
    - Direct relationships between components
    
    **Boundaries**:
    - Clear separation from Ticketing domain
    - Clear separation from Reporting domain
    - Shared components (Notification) used by all domains
    

    Component Domain Assignment Table

    ## Component Domain Assignment
    
    | Component          | Current Namespace     | Assigned Domain | Target Namespace                  |
    | ------------------ | --------------------- | --------------- | --------------------------------- |
    | Customer Profile   | ss.customer.profile   | Customer        | ss.customer.profile (no change)   |
    | Billing Payment    | ss.billing.payment    | Customer        | ss.customer.billing.payment       |
    | Ticket Maintenance | ss.ticket.maintenance | Ticketing       | ss.ticket.maintenance (no change) |
    | KB Maintenance     | ss.kb.maintenance     | Ticketing       | ss.ticket.kb.maintenance          |
    | Reporting Shared   | ss.reporting.shared   | Reporting       | ss.reporting.shared (no change)   |
    

    Namespace Refactoring Plan

    ## Namespace Refactoring Plan
    
    ### Priority: High
    
    **Customer Domain Alignment**
    
    **Components to Refactor**:
    
    1. Billing Payment: `ss.billing.payment` → `ss.customer.billing.payment`
    2. Billing History: `ss.billing.history` → `ss.customer.billing.history`
    3. Support Contract: `ss.supportcontract` → `ss.customer.supportcontract`
    
    **Steps**:
    
    1. Update namespace declarations in source files
    2. Update import statements in dependent components
    3. Update directory structure
    4. Run tests to verify changes
    5. Update documentation
    
    **Expected Impact**:
    
    - All customer-related components aligned under `.customer` domain
    - Clearer domain boundaries
    - Easier to identify domain components
    

    Domain Map Visualization

    ## Domain Map
    
    ### Domain Structure
    

    Customer Domain (ss.customer) ├── Customer Profile ├── Billing Payment ├── Billing History └── Support Contract

    Ticketing Domain (ss.ticket) ├── Ticket Shared ├── Ticket Maintenance ├── Ticket Completion ├── Ticket Assign ├── Ticket Route ├── KB Maintenance ├── KB Search └── Survey

    Reporting Domain (ss.reporting) ├── Reporting Shared ├── Ticket Reports ├── Expert Reports └── Financial Reports

    Admin Domain (ss.admin) ├── User Maintenance └── Expert Profile

    Shared Domain (ss.shared) ├── Login └── Notification

    
    ### Domain Relationships
    
    

    Ticketing Domain │ uses ├─→ Shared Domain (Login, Notification) └─→ Customer Domain (Customer Profile)

    Customer Domain │ uses └─→ Shared Domain (Login, Notification)

    Reporting Domain │ uses ├─→ Ticketing Domain (Ticket data) ├─→ Customer Domain (Customer data) └─→ Shared Domain (Login)

    Analysis Checklist

    Domain Identification:

    • Analyzed component responsibilities
    • Identified business capabilities
    • Identified distinct business domains
    • Validated domains with stakeholders

    Component Grouping:

    • Assigned each component to a domain
    • Analyzed component relationships
    • Ensured components fit domain vocabulary
    • Handled edge cases (shared components, unclear assignments)

    Domain Validation:

    • Checked cohesion within domains
    • Verified domain boundaries are clear
    • Ensured all components assigned
    • Validated with stakeholders

    Namespace Refactoring:

    • Compared current vs target namespaces
    • Identified components needing refactoring
    • Created refactoring plan
    • Prioritized refactoring work

    Domain Mapping:

    • Created domain diagram
    • Documented domain structure
    • Created domain inventory table
    • Documented domain relationships

    Implementation Notes

    For Node.js/Express Applications

    Domains typically organized in services/ directory:

    services/
    ├── customer/              ← Customer Domain
    │   ├── profile/
    │   ├── billing/
    │   │   ├── payment/
    │   │   └── history/
    │   └── supportcontract/
    ├── ticket/                ← Ticketing Domain
    │   ├── shared/
    │   ├── maintenance/
    │   ├── assign/
    │   └── route/
    └── reporting/             ← Reporting Domain
        ├── shared/
        ├── tickets/
        └── experts/
    

    For Java Applications

    Domains identified by package structure:

    com.company.customer       ← Customer Domain
    ├── profile
    ├── billing
    │   ├── payment
    │   └── history
    └── supportcontract
    
    com.company.ticket         ← Ticketing Domain
    ├── shared
    ├── maintenance
    ├── assign
    └── route
    

    Domain Identification Strategies

    Strategy 1: Business Capability Analysis

    • Identify what business capabilities the system provides
    • Group components by capability
    • Example: "Customer Management" capability → Customer Domain

    Strategy 2: Vocabulary Analysis

    • Identify business vocabulary used by components
    • Group components sharing same vocabulary
    • Example: Components using "billing", "payment", "invoice" → Financial Domain

    Strategy 3: Relationship Analysis

    • Identify components frequently used together
    • Group components with strong relationships
    • Example: Components that share data/workflows → Same Domain

    Strategy 4: Stakeholder Collaboration

    • Work with product owners/business analysts
    • Use their understanding of business areas
    • Validate domain boundaries with them

    Fitness Functions

    After creating domains, create automated checks:

    Domain Namespace Governance

    // Ensure components belong to correct domain
    function validateDomainNamespaces(components, domainRules) {
      const violations = []
    
      components.forEach((comp) => {
        const domain = identifyDomain(comp.namespace)
        const expectedDomain = domainRules[comp.name]
    
        if (domain !== expectedDomain) {
          violations.push({
            component: comp.name,
            currentDomain: domain,
            expectedDomain: expectedDomain,
            namespace: comp.namespace,
          })
        }
      })
    
      return violations
    }
    

    Domain Boundary Enforcement

    // Prevent components from accessing other domains directly
    function enforceDomainBoundaries(components) {
      const violations = []
    
      components.forEach((comp) => {
        comp.imports.forEach((imp) => {
          const importedDomain = identifyDomain(imp)
          const componentDomain = identifyDomain(comp.namespace)
    
          if (importedDomain !== componentDomain && importedDomain !== 'shared') {
            violations.push({
              component: comp.name,
              domain: componentDomain,
              importsFrom: imp,
              importedDomain: importedDomain,
              issue: 'Cross-domain direct dependency',
            })
          }
        })
      })
    
      return violations
    }
    

    Best Practices

    Do's ✅

    • Collaborate with business stakeholders to identify domains
    • Group components by business capability, not technical layers
    • Ensure domains represent distinct business areas
    • Validate domain boundaries with stakeholders
    • Refactor namespaces to align with domains
    • Create clear domain documentation
    • Use business language in domain names

    Don'ts ❌

    • Don't create domains based on technical layers (services, controllers, models)
    • Don't force components into domains where they don't fit
    • Don't skip stakeholder validation
    • Don't create too many small domains (aim for 3-7 domains)
    • Don't create domains that are too large (monolithic domains)
    • Don't ignore components that don't fit (analyze why)
    • Don't skip namespace refactoring (critical for clarity)

    Common Domain Patterns

    Typical Domains in Business Applications

    • Customer Domain: Customer management, profiles, relationships
    • Product Domain: Product catalog, inventory, pricing
    • Order Domain: Order processing, fulfillment, shipping
    • Billing Domain: Invoicing, payments, financial transactions
    • Reporting Domain: Reports, analytics, dashboards
    • Admin Domain: User management, system configuration
    • Shared Domain: Common functionality (login, notification, utilities)

    Domain Size Guidelines

    • Small Domain: 2-4 components
    • Medium Domain: 5-8 components
    • Large Domain: 9-15 components
    • Too Large: >15 components (consider splitting)

    Next Steps

    After creating component domains:

    1. Apply Create Domain Services Pattern - Extract domains to separate services
    2. Plan Service Extraction - Create migration plan for domain services
    3. Implement Domain Services - Move domains to separately deployed services
    4. Monitor Domain Boundaries - Use fitness functions to enforce boundaries

    Notes

    • Domains should represent business capabilities, not technical layers
    • Domain identification requires collaboration with business stakeholders
    • Namespace refactoring is critical for domain clarity
    • Domains prepare the codebase for service-based architecture
    • Well-formed domains make service extraction easier
    • Domain boundaries should be clear and well-documented

    Related skills

    coupling-analysisdocs-writerai-cold-outreachai-pricingai-sdr