Cette page détaille ma configuration Claude Code personnelle, optimisée après des mois d'utilisation quotidienne sur plusieurs projets. Dernière mise à jour : avril 2026.
Architecture de la configuration
Claude Code utilise un système de mémoire à 3 niveaux :
| Niveau | Fichier | Quand c'est chargé |
|---|---|---|
| Global | ~/.claude/CLAUDE.md | Toutes les conversations, tous les projets |
| Projet | ./CLAUDE.md à la racine du projet | Chaque conversation dans ce projet |
| Sous-dossier | ./CLAUDE.md dans un sous-dossier | Quand Claude lit un fichier dans ce dossier |
Fichiers supplémentaires :
~/.claude/rules/→ Règles globales (chargées selon le contexte)~/.claude/commands/→ Skills et commandes custom~/.claude/agents/→ 16 sub-agents autonomes~/.claude/scripts/→ 4 scripts d'automatisation pour les hooks~/.claude/settings.json→ 19 plugins, deny list, permissions globales~/.claude/settings.local.json→ 6 hooks, status line, permissions locales.claude/dans chaque projet → Rules et settings spécifiques au projet
Mon CLAUDE.md global (~50 lignes)
Fichier chargé dans TOUTES les conversations. Contient :
- Identité : dev fullstack Next.js + Supabase + shadcn/ui + Tailwind v4, réponses en français, code en anglais
- Coding standards : TypeScript strict, Server Components par défaut, Server Actions + RLS + Zod
- UI/UX : shadcn/ui obligatoire, Tailwind v4 CSS vars, Recharts SSR pattern
- Git : commits conventionnels en anglais, jamais push/force push sans demander
- Outils : pnpm par défaut, Prettier via hook
Mes règles globales (~/.claude/rules/)
safety.md, ce qui est INTERDIT
rm -rf→ utilisertrashsudosans confirmation- Supprimer des migrations SQL
supabase db reset(détruit données + credentials)
supabase.md, patterns obligatoires
createClient()(anon+RLS) pour les pages usercreateAdminClient()UNIQUEMENT pour admin/scripts- Pattern server action :
"use server"→createClient()→getUser()→ Zod → query
nextjs.md, conventions Next.js
- Server Components par défaut, Client Components seulement si state/events
- LIRE 3 FICHIERS SIMILAIRES avant de créer un nouveau composant/route/action
- URL search params pour les filtres (SSR-friendly), pas de useState
- Ne jamais créer
middleware.tssans vérifier l'existant
quality.md, standards de qualité
- Ne jamais marquer une tâche terminée sans preuve que ça marche
- Demand elegance pour les changements non-triviaux
- Simplicity first, no laziness, minimal impact
workflow.md, gestion des sessions
- Plan mode pour toute tâche 3+ étapes
- Subagents pour garder le contexte propre
- /compact à 60%, STOP à 80%, /rewind si ça déraille
self-improvement.md, auto-amélioration
- Après correction utilisateur → sauvegarder en mémoire (feedback)
- Pattern manquant détecté → suggérer mise à jour des rules
changelog.md, CHANGELOG automatique
- Mise à jour du
CHANGELOG.mdaprès chaque changement de code
typescript-errors.md, scope multi-agent
- Ne corriger que les erreurs TypeScript dans ses propres fichiers
writing-style.md, anti-patterns IA
- Zéro tiret cadratin, zéro parallélisme, zéro formule sentencieuse
pdf-export.md, export PDF carrousel
- Dimensions divisibles par 4 (standard : 1080x1348px)
- Post-processing pypdf pour MediaBox exact
Mes hooks (6 scripts custom)
Les hooks s'exécutent automatiquement à certains moments. Configurés dans settings.local.json, ils utilisent des scripts dans ~/.claude/scripts/.
Après chaque édition de fichier (PostToolUse)
- Prettier auto-format :
npx prettier --writesur le fichier modifié - Console warn : alerte si
console.logdétecté dans du TypeScript/JavaScript - Suggest compact : suggère
/compactà 40 appels d'outils, puis tous les 25
Avant certaines actions (PreToolUse)
- Config protection : bloque les modifications des configs linter/formatter (
.eslintrc,.prettierrc,biome.json). Force à corriger le code source au lieu d'affaiblir les règles. - Pre-commit TypeScript : lance
npx tsc --noEmitavant chaquegit commit. Bloque le commit si erreur.
Fin de session (Stop)
- TypeScript check : vérifie les types et affiche max 15 erreurs
- Notification macOS : son + notification cliquable avec projet, branche et durée de session
Mes plugins (19 actifs)
Les plugins ajoutent des workflows pré-configurés. Installables via le marketplace officiel.
Développement
- superpowers : framework complet, brainstorming 4 rounds, TDD, debugging structuré, plans, code review parallèle, worktrees
- commit-commands :
/commit,/commit-push-pr, nettoyage de branches - typescript-lsp : serveur de langage TypeScript intégré
- frontend-design : design d'interfaces production-grade
Intégrations
- vercel : déploiement, env vars, status, marketplace, AI SDK
- supabase : gestion DB, migrations, types, edge functions
- stripe : paiements, test cards, erreurs
- sentry : monitoring d'erreurs
- playwright : screenshots, tests E2E, automatisation navigateur
- Notion : lecture/écriture de pages et bases de données
Productivité
- claude-md-management : audit et amélioration des
CLAUDE.md - ralph-loop : tâches récurrentes en session
- skill-creator : création de nouveaux skills custom
Mes serveurs MCP
Les serveurs MCP connectent Claude Code à des services externes via le Model Context Protocol.
Local
- nano-banana : génération et édition d'images via Gemini (chapitre 15)
Cloud (connectés via claude.ai)
- Notion : lire, créer et modifier des pages et bases de données
- Gmail : rechercher, lire et rédiger des emails
- Google Calendar : gérer l'agenda
- Supabase : exécuter du SQL, migrations, edge functions, types
- Vercel : déploiements, logs, configuration projet
- Stripe : paiements, webhooks, authentification
- Sentry : monitoring et alertes
- Context7 : documentation à jour de n'importe quelle librairie
- Canva : création et édition de designs
- Excalidraw : diagrammes et schémas techniques
Résultat : pousser un carousel dans Notion, checker un déploiement Vercel, exécuter du SQL sur Supabase, ou rechercher un email. Sans quitter le terminal.
Mon workflow /code, Prompt Discovery
Le problème, Lost in the Middle
Les LLMs donnent plus d'attention aux tokens en début et fin de contexte. Un gros prompt initial se retrouve "au milieu" après l'exploration → le modèle le suit moins bien.
La solution : Prompt Discovery, chaque étape est lue JUSTE AVANT son exécution, gardant les instructions fraîches en fin de contexte.
Comment utiliser /code
/code Ajouter une page profil utilisateur
→ Explore la codebase → Exécute → Vérifie (TypeScript, build)
/code --plan Ajouter un système de notifications
→ Explore → Crée un plan → Validation utilisateur → Exécute → Vérifie
/code --plan --test --branch --pr Refactorer le système de crédits
→ Explore → Plan → Branche git → Exécute → Tests → PR
Les 4 étapes
| Étape | Fichier | Ce qui se passe |
|---|---|---|
| Explore | 01-explore.md | Lance des sub-agents pour analyser la codebase, lit 3+ fichiers similaires |
| Plan | 02-plan.md | Crée un plan structuré, identifie les décisions (si --plan) |
| Execute | 03-execute.md | Code dans l'ordre : migrations → types → actions → UI |
| Verify | 04-verify.md | TypeScript check, lint, build, tests (si --test), PR (si --pr) |
Mes sub-agents custom (16 agents)
Un sub-agent est un "mini-Claude" dispatché pour une tâche spécifique. Il explore, analyse, puis renvoie un résumé au contexte principal. Avantage : il peut lire 120K tokens et n'en renvoyer que 1-2K.
Exploration
- explore-codebase : structure du projet, stack, patterns, utilitaires (~500 mots)
- explore-supabase : migrations SQL, policies RLS, server actions (~800 mots)
- doc-lookup : documentation via Context7 MCP ou web search (~1000 mots)
Blog & contenu
- blog-researcher : statistiques récentes, vérification de sources, images libres
- blog-writer : rédaction d'articles optimisés SEO et citations IA
- blog-reviewer : review qualité sur 5 catégories, scoring /100
- blog-seo : optimisation SEO on-page
SEO (7 agents spécialisés)
- seo-content · seo-technical · seo-schema · seo-geo · seo-performance · seo-sitemap · seo-visual
Chaque agent SEO couvre un domaine : contenu, technique, schema.org, citations IA, Core Web Vitals, sitemaps, rendu visuel.
Impact sur le contexte : un sub-agent peut lire 120K tokens et n'en renvoyer que 1-2K au contexte principal. C'est une économie massive qui te permet de garder ton contexte propre pour les instructions importantes.
Mes skills et commandes (43 commands)
Chaque fichier .md dans ~/.claude/commands/ devient une commande /nom.
Développement (21 commands)
/code · /apex · /debug · /review · /component · /server-action · /form-builder · /migration-sql · /rls-policy · /refactor · /test-gen · /supabase-types · /codebase-map · /security-scan · /deploy-check · /push-prod · /pr · /clean-code · /explain · /perf-audit · /oneshot
Contenu & marketing (18 commands)
/carousel · /lk · /insta · /bip · /newsletter · /email · /veille · /image · /photo-gaetan · /banner · /video · /short · /deck · /content-repurpose · /recap · /ship · /metrics-share · /inbox-notion
Workflows multi-étapes
/code: Explore → Plan → Execute → Verify. Chaque étape est un fichier lu juste-à-temps (Prompt Discovery)./apex: version avancée avec flags--auto,--plan,--branch,--pr,--test/brainstorm: recherche profonde en 4 rounds, Exploration, Devil's Advocate, Synthèse, Cristallisation/debug: debugging structuré en 5 étapes, Init, Analyse, Solutions, Fix, Verify/review: code review parallèle avec 4 reviewers, Code, Best Practices, Security, Devil Advocate
Checklist nouveau projet
- Créer le projet et initialiser git
- Lancer
claudedans le dossier du projet - Lancer
/initpour générer leCLAUDE.mdautomatiquement - Réduire le
CLAUDE.mdà ~100-200 lignes (garder l'essentiel) - Créer
.claude/settings.local.jsonavec les permissions - Ajouter des rules scoped dans
.claude/rules/si nécessaire - Ajouter des code comments dans les fichiers utilitaires clés (coût zéro)
Configuration settings.json
Le fichier ~/.claude/settings.json contient des réglages qui améliorent significativement la qualité des réponses. Ces 3 options sont recommandées par Boris Cherny (créateur de Claude Code) :
{
"effortLevel": "high",
"alwaysThinkingEnabled": true,
"outputStyle": "Explanatory"
}
Ce que chaque option fait :
- effortLevel: "high" : Claude utilise plus de tokens pour réfléchir. Plus lent mais plus intelligent. Boris l'utilise sur tout.
- alwaysThinkingEnabled: true : affiche le raisonnement de Claude. Tu vois pourquoi il fait chaque choix.
- outputStyle: "Explanatory" : ajoute des boîtes "Insight" qui expliquent les patterns et frameworks utilisés. Très utile quand tu explores un codebase inconnu.
Ces réglages sont aussi accessibles via :
/modelpour changer l'effort level/configpour l'output style
Status line avec alerte contexte
La status line affiche des infos en temps réel sous le composer. Ma version ajoute un warning de contexte :
#!/bin/bash
input=$(cat)
MODEL=$(echo "$input" | jq -r '.model.display_name')
DIR=$(echo "$input" | jq -r '.workspace.current_dir')
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
FOLDER="${DIR##*/}"
if [ "$PCT" -ge 80 ]; then
CTX=" [COMPACT NOW]"
elif [ "$PCT" -ge 60 ]; then
CTX=" [compact soon]"
else
CTX=""
fi
echo "[$MODEL] $FOLDER | ${PCT}% ctx${CTX} | \$$COST"
Résultat : [Opus 4.6] mon-projet | 45% ctx | $1.23. Et quand le contexte dépasse 60% : [Opus 4.6] mon-projet | 65% ctx [compact soon] | $2.10
Pour l'activer, ajoute dans settings.local.json :
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"padding": 2
}
}
Deny list globale (filet de sécurité)
Dans ~/.claude/settings.json, la deny list bloque les commandes dangereuses partout, même en mode trust :
{
"permissions": {
"deny": [
"Bash(rm -rf*)",
"Bash(sudo*)",
"Bash(supabase db reset*)",
"Bash(git push --force*)",
"Bash(git push -f*)",
"Bash(git reset --hard*)",
"Bash(git clean -f*)"
]
}
}
Ces commandes sont les plus destructrices : suppression de fichiers, écrasement de l'historique git, destruction de base de données. Mieux vaut les bloquer une fois pour toutes.
Tips avancés
Règle des 3 fichiers
Avant de créer un nouveau composant/route/action, Claude doit LIRE au moins 3 fichiers similaires existants. Cela garantit la cohérence des patterns sans avoir à tout documenter dans le CLAUDE.md.
Code comments comme instructions
Ajouter des commentaires // CLAUDE: dans les fichiers utilitaires clés. Quand Claude lit ces fichiers pour comprendre les patterns, il hérite des instructions gratuitement, 0 token supplémentaire dans le contexte.
Exemples concrets :
supabase/server.ts→ différence entre client anon et adminai/types.ts→ comment ajouter un nouveau skill IAstripe/client.ts→ ne pas exposer la secret key côté client
/compact et /rewind, les 2 commandes les plus sous-estimées
/compact : résume la conversation et libère du contexte. Lancer manuellement dès 50-60% de contexte. N'attends pas 80%, c'est la "dumb zone" où Claude perd en qualité. Après un /compact, relis les fichiers clés de ta tâche en cours.
/rewind (Esc Esc) : annule les dernières modifications de code ET revient en arrière dans la conversation. Quand Claude part dans la mauvaise direction, /rewind est 3x plus efficace que corriger manuellement (le contexte est déjà pollué par la mauvaise approche).
Mot-clé "ultrathink"
Ajouter ultrathink dans un prompt force Claude à utiliser un raisonnement approfondi (extended thinking). Idéal pour les problèmes d'architecture complexes, les choix de design avec beaucoup de trade-offs, ou le debugging de problèmes subtils.
Prompt Discovery (anti "Lost in the Middle")
Ne jamais donner toutes les instructions d'un workflow en une seule fois. Découper en fichiers steps lus juste-à-temps pour que les instructions restent toujours "fraîches" en fin de contexte.
Meta-prompt pour optimiser tes prompts
Le skill /meta-prompt génère des prompts optimisés en appliquant les best practices Anthropic : XML tags, few-shot examples, chain-of-thought, etc. Utile pour créer des prompts système pour tes skills IA.
Hook pre-commit TypeScript
Un hook PreToolUse qui intercepte les git commit et lance npx tsc --noEmit avant. Bloque le commit si erreur TypeScript, filet de sécurité automatique.
Arborescence type
~/.claude/
├── CLAUDE.md ← Préférences globales
├── settings.json ← Plugins activés
├── settings.local.json ← Hooks (Prettier + notification)
├── rules/
│ ├── safety.md ← Interdictions (rm -rf, sudo, db reset)
│ ├── supabase.md ← Patterns Supabase obligatoires
│ ├── nextjs.md ← Conventions Next.js
│ ├── workflow.md ← Best practices /compact, /rewind, sessions
│ └── changelog.md ← Mise à jour CHANGELOG après chaque modif
├── commands/
│ └── code/
│ ├── skill.md ← Workflow /code (entry point)
│ └── steps/
│ ├── 01-explore.md ← Étape exploration
│ ├── 02-plan.md ← Étape plan (si --plan)
│ ├── 03-execute.md ← Étape exécution
│ └── 04-verify.md ← Étape vérification
└── agents/
├── explore-codebase.md ← Sub-agent exploration projet
├── explore-supabase.md ← Sub-agent schéma Supabase
└── doc-lookup.md ← Sub-agent documentation
~/code/mon-projet/
├── CLAUDE.md ← ~100-200 lignes, spécifique au projet
└── .claude/
├── settings.local.json ← Permissions projet
└── rules/
├── db-schema.md ← Schéma DB (si applicable)
└── roadmap.md ← Phases et sprints