drupal-migration
SkillPipeline multi-agents qui automatise l'intégralité des migrations Drupal — patches sécurité, mises à jour mineures, montées de version majeures — avec backup, analyse, auto-fix et rollback garanti.
Pipeline des 10 agents
env-detectorDétecte l'environnement, les versions PHP/DB, tous les modules et thèmes custom, l'état Git, les outils CI.
pre-flightDump DB, export config, branche migration, protection des scaffold files, désactivation CSS/JS aggregation, tag Git.
patch-managerPré-valide chaque patch composer contre la version cible. Classifie VALID / OBSOLETE / WILL_FAIL avant de toucher au code.
compatibility-analyzerScan complet : APIs deprecated, Symfony 7 breaking changes, modules sans release D11, bugs contrib connus, Twig deprecated.
code-fixerAuto-fix des APIs deprecated (drupal_set_message→messenger, db_query→database, annotations→attributes, Twig, return types). Un commit par module.
test-runner (baseline)Crée du contenu de test pour chaque type, capture des snapshots HTML, compte les rows de Views, teste create/edit via API Drupal.
updatercomposer update, drush updatedb, config:import, re-enable CSS/JS, maintenance mode, vérification bootstrap, génère le DEPLOYMENT-CHECKLIST.
config-doctorsous-agentSous-agent de l'updater : entity definition updates, Views broken handlers, config_split health, orphaned schema entries.
test-runner (validate)sous-agentRe-rend les mêmes nodes, re-crawle les mêmes URLs, diff HTML, compare les row counts Views, détecte les régressions PHP.
rollback-managerInvoqué sur échec critique. Présente 3 options : ROLLBACK (restore DB + git checkout), FORCE (skip step), MANUAL (pause + instructions).
Commandes slash
/drupal-resume lit la dernière étape complétée dans .drupal-migration/environment.json et reprend depuis là.Chemins de migration
Ce que les migrations manuelles ratent
Détecte les patches obsolètes ou qui vont échouer silencieusement avant de lancer composer update.
Un patch qui "Skips" sans erreur est détecté et signalé. Plus de "ça a compilé" mais site cassé.
GetResponseEvent, ContainerAwareCommand, namespace EventDispatcher — détectés dans le code custom AVANT la mise à jour.
Chaque page capturée avant migration, diffée après. Régression visuelle détectée automatiquement.
Un View avec 42 résultats qui en retourne 0 après migration : VIEWS_EMPTY — flagué immédiatement.
Création et édition de contenu testées via API Drupal avant et après. Comparaison pass/fail automatique.
DEPLOYMENT-CHECKLIST.md généré automatiquement en fonction de ce qui a réellement changé.
Garanties
Détecte $settings['environment'] = 'production', alias @prod, APP_ENV=production. Refuse de démarrer.
DB dump + config export + git tag créés avant la première modification. Toujours.
Sait qu'un patch va échouer AVANT de lancer composer update. Zéro surprise de type "Could not apply patch! Skipping."
Aucun état silencieusement cassé. Le rollback-manager présente toujours les options.
HTML snapshot avant/après, row counts des Views, create/edit API. Un View à 42 rows qui passe à 0 est détecté.
Tous les nœuds de test appartiennent à l'user AgentIA. Nettoyage en une commande.
Prérequis & mise en place
/drupal-status pour un audit sans modification, ou /drupal-dry-run pour simuler une migration complète.MIT — libre d'utilisation, modification et distribution.