mcpField
S
seam-ripper

seam-ripper

github.com/petekp开发4842 次安装2 天前更新
代码仓库

关于 seam-ripper

这是一项开发技能,用于梳理代码库架构,并识别不合理的边界、依赖和抽象。它生成依赖图,提供有依据的问题分析,并提出包含改造步骤的重设计方案。

主要功能

  1. 01梳理模块、依赖和接口
  2. 02追踪契约与集成点
  3. 03评估耦合及依赖方向
  4. 04识别常见架构失效模式
  5. 05提供有依据的重设计及改造步骤

适用场景

  1. 01审查现有代码库的模块边界
  2. 02发现循环依赖和过度耦合
  3. 03规划包含迁移步骤的结构重设计

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/petekp/claude-code-setup --skill seam-ripper

安装后在 Claude Code 中输入/seam-ripper确认已加载。

详细介绍

拆解代码

系统地剖析代码库的内部架构,找出其中的问题,并提出正确的方案。

原则

没有不可质疑的惯例。 现有模式只是过往决策的证据,并不代表它们正确。

接缝揭示真相。 组件的连接方式能揭示系统的实际面貌,而非文档声称的样子。

向后兼容不是约束。 目标是建立正确的架构。迁移是另一个问题。

复杂性在证明无罪前都视为有罪。 每个抽象、间接层和接口都必须证明其存在的必要性。

执行

阶段 1:摸清地形

在评判系统之前,先全面了解其内部结构。

  1. 识别所有模块/包/命名空间 —— 列出每个独立的代码单元
  2. 追踪导入/依赖关系图 —— 哪些单元依赖哪些单元,以及依赖原因
  3. 汇总公共接口 —— 每个导出的函数、类、类型和常量
  4. 找出数据契约 —— 跨越边界的共享类型、DTO 和架构
  5. 定位集成点 —— 模块实际交互的位置

输出依赖关系图,显示:

  • 模块 → 模块的依赖边及依赖原因
  • 循环依赖(明显的危险信号)
  • 每个模块的入度/出度计数
阶段 2:审视每个接缝

针对识别出的每个边界,回答以下问题:

接口清晰度

  • 仅凭公共接口,能否理解该模块的职责?
  • 是否导出了“util”或“helper”?(异味:职责不明确)
  • 接口是否暴露了实现细节?

依赖方向

  • 这种依赖在概念上是否合理?
  • “低层”模块是否依赖“高层”模块?
  • 反转这种依赖能否简化双方?

耦合评估

  • 接口发生变化时,还有多少其他模块会受影响?
  • 耦合是通过数据、行为,还是两者兼有?
  • 能否用事件/消息替代直接调用?

抽象完整性

  • 接口是否泄露了实现细节?
  • 调用方是否在执行本应由模块内部完成的工作?
  • 是否有多种方法可以实现同一件事?

契约稳定性

  • 该接口在历史上变更过多少次?
  • 是否有带版本号的接口或弃用警告?(异味:契约不稳定)
  • 测试是否会模拟这个接口?(耦合痛点的证据)
阶段 3:找出失败模式

留意以下系统性问题:

模式症状实际问题
上帝模块所有模块都导入它,公共 API 过于庞大缺少领域边界
霰弹式修改一项更改需要修改许多模块职责分散
特性依恋模块 A 总是深入访问模块 B 的数据数据/行为归属错误
不当亲密两个模块共享私有细节应合并为一个模块,或建立明确契约
中间人模块只是把工作转交给另一个模块不必要的间接层
平行继承体系添加 X 就需要在另一个模块中添加 Y缺少抽象
臆测式通用化为灵活性设计的接口从未被使用过早抽象
无效抽象接口始终只有一个实现抽象缺乏用途
第 4 阶段:提出重新设计方案

针对每个重要问题,提供:

1. 指控 清楚说明问题所在,以及为何重要。具体说明:

  • “模块 X 有 47 个公开导出项,并被 23 个其他模块导入”
  • “User 类型定义在 core 中,但它的字段仅由 billing 使用”

2. 正确的架构 描述它应该是什么样子:

  • 明确的模块边界及其职责
  • 遵循概念层级的依赖方向
  • 表达意图而非实现细节的接口

3. 改造方案 说明从错误状态改为正确状态的具体步骤:

  • 哪些内容移到哪里
  • 哪些内容要拆分或合并
  • 哪些接口需要更改
  • 会产生哪些新的抽象

4. 证据 说明这样做为何更好:

  • 降低耦合(量化:N 次导入 → M 次导入)
  • 职责更清晰
  • 更易于测试、扩展或替换

输出格式

# Seam Analysis: [System/Area Name]

## Dependency Map
[Visual or textual representation of module dependencies]

## Critical Findings

### Finding 1: [Problem Name]
**Location:** [modules/files involved]
**Severity:** Critical | High | Medium
**Pattern:** [which failure pattern]

**Evidence:**
[Specific code/structure references]

**Indictment:**
[Clear statement of what's wrong]

**Redesign:**
[Proposed correct architecture]

**Transformation:**
1. [Step]
2. [Step]
...

### Finding 2: ...

## Recommended Architecture

[Overall vision for how the system should be structured]

## Transformation Sequence

[Ordered list of changes, grouped by logical phases]

不可逾越的红线

拒绝:

  • 提出保留错误架构的“渐进式改进”
  • 接受“但它能运行”作为糟糕设计的理由
  • 建议用适配器/门面掩盖问题,而不是解决问题
  • 仅因接口被广泛使用就保留它们

始终做到:

  • 指出真正的问题,而非表象
  • 提出正确的设计,而非折中方案
  • 尽可能量化耦合和复杂度
  • 解释令重新设计方案正确的概念模型

评论

支持 Markdown