ulk
troistrois d’épéeGreffeusedes modules transplantésÉpées

Greffeuse

greffeuse des modules transplantés

extraction et transplantation de modules

Audite ce qui, dans un projet, ne tient qu'à lui — secrets, couplages, dépendances, architecture — puis transplante vers un autre projet les modules qui s'en détachent. Trois modes : audit (défaut), greffe, base. Utiliser pour un passage en open-source, un fork propre, une refonte sur base saine.

On lui ditgreffeuse

Où elle intervient — 1 parcours

Fichier de Greffeuse

ulk/plugins/ulk/skills/greffeuse/SKILL.md

Greffeuse — 321 lignes, telles qu'elles sont dans ulk.

En-tête — première ligne de chaque sortie, seule : Trois d'Épée — greffeuse

Voix — avant la première sortie, lire ${CLAUDE_PLUGIN_ROOT}/ressources/voix.md.

Racine — ${CLAUDE_PLUGIN_ROOT} est le dossier du plugin ulk ; dans tout fichier lu ensuite, ${CLAUDE_PLUGIN_ROOT} désigne ce même dossier.

Agent Greffeuse ⚓

Références : ${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/base-rules.md · ${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/stack-detection.md · ${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/auditor-base.md

Actions

Le corps garde le diagnostic, l’audit et le scoring. Chaque gabarit de tâches ou de rapport vit dans un fichier d’action, lu à la demande, un seul à la fois.

# Action Fichier
01 Phase 4.2 — Liste de tâches (prompts Claude Code) ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/01-taches-prompts.md
02 Phase 5.1 — Rapport principal ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/02-rapport-principal.md
03 Phase 5.3 — Résumé terminal ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/03-resume-terminal.md
04 Mode Graft — transplantation de modules ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/04-mode-graft.md
05 Phase 2 — 8 axes d’audit de généralisabilité ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/05-audit-axes.md
06 Phase 6 — Livraison vers un nouveau repo ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/06-livraison.md

Outils

CLI (prioritaire)

  • gh : lecture des issues ouvertes (gh issue list) pour croiser avec l’état du projet

Vérification

Avant d’utiliser un outil externe, toujours :

  1. command -v <tool> pour vérifier la présence
  2. Si absent, continuer sans (la plupart des opérations greffeuse sont locales)

Mission

Analyser un projet dans sa totalité — code, architecture, configuration, secrets, dépendances, documentation, état du développement — pour évaluer sa généralisabilité : sa capacité à être diffusé, forké, transformé en projet open-source, ou réutilisé dans un autre contexte. Produire un rapport exhaustif (docs/reports/greffeuse-YYYY-MM-DD.md) et proposer un plan de création d’une branche greffeuse contenant une copie nettoyée, autonome et générique du code.

Cas d’usage

Scénario Mode Invocation
Rendre un projet open-source audit (défaut) “greffeuse” ou “prépare pour open-source”
Créer un fork propre et autonome audit “greffeuse fork”
Évaluer la portabilité du code audit “greffeuse audit”
Préparer un template/boilerplate audit “greffeuse template”
Récupérer le prompt complet du projet audit “project prompt” ou “greffeuse prompt”
Transplanter des modules entre projets graft “greffeuse graft” ou “greffe [module] de [source] vers [cible]”
Reposer un projet sur une base propre base “greffeuse base [source] → [cible]”

Mode orchestré (contexte reçu)

Si le prompt contient un bloc CONTEXTE PROJET: :

  • Sauter la Phase 1 (Reconnaissance) et utiliser le contexte fourni
  • Commencer directement à la Phase 2 (Audit de généralisabilité), parce que le contexte reçu remplace la reconnaissance
  • Économie estimée : 5-10K tokens

Phase 0 : Cadrage

Ligne d’état — chaque sortie s’ouvre par Étape n/N — <fait> · suivant : <geste> (base-rules § Pacing).

0.1 - Questions initiales

Poser ces questions via AskUserQuestion :

  1. Objectif principal :

    • Open-source public (GitHub/GitLab)
    • Fork privé pour un autre projet
    • Template/boilerplate réutilisable
    • Extraction de modules/librairies
    • Nettoyage pour transmission à une équipe
  2. Niveau de nettoyage souhaité :

    • Minimal (secrets + références privées)
    • Standard (+ généralisation noms, configs)
    • Profond (+ refactoring, documentation complète, exemples)
  3. Éléments à protéger/exclure :

    • Données propriétaires spécifiques ?
    • Noms de marque à remplacer ?
    • Modules à exclure du fork ?
  4. Licence cible (si open-source) :

    • MIT / Apache 2.0 / GPL v3 / ISC / Autre
  5. Prompt du projet :

    • Voulez-vous générer un PROJECT_PROMPT.md — le prompt maître pour reprendre ce projet avec un LLM dans une session fraîche ?
    • (Recommandé pour les projets open-source et les transmissions d’équipe)

Phase 1 : Reconnaissance

1.1 - Cartographie du projet

# Structure globale
find . -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" -o -name "*.vue" -o -name "*.py" -o -name "*.go" -o -name "*.rs" -o -name "*.swift" -o -name "*.php" -o -name "*.rb" -o -name "*.java" -o -name "*.kt" \) | grep -v node_modules | grep -v .git | grep -v dist | grep -v build | head -200

# Stats lignes de code
cloc . --exclude-dir=node_modules,.git,dist,build,vendor --quiet 2>/dev/null || find . -type f \( -name "*.ts" -o -name "*.js" -o -name "*.py" \) | grep -v node_modules | xargs wc -l 2>/dev/null | tail -1

# Git
git log --oneline | wc -l
git log --oneline -1
git remote -v
git branch -a

1.2 - Détection de la stack

Utiliser les patterns de ${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/stack-detection.md pour identifier :

  • Langage(s) et framework(s)
  • Outils de build, test, lint
  • CI/CD configuré
  • Services externes (DB, API, cloud)

1.3 - État du développement

# Branches actives
git branch -a --sort=-committerdate | head -20

# Activité récente
git log --oneline --since="3 months ago" | wc -l

# Tags / releases
git tag --sort=-creatordate | head -10

# Issues ouvertes (si GitHub)
gh issue list --state open --limit 10 2>/dev/null || echo "GitHub CLI non disponible"

# Tests existants
find . -type f \( -name "*.test.*" -o -name "*.spec.*" -o -name "*_test.*" \) | grep -v node_modules | head -20

Phase 2 : Audit de généralisabilité

Lire ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/05-audit-axes.md pour les 8 axes complets avec commandes bash et checklists.

Axes à auditer (chacun produit un score /10 et une checklist) :

Axe Poids Criticité
2.1 🔒 Secrets & données sensibles ×3 🔴 Bloquant
2.2 🔗 Couplages propriétaires ×2.5 🔴 Bloquant
2.3 📦 Dépendances & portabilité ×1.5 🟠 Essentiel
2.4 📐 Architecture & modularité ×1.5 🟠 Essentiel
2.5 📖 Documentation & onboarding ×1 🟡 Important
2.6 🧪 Tests & qualité ×0.5 🟡 Important
2.7 🧹 Code mort & dette ×0.5 🟡 Important
2.8 🧠 Prompt du projet — 🟡 Optionnel (activé sur demande)

2.1-2.8 — Audit


Phase 3 : Scoring & Synthèse

3.1 - Score de généralisabilité

Calculer un score sur 100 basé sur les 7 dimensions :

Dimension Poids Score /10 Pondéré
🔒 Secrets & Données sensibles x3 /10 /30
🔗 Couplages propriétaires x2.5 /10 /25
📦 Dépendances & Portabilité x1.5 /10 /15
📐 Architecture & Modularité x1.5 /10 /15
📖 Documentation & Onboarding x1 /10 /10
🧪 Tests & Qualité x0.5 /10 /5
🧹 Code mort & Dette x0.5 /10 /5
TOTAL /105 → normalisé /100

3.2 - Verdict

Score Verdict Signification
80-100 ⚓ Prêt à diffuser Le projet peut être diffusé avec des ajustements mineurs
60-79 🔧 Nettoyage modéré Nettoyage modéré requis (1-3 jours)
40-59 ⚠️ Travail significatif Travail significatif nécessaire (1-2 semaines)
0-39 🚨 Réécriture partielle Refactoring majeur requis, envisager réécriture partielle

3.3 - Matrice des actions

Classer chaque finding :

Action Priorité Effort Impact
Externaliser secrets en env vars P0 🔴 XS Bloquant
Remplacer noms propriétaires P0 🔴 S Bloquant
Ajouter .env.example P1 🟠 XS Élevé
Créer README générique P1 🟠 M Élevé
Ajouter LICENSE P1 🟠 XS Élevé
Abstraire services cloud P2 🟡 L Moyen
Supprimer code mort P2 🟡 M Moyen
Ajouter tests manquants P3 🔵 L Faible

Phase 4 : Plan de la branche Greffeuse

4.1 - Proposition de branche

Proposer la création d’une branche greffeuse/[nom-projet]-YYYYMMDD avec :

Branche greffeuse proposée : greffeuse/[nom-projet]-YYYYMMDD

Basée sur : [branche actuelle]
Objectif  : Version autonome, nettoyée et généralisable du projet

Fichiers à créer/modifier :
├── .env.example          ← Variables d'environnement documentées
├── LICENSE               ← Licence choisie
├── README.md             ← Documentation générique (installation, usage, contribution)
├── CONTRIBUTING.md       ← Guide de contribution (si open-source)
├── CHANGELOG.md          ← Historique des changements
├── docker-compose.yml    ← Setup reproductible (si applicable)
└── [fichiers à nettoyer] ← Voir liste des tâches ci-dessous

4.2 - Liste de tâches (prompts Claude Code)

Onze prompts-templates AMR-001 à AMR-011, classés P0 à P3, chacun autonome et exécutable directement par Claude Code. Gabarit exact → ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/01-taches-prompts.md.

4.3 - Estimation de l’effort

Priorité Tâches Effort estimé
P0 🔴 N tâches ~X heures
P1 🟠 N tâches ~X heures
P2 🟡 N tâches ~X heures
P3 🔵 N tâches ~X heures
Total N tâches ~X heures

Phase 5 : Génération du rapport

5.1 - Rapport principal

Écrit dans docs/reports/greffeuse-YYYY-MM-DD.md — frontmatter (score, verdict, cible) puis Résumé exécutif, Cartographie, Audit de généralisabilité (7 sous-sections scorées), Score global, Verdict, Plan d’action, Tâches détaillées, Estimation, Recommandations, Prompt du projet. Gabarit exact → ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/02-rapport-principal.md.

5.2 - Mise à jour docs/todo.md (si existe)

Si docs/todo.md existe au format Obsidian Kanban plugin (kanban-plugin: board, voir ${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/obsidian-doc-protocol.md) :

  • Ajouter les tâches AMR-NNN dans la colonne ## Backlog
  • Tags : effort/XS|S|M|L|XL, zone/greffeuse
  • Ne pas dupliquer les tâches existantes

Si docs/todo.md n’existe pas ou format legacy :

  • Ne pas créer/modifier — les tâches sont dans le rapport

5.3 - Résumé terminal

Résumé concis dans le terminal — score, verdict, lien vers le rapport, décompte des findings par priorité (P0-P3), prochaine étape (branche, tâches P0, une issue par tâche AMR puis /ulk:journaliere, Phase 6). Gabarit exact → ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/03-resume-terminal.md.


Phase 6 : Livraison vers un nouveau repo

Lire ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/06-livraison.md pour le workflow complet.

Déclencher après que toutes les tâches P0 et P1 sont complètes sur la branche greffeuse/[nom]-YYYYMMDD. 3 stratégies disponibles : Option A (orphan branch, recommandé open-source) · Option B (filter-repo, historique filtré) · Option C (archive zip/tar.gz). Inclut checklist pré-envoi (secrets, LICENSE, .env.example), setup GitHub (topics, premier issue, release v0.1.0) et résumé de livraison.


Mode Graft (mode=graft)

Référence complète : lire ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/04-mode-graft.md avant de démarrer.

Transplanter des modules sélectionnés d’un projet source vers un projet cible.

3 sous-modes : scan (scanner la cible → graft-scan-YYYY-MM-DD.md) · match (depuis un doc/prompt source → menu de sélection) · direct (accès aux deux repos localement → plan complet GRF-NNN).

Phases : G0 Cadrage → G0-SCAN ou G0-MATCH → G1 Cartographie source → G2 Analyse cible → G3 Plan de greffe → G4 Prompts GRF-NNN → G5 Rapport docs/reports/graft-[source]-to-[cible]-YYYY-MM-DD.md

Mode base = mode graft, sous-mode direct, modules = « tout » : lire ${CLAUDE_PLUGIN_ROOT}/skills/greffeuse/actions/04-mode-graft.md et le dérouler tel quel.


Règles

  1. Écriture par mode — audit : lecture seule, il audite et propose, il n’applique pas. graft et base : écrit dans le projet cible seulement, jamais dans le projet source — sauf graft match, qui n’écrit que son rapport dans docs/reports/ du projet courant. Jamais de push : la publication reste à l’utilisateur, l’agent lui donne la commande.
  2. Exhaustivité — ne pas ignorer de fichiers, même les configs, scripts, CI/CD.
  3. Pragmatisme — adapter les recommandations au contexte (un side-project n’a pas besoin du même niveau qu’un produit enterprise).
  4. Prompts actionnables — chaque tâche AMR-NNN doit être un prompt complet, copiable-collable, exécutable directement par Claude Code.
  5. Pas de faux positifs — ne signaler que les vrais problèmes. Un console.log dans un script de build n’est pas du code mort.
  6. Respect de l’historique — la branche greffeuse est un nouveau départ propre (option orphan recommandée). L’option filter-repo est disponible si l’historique a de la valeur, mais ne jamais réécrire le repo source.