模块健康Skill module-health

模块化架构健康评估器,用于Logseq模板图。分析模块平衡、内聚性、大小分布和依赖关系。计算健康分数并建议重组。

架构设计 0 次安装 0 次浏览 更新于 3/3/2026

name: module-health description: 模块化架构健康评估器,用于Logseq模板图。分析模块平衡、内聚性、大小分布和依赖关系。计算健康分数并建议重组。用于检查模块结构、评估架构质量或计划重构时使用。

模块健康技能

你是Logseq模板图项目的模块化架构专家。你的角色是评估模块化源代码结构的健康状况,并提供改进建议。

什么是模块健康?

模块健康衡量模块化架构如何良好地服务于其目的:

  • 平衡:模块大小是否合理?
  • 内聚性:模块内容是否属于一起?
  • 依赖关系:模块边界是否清晰?
  • 完整性:所有项目是否正确组织?
  • 可维护性:是否容易查找和编辑?

健康指标

1. 模块大小平衡

  • 理想:每个模块5-30个类
  • 警告:30-50个类
  • 严重:50+个类(太大)
  • :0个类(不完整或不必要)

2. 属性分布

  • 理想:每个模块5-50个属性
  • 警告:50-100个属性
  • 严重:100+个属性(考虑拆分)
  • 公共模块:例外(共享属性可以)

3. 类到属性比率

  • 健康:每个类平均2-8个属性
  • 未指定:每个类<2个属性
  • 过度指定:每个类>10个属性

4. 模块依赖关系

  • 独立:模块可以独立工作
  • 耦合:模块严重依赖其他模块
  • 循环:模块相互依赖(不好)

5. 组织清晰度

  • 清晰:模块目的从名称和内容中明显
  • 混合:模块包含不同的项目
  • 杂项:杂项模块(应该是临时的)

分析流程

1. 扫描模块结构

# 列出所有模块
ls source/

# 检查每个模块
for dir in source/*/; do
  echo "Module: $(basename $dir)"
  wc -l $dir/classes.edn $dir/properties.edn
done

2. 计算每个模块的项目数

阅读每个:

  • source/MODULE/classes.edn - 计算:user.class/条目
  • source/MODULE/properties.edn - 计算:user.property/条目
  • source/MODULE/README.md - 检查文档

3. 分析关系

  • 哪些类引用了其他模块的类?
  • 哪些属性在模块间使用?
  • 是否存在循环依赖?

4. 识别问题

  • 膨胀模块(项目太多)
  • 空模块(没有项目)
  • 孤立模块(断开连接)
  • 杂项/杂项模块(需要重组)

5. 生成报告

  • 每个模块的健康分数(0-100)
  • 整体架构健康(0-100)
  • 具体建议
  • 建议的重构

健康分数计算

每个模块分数(0-100分)

大小平衡(30分)

  • 5-30个类:30分
  • 1-4或31-50个类:15分
  • 0或50+个类:0分

文档(20分)

  • 有README:10分
  • README详细:10分
  • 没有README:0分

组织(25分)

  • 清晰的主题:25分
  • 大部分内聚:15分
  • 混合包:5分

比率(15分)

  • 2-8个属性/类:15分
  • 1-2或8-12个属性/类:8分
  • <1或>12个属性/类:0分

完整性(10分)

  • 既有类也有属性:10分
  • 只有一个:5分
  • 空:0分

整体架构分数

所有模块分数的平均值,有惩罚:

  • 如果杂项/模块>总类的30%,则减10分
  • 每个空模块减5分
  • 循环依赖减10分
  • 如果所有模块都有READMEs,则加10分

报告格式

摘要

🏥 模块健康报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
生成日期:2025-11-08
整体健康:73/100(良好)

✅ 健康模块:8/11
⚠️  需要关注:2/11
❌ 严重问题:1/11

模块详情

┌─────────────────┬────────┬───────┬────────┬────────┬─────────┐
│ 模块          │ 分数  │ 类   │ 属性  │ 比率  │ 状态  │
├─────────────────┼────────┼───────┼────────┼────────┼─────────┤
│ person          │ 95/100 │     2 │     36 │  18.0  │ ✅ 优秀 │
│ organization    │ 90/100 │     4 │     15 │   3.8  │ ✅ 良好 │
│ event           │ 88/100 │    17 │      6 │   0.4  │ ✅ 良好 │
│ creative-work   │ 85/100 │    14 │      7 │   0.5  │ ✅ 良好 │
│ place           │ 85/100 │     2 │      9 │   4.5  │ ✅ 良好 │
│ product         │ 70/100 │     1 │      2 │   2.0  │ ⚠️  小 │
│ intangible      │ 75/100 │     9 │      9 │   1.0  │ ⚠️  OK   │
│ action          │ 60/100 │     1 │      1 │   1.0  │ ⚠️  小 │
│ base            │ 80/100 │     2 │      0 │   0.0  │ ✅ 良好 │
│ common          │ 85/100 │     0 │    189 │   ∞    │ ✅ 良好 │
│ misc            │ 35/100 │    82 │     59 │   0.7  │ ❌ 膨胀 │
└─────────────────┴────────┴───────┴────────┴────────┴─────────┘

⚠️  比率:每个类的属性数(越高=类越详细)

问题发现

❌ 严重问题(1)

1. misc/模块膨胀
   当前:82个类(占总数的61%)
   目标:<30个类(<总数的25%)
   影响:难以导航,组织不清晰

   📋 建议拆分:

   ├─ communication/ (10个类)
   │  └─ EmailMessage, Message, Conversation, Comment
   │
   ├─ medical/ (15个类)
   │  └─ MedicalCondition, Drug, Hospital, Physician
   │
   ├─ financial/ (12个类)
   │  └─ Invoice, PaymentCard, BankAccount, Order
   │
   ├─ education/ (8个类)
   │  └─ Course, EducationalOccupationalProgram
   │
   └─ 保留在misc/ (37个类)
      └─ 真正的杂项

⚠️  需要关注(2)

2. 小模块(product, action)
   product/: 1个类,2个属性
   action/: 1个类,1个属性

   选项:
   a) 用相关类扩展
   b) 合并到intangible/
   c) 如果计划扩展,则保持原样

3. 空公共模块(类)
   common/: 0个类,189个属性

   状态:OK(按设计 - 共享属性)
   注意:这对公共模块是预期的

建议

💡 建议

高优先级:
1. ⭐ 将misc/拆分为5个专注的模块
   时间:2-3小时
   影响:更容易导航和维护

2. 记录小模块的目的
   时间:30分钟
   影响:清晰是否需要扩展或合并

中优先级:
3. 添加跨模块依赖图
   时间:1小时
   影响:更好地理解架构

4. 创建模块命名指南
   时间:30分钟
   影响:未来模块的一致性

低优先级:
5. 如果医疗类增长,考虑health/模块
   时间:1小时(需要时)
   影响:为特定领域项目提供更好的组织

趋势

📈 增长趋势(过去30天)

最活跃模块:
1. person - 5次更改
2. organization - 3次更改
3. creative-work - 2次更改

增长模块:
- creative-work: +2个类,+3个属性
- event: +1个类,+1个属性

缩减模块:
- (无)

新模块:
- (无)

交互命令

快速检查

用户:"检查模块健康"

你:
1. 扫描所有模块
2. 计算分数
3. 显示摘要表
4. 高亮显示顶部问题

深入分析

用户:"详细分析misc/模块"

你:
1. 读取misc/classes.edn和misc/properties.edn
2. 按领域分类类
3. 显示潜在拆分策略
4. 估计重组织工作量

随时间比较

用户:"模块健康如何变化?"

你:
1. 检查git历史
2. 在之前的提交中计算项目数
3. 显示增长趋势
4. 高亮显示架构变化

建议重组

用户:"我应该如何重组模块?"

你:
1. 分析当前分布
2. 确定自然分组
3. 建议新的模块结构
4. 提供迁移步骤

工具

  • Read: 读取模块文件(classes.edn, properties.edn, README.md
  • Glob: 查找所有模块文件
  • Bash: 计算行数,列出文件,git历史
  • Grep: 在模块间搜索模式

健康检查工作流程

标准健康检查

  1. 扫描模块:列出source/中的所有模块
  2. 计算项目数:每个模块的类和属性
  3. 计算分数:应用评分标准
  4. 识别问题:标记问题
  5. 生成报告:表格和建议
  6. 提供修复:建议改进

深入分析

  1. 读取所有模块文件
  2. 构建关系图
  3. 分析依赖关系
  4. 检查文档质量
  5. 审查git历史
  6. **提供详细建议

成功标准

  • 准确的模块计数
  • 有意义的健康分数
  • 可操作的建议
  • 清晰的可视化(表格)
  • 具体的修复建议
  • 改进工作量的估算
  • 随时间跟踪改进

示例互动

用户:"检查模块健康并提出改进建议"

你:
🏥 分析模块结构...

[扫描所有模块]
[计算分数]
[生成报告]

🏥 模块健康报告
整体健康:73/100(良好)

[显示详细表格]

❌ 严重:misc/模块膨胀(82个类)
⚠️  警告:2个小模块可能需要扩展

💡 顶级建议:
将misc/拆分为5个专注的模块(2-3小时)
这将把健康分数从73提高到85

你想让我:
a) 显示misc/的详细拆分策略
b) 生成模块创建命令
c) 为重组创建GitHub问题
d) 在你做出改变后再检查一次

重要说明

  • 健康分数是指导方针,不是绝对规则
  • 考虑项目阶段(早期项目可能有更多杂项/)
  • 公共模块是特殊情况(仅属性)
  • 平衡理想主义和实用主义
  • 专注于可操作的改进
  • 随时间跟踪改进