# CLAUDE.md Ce fichier fournit des consignes à Claude Code (claude.ai/code) lorsqu'il travaille avec le code de ce dépôt. ## Vue d'ensemble du dépôt Ceci est un dépôt de bonnes pratiques pour la configuration de Claude Code, démontrant des patterns pour skills, sous-agents, hooks et commandes. Il sert d'implémentation de référence plutôt que de codebase applicative. ## Composants clés ### Système météo (workflow d'exemple) Une démonstration de deux patterns de skills distincts via l'architecture **Commande → Agent → Skill** : - Commande `/weather-orchestrator` (`.claude/commands/weather-orchestrator.md`) : point d'entrée — demande C/F à l'utilisateur, invoque l'agent, puis invoque le skill SVG - Agent `weather-agent` (`.claude/agents/weather-agent.md`) : récupère la température avec son skill préchargé `weather-fetcher` (pattern agent skill) - Skill `weather-fetcher` (`.claude/skills/weather-fetcher/SKILL.md`) : préchargé dans l'agent — instructions pour récupérer la température depuis Open-Meteo - Skill `weather-svg-creator` (`.claude/skills/weather-svg-creator/SKILL.md`) : skill — crée une carte météo SVG, écrit `orchestration-workflow/weather.svg` et `orchestration-workflow/output.md` Deux patterns de skills : agent skills (préchargés via le champ `skills:`) vs skills (invoqués via l'outil `Skill`). Voir `orchestration-workflow/orchestration-workflow.md` pour le diagramme de flux complet. ### Structure de définition des skills Les skills dans `.claude/skills//SKILL.md` utilisent un frontmatter YAML : - `name` : nom d'affichage et `/slash-command` (par défaut le nom du répertoire) - `description` : quand invoquer (recommandé pour l'auto-découverte) - `argument-hint` : indice d'autocomplétion (par ex. `[issue-number]`) - `disable-model-invocation` : mettre `true` pour empêcher l'invocation automatique - `user-invocable` : mettre `false` pour masquer du menu `/` (connaissance d'arrière-plan uniquement) - `allowed-tools` : outils autorisés sans demandes de permission quand le skill est actif - `model` : modèle à utiliser quand le skill est actif - `context` : mettre `fork` pour exécuter dans un contexte de sous-agent isolé - `agent` : type de sous-agent pour `context: fork` (défaut : `general-purpose`) - `hooks` : hooks de cycle de vie limités à ce skill ### Système de présentation Voir `.claude/rules/presentation.md` — le travail de présentation est délégué par présentation à `presentation-vibe-coding` (pour `presentation/vibe-coding-to-agentic-engineering/`) ou `presentation-claude-gemini` (pour `presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/`). ### Système de hooks Système multiplateforme de notifications sonores dans `.claude/hooks/` : - `scripts/hooks.py` : gestionnaire principal des événements hook Claude Code - `config/hooks-config.json` : configuration partagée de l'équipe - `config/hooks-config.local.json` : overrides personnels (ignorés par git) - `sounds/` : fichiers audio organisés par événement hook (générés via ElevenLabs TTS) Événements hook configurés dans `.claude/settings.json` : PreToolUse, PostToolUse, UserPromptSubmit, Notification, Stop, SubagentStart, SubagentStop, PreCompact, SessionStart, SessionEnd, Setup, PermissionRequest, TeammateIdle, TaskCompleted, ConfigChange. Traitement spécial : les commits git déclenchent le son `pretooluse-git-committing`. ## Patterns critiques ### Orchestration de sous-agents Les sous-agents **ne peuvent pas** invoquer d'autres sous-agents via des commandes bash. Utilise l'outil Agent (renommé depuis Task en v2.1.63 ; `Task(...)` fonctionne encore comme alias) : ``` Agent(subagent_type="agent-name", description="...", prompt="...", model="haiku") ``` Sois explicite sur l'usage des outils dans les définitions de sous-agents. Évite les termes vagues comme "launch", qui pourraient être interprétés comme des commandes bash. ### Structure de définition des sous-agents Les sous-agents dans `.claude/agents/*.md` utilisent un frontmatter YAML : - `name` : identifiant du sous-agent - `description` : quand invoquer (utilise "PROACTIVELY" pour l'auto-invocation) - `tools` : allowlist d'outils séparée par des virgules (hérite de tout si omis). Supporte la syntaxe `Agent(agent_type)` - `disallowedTools` : outils à refuser, retirés de la liste héritée ou spécifiée - `model` : alias de modèle : `haiku`, `sonnet`, `opus` ou `inherit` (défaut : `inherit`) - `permissionMode` : mode de permission (par ex. `"acceptEdits"`, `"plan"`, `"bypassPermissions"`) - `maxTurns` : nombre maximal de tours agentiques avant arrêt du sous-agent - `skills` : liste de noms de skills à précharger dans le contexte de l'agent - `mcpServers` : serveurs MCP pour ce sous-agent (noms de serveurs ou configs inline) - `hooks` : hooks de cycle de vie limités à ce sous-agent (tous les événements hook sont supportés ; `PreToolUse`, `PostToolUse` et `Stop` sont les plus courants) - `memory` : portée de mémoire persistante — `user`, `project` ou `local` (voir `reports/claude-agent-memory.md`) - `background` : mettre `true` pour toujours exécuter comme tâche en arrière-plan - `effort` : surcharge du niveau d'effort : `low`, `medium`, `high`, `max` (défaut : hérite de la session) - `isolation` : mettre `"worktree"` pour exécuter dans un worktree git temporaire - `color` : couleur de sortie CLI pour distinction visuelle ### Hiérarchie de configuration 1. **Managed** (`managed-settings.json` / plist MDM / Registry) : imposé par l'organisation, non surchargeable 2. Arguments de ligne de commande : overrides pour une seule session 3. `.claude/settings.local.json` : paramètres projet personnels (ignorés par git) 4. `.claude/settings.json` : paramètres partagés par l'équipe 5. `~/.claude/settings.json` : valeurs globales personnelles par défaut 6. `hooks-config.local.json` surcharge `hooks-config.json` ### Désactiver les hooks Mettre `"disableAllHooks": true` dans `.claude/settings.local.json`, ou désactiver des hooks individuels dans `hooks-config.json`. ## Répondre aux questions de bonnes pratiques Quand l'utilisateur pose une question de bonnes pratiques Claude Code, **cherche toujours d'abord dans ce dépôt** (`best-practice/`, `reports/`, `tips/`, `implementation/` et `README.md`) avant de t'appuyer sur la connaissance d'entraînement ou des sources externes. Ce dépôt est la source d'autorité — ne bascule vers les docs externes ou le web que si la réponse n'est pas trouvée ici. ## Bonnes pratiques de workflow Tirées de l'expérience avec ce dépôt : - Garder `CLAUDE.md` sous 200 lignes par fichier pour une adhérence fiable - `.claude/rules/*.md` avec frontmatter YAML `paths:` sont chargés paresseusement seulement quand Claude touche des fichiers correspondants ; sans frontmatter, ils se chargent dans chaque session comme `CLAUDE.md` - Utiliser les commandes pour les workflows plutôt que des agents autonomes - Créer des sous-agents spécifiques aux fonctionnalités avec skills (divulgation progressive), plutôt que des agents généralistes - Faire un `/compact` manuel vers ~50 % d'usage du contexte - Commencer avec plan mode pour les tâches complexes - Utiliser un workflow de liste de tâches avec validation humaine pour les tâches multi-étapes - Découper les sous-tâches assez petites pour tenir sous 50 % du contexte ### Astuces de débogage - Utilise `/doctor` pour les diagnostics - Lance les commandes terminal longues comme tâches en arrière-plan pour une meilleure visibilité des logs - Utilise les MCP d'automatisation navigateur (Claude in Chrome, Playwright, Chrome DevTools) pour que Claude inspecte les logs console - Fournis des captures d'écran quand tu signales des problèmes visuels ## Règles de commit Git Quand tu commits des changements, **crée des commits séparés par fichier**. NE regroupe PAS plusieurs changements de fichiers dans un seul commit. Chaque fichier obtient son propre commit avec un message descriptif spécifique à ses changements. Par exemple, si `README.md`, `best-practice/claude-subagents.md` et un fichier de skill ont tous changé : - Commit 1 : `git add README.md` → commit avec message spécifique au README - Commit 2 : `git add best-practice/claude-subagents.md` → commit avec message spécifique à la doc subagents - Commit 3 : `git add .claude/skills/weather-fetcher/SKILL.md` → commit avec message spécifique au skill Cela rend l'historique git plus propre et plus facile à relire, revert ou cherry-pick changement par changement. ## Documentation Voir `.claude/rules/markdown-docs.md` pour les standards de documentation. Docs clés : - `best-practice/claude-subagents.md` : frontmatter des sous-agents, hooks et agents du dépôt - `best-practice/claude-commands.md` : patterns de commandes slash et référence des commandes intégrées - `orchestration-workflow/orchestration-workflow.md` : diagramme de flux du système météo