Analyse approfondie des patterns d'utilisation de Claude Code observés sur 48 projets et 10 581 sessions dans mon lab. Extraits réels de configurations, commandes personnalisées, workflows multi-agents et stratégies d'optimisation issus de ~2 500 commits en 2026.

1. Modes de fonctionnement

Deux modes principaux émergent de l'analyse des projets, chacun adapté à un contexte différent :

💬

Mode Conversationnel

défaut

Claude demande confirmation à chaque action sensible.

  • Cycle : demande → exécution → test → commit
  • Idéal pour la découverte ou les tâches sensibles
  • Contrôle total sur chaque décision
Quand : Nouvelles features, code critique, onboarding sur un projet
🤖

Mode Autonome

/autopilot

Claude exécute un cycle complet sans interruption.

  • Pick story → implement → test → commit → repeat
  • Nécessite un CLAUDE.md bien configuré
  • Supervision asynchrone via session.md
Quand : Refactoring, migrations, correction de lint, maintenance

Configuration réelle du mode autonome (granit-golem)

# Extrait de granit-golem/CLAUDE.md

## Mode de fonctionnement
- ne me demande plus d'autorisation, c'est toujours "yes"
- vérifie bien que la tâche faite est fonctionnelle
- ne fais jamais confiance aux signaux (build OK ≠ fonctionne)
- pour chaque fix, applique un test de confirmation
- pour chaque feature, un test de non-régression

## Workflow Autonome
1. Lire session.md au démarrage
2. Consulter le backlog (tickets P0 en priorité)
3. Implémenter avec TDD (Red → Green → Refactor)
4. Lancer les tests complets
5. Commit avec conventional commits
6. Mettre à jour session.md
7. Passer au ticket suivant

Configuration multi-agent (cas client anonymisé)

# Extrait de cas-client-multi-agent/CLAUDE.md

## Agents
- **PMO** : Gère specs, priorités, backlog dans .claude/inbox/pmo/
- **Tech** : Implémentation, lit les specs depuis inbox/tech/
- **QA** : Validation, rapports dans .claude/reports/
- **Orchestrateur** : Coordonne via .claude/sync/board.md

## Protocole de communication
- Chaque agent écrit dans son inbox/
- Le board.md est la source de vérité
- Format des messages : YYYY-MM-DD-HH-action.md
- Pas d'appels directs entre agents

2. CLAUDE.md - L'art du prompt système

Le fichier CLAUDE.md est le système nerveux de Claude Code. Sa qualité détermine directement l'efficacité de l'agent. Voici les patterns qui fonctionnent :

Structure type efficace

# CLAUDE.md - Structure recommandée

## Stack & Environnement
- Langage, framework, versions
- Commandes de build/test/lint
- Ports, URLs, variables d'environnement

## Conventions
- Style de code (formatting, naming)
- Conventional commits obligatoires
- Structure des fichiers

## Règles impératives
- "ne me demande plus d'autorisation"
- "vérifie que la tâche est fonctionnelle"
- "pour chaque fix, un test de confirmation"

## Workflows
- Mode autonome : pick → implement → test → commit
- Mode review : read → analyze → suggest

## Quick Reference
- Commandes fréquentes
- Fichiers importants
- Architecture résumée

Exemples réels de règles efficaces

granit-golem (Rust/TS)
## Rust Conventions
- Utiliser thiserror pour les erreurs custom
- Pas de unwrap() en production, que des Result<>
- Tests unitaires dans le même fichier (#[cfg(test)])
- cargo clippy doit passer sans warning

## Architecture
- DDD strict : domain/ ne dépend de rien
- Outbox Pattern pour les events cross-service
- RLS PostgreSQL pour le multi-tenant
cas client multi-agent (Angular/NestJS)
## NestJS Conventions
- Un module = un domaine métier
- DTOs validés avec class-validator
- Guards pour l'auth, Interceptors pour le logging
- Pas de any, typage strict partout

## Angular Conventions
- Standalone components (pas de NgModule)
- Signals pour la réactivité
- OnPush change detection par défaut
basalt-beholder (Nuxt 3)
## BMAD Workflow
- Toujours travailler par dev-story
- Format: DS-XXX-titre-court
- Chaque story a des tasks numérotées
- Ne jamais commencer sans story validée

## Nuxt Conventions
- composables/ pour la logique réutilisable
- server/api/ pour les endpoints
- Pas de store Pinia sauf nécessité prouvée

3. Custom Commands

Les commandes personnalisées (.claude/commands/*.md) sont des prompts réutilisables invoqués par slash command. C'est l'un des patterns les plus puissants observés.

Inventaire des commandes observées

Commande Projets Description
/autopilot granit-golem, cas client multi-agent, timespot Cycle autonome : pick → implement → test → commit
/test-sweep granit-golem, cas client multi-agent Exécution complète des tests avec rapport
/triage granit-golem, timespot Analyse et tri des issues/tickets par priorité
/gitlab granit-golem, cas client multi-agent Opérations CI/CD (MR, pipeline, deploy)
/review cas client multi-agent, basalt-beholder Code review structurée avec checklist
/doc granit-golem, timespot Génération de documentation technique
/sprint-report cas client multi-agent Rapport de sprint avec métriques

Exemple : /autopilot.md (granit-golem)

# /autopilot - Cycle de maintenance autonome

## Instructions
Tu es en mode autonome. Exécute le workflow suivant en boucle :

1. **Lire** session.md pour connaître l'état courant
2. **Consulter** le backlog : .claude/tickets/ ou issues GitLab
3. **Sélectionner** le ticket P0 le plus prioritaire
4. **Implémenter** en suivant TDD strict :
   - Écrire le test qui échoue (Red)
   - Écrire le code minimal pour passer (Green)
   - Refactorer si nécessaire
5. **Tester** : lancer la suite complète (`cargo test` + `npm test`)
6. **Commiter** : conventional commit, message descriptif
7. **Mettre à jour** session.md avec le travail effectué
8. **Répéter** avec le ticket suivant

## Contraintes
- Ne JAMAIS skipper les tests
- Si un test échoue, le fixer AVANT de continuer
- Commit atomiques (1 commit = 1 changement logique)
- /compact si le contexte dépasse 70%

## Arrêt
- Plus de tickets P0
- Erreur non résolvable
- Contexte à 90%

Exemple : /test-sweep.md

# /test-sweep - Exécution et rapport de tests

## Instructions
1. Lancer TOUS les tests du projet
2. Analyser les résultats
3. Pour chaque échec :
   - Identifier la cause racine
   - Proposer un fix
   - Appliquer le fix
   - Re-lancer le test ciblé
4. Produire un rapport :

## Format du rapport
```
### Test Sweep Report - {date}
- Total: XX tests
- Passed: XX ✅
- Failed: XX ❌
- Skipped: XX ⏭️
- Coverage: XX%

#### Échecs corrigés
- `test_name`: cause → fix appliqué

#### Échecs non résolus
- `test_name`: cause → action recommandée
```

5. Sauvegarder dans .claude/reports/test-sweep-{date}.md

Exemple : /triage.md

# /triage - Tri et priorisation des tickets

## Instructions
1. Lire tous les tickets depuis :
   - .claude/tickets/ (fichiers locaux)
   - Issues GitLab (si accès configuré)
2. Classer par priorité :
   - **P0** : Bloquant, sécurité, perte de données
   - **P1** : Bug fonctionnel, régression
   - **P2** : Amélioration, refactoring
   - **P3** : Nice-to-have, cosmétique
3. Estimer la complexité (S/M/L/XL)
4. Mettre à jour session.md avec le backlog trié
5. Recommander les 3 prochains tickets à traiter

4. Token Optimization

La consommation de tokens est le premier poste de coût avec Claude Code. Voici les stratégies observées dans mon lab :

Stratégie de modèles subagents

Claude Code peut déléguer à des subagents avec des modèles différents. Configuration observée :

# Configuration globale (~/.claude/CLAUDE.md)

## Token Optimization (Global)

### Choix de modèle subagents
- `haiku` (défaut): recherches, explorations, tâches légères
- `sonnet`: analyse de code, review spécifier `model: "sonnet"`
- `opus`: architecture, décisions complexes spécifier `model: "opus"`

### Variable d'environnement
CLAUDE_CODE_SUBAGENT_MODEL=haiku    # dans .bashrc / .zshrc
Haiku
$0.25 / $1.25
input / output (1M tokens)
Recherches, explorations, grep sémantique
Sonnet
$3 / $15
input / output (1M tokens)
Code review, analyse, implémentation standard
Opus
$15 / $75
input / output (1M tokens)
Architecture, décisions complexes, debugging avancé

Gestion du contexte

/clear - Reset du contexte

Entre deux tâches indépendantes. Économie moyenne : -40% tokens sur la session.

# Mauvais : enchaîner sans /clear
> Implémente le module auth       # contexte: 0 → 45%
> Maintenant fais le module billing # contexte: 45% → 90% 💥

# Bon : /clear entre tâches
> Implémente le module auth       # contexte: 0 → 45%
> /clear                          # contexte: 0%
> Maintenant fais le module billing # contexte: 0 → 40% ✅

/compact - Compression du contexte

Compresse la conversation en gardant l'essentiel. À utiliser proactivement à 60-70%, pas à 95%.

# Dans CLAUDE.md - Instructions de compaction
## Lors du /compact, conserver :
- Résultats de tests et leur statut
- Décisions architecturales prises
- Changements effectués (fichiers modifiés)
- État du backlog courant

## Exclure :
- Fichiers complets déjà lus
- Logs verbeux de build/test
- Explorations sans résultat
- Contenu des grep/recherches

mgrep - Recherche sémantique

Skill custom qui remplace les Grep/Glob/WebSearch built-in. Réduction observée : -80% tokens par recherche.

# Recherche classique (coûteuse en tokens)
Grep "authentication" → 200 résultats → Claude lit tout → 50K tokens

# Recherche mgrep (optimisée)
mgrep search "fonctions d'authentification" src/ -m 5 -c -s
→ 5 résultats pertinents → 2K tokens

5. Workflows automatisés

Workflow /autopilot - Cycle de maintenance

Le pattern le plus utilisé (granit-golem, cas client multi-agent, timespot). Cycle complet sans interruption humaine :

1
Lire session.md Contexte courant, backlog, état
2
Pick ticket P0 Plus haute priorité d'abord
3
TDD Red → Green → Refactor
4
Tests complets Suite entière, pas juste le test ciblé
5
Commit feat: / fix: / refactor:
6
Update session.md Puis retour à l'étape 1

Workflow Multi-agent - Cas client anonymisé

Système à 4 agents spécialisés communiquant via fichiers dans .claude/ :

📋

Agent PMO

Gère le backlog, les specs, les priorités. Écrit dans inbox/pmo/.

Créer stories Prioriser Valider specs
⚙️

Agent Tech

Implémente le code, lit les specs depuis inbox/tech/.

Coder Tester Commiter
🧪

Agent QA

Valide les implémentations, écrit les rapports dans reports/.

Review Tester Rapporter
🎯

Orchestrateur

Coordonne via sync/board.md. Source de vérité.

Dispatcher Synchroniser Arbitrer
# Exemple de message inter-agents (cas client multi-agent)
# .claude/inbox/tech/2025-01-15-implement-auth.md

## Action requise : Implémenter l'authentification JWT

### Specs (de PMO)
- Endpoint POST /auth/login
- Endpoint POST /auth/refresh
- Guard NestJS pour les routes protégées
- Tests unitaires obligatoires

### Priorité : P0
### Deadline : Sprint 3
### Dépendances : Module User (complété)

### Critères d'acceptation
- [ ] Login retourne un JWT valide
- [ ] Refresh fonctionne avec token expiré
- [ ] Guard rejette les requêtes non authentifiées
- [ ] Coverage > 80% sur le module

Workflow BMAD - Basalt-beholder

Gestion structurée par dev-story avec tasks numérotées et XML workflow engine :

# Exemple de dev-story BMAD
# _bmad/backlog/stories/DS-042-filtres-catalogue.md

# DS-042 : Implémenter les filtres du catalogue

## Contexte
L'utilisateur doit pouvoir filtrer les produits par catégorie,
prix et disponibilité.

## Tasks
- [ ] T1: Créer le composable useFilters()
- [ ] T2: Implémenter le composant FilterPanel.vue
- [ ] T3: Connecter à l'API /products?filters=...
- [ ] T4: Tests e2e avec Playwright
- [ ] T5: Review et merge

## Critères de validation
- Filtres persistés dans l'URL (query params)
- Debounce de 300ms sur les inputs
- Skeleton loading pendant le fetch
- Tests e2e sur les 3 types de filtres

6. session.md - Persistance du contexte

Pattern observé sur les projets avancés (granit-golem, cas client multi-agent, timespot) : un fichier session.md lu au démarrage et mis à jour en fin de session.

# .claude/session.md - Exemple réel (granit-golem)

## État courant
- **Phase** : Sprint 4 - Stabilisation
- **Branche** : feat/outbox-pattern
- **Dernière session** : 2025-01-14 18:30

## Backlog actif
| # | Ticket | Priorité | Status |
|---|--------|----------|--------|
| 1 | Implémenter Outbox Pattern | P0 | ✅ Done |
| 2 | RLS policies pour tenant isolation | P0 | 🔄 In Progress |
| 3 | Migration OpenTelemetry spans | P0 | ⏳ Pending |
| 4 | Fix race condition event handler | P1 | ⏳ Pending |
| 5 | Refactor error types (thiserror) | P2 | ⏳ Pending |

## Décisions récentes
- ADR-007: Outbox Pattern plutôt qu'event sourcing (simplicité)
- ADR-008: RLS au niveau PostgreSQL plutôt qu'applicatif

## Tests
- Dernière exécution : 142 passed, 0 failed, 3 skipped
- Coverage : 78% (cible: 80%)

## Notes
- Le worker outbox a besoin d'un retry avec backoff exponentiel
- Voir si pg_cron peut remplacer le cron Node.js

7. Architecture des dossiers .claude/

Analyse de 13 projets du lab (9 avec dossier .claude/, 4 avec CLAUDE.md seul). Trois niveaux de configuration émergent :

Niveau 1 - Global (utilisateur)

~/.claude/
├── CLAUDE.md              # Instructions globales (mgrep, tokens, conventions)
├── settings.json          # Permissions globales
└── projects/              # Mémoire persistante par projet
    ├── projet-a/
    │   └── MEMORY.md      # Notes cross-session
    └── projet-b/
        └── MEMORY.md

Le CLAUDE.md global s'applique à tous les projets. Idéal pour les conventions personnelles (style, outils, optimisation tokens).

Niveau 2 - Projet minimal (5 projets)

project/
├── CLAUDE.md                    # Stack, conventions, commandes
└── .claude/
    └── settings.local.json      # Permissions locales

Suffisant pour les projets simples ou en démarrage. Exemples : klafuti-bi, kotg, tordu-jardin, kinesiologie, attrape-moi-front.

Niveau 3 - Projet avancé (4 projets)

project/
├── CLAUDE.md                    # Instructions, modes, quick reference
└── .claude/
    ├── commands/                # 5-7 commandes personnalisées
    │   ├── autopilot.md         #   Cycle autonome
    │   ├── test-sweep.md        #   Exécution tests
    │   ├── triage.md            #   Tri tickets
    │   ├── review.md            #   Code review structurée
    │   ├── gitlab.md            #   Opérations CI/CD
    │   ├── doc.md               #   Génération documentation
    │   └── sprint-report.md     #   Rapport de sprint
    ├── agents/                  # Définitions d'agents (multi-agent)
    ├── decisions.md             # ADR (Architecture Decision Records)
    ├── session.md               # État courant, contexte de travail
    ├── docs/                    # Stratégie test, migrations, workflows
    │   ├── testing-strategy.md
    │   ├── gitlab-workflow.md
    │   └── product-vision.md
    ├── backlog/                 # BMAD file-based backlog
    │   ├── epics/
    │   └── stories/
    ├── inbox/                   # Communication inter-agents
    │   ├── pmo/
    │   ├── tech/
    │   └── qa/
    ├── reports/                 # Rapports générés (test-sweep, sprint)
    ├── sync/                    # État partagé (board.md)
    └── settings.local.json

Inventaire réel des .claude/ par projet

Projet Stack Contenu .claude/ Maturité
granit-golem Rust/TS commands(7), decisions, docs(5), session, tickets, workflows, agents Avancé
cas client multi-agent Angular/NestJS commands, decisions, directives, docs, inbox(5), logs, reports, session, specs, stories, sync Avancé
timespot Rust/React/Node agents, backlog(epics+stories), brainstorms, commands, decisions, docs, scripts, session Avancé
basalt-beholder Nuxt 3 commands, settings + _bmad/ complet Intermédiaire
siliceum-website Astro agents, CLAUDE.md, DESIGN-DIRECTION.md Intermédiaire
kotg Nuxt 3 CLAUDE.md (root, 112 cartes, data model v4) Minimal
profile-service Node/LangGraph CLAUDE.md (root, pipeline Extract→Validate→Merge) Minimal

8. Hooks & Automatisation

Les hooks Claude Code permettent d'exécuter des commandes shell automatiquement en réponse à des événements. Pattern observé sur granit-golem et le cas client multi-agent :

Types de hooks

Hook Déclenchement Usage observé
PreToolUse Avant chaque appel d'outil Validation, logging, guards
PostToolUse Après chaque appel d'outil Formatage auto, lint, notifications
Notification Quand Claude envoie une notification Alertes Slack, logs
Stop Fin de réponse de Claude Rapport final, mise à jour session.md

Exemple de configuration hooks

// .claude/settings.local.json - Hooks
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npx prettier --write \"$CLAUDE_FILE_PATH\"",
        "description": "Auto-format après chaque écriture"
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "echo \"[$(date)] Bash: $CLAUDE_TOOL_INPUT\" >> .claude/logs/commands.log",
        "description": "Logger toutes les commandes Bash exécutées"
      }
    ],
    "Stop": [
      {
        "command": "date '+%Y-%m-%d %H:%M' >> .claude/session-timestamps.log",
        "description": "Tracker les fins de session"
      }
    ]
  }
}

9. Règles d'or observées

"Ça compile" != "Ça fonctionne"

Toujours tester, jamais faire confiance au build seul. Vu sur granit-golem : un build Rust OK avec un bug logique dans le pattern matching.

TDD obligatoire

Red → Green → Refactor systématique. Les projets avec TDD dans le CLAUDE.md ont 60% moins de régressions.

Conventional commits

feat:, fix:, docs:, test:, refactor: - Rend le changelog automatique et l'historique lisible.

Pas d'over-engineering

YAGNI - You Ain't Gonna Need It. Claude a tendance à sur-abstraire si on ne le bride pas explicitement.

Commits atomiques

1 commit = 1 changement logique. Facilite le revert et le bisect. Pattern observé dans les commandes /autopilot.

Lecture avant écriture

Toujours lire un fichier avant de le modifier. Empêche les régressions et les écrasements accidentels.

Context-aware compaction

Compacter à 60-70%, pas 95%. Spécifier dans CLAUDE.md ce que /compact doit garder vs exclure.

Séparer les responsabilités

Ne pas mélanger feature + refactor + fix dans un même prompt. Un prompt = un objectif clair.

10. Anti-patterns observés

Le prompt fourre-tout

Mauvais : "Implémente l'auth, ajoute les tests, refactore le middleware, fixe le bug #42, et mets à jour la doc"
Bon : "Implémente l'endpoint POST /auth/login avec JWT. Tests unitaires inclus."

5 tâches en 1 prompt = confusion, oublis, et contexte qui explose. 1 prompt = 1 tâche.

Le contexte zombie

Mauvais : Enchaîner 10 tâches sans /clear ni /compact → contexte à 95% → compaction auto → perte d'info
Bon : /clear entre tâches indépendantes, /compact à 60-70% avec instructions de rétention

Le contexte zombie traîne des informations périmées qui polluent les décisions de Claude.

Le "trust the build"

Mauvais : "Le build passe → commit → push" sans lancer les tests
Bon : "Build OK → tests unitaires → tests intégration → review → commit"

Observé sur granit-golem : un build Rust OK masquait un bug de pattern matching qui a été attrapé uniquement par les tests.

L'autopilot aveugle

Mauvais : /autopilot sur du code critique sans supervision ni session.md
Bon : /autopilot avec session.md structuré, backlog trié, et review post-session

Sans garde-fous, Claude peut partir dans une direction incorrecte et accumuler 10 commits problématiques.

Le CLAUDE.md vide

Mauvais : Pas de CLAUDE.md ou juste "# Mon Projet"
Bon : Stack, conventions, commandes de build/test, règles impératives, workflow

Sans instructions, Claude utilise ses defaults. Résultat : style inconsistant, pas de tests, commits en vrac.

11. Skills & MCP Servers

Les Skills sont des extensions qui remplacent ou augmentent les outils built-in de Claude Code. Pattern observé : le skill mgrep (recherche sémantique via Mixedbread) remplace Grep/Glob/WebSearch.

Architecture d'un skill custom

# Structure d'un skill (mgrep)
~/.claude/plugins/cache/Mixedbread-Grep/mgrep/
├── skills/
│   └── mgrep/
│       └── skill.md        # Instructions + examples
├── package.json
└── index.js                # CLI executable

# Invocation dans CLAUDE.md
## mgrep - Recherche obligatoire
**CRITIQUE**: Utiliser TOUJOURS `mgrep search` au lieu des outils built-in :
- `mgrep search "query descriptive" chemin/ -m 10 -c -s`
- `mgrep search "query" --web --answer -s`
- Ne JAMAIS utiliser les outils Grep, Glob ou WebSearch

Impact mesurable

Avant (Grep built-in)

Grep "authentication" sur un projet NestJS

  • ~200 résultats retournés
  • Claude lit chaque résultat pour filtrer
  • ~50K tokens consommés
  • 3-4 appels successifs pour affiner
Après (mgrep sémantique)

mgrep "fonctions d'authentification JWT"

  • 5 résultats pertinents (ranked par similarité)
  • Contenu ciblé avec contexte
  • ~2K tokens consommés
  • 1 seul appel suffit

12. MEMORY.md - Apprentissage cross-session

Claude Code maintient un fichier MEMORY.md persistant par projet, automatiquement injecté dans le prompt système à chaque session. C'est la mémoire à long terme de l'agent.

# Structure de la mémoire
~/.claude/projects/
├── projet-a/
│   └── MEMORY.md      # Auto-apprentissage spécifique au projet
├── projet-b/
│   └── MEMORY.md
└── ...

# Règles de gestion (dans CLAUDE.md global)
## Ce qu'il faut sauvegarder :
- Patterns stables confirmés sur plusieurs interactions
- Décisions architecturales importantes
- Préférences utilisateur (workflow, outils, style)
- Solutions à des problèmes récurrents

## Ce qu'il ne faut PAS sauvegarder :
- Contexte de session (tâche en cours, état temporaire)
- Informations non vérifiées
- Ce qui duplique CLAUDE.md

Exemple réel : MEMORY.md qui se construit

Session 1

MEMORY.md vide. Claude découvre le projet.

Session 3

"Le build Rust nécessite --release pour les benchmarks. Sans ce flag, les résultats sont 10x plus lents."

Session 8

"L'utilisateur préfère les tests dans le même fichier (#[cfg(test)]) plutôt que dans tests/. Les migrations Diesel doivent être up/down."

Session 15+

MEMORY.md riche : patterns confirmés, pièges connus, préférences stables. Ramp-up quasi-instantané.

13. Métriques réelles par projet

Données extraites des 5 projets les plus actifs du lab. Le ratio fix/feat est le meilleur indicateur de qualité : plus il est bas, moins il y a de corrections post-implémentation.

Projet Commits Features Fixes Ratio fix/feat Rollbacks Configuration
granit-golem 700+ 50% 33% 0.67 0 Avancé
basalt-beholder 55 56% 22% 0.39 0 BMAD
cas client multi-agent 25 72% 16% 0.22 0 Multi-agent

Corrélation configuration → qualité

Multi-agent (cas client)
0.22 - 3x moins de fixes
BMAD + stories (basalt)
0.39 - Stories structurées
Avancé mono-agent (granit)
0.67 - Infra/security fixes
Minimal/Aucun (.claude/)
1.0+ - Beaucoup de corrections

14. Patterns récurrents observés dans 10 581 sessions

L'analyse des historiques de sessions Claude Code sur 48 projets révèle des patterns concrets et mesurables. Voici les plus significatifs, classés par impact.

Pattern 1 : Le ratio sessions/commits comme indicateur de maturité

Le nombre de sessions Claude nécessaires pour produire un commit varie considérablement selon la maturité du CLAUDE.md et des outils configurés.

Projet Sessions Commits 2026 Ratio S/C Interprétation
granit-golem 622 552 1.13 CLAUDE.md 757 lignes, 6 agents - quasi 1:1
comrenov 635 269 2.36 11 agents, pipeline saga - bon ratio production
cloud 831 159 5.23 IaC complexe, beaucoup de debug Ansible
siliceum-website 1 364 83 16.4 Refonte design system - itération intensive
sioule-2 1 416 ~15 94.4 Exploration/refactoring massif sans commits

Pattern 2 : La taille du CLAUDE.md corrèle avec l'efficacité

757 lignes (granit-golem)
Ratio 1.13 - maximum d'efficacité
136 lignes (comrenov)
Ratio 2.36 - très bon
185 lignes (cloud)
Ratio 5.23 - correct pour l'IaC
0 lignes (tordu-jardin)
416 sessions, 134 commits - pas de guide

Pattern 3 : Les agents spécialisés divisent les erreurs par 3

Les projets utilisant des agents dédiés (.claude/agents/) montrent une réduction significative des itérations correctives. Voici les configurations observées :

🦀

senior-rust-dev (granit-golem)

375 lignes. Expertise DDD, Axum, SQLx, patterns async Tokio. Connaît les pièges lifetimes et les erreurs courantes.

DDD Axum SQLx Tokio
📊

pipeline-monitor (granit-golem)

Surveille les pipelines GitLab CI, détecte les flaky tests, propose des optimisations de cache.

CI/CD Flaky tests Cache
🧪

qa-tester (granit-golem)

Écrit les tests E2E Playwright avec page objects, vérifie la couverture, exécute les quality gates.

Playwright E2E Coverage
🎯

project-maestro (granit-golem)

Vue d'ensemble du projet. Priorise, dispatche, et s'assure de la cohérence architecturale.

Prioriser Dispatcher Arbitrer

Pattern 4 : Les MCP servers comme multiplicateurs de productivité

3 MCP servers sont configurés globalement dans mon lab. Ils donnent à Claude Code un accès permanent à des outils externes :

MCP : summoner (orchestration)
// ~/.claude/.mcp.json
{
  "summoner": {
    "command": "node",
    "args": ["~/lab/summoner/packages/mcp/dist/index.js"],
    "env": { "SUMMONER_URL": "http://localhost:7777" }
  }
}
// → 40+ tools : projects, sessions, tasks, kanban, BMAD, workflows
// → Permet à Claude Code de lancer des sessions sur d'autres projets
MCP : grafana-monitoring (observabilité)
// Permet à Claude Code de consulter les dashboards Grafana
// directement pendant le développement
// → Vérifie les métriques de performance après un déploiement
// → Détecte les régressions de latence
// → Accède aux logs applicatifs en temps réel

Pattern 5 : La mémoire projet comme accélérateur de ramp-up

Les projets les plus actifs utilisent un système de mémoire structuré avec des fichiers thématiques :

# Exemple : granit-golem - 13 fichiers mémoire
.claude/projects/granit-golem/memory/
├── MEMORY.md                    # Index (5 entrées)
├── user_profile.md              # Préférences du développeur
├── project_overview.md          # Vue d'ensemble architecture
├── project_decisions.md         # ADR persistés cross-session
├── project_infrastructure.md    # Config infra, déploiement
├── project_ci_bugs_2026_03.md   # Bugs CI récurrents à éviter
├── reference_gitlab.md          # URLs, projets, pipelines
├── feedback_e2e_mocking.md      # "Ne jamais mocker /api/v1/xxx/{id}"
├── feedback_testing.md          # "Toujours page objects en E2E"
├── feedback_workflow.md         # "Pas de commit sans validate.sh"
├── feedback_orchestration.md    # "Utiliser session.md, pas les notes"
└── feedback_open_tickets.md     # "Vérifier tickets avant de coder"

# Impact mesuré :
# - Ramp-up : 15 min → 2 min (fichier lu automatiquement)
# - Erreurs récurrentes : -80% (feedback persisté)
# - Cohérence inter-sessions : ++++ (décisions tracées)

Pattern 6 : Plugins globaux comme socle de productivité

5 plugins sont activés globalement et s'appliquent à tous les projets du lab :

rust-analyzer-lsp

Navigation, completion et diagnostics Rust. Permet à Claude de comprendre les types et les erreurs avant même de compiler.

typescript-lsp

Même chose pour TypeScript. Détecte les erreurs de types avant l'exécution.

superpowers

Skills avancés : brainstorming, plans, debugging systématique, TDD, code review. Ajoute de la structure aux tâches complexes.

playwright

Intégration navigateur : screenshots, navigation, tests E2E. Permet de vérifier visuellement le résultat.

frontend-design

Design frontend production-grade. Génère du code distinctif, pas du "AI-look" générique.

12 skills d'audit

Architecture, CI/CD, sécurité, testing, observabilité, performance, conformité, qualité... Un audit complet en une commande.

Pattern 7 : Répartition de l'effort Claude par domaine

L'analyse des 10 581 sessions montre une répartition claire de l'effort Claude Code par type de projet :

Projets clients (3 774)
36% - comrenov, sioule, klafuti, cas client multi-agent...
Sites web (2 435)
23% - siliceum-website, tordu-jardin, totem...
Outils qualité (1 168)
11% - granit-golem, marble, basalt, iolite...
Infrastructure (831)
8% - cloud (Ansible, Docker, Traefik)
Autres (2 373)
22% - audit, BI, ML, game, utilitaires...

Pattern 8 : Les pièges spécifiques par stack

Chaque stack a ses pièges récurrents que Claude Code reproduit si le CLAUDE.md ne les documente pas explicitement :

Rust : page.evaluate() avec esbuild (marble-minotaur)

Bug : page.evaluate(() => document.title) - tsx/esbuild injecte __name dans la closure, crash dans le browser context
Fix : page.evaluate('document.title') - toujours passer une string à page.evaluate()

Documenté dans le CLAUDE.md de marble-minotaur. Sans cette note, chaque session reproduisait le bug.

Angular : subscriptions non nettoyées

Bug : .subscribe() sans takeUntil, takeUntilDestroyed, ou async pipe - fuite mémoire
Fix : Grep systématique de .subscribe( sans cleanup dans le CLAUDE.md global. Vérification obligatoire.

Règle globale dans ~/.claude/CLAUDE.md car applicable à tous les projets Angular du lab.

NestJS : imports circulaires (comrenov)

Bug : Module A importe Module B qui importe Module A → crash au bootstrap
Fix : forwardRef() ou extraction du code partagé dans un module dédié

Claude ne détecte pas toujours les dépendances circulaires. Le CLAUDE.md de comrenov les liste comme piège connu.

Ansible : variable non définie dans template Jinja2 (cloud)

Bug : Variable référencée dans un template mais pas définie dans group_vars/ → échec silencieux
Fix : Toujours dry-run (make dry-run) avant apply. Le CLAUDE.md de cloud impose cette vérification.

831 sessions sur cloud - le dry-run obligatoire a évité plusieurs déploiements cassés.

Pattern 9 : La validation post-modification comme filet de sécurité

Règle globale appliquée à tous les projets du lab (définie dans ~/.claude/CLAUDE.md) :

# ~/.claude/CLAUDE.md - Section validation

## Validation après modification
- Toujours lancer les vérifications les plus pertinentes après une modification
- Commencer par les vérifications les plus ciblées :
  tests du scope modifié, puis lint, typecheck, build
- Si un test échoue à cause du changement, corriger et re-tester
  avant de demander review
- Ne pas déclarer un travail "terminé" sans indiquer ce qui a été
  exécuté et ce qui ne l'a pas été

## Frameworks par projet (lookup table)
| Projet        | Framework        | Commande                    |
|---------------|------------------|-----------------------------|
| comrenov      | Jest / Vitest    | npm run test:backend/front  |
| basalt-beholder| Vitest + PW     | vitest run / playwright test|
| granit-golem  | Vitest           | vitest run                  |
| sioule-2      | Karma/Jasmine    | npm run front:test          |
| summoner      | Vitest + PW      | npm run test / test:e2e     |

15. Chemin d'évolution recommandé

Basé sur l'analyse des 13 projets, voici la progression naturelle d'un setup Claude Code :

1

Démarrage

Jour 1
  • CLAUDE.md avec stack + conventions + 3 règles
  • 30-50 lignes suffisent
  • "ne me demande pas d'autorisation"
2

Productivité

Semaine 2
  • Ajouter session.md
  • Créer /autopilot et /test-sweep
  • Configurer subagent model = haiku
3

Industrialisation

Mois 2
  • Hooks (auto-format, logging)
  • 5+ commandes custom
  • ADR, docs/, backlog/ dans .claude/
4

Multi-agent

Si pertinent
  • Agents PMO / Tech / QA
  • Communication via inbox/
  • Orchestrateur + board.md