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詳細
ミカドメソッドスキル
ミカドメソッドを開発者に案内するスキルです。コードベースを常に動作する状態に保ちながら、安全かつ段階的にリファクタリングするための、規律あるグラフ駆動型のアプローチです。
ミカドメソッドとは?
ミカド(棒倒し)ゲームにちなんだ名前です。このゲームでは、山を崩さずに一番上の棒を取り除き、最終的に一番価値の高い底の棒にたどり着く必要があります。ソフトウェアでは、目標(「ミカド」)は依存関係の山の下にあります。このメソッドでは、それらの依存関係を視覚化し、安全に一つずつ解消できるようにします。
基本用語
| 用語 | 意味 |
|---|---|
| 目標 | ルートノードです。開始地点(現在の状態)と成功基準(「完了」がどのような状態か)の2つを定義する必要があります。どちらかが欠けている目標は実行に移せません。両方を備えた前提条件が見つかるまで分解してください。二重丸を付けます。 |
| 前提条件 | 親ノードを完了する前に解決しなければならない依存関係です。 |
| リーフノード | これ以上前提条件がないノードです。すぐに実装しても安全です。 |
| ミカドマップ | 目標と前提条件からなるツリー全体です。リファクタリングの「セーブデータ」です。 |
| 元に戻す | 安定した状態に戻すために、すべての変更を取り消すことです。マップは残りますが、壊れたコードは残りません。 |
クイックリファレンスカード
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
修正すべきよくある間違い
| 間違い | 修正 |
|---|---|
| エラーを元に戻さず、その場で修正する | 「今すぐ元に戻してください。これらのエラーを前提条件のノードとして追加してください。」 |
| 壊れたコードの上に変更を積み重ねる | 「これは基本ルールに反しています。続行する前に、正常な状態に戻してください。」 |
| 複数の変更を1つの巨大なコミットにまとめる | 「リーフノードごとに1つのコミットに分割してください。」 |
| 「小さな」リファクタリングではグラフを省略する | 「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. 順序付きの実装計画
リーフから順に進める手順を番号付きリストで示します。各手順には、アトミックなリファクタリング操作、1行の検証テスト、推奨するコミットメッセージを記載してください。
3. 元に戻すことのリマインダー
安易な試みをした後は、必ず次のように伝えてください。「今すぐ元に戻してください — git restore <touched files> — マップは保存されています。壊れたコードは必要ありません。」(元に戻す対象は、作業したファイルに限定してください。git checkout .では、安易な試みだけでなく、コミットしていない作業がすべて破棄されます。)
必要に応じて読む
| 読むタイミング | ファイル |
|---|---|
| グラフの作成、前提条件の追加、リーフの評価、共有される前提条件の確認 | グラフの作成 |
| 実行順序、コミット戦略、レガシーコード、大規模なリファクタリング、衛生ルール、実行可能な目標ではない場合 | 実行と状況 |
| チーム、プロセス、組織の変革(アジャイル/CIの導入、阻害要因)にミカドメソッドを適用する場合 | 組織の変革 |
出典
- ミカドメソッドのホームページ — この手法とManningの書籍の著者、Ola EllnestamとDaniel Brolund。
ベンチマーク
シナリオ:.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)。ベースラインでは、「必ず元に戻す」「リーフごとに1コミット」「3部構成の出力」を自力で適用できません。haikuはスキルを使っても57%にとどまり(マップと元に戻す指示への準拠が弱い)、haikuを対象とした強調の見直し候補です。
.agents/skills/skill-optimizer/rules/release-gates.mdに従ってゲートを適用してください。