重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
domain-identification-grouping by tech-leads-club/agent-skills
npx skills add https://github.com/tech-leads-club/agent-skills --skill domain-identification-grouping此技能将架构组件分组到逻辑领域(业务领域),为在基于服务的架构中创建领域服务做准备。
请求分析您的代码库:
示例 1:领域识别
用户:"将组件分组到逻辑领域"
此技能将:
1. 分析组件的职责和关系
2. 基于功能识别业务领域
3. 将组件分组到领域
4. 创建领域图
5. 建议为领域对齐进行命名空间重构
示例 2:领域分析
用户:"计费组件应该属于哪个领域?"
此技能将:
1. 分析计费组件功能
2. 检查与其他组件的关系
3. 识别合适的领域(例如,客户或财务)
4. 推荐领域分配
示例 3:领域重构
用户:"需要哪些命名空间重构以使组件与领域对齐?"
此技能将:
1. 比较当前组件命名空间与已识别的领域
2. 识别未对齐的组件
3. 建议命名空间更改
4. 创建重构计划
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
在以下情况应用此技能:
一个领域是组件的逻辑分组,它:
示例:
一对多:单个领域包含多个组件
领域:客户
├── 组件:客户资料
├── 组件:计费支付
├── 组件:计费历史
└── 组件:支持合同
领域通过命名空间结构物理体现:
领域对齐前:
services/billing/payment
services/billing/history
services/customer/profile
services/supportcontract
领域对齐后:
services/customer/billing/payment
services/customer/billing/history
services/customer/profile
services/customer/supportcontract
注意所有客户相关功能如何分组在 .customer 领域下。
分析代码库以识别不同的业务领域:
检查组件职责
寻找业务语言
识别领域边界
与业务干系人协作
示例领域识别:
## 已识别的领域
1. **工单领域** (ss.ticket)
- 工单创建、分配、路由、完成
- 客户调查
- 知识库
2. **客户领域** (ss.customer)
- 客户资料
- 计费和支付
- 支持合同
3. **报告领域** (ss.reporting)
- 工单报告
- 专家报告
- 财务报告
4. **管理领域** (ss.admin)
- 用户维护
- 专家资料管理
5. **共享领域** (ss.shared)
- 登录
- 通知
将每个组件分配到合适的领域:
分析组件功能
检查组件关系
分配到领域
处理边缘情况
示例组件分组:
## 组件领域分配
### 工单领域 (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)
### 客户领域 (ss.customer)
- Customer Profile (ss.customer.profile)
- Billing Payment (ss.customer.billing.payment)
- Billing History (ss.customer.billing.history)
- Support Contract (ss.customer.supportcontract)
### 报告领域 (ss.reporting)
- Reporting Shared (ss.reporting.shared)
- Ticket Reports (ss.reporting.tickets)
- Expert Reports (ss.reporting.experts)
- Financial Reports (ss.reporting.financial)
确保组件在其分配的领域中适配良好:
检查内聚性
验证边界
评估完整性
获取干系人验证
验证清单:
使组件命名空间与已识别的领域对齐:
比较当前与目标命名空间
services/billing/paymentservices/customer/billing/payment.customer 领域节点识别所需重构
创建重构计划
执行重构
示例命名空间重构:
## 命名空间重构计划
### 客户领域对齐
| 组件 | 当前命名空间 | 目标命名空间 | 操作 |
| -------------- | ------------------- | --------------------------- | ------------- |
| Billing Payment | ss.billing.payment | ss.customer.billing.payment | 添加 .customer |
| Billing History | ss.billing.history | ss.customer.billing.history | 添加 .customer |
| Customer Profile | ss.customer.profile | ss.customer.profile | 无变更 |
| Support Contract | ss.supportcontract | ss.customer.supportcontract | 添加 .customer |
### 工单领域对齐
| 组件 | 当前命名空间 | 目标命名空间 | 操作 |
| ----------- | ----------------- | ------------------------ | ----------- |
| KB Maintenance | ss.kb.maintenance | ss.ticket.kb.maintenance | 添加 .ticket |
| KB Search | ss.kb.search | ss.ticket.kb.search | 添加 .ticket |
| Survey | ss.survey | ss.ticket.survey | 添加 .ticket |
可视化领域结构和组件分组:
创建领域图
记录领域结构
创建领域清单
示例领域地图:
## 领域地图
┌─────────────────────────────────────┐ │ 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 │ └─────────────────────────────────────┘
## 输出格式
### 领域识别报告
```markdown
## 领域识别
### 领域:客户 (ss.customer)
**业务能力**:管理客户关系、计费和支持合同
**组件**:
- Customer Profile (ss.customer.profile)
- Billing Payment (ss.customer.billing.payment)
- Billing History (ss.customer.billing.history)
- Support Contract (ss.customer.supportcontract)
**组件数量**:4
**总大小**:约 15,000 条语句(占代码库的 18%)
**领域内聚性**:✅ 高
- 组件共享客户相关词汇
- 组件经常一起使用
- 组件之间有直接关系
**边界**:
- 与工单领域清晰分离
- 与报告领域清晰分离
- 共享组件(通知)被所有领域使用
## 组件领域分配
| 组件 | 当前命名空间 | 分配的领域 | 目标命名空间 |
| ------------------ | --------------------- | ---------- | ------------------------------- |
| Customer Profile | ss.customer.profile | 客户 | ss.customer.profile (无变更) |
| Billing Payment | ss.billing.payment | 客户 | ss.customer.billing.payment |
| Ticket Maintenance | ss.ticket.maintenance | 工单 | ss.ticket.maintenance (无变更) |
| KB Maintenance | ss.kb.maintenance | 工单 | ss.ticket.kb.maintenance |
| Reporting Shared | ss.reporting.shared | 报告 | ss.reporting.shared (无变更) |
## 命名空间重构计划
### 优先级:高
**客户领域对齐**
**需要重构的组件**:
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`
**步骤**:
1. 更新源文件中的命名空间声明
2. 更新依赖组件中的导入语句
3. 更新目录结构
4. 运行测试以验证变更
5. 更新文档
**预期影响**:
- 所有客户相关组件在 `.customer` 领域下对齐
- 更清晰的领域边界
- 更容易识别领域组件
## 领域地图
### 领域结构
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
### 领域关系
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)
领域识别:
组件分组:
领域验证:
命名空间重构:
领域映射:
领域通常在 services/ 目录中组织:
services/
├── customer/ ← 客户领域
│ ├── profile/
│ ├── billing/
│ │ ├── payment/
│ │ └── history/
│ └── supportcontract/
├── ticket/ ← 工单领域
│ ├── shared/
│ ├── maintenance/
│ ├── assign/
│ └── route/
└── reporting/ ← 报告领域
├── shared/
├── tickets/
└── experts/
通过包结构识别领域:
com.company.customer ← 客户领域
├── profile
├── billing
│ ├── payment
│ └── history
└── supportcontract
com.company.ticket ← 工单领域
├── shared
├── maintenance
├── assign
└── route
策略 1:业务能力分析
策略 2:词汇分析
策略 3:关系分析
策略 4:干系人协作
创建领域后,创建自动化检查:
// 确保组件属于正确的领域
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
}
// 防止组件直接访问其他领域
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: '跨领域直接依赖',
})
}
})
})
return violations
}
创建组件领域后:
每周安装次数
57
代码仓库
GitHub 星标数
1.9K
首次出现
2026年2月7日
安全审计
安装于
opencode55
gemini-cli54
codex54
github-copilot54
amp52
kimi-cli52
This skill groups architectural components into logical domains (business areas) to prepare for creating domain services in a service-based architecture.
Request analysis of your codebase:
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
Apply this skill when:
A domain is a logical grouping of components that:
Examples :
One-to-Many : A single domain contains multiple components
Domain: Customer
├── Component: Customer Profile
├── Component: Billing Payment
├── Component: Billing History
└── Component: Support Contract
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.
Analyze the codebase to identify distinct business domains:
Examine Component Responsibilities
Look for Business Language
Identify Domain Boundaries
Collaborate with Business Stakeholders
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
Assign each component to an appropriate domain:
Analyze Component Functionality
Check Component Relationships
Assign to Domain
Handle Edge Cases
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)
Ensure components fit well in their assigned domains:
Check Cohesion
Verify Boundaries
Assess Completeness
Get Stakeholder Validation
Validation Checklist :
Align component namespaces with identified domains:
Compare Current vs Target Namespaces
services/billing/paymentservices/customer/billing/payment.customer domain nodeIdentify Refactoring Needed
Create Refactoring Plan
Execute Refactoring
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 |
Visualize domain structure and component groupings:
Create Domain Diagram
Document Domain Structure
Create Domain Inventory
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
| 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
### 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
### 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)
Domain Identification :
Component Grouping :
Domain Validation :
Namespace Refactoring :
Domain Mapping :
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/
Domains identified by package structure:
com.company.customer ← Customer Domain
├── profile
├── billing
│ ├── payment
│ └── history
└── supportcontract
com.company.ticket ← Ticketing Domain
├── shared
├── maintenance
├── assign
└── route
Strategy 1: Business Capability Analysis
Strategy 2: Vocabulary Analysis
Strategy 3: Relationship Analysis
Strategy 4: Stakeholder Collaboration
After creating domains, create automated checks:
// 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
}
// 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
}
After creating component domains:
Weekly Installs
57
Repository
GitHub Stars
1.9K
First Seen
Feb 7, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode55
gemini-cli54
codex54
github-copilot54
amp52
kimi-cli52
Laravel架构模式指南:生产级开发模式与最佳实践
1,200 周安装
Epicenter Workflow:AI辅助的标准化开发流程与代码规范管理技能
57 周安装
Redux适配器:将Redux状态管理无缝集成到json-render框架中
243 周安装
NeMo Curator - NVIDIA GPU加速的大语言模型数据整理工具包,16倍去重速度
236 周安装
Neon Postgres 连接配置指南:Prisma、Drizzle ORM 与 PgBouncer 连接池最佳实践
235 周安装
TRL 强化学习微调指南:使用 SFT、DPO、PPO 对齐语言模型与人类偏好
237 周安装
SpacetimeDB 最佳实践指南:TypeScript 模块与 React 客户端集成开发
57 周安装