ulk
deuxdeux de coupeRaccommodeusede la documentationCoupes

Raccommodeuse

raccommodeuse de la documentation

réparation de la documentation

Audite et répare la documentation du projet — spec, backlog, todo.md, sections de CLAUDE.md, liens morts. Applique des correctifs minimaux avec --fix. Utiliser pour « doc à la dérive » / « liens morts » / « doc-reset ». Pas pour la reverse-doc (restauratrice) ni la génération de spec (greffiere).

On lui ditdoc à la dérive

Où elle intervient — 2 parcours

Fichier de Raccommodeuse

ulk/plugins/ulk/skills/raccommodeuse/SKILL.md

Raccommodeuse — 225 lignes, telles qu'elles sont dans ulk.

En-tête — première ligne de chaque sortie, seule : Deux de Coupe — raccommodeuse

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.

Raccommodeuse — remise en état documentaire

Agent de diagnostic et correction minimale de la documentation d’un projet ulk. Fonctionne sur n’importe quel projet (pas seulement ce repo).

Mode d’utilisation

/ulk:raccommodeuse          # Audit seul — liste les problèmes
/ulk:raccommodeuse --fix    # Audit + corrections automatiques minimales

Phase 0 : Détection du mode documentaire

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

DOC_MODE=$(grep -m1 '^doc-mode:' CLAUDE.md 2>/dev/null \
  | sed 's/doc-mode:[[:space:]]*//' | tr -d '[:space:]"'"'"')
if [ -z "$DOC_MODE" ] || [ "$DOC_MODE" = "auto" ]; then
  [ -f docs/07-spec/spec.md ] || [ -f docs/spec.md ] || [ -f docs/todo.md ] \
    && DOC_MODE="obsidian" || DOC_MODE="issues"
fi
echo "▸ Mode : $DOC_MODE"

Phase 1 : Vérification spec / backlog

Mode issues (défaut)

gh issue list --state open --limit 100 2>/dev/null | wc -l

Vérifier :

  • Le backlog GitHub est accessible (gh issue list non vide, sinon vérifier gh auth status)
  • Les issues ont un corps non vide (critères d’acceptation présents)

Problèmes à signaler :

  • gh non authentifié → MISSING (avec --fix : gh auth login — jamais automatique)
  • Issue sans critères d’acceptation → INCOMPLETE (lister les numéros)

Mode obsidian

Vérifier que docs/07-spec/spec.md ou docs/spec.md existe et contient un frontmatter YAML valide (délimiteurs ---).

Problèmes :

  • Fichier absent → MISSING
  • Frontmatter manquant ou malformé → INVALID

Phase 2 : Vérification todo.md (mode obsidian / coexist)

cat docs/todo.md 2>/dev/null | head -10

Vérifier :

  • kanban-plugin: board dans le frontmatter
  • Au moins 3 colonnes ## H2 présentes (Backlog, Todo, Done)
  • Pas de cartes malformées (ligne - [ ] sans description)

Problèmes :

  • docs/todo.md absent en mode obsidian → MISSING
  • kanban-plugin: board absent → INVALID (avec --fix : ajouter le frontmatter minimal)
  • Colonnes manquantes → INCOMPLETE (avec --fix : ajouter ## Backlog, ## Todo, ## Done vides)

En mode issues : vérifier que docs/todo.md n’existe pas (ou est un fichier legacy bridgé) — signaler si présent et incohérent avec le mode.


Phase 3 : Vérification CLAUDE.md

Vérifier la présence des sections minimales :

Section requise Pattern
Project Overview ## Project Overview ou ## Vue d'ensemble
Essential Commands ## Essential Commands ou ## Commandes
grep -c "^## " CLAUDE.md 2>/dev/null

Problèmes :

  • CLAUDE.md absent → MISSING (critique — ne pas créer automatiquement, signaler uniquement)
  • Section manquante → INCOMPLETE (signaler uniquement, même avec --fix : chaque ligne de CLAUDE.md se paie à chaque session, un stub vide n’y a pas sa place)

Phase 4 : Détection des liens morts

grep -rh '\[\[.*\]\]' docs/ --include="*.md" 2>/dev/null \
  | grep -oE '\[\[[^]|]+' | sed 's/^\[\[//' | sort -u

Pour chaque wikilink trouvé, vérifier qu’un fichier correspondant existe dans docs/ (nom ≈ slug normalisé).

Cartes ulk citées dans CLAUDE.md

grep -oE '/ulk:[a-z-]+' CLAUDE.md | sed 's#^/ulk:##' | sort -u
ls "${CLAUDE_PLUGIN_ROOT}/skills"

Pour chaque /ulk:<nom> cité, vérifier qu’un dossier ${CLAUDE_PLUGIN_ROOT}/skills/<nom>/ existe.

Fichiers mentionnés dans CLAUDE.md (@, backtick paths)

grep -oE '`[^`]+\.(md|json|sh|go|ts|cjs)`' CLAUDE.md | tr -d '`' | sort -u

Vérifier que chaque chemin existe dans le repo.

Problèmes :

  • Wikilink mort → DEAD_LINK (path, lien)
  • Carte citée inexistante → MISSING_AGENT (/ulk:nom)
  • Fichier mentionné introuvable → MISSING_FILE (path)

Format de rapport

## raccommodeuse — Rapport [YYYY-MM-DD]
Mode : issues | obsidian
Projet : [nom du dossier]

### Phase 1 — Spec/Backlog
✅ OK — N issues ouvertes  |  ❌ MISSING gh non authentifié  |  ⚠️ N issues INCOMPLETE

### Phase 2 — todo.md
✅ OK — format kanban valide  |  ⚠️ INCOMPLETE — colonnes manquantes  |  N/A (mode issues)

### Phase 3 — CLAUDE.md
✅ OK — sections présentes  |  ⚠️ INCOMPLETE — section manquante : [nom]  |  ❌ MISSING

### Phase 4 — Liens morts
✅ Aucun lien mort  |  ⚠️ N problèmes détectés :
  - DEAD_LINK docs/spec.md → [[Agent inexistant]]
  - MISSING_AGENT /ulk:inconnue
  - MISSING_FILE scripts/inexistant.sh

---
Résumé : N erreurs ❌ · N avertissements ⚠️
[Si --fix] : N corrections appliquées · N nécessitent intervention manuelle

Mode –fix — Corrections automatiques

Problème Correction automatique
gh non authentifié Signaler uniquement (gh auth login reste manuel — jamais automatique)
todo.md sans kanban-plugin: board Ajouter frontmatter minimal
todo.md sans colonnes de base Ajouter ## Backlog, ## Todo, ## Done
CLAUDE.md section manquante Signaler uniquement (aucun stub ajouté)
Lien mort wikilink Signaler uniquement (pas de création de fichier fantôme)
Agent référencé inexistant Signaler uniquement (la décision appartient à l’humain)

Règle : --fix n’invente pas de contenu. Il crée des structures minimales valides et signale ce qui nécessite une décision humaine.


Complémentarité

Agent Rôle distinct
restauratrice — reverse-doc du code Reconstruit toute la documentation depuis le code (reverse doc) — raccommodeuse vérifie et répare l’existant
greffiere Génère spec et todo depuis zéro — raccommodeuse audite leur conformité après coup
ravaudeuse Répare les erreurs de build/CI — raccommodeuse répare la documentation
triageuse Diagnostic projet (état, stack, tâches) — raccommodeuse se concentre uniquement sur la doc
etalonneuse — vérité du contexte écrit Audite la vérité et la valeur du contexte (ce fichier dit-il vrai ? mérite-t-il sa place ?) — raccommodeuse audite la structure (ce fichier existe-t-il ? ce lien pointe-t-il quelque part ?)

La frontière avec etalonneuse

${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/context-truth-protocol.md § Délimitation la pose en une phrase : raccommodeuse répond « ce fichier existe-t-il ? », etalonneuse répond « ce fichier dit-il vrai ? »

Conséquences pratiques, dans les deux sens :

  • Un audit etalonneuse commence par lancer raccommodeuse. Réimplémenter la détection de liens morts côté etalonneuse serait de la duplication ; raccommodeuse est l’étape 0 de son protocole.
  • Quand raccommodeuse trouve un fichier structurellement valide dont le contenu est suspect — une commande qui n’existe plus, une section qui décrit une stack abandonnée — il ne tranche pas : c’est un verdict de valeur, pas de structure. Le signaler et orienter vers /ulk:etalonneuse.

Règles

  1. Scope minimal : ne corriger que ce qui est structurellement invalide. Ne pas réécrire du contenu.
  2. Mode –fix non-destructif : jamais de suppression de fichier existant.
  3. Signaler clairement : chaque problème cite le fichier et la ligne si possible.
  4. CLAUDE.md sacré : ne jamais créer CLAUDE.md automatiquement — signaler uniquement si absent.