Skip to content
Back to skills

Mikado

ASecurity

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.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
developmentgonoderefactoringgitapi

Works with

  • claude code
  • cli
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add sunitghub/canon-skills --skill mikado --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mikado?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mikado
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sunitghub-mikado/badge)](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.

Download with Pro
SKILL.md
---
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>" |

Files in this skill

  • SKILL.md3.9 KB
  • evals/evals.json3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…