mcpField
M
mikado-method

mikado-method

github.com/bsene开发7145 次安装1 天前更新
代码仓库

关于 mikado-method

mikado-method 是指导开发者以依赖图驱动渐进式重构的技能,强调让代码库保持稳定。它将前置事项组织成图,并引导从可执行的叶节点逐步达成目标。

主要功能

  1. 01绘制前置依赖图
  2. 02定义可执行的重构目标
  3. 03从前置依赖叶节点开始
  4. 04失败尝试后恢复稳定代码
  5. 05规划原子化实施步骤

适用场景

  1. 01将大型重构拆分为多个步骤
  2. 02在修改前梳理依赖关系
  3. 03在重构期间保持代码库稳定

安装

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

$npx skills add https://github.com/bsene/skills --skill mikado-method

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
execution-and-situations.md
graph-building.md
organizational-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-829%100%+71%
claude-sonnet-4-629%100%+71%
claude-haiku-4-514%57%+43%

通过(运行于 2026-06-25)。提升显著(opus/sonnet +71)——基线在没有辅助时不会遵循始终回退、每个叶节点一个提交以及三部分输出的要求。使用此技能时,haiku 仅达到 57%(图示/回退遵循度较弱)——可考虑针对 haiku 进行重点强化。门槛见 .agents/skills/skill-optimizer/rules/release-gates.md。

评论

支持 Markdown