关于 mikado-method
mikado-method 是指导开发者以依赖图驱动渐进式重构的技能,强调让代码库保持稳定。它将前置事项组织成图,并引导从可执行的叶节点逐步达成目标。
主要功能
- 01绘制前置依赖图
- 02定义可执行的重构目标
- 03从前置依赖叶节点开始
- 04失败尝试后恢复稳定代码
- 05规划原子化实施步骤
适用场景
- 01将大型重构拆分为多个步骤
- 02在修改前梳理依赖关系
- 03在重构期间保持代码库稳定
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ bsene/ skills --skill mikado-method安装后在 Claude Code 中输入/mikado-method确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/execution-and-situations.mdgraph-building.mdorganizational-change.md详细介绍
Mikado Method 技能
一项用于引导开发者使用 Mikado Method 的技能:这是一种有纪律、以图为导向的安全渐进式重构方法,可始终保持代码库处于可用状态。
什么是 Mikado Method?
名称源自 Pickup Sticks 游戏(Mikado):在拿到底部最有价值的那根棍子之前,你必须移走最上面的棍子,且不能扰乱整堆棍子。在软件中,你的目标(“Mikado”)位于一堆依赖之下。该方法会以可视化方式呈现这些依赖,让你逐个安全地移除它们。
核心定义
| 术语 | 含义 |
|---|---|
| 目标 | 根节点。必须明确两件事:起点(当前情况)和成功标准(“完成”的样子)。缺少其中任一项的目标都无法执行——应将其分解,直到找到同时具备这两项的前置条件。将其圈两次。 |
| 前置条件 | 必须先解决的依赖,解决后才能完成其父节点。 |
| 叶节点 | 没有更多前置条件的节点。可以立即安全实施。 |
| Mikado Map | 目标及其前置条件构成的完整树。这是重构的“存档”。 |
| 回退 | 撤销所有更改,恢复到稳定状态。图仍然保留;损坏的代码则不保留。 |
快速参考卡
MIKADO LOOP
───────────
① Write goal (root) → circle it twice
② Attempt naively in code
③ Every error = a prerequisite bubble
④ REVERT (always, immediately)
⑤ Pick a leaf → repeat from ②
⑥ Leaf passes cleanly → ask: does this still serve the goal?
→ no: discard, do NOT commit, pick the next leaf
→ yes: commit → prune
⑦ Repeat until goal is reached
RULES
─────
• Never build on broken code
• One atomic change per commit
• No behavior changes in refactoring commits
• Leaves only touch one concern
• The map is the work — protect it
常见错误及纠正方法
| 错误 | 纠正方法 |
|---|---|
| 直接修复错误,而不是回退 | “立即回退。将这些错误添加为前置节点。” |
| 在有问题的代码上继续构建 | “这违反了核心规则。继续之前,先恢复到绿色状态。” |
| 一个提交包含多个更改 | “拆分为每个叶节点一个提交。” |
| 以“规模小”为由跳过图 | “从一个 3 节点图开始也可以。它能防止范围蔓延。” |
| 为避免设置测试数据的麻烦而使用模拟对象 | “改为将测试数据构建器作为米卡多叶节点。” |
| 长期存在的重构分支 | “在 main 上工作。只提交不会破坏任何内容的叶节点。” |
| 仅仅因为叶节点通过测试就提交 | “通过测试还不够——它真的有助于实现目标吗?如果没有,就丢弃它并转向下一个前置条件。” |
输出格式
帮助用户应用米卡多方法时,始终生成:
1. 米卡多图(Mermaid 图)
graph TD
G(["🎯 GOAL: <goal name>"]) --> P1["Prerequisite A"]
G --> P2["Prerequisite B"]
P1 --> L1["🟢 Leaf: step 1"]
P1 --> L2["🟢 Leaf: step 2"]
P2 --> L3["🟢 Leaf: step 3"]
当前叶节点使用 🟢,不可达的前置条件使用 ⬜,已完成的节点使用 ✅。
2. 有序实施计划
按叶节点优先顺序列出步骤,每一步都包含一个原子化重构操作、一行验证测试,以及建议的提交消息。
3. 回退提醒
进行任何直接尝试后:“立即回退——git restore <touched files>——你的图已保存,不需要保留有问题的代码。”(将回退范围限定为你修改过的文件;git checkout . 会丢弃所有未提交的工作,而不只是直接尝试。)
按需阅读
| 阅读时机 | 文件 |
|---|---|
| 开始构建图、填充前置条件、评估叶节点、处理共享前置条件 | 图的构建 |
| 执行顺序、提交策略、遗留代码、大型重构、卫生规则、不可执行的目标 | 执行与情境 |
| 将米卡多方法应用于团队、流程或组织变革(敏捷/CI 采用、阻碍因素) | 组织变革 |
来源
- 米卡多方法主页 — Ola Ellnestam 和 Daniel Brolund,米卡多方法及 Manning 图书的作者。
基准测试
场景:.benchmarks/scenarios/mikado-method-001-revert-discipline.md
| 模型 | 无 | 有 | 差值 |
|---|---|---|---|
| claude-opus-4-8 | 29% | 100% | +71% |
| claude-sonnet-4-6 | 29% | 100% | +71% |
| claude-haiku-4-5 | 14% | 57% | +43% |
通过(运行于 2026-06-25)。提升显著(opus/sonnet +71)——基线在没有辅助时不会遵循始终回退、每个叶节点一个提交以及三部分输出的要求。使用此技能时,haiku 仅达到 57%(图示/回退遵循度较弱)——可考虑针对 haiku 进行重点强化。门槛见
.agents/skills/skill-optimizer/rules/release-gates.md。