Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
tech-leads-club avatar

Domain Identification Grouping

  • 165 installs
  • 5k repo stars
  • Updated August 4, 2026
  • tech-leads-club/agent-skills

Use domain-identification-grouping for development tasks

About

domain-identification-grouping: A skill for development. This provides functionality for development workflows.

  • domain-identification-grouping

Domain Identification Grouping by the numbers

  • 165 all-time installs (skills.sh)
  • +9 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #2,345 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/tech-leads-club/agent-skills --skill domain-identification-grouping

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs165
repo stars5k
Last updatedAugust 4, 2026
Repositorytech-leads-club/agent-skills

What it does

Use domain-identification-grouping for development tasks

Files

SKILL.mdMarkdownGitHub ↗

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:

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

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

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.