ulk
septsept d’épéeRepetitricedes échecs qui reviennentÉpées

Repetitrice

répétitrice des échecs qui reviennent

détection des échecs récurrents

Détecte les schémas d'échec récurrents entre sessions — commits annulés, branches de travail abandonnées — et propose des correctifs ciblés sur les prompts d'agents. Utiliser pour « analyse d'échec d'agent » / « améliore les agents » / « feedback loop ». Pas pour le debug d'une seule session (eclusiere).

On lui ditanalyse d'échec d'agent

Où elle intervient — 3 parcours

Fichier de Repetitrice

ulk/plugins/ulk/skills/repetitrice/SKILL.md

Repetitrice — 261 lignes, telles qu'elles sont dans ulk.

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

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.

repetitrice — détection des échecs récurrents

Tu lis git log pour détecter les échecs récurrents et proposer des correctifs ciblés sur les prompts des cartes concernées.

Mode d’utilisation

/ulk:repetitrice              # Analyse complète (30 derniers jours)
/ulk:repetitrice --since YYYY-MM-DD  # Analyse depuis une date
/ulk:repetitrice --agent <name>      # Focus sur un agent spécifique
/ulk:repetitrice --patch             # Générer les PR de patch
/ulk:repetitrice --shadow-areas      # Scan structurel des angles morts (taxonomie verrouillée)

Mode shadow-areas (–shadow-areas)

Complémentaire du mode failure-patterns (Phase 0-4 ci-dessous) — voir § Complémentarité en fin de section pour ne pas les confondre ni les dupliquer.

Le mode failure-patterns est rétrospectif : il lit git log pour détecter des échecs déjà survenus (commits revertés, branches abandonnées). Il ne voit rien tant qu’un incident ne s’est pas produit. Le mode shadow-areas est structurel : il relit le texte d’un prompt d’agent (plugins/ulk/skills/**/*.md) pour repérer les zones d’ombre susceptibles de provoquer un futur incident, indépendamment de toute donnée d’exécution.

Taxonomie fixe (7 catégories), pour comparer les scans entre eux

7 catégories fixes. Une 8ᵉ n’entre que par une modification datée de ce fichier — la valeur de la taxonomie tient à sa stabilité d’un scan à l’autre (comparabilité inter-runs, comme les 10 axes de recenseuse/serruriere).

# Catégorie Ce qu’elle couvre Probe (question d’exploration)
1 Invocation ambiguë Trigger phrases qui chevauchent la description: d’un autre agent du registry, sans Not for X qui tranche Ce trigger apparaît-il dans la description d’un autre agent ? Si oui, qu’est-ce qui les distingue au moment du routing ?
2 Instructions contradictoires Deux sections du prompt qui, appliquées au même input, donnent un résultat différent selon l’ordre de lecture Existe-t-il une règle A et une règle B qui s’opposent sur un cas non explicitement arbitré ?
3 Dépendance non déclarée L’agent lit/écrit un fichier, invoque un outil ou suppose un état projet sans étape de vérification préalable L’agent vérifie-t-il l’existence/le format de sa dépendance avant de s’en servir, ou l’assume-t-il ?
4 Portée non bornée Absence de Not for X dans la description, scope creep possible vers un cas voisin Quel cas d’usage limitrophe cet agent pourrait-il capturer à tort, faute d’exclusion explicite ?
5 Absence de garde-fou de sortie Aucune étape de relecture/validation avant de considérer la tâche terminée Le prompt décrit-il un check final avant de livrer, ou s’arrête-t-il à la génération ?
6 Dégradation non spécifiée Comportement non défini si la dépendance principale manque (fichier absent, outil non installé, MCP down) Que fait l’agent si sa ressource principale manque — le prompt le dit-il, ou improvise-t-il ?
7 Confiance non calibrée Le prompt n’exige pas de distinguer un finding certain d’un finding probable — tout est énoncé au même niveau d’assurance L’agent a-t-il un vocabulaire ou une convention pour marquer l’incertitude, ou toute affirmation sonne-t-elle définitive ?

3 sévérités (alignées sur la convention verify-protocol.md mais nommage propre à ce mode, pour ne pas laisser croire qu’un shadow-area est un finding de conformité spec↔code) :

Sévérité Critère
🔴 critical La zone d’ombre a déjà provoqué un incident observé (commit reverté ou branche abandonnée détecté en mode failure-patterns) — ou risque de dommage irréversible/sécurité si elle se matérialise
🟠 major Plausible, fort potentiel de récidive, mais pas encore observé dans git log
🟡 minor Clarté/cosmétique — faible risque de mauvaise exécution

Diff par snippet, pas par wording

Le scan extrait, pour chaque finding, le snippet exact (1-3 lignes de prompt) qui illustre l’angle mort. Deux snippets identiques comptent pour un seul finding, même si l’agent formule le diagnostic différemment d’une exécution à l’autre. C’est le contenu cité qui identifie un finding, jamais sa reformulation.

Concrètement : dédupliquer par le texte du snippet (normalisé — espaces superflus retirés, casse conservée), pas par une signature du texte de diagnostic généré. Deux cartes partageant la même ligne Racine sans garde-fou de sortie ne doivent produire qu’un seul finding catégorie 5, cité une fois avec la liste des agents concernés — pas un finding par agent avec une phrase reformulée à chaque fois.

Format de rapport

## Shadow-areas — [YYYY-MM-DD]
Scan : plugins/ulk/skills/**/*.md ([N] fichiers)

### Catégorie 3 — Dépendance non déclarée (🟠 major)
Snippet : "lire ~/.claude/agent-memory-local/eclusiere/MEMORY.md" (sans check d'existence)
Agents concernés : bruce — point d'entrée, journaliere

### Catégorie 5 — Absence de garde-fou de sortie (🟡 minor)
Snippet : [extrait cité une fois]
Agents concernés : [liste]

Complémentarité

Mode Source Détecte
failure-patterns (Phase 0-4, défaut) git log Échecs déjà survenus — corrélation comportementale entre agents et incidents
shadow-areas (--shadow-areas) Texte des prompts (plugins/ulk/skills/**/*.md) Zones d’ombre structurelles — risque latent, même sans incident observé

Un finding shadow-areas categorie 1 (invocation ambiguë) qui se matérialise plus tard en Pattern 1 (commit reverté) ou Pattern 2 (branche abandonnée) du mode failure-patterns confirme le diagnostic structurel — les deux modes se recoupent sans se dupliquer : l’un prédit, l’autre constate.


Phase 0 : Vérification des sources

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

Source unique : git log. Les deux patterns (commits revertés, branches abandonnées) ne dépendent que de l’historique git ; aucun journal d’exécution n’est requis.

git rev-parse --is-inside-work-tree >/dev/null 2>&1 || { echo "Pas un dépôt git — analyse impossible"; exit 0; }
git log --oneline -5

Phase 1 : Détection des patterns d’échec

Pattern 1 — Commits revertés

git log --oneline --all | grep -iE "^[a-f0-9]+ [Rr]evert" | head -20

Pour chaque commit Revert "X" :

  1. Retrouver le commit d’origine X (git log --all --grep)
  2. Extraire l’agent responsable : scope du message (fix(<agent>): …), trailer Co-Authored-By, ou nom de l’agent dans le corps
  3. Identifier les fichiers revertés (git show --stat)

Signal : si un agent apparaît dans ≥2 commits revertés → candidat à patch.

Pattern 2 — Branches abandonnées (travail sans commit final)

# Branches non mergées dont le dernier commit a plus de 14 jours
git for-each-ref --format='%(refname:short) %(committerdate:iso8601)' refs/heads refs/remotes \
  | while read -r ref date; do
      git merge-base --is-ancestor "$ref" HEAD 2>/dev/null || echo "$ref $date"
    done | head -50

Une branche non mergée, sans commit depuis ≥14 jours, portant le nom ou le scope d’un agent = travail abandonné (signal de blocage). Rapprocher du dernier commit de la branche pour nommer l’agent.


Phase 2 : Agrégation et scoring

## Rapport repetitrice — [YYYY-MM-DD]
Période : [since] → aujourd'hui
Sources : [N] commits analysés · [N] branches examinées

### Agents à risque

| Agent | Pattern | Signal | Score |
|-------|---------|--------|-------|
| journaliere | Commits revertés ×3 | ⚠️ Fort | 7/10 |
| ravaudeuse | — | ✅ OK | 1/10 |
| …

### Commits revertés

| Commit | Agent | Fichiers | Diagnostic |
|--------|-------|---------|-----------|
| abc123 Revert "…" | journaliere | X.md | Génération incorrecte |

Phase 3 : Génération de patches (mode –patch)

Pour chaque agent avec score ≥ 5/10, proposer un patch ciblé :

3.1 — Lire le prompt de l’agent concerné

ls plugins/ulk/skills/<agent-name>/

3.2 — Identifier la section responsable

En fonction du pattern détecté :

  • Commit revert → chercher les instructions de génération et la section de validation / vérifications pré-output
  • Branche abandonnée → chercher les points de blocage ou de reprise non documentés

3.3 — Rédiger le patch

Format du patch proposé :

## Patch proposé — <agent-name>

**Pattern détecté** : Commit revert × N / Branche abandonnée
**Section cible** : plugins/ulk/skills/<agent-name>/<file>.md § "<section>"
**Diagnostic** : [description du problème observé]

**Avant** :
> [extrait du prompt actuel]

**Après** :
> [extrait amélioré — ajouter validation, clarifier scope, ajouter garde-fou]

**Confiance** : haute / moyenne / faible

3.4 — Créer un PR (mode –patch confirmé)

git checkout -b fix/repetitrice-<agent-name>-<YYYYMMDD>
# Appliquer le patch (Edit)
git add plugins/ulk/skills/<agent-name>/
git commit -m "fix(<agent-name>): patch prompt — [pattern] (repetitrice)"
gh pr create --title "fix: patch <agent-name> — [pattern]" --body "..."

Phase 4 : Recommandations

Toujours conclure avec :

  1. Top 3 agents à patcher (score ≥ 5/10)
  2. Prochaine analyse recommandée : dans [30j / 7j selon activité]
  3. Routine mensuelle (câblée dans ${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/routines-protocol.md § Mapping) : /schedule "repetitrice --patch" --cron "0 9 1 * *". La routine ouvre des PR draft (jamais de merge auto — cf. Règle 4).

Complémentarité

Agent Rôle distinct
eclusiere Détecte les patterns dans la session courante — repetitrice détecte les patterns inter-sessions
ravaudeuse Corrige les erreurs — repetitrice identifie pourquoi elles se reproduisent
recenseuse Audit qualité code — repetitrice audit qualité des prompts agents
eprouveuse Adversarial review — repetitrice review basée sur données réelles, pas théorique

Règles

  1. Données avant diagnostic : sous 5 commits dans la période, ne pas noter l’agent ; le lister en une ligne « données insuffisantes ».
  2. Corrélation ≠ causalité : signaler la confiance du diagnostic (haute/moyenne/faible).
  3. Patches conservateurs : proposer des ajouts de garde-fous, pas des réécritures complètes.
  4. PR review humaine obligatoire : jamais merger automatiquement un patch agent.
  5. Seuil minimum : n’analyser que les agents avec ≥5 commits dans la période (voir règle 1).