Skip to content
cccskills
FreePublished on GitHub

refactoring-mikado-strangler

Guide for large-scale refactorings with Mikado and Strangler Fig. Use for architecture migration, library replacement, module splitting, or pattern changes. Maintains a Mikado graph to track dependencies.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md5.7 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Large Scale Refactoring - Mikado & Strangler Fig

Persona

Read .claude/roles/senior-dev.md — adopt this profile and follow all its rules.

Activation

This skill activates for refactorings that exceed a TDD cycle scope:

  • Architecture migration
  • Library or framework replacement
  • Splitting a monolithic module
  • Pattern change (e.g., callbacks -> promises -> async/await)
  • Bounded context restructuring

Choosing the method

CriterionMikadoStrangler Fig
Old code stays functional duringNoYes
Need to deliver incrementallyDifficultIdeal
Complex dependencies to untangleIdealPossible
Complete replacement of a systemPossibleIdeal

Ask the user which method to use if it's not obvious.


Mikado Method

Principle

  1. Try the final goal directly
  2. Observe what breaks
  3. Revert immediately (no broken code left around)
  4. Note the discovered prerequisites in the graph
  5. Recurse on each prerequisite
  6. Implement the leaves of the graph (those with no dependencies)

Interactive workflow

Step 1: Initialization

MIKADO - Initialization

Main goal: [description]
Graph file: docs/mikado/[name]-graph.md

I will create the tracking file.
Shall we begin?

Create the graph file:

# Mikado Graph: [Goal]

## Status: IN PROGRESS

## Main goal
- [ ] [Goal description]

## Discovered prerequisites
(Fills in as attempts are made)

## Attempt history
(Log of attempts and discoveries)

Step 2: Attempt

MIKADO - Attempt

I will try: [goal or prerequisite]
Expected: [what should break]

Shall we try?

After validation:

  1. Attempt the modification
  2. Run yarn test:run
  3. Note EVERYTHING that breaks
  4. REVERT IMMEDIATELY with git checkout .

Step 3: Analysis

MIKADO - Analysis

Attempt: [what we tried]
Result: [success / failure]

Errors encountered:
- [error 1] -> Prerequisite: [required action]
- [error 2] -> Prerequisite: [required action]

I'm updating the graph.
Which prerequisite do we tackle first?

Step 4: Implementation (leaves)

When a prerequisite has no dependencies:

MIKADO - Implementation

Prerequisite to implement: [description]
This is a leaf of the graph (no dependencies).

-> Activating the TDD skill for proper implementation.

Switch to the TDD skill to implement the prerequisite with RED-GREEN-REFACTOR.

Step 5: Validation

After each implementation:

MIKADO - Validation

Prerequisite completed: [description]
Updating the graph: done

Next action:
- [ ] [Another leaf to process]
- [ ] [Retry a parent goal]

What do we continue with?

Strangler Fig Method

Principle

  1. Create the new system alongside the old one
  2. Migrate calls progressively to the new system
  3. Cohabitation: both systems run in parallel
  4. Remove the old one when nothing uses it anymore

Interactive workflow

Step 1: Planning

STRANGLER - Planning

Old system: [description]
New system: [description]

Entry points to migrate:
1. [point 1]
2. [point 2]
...

I'm creating the tracking file: docs/strangler/[name]-migration.md
Which entry point do we start with?

Create the tracking file:

# Strangler Migration: [Name]

## Status: IN PROGRESS

## Old system
- Location: [path]
- Entry points: [list]

## New system
- Location: [path]
- Migrated entry points: 0/[total]

## Migration plan

| Entry point | Status | Date |
|-------------|--------|------|
| [point 1] | Pending | - |
| [point 2] | Pending | - |

## Old system removal checklist
- [ ] All entry points migrated
- [ ] No references to old code
- [ ] Old system tests removed/migrated
- [ ] Old code deleted

Step 2: Creating the new system

STRANGLER - New system

I will create the new implementation for: [entry point]
Location: [path]

-> Activating the TDD skill for proper implementation.

Switch to the TDD skill to create the new implementation.

Step 3: Migrating an entry point

STRANGLER - Migration

Entry point: [description]
Old: [code/path]
New: [code/path]

Migration plan:
1. [step 1]
2. [step 2]

Shall we migrate?

Step 4: Cohabitation verification

STRANGLER - Verification

Migration completed: [entry point]

Checklist:
- [ ] Tests pass
- [ ] Old code still functional (if other dependencies exist)
- [ ] New code used by [consumers]

Updating the tracking file.
Next entry point?

Step 5: Removal

When all entry points are migrated:

STRANGLER - Removal

All entry points have been migrated!

Old code to remove:
- [file 1]
- [file 2]

Tests to remove/migrate:
- [test 1]

Shall we clean up?

Integration with the TDD skill

Every time we need to implement code (Mikado prerequisite or new Strangler system), we switch to the TDD skill:

-> This prerequisite requires code.
-> Activating the TDD skill to implement with RED-GREEN-REFACTOR.
-> Returning to the Refactoring skill once complete.

Tracking files

Graphs and plans are stored in:

docs/
├── mikado/
│   └── [name]-graph.md
└── strangler/
    └── [name]-migration.md

These files serve as living documentation and allow resuming an interrupted refactoring.


Anti-patterns to block

  • Leaving broken un-reverted code (Mikado)
  • Removing the old system before the new one is complete (Strangler)
  • Implementing without tests (always go through the TDD skill)
  • Multiple refactorings in parallel
  • Skipping a step without user validation

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Guide for creating optimized Claude Code agents. Use to design a new specialized agent, a swarm sub-agent, or a multi-agent workflow. Follows the Skill → Agent (preloaded skills) → Skill orchestration pattern.

The English summary is being prepared. Showing the original description.

DGouron/review-flow44Updated Oct 21, 2026

Anti-overengineering guide based on YAGNI. Use before adding an architectural pattern, during code review, or to challenge an overly complex implementation.

The English summary is being prepared. Showing the original description.

DGouron/review-flow44Updated Oct 21, 2026

Clean Architecture (Uncle Bob) guide for this project. Use when creating modules, entities, use cases, presenters, controllers, gateways, guards, services. Contains tactical patterns and structure conventions.

The English summary is being prepared. Showing the original description.

DGouron/review-flow44Updated Oct 21, 2026

Audit documentation for duplication, staleness, language issues, and verbosity. Read-only — produces an actionable report.

The English summary is being prepared. Showing the original description.

DGouron/review-flow44Updated Oct 21, 2026

Local auto-review of modified code (no GitLab/GitHub). Runs 5 sequential audits and generates a local report. Ideal for validating code before creating a MR/PR.

The English summary is being prepared. Showing the original description.

DGouron/review-flow44Updated Oct 21, 2026

Clean Code (Robert C. Martin) guide to produce and challenge code that is readable, durable, simple, and consistent. Covers naming, functions, comments, smells, and refactor heuristics. Complements `/solid` (SOLID principles) and `/anti-overengineering` (YAGNI/KISS). Activate during the REFACTOR phase of the TDD cycle and during implementation self-review.

The English summary is being prepared. Showing the original description.

DGouron/review-flow44Updated Oct 21, 2026

See all skills by DGouron

Report a problem with this skill