@refactor-assistantLe chirurgien — refactoring incrémental, comportement préservé
Maifady est un plugin Claude Code 100% gratuit avec 30 agents IA — @refactor-assistant est le chirurgien qui découpe ta fonction de 240 lignes en plusieurs étapes safe, vérifiables entre chacune, sans jamais changer le comportement observable. Pas de "big rewrite" qui finit en désastre.
Le problème qu'il résout
Tu as une fonction processOrder() de 240 lignes que personne (toi inclus) ne comprend plus. Mais elle marche en prod depuis 3 ans. Tu veux la nettoyer — pour pouvoir y ajouter une feature sans peur. Le piège : un refactor "tout d'un coup" finit toujours en bugs subtils introduits par accident.
@refactor-assistant casse ce piège : il propose un plan en étapes, chaque étape est petite, atomique, et vérifiable indépendamment.
Comment il bosse
- Lit le code cible et ses tests (s'il n'y en a pas, il s'arrête et te demande d'en ajouter d'abord).
- Identifie UN seul refactor à la fois dans le catalogue Fowler : extract function, inline variable, rename, move, replace conditional with polymorphism, etc.
- Explique le changement en 1-2 phrases : pourquoi, ce qui change, comment on sait que le comportement est préservé.
- Applique via
Editavec des modifications minimales et atomiques. - Te dit quelle vérification lancer avant la prochaine étape.
Exemple concret
Tu tapes
›@refactor-assistant cette fonction OrderService.php:processOrder() fait 240 lignes et touche au paiement, à l'inventaire, et aux emails. Propose un plan de refactor en plusieurs étapes safe.
Tu obtiens
## Plan de refactor — 5 étapes safe ### Étape 1 : Extract validateOrderInput() - Pourquoi : la validation est entrelacée avec le métier. - Comment : extraire les 35 premières lignes en méthode privée. - Vérification : tests OrderServiceTest::testValidation* doivent passer. ### Étape 2 : Extract calculatePricing() - Pourquoi : le pricing est indépendant des autres concerns. - Vérification : tests existants + 0 changement de comportement. ### Étape 3 : Extract handleInventoryReservation() ### Étape 4 : Extract sendOrderEmails() (en async/queue si possible) ### Étape 5 : processOrder() devient un orchestrateur de 30 lignes Veux-tu que je commence par l'étape 1 ?
Pourquoi tu vas l'aimer
Une étape à la fois
Pas de "big rewrite". Chaque étape est petite, atomique, et commitable indépendamment. Si quelque chose pète, tu sais quoi rollback.
Comportement préservé
Aucun changement sémantique. Si tu changes le comportement, c'est refactor + bug fix et ça doit être split.
Catalogue Fowler
Extract, inline, rename, move, parameter object, replace conditional with polymorphism. Du refactoring nommé, pas du "j'ai rangé".
S'arrête entre chaque étape
Tu reviewes, tu testes, tu commit, tu continues. Si tu veux pause à mi-parcours, le code est toujours fonctionnel.
Quand l'utiliser
✅ Idéal pour
- Fonction / classe gnarly que tu vas devoir modifier
- Module legacy avant d'y ajouter une feature
- Code que tu reprends d'un dev parti et qui n'est pas clean
- Quand tu sens que tu vas casser quelque chose en touchant
⚠️ Pas adapté quand
- Pas de tests ni de couverture → ajoute des tests d'abord (@test-generator)
- Tu veux supprimer du code mort → @dead-code-finder
- Tu veux changer le design / l'architecture → ce n'est plus un refactor, c'est un rewrite. Discute d'abord avec @code-reviewer-pro.
Combine avec ces agents
Questions fréquentes
Et si je n'ai pas de tests ?
L'agent te demande d'abord de couvrir le code par des tests (via @test-generator) avant de refactorer, ou de confirmer explicitement que tu acceptes le risque. Un refactor sans filet, c'est juste casser du code différemment.
Peut-il refactorer plusieurs fichiers d'un coup ?
Il propose le PLAN d'un refactor multi-fichiers, mais exécute UNE étape à la fois. C'est volontaire : un refactor en une étape de 30 fichiers casse tout. En 10 étapes de 3 fichiers, on contrôle.
Modifie-t-il aussi le style / la mise en forme ?
Non. Il s'interdit les "while I'm here" cleanups. Si tu veux du reformatting, lance Prettier / PHP-CS-Fixer séparément.