Maps the dependency tree for a refactor before changing code, using the Mikado Method — attempt the goal, revert on breakage, record prerequisites, execute leaves-first. Use when a refactor is likely to cascade into prerequisite changes or touch interdependent modules.
Pro scans all 2 files and shows the line behind each finding
Scanned 10/6/2026
npx -y skills add sunitghub/canon-skills --skill mikado --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Mikado?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/sunitghub-mikado)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: mikado
description: Maps the dependency tree for a refactor before changing code, using the Mikado Method — attempt the goal, revert on breakage, record prerequisites, execute leaves-first. Use when a refactor is likely to cascade into prerequisite changes or touch interdependent modules.
category: dev
tags: [refactoring, planning, dependencies, reversible]
hidden: true
---
# Mikado
Plan a cascading refactor as a dependency graph you discover by *attempting* it, so the tree
stays green at every step and nothing is half-migrated.
## When to Use
- A refactor likely to cascade: renaming or moving a widely-used symbol, extracting a module,
inverting a dependency, replacing an API many callers touch, splitting a god-object.
- You are not sure what a change will break until you try it.
**Not for:** a self-contained one-file change with no dependents — that is a normal edit, not a
Mikado goal.
## The Method
1. **Set the Mikado Goal.** State the end refactor in one sentence (e.g. "PaymentService no
longer imports the HTTP layer"). This is the root node.
2. **Attempt it naively.** Make the direct change toward the goal.
3. **Observe breakage.** Build, type-check, and run the tests. Compile errors, failing tests,
and broken callers are the *prerequisites* the naive change revealed.
4. **If clean** (nothing breaks): the node is a leaf — keep it, mark it done.
5. **If broken:** for each breakage, write a **prerequisite node** — the change that must happen
*first* — as a child of the current node. Then **revert the naive change immediately**
(`git checkout -- <files>` / undo). Never leave the tree red between steps.
6. **Recurse.** Each prerequisite becomes a sub-goal; repeat steps 2–5 on it until you reach
leaves — changes that break nothing on their own.
7. **Execute leaves-first.** Work bottom-up: do the deepest leaves, verify the tree is green
after each, then move up toward the goal. If a step surprises you with a new breakage, add a
new prerequisite node and revert — **do not push through**. The graph grows; the tree stays green.
The goal change is done *last*, and by then every prerequisite is already in place, so it applies
cleanly.
## The Mikado Graph (durable artifact)
The graph is the plan. Record it in `plan.md` under `## Approach` (or a `## Mikado` subsection).
Root = goal; children = prerequisites; check off leaves-first.
```
Goal: PaymentService no longer imports the HTTP layer
- [ ] Introduce a PaymentGateway interface in the domain
- [ ] Move the HTTP client behind an adapter implementing PaymentGateway
- [ ] Extract the request-building helper (leaf — no dependents)
- [ ] Inject PaymentGateway into PaymentService via constructor
- [ ] Add a constructor param with a default (leaf)
```
Execution order is deepest-first: the two leaves, then their parents, then the interface, then
the goal. Each checkbox is flipped only after the tree is verified green.
## Rules
- **Always revert on breakage.** A discovered prerequisite is recorded, not forced through.
- **The tree is green between every executed step** — never commit a half-migrated state.
- **The graph is the source of truth** for the change order; keep it in `plan.md`.
- Prefer many small reversible leaves over one large risky change.
## Boundaries
Mikado is a **planning aid only**. It produces the reversible change path and the graph; it
**touches no close gate**. Risk tiers and the sprint reviewer/evaluator gates are unchanged —
mikado decides *what order to change things in*, never *what verification runs*.
Inside a canon refactor sprint, run mikado during orient/plan and log the graph in `plan.md`.
It is also invokable standalone, outside a sprint, to produce a change plan.
## Triggers
| Agent | How to trigger |
|---|---|
| Claude Code | `/mikado <refactor goal>` |
| Codex / Pi | "Plan this refactor with mikado" / "Map the dependencies for <goal>" |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!