| theme | default | |
|---|---|---|
| background | https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=1920 | |
| class | text-center | |
| highlighter | shiki | |
| lineNumbers | false | |
| info | ## Claude Code Présentation des fonctionnalités avancées de Claude Code | |
| drawings |
|
|
| transition | slide-left | |
| title | Claude Code - Guide Complet | |
| mdc | true |
Guide complet des fonctionnalités avancées
Configuration globale et par projet
Fichier de configuration utilisateur : ~/.claude/CLAUDE.md
Avantages :
- Instructions qui s'appliquent à tous vos projets
- Vos préférences personnelles de développement
- Standards de code que vous souhaitez toujours respecter
Exemples d'utilisation :
- Standards de nommage préférés
- Conventions de commits
- Règles générales de développement
- Préférences linguistiques
Exemple concret de configuration personnelle
# Master Rules
- **NEVER** add "Generated with Claude Code" to pull requests
- **NEVER** add Claude as co-authors to commits
- **NEVER** work directly on main - always create a feature branch
- Act and code with senior developer standards
## File Operations Strategy
**MCP JetBrains Priority**: Always attempt MCP JetBrains first
## Environment Setup
**PHP Execution**: Use Docker Compose for PHP commands
- `docker compose exec <container> php <command>`
## Git & Version Control
- **Create feature branches**: Never commit directly to main
- **Preserve commit history**: No amend, create new commits
## Code Modification Scope
**CRITICAL**: Only modify code related to the initial requestFichier de configuration projet : .claude/CLAUDE.md
Comment le créer ?
/initClaude génère automatiquement un fichier .claude/CLAUDE.md adapté à votre projet
Avantages :
- Instructions spécifiques au projet
- Partageable avec l'équipe via git
- Architecture et conventions du projet
- Contexte métier
Exemples : Structure et architecture, conventions spécifiques, règles métier
graph TD
A[Claude.md Global ~/.claude/] --> C[Configuration finale]
B[Claude.md Projet .claude/] --> C
B -.->|Prioritaire| C
style B fill:#16a34a,stroke:#22c55e,stroke-width:3px,color:#fff
style A fill:#2563eb,stroke:#3b82f6,stroke-width:3px,color:#fff
style C fill:#ea580c,stroke:#f97316,stroke-width:3px,color:#fff
La configuration projet a la priorité sur la configuration globale
Plan Mode & Accept Edit
Planification avant exécution
- Tâches complexes
- Todo list multi-étapes
- Validation d'approche
Raccourci : [SHIFT] + [TAB]
Raisonnement approfondi pour tâches complexes
Comment l'activer ? Appuyer sur [TAB] pour toggle ON/OFF
Ce qui se passe :
- Affiche le processus de réflexion en texte gris italique
- Raisonnement plus approfondi avant de répondre
- Intensité variable selon le prompt ("think", "think hard", "think longer")
Quand l'utiliser ? Planification architecturale complexe, debugging d'issues compliquées, évaluation de tradeoffs, compréhension de codebases
Contrôle de la conversation
Nettoyer et réduire la taille du contexte
Usage :
/compact
/compact [instructions de focus optionnelles]Ce que ça fait :
- Résume et condense l'historique de conversation
- Réduit l'utilisation de tokens
- Préserve le contexte important
- Permet de spécifier un focus pour la compaction
Quand l'utiliser : Conversation longue qui consomme trop de tokens
Reprendre une conversation précédente
Usage :
/resume [conversation-id]Cas d'usage :
- Continuer un travail interrompu
- Revenir sur un contexte précédent
- Reprendre après une pause
- Historique de sessions
Nettoyer la conversation
Usage :
/clearUtilité :
- Nouveau départ avec contexte vide
- Résoudre des problèmes de contexte
- Commencer une nouvelle tâche
- Libérer la mémoire
Revenir en arrière dans la conversation
Usage :
/rewind [n]Avantages :
- Annuler des actions non souhaitées
- Revenir à un état précédent
- Tester différentes approches
- Corriger une mauvaise direction
Exemple :
/rewind 3 # Revient 3 messages en arrièreUtilisation du symbole @
Spécifier précisément les fichiers à traiter
Syntaxe :
Modifie @src/components/Header.tsx pour ajouter...Avantages :
- Ciblage précis des fichiers
- Évite les ambiguïtés
- Autocomplete intelligent
- Support des patterns (glob)
Exemples :
@package.json
@src/**/*.ts
@*.config.jsModel Context Protocol
Fichier mcp.json :
{
"mcpServers": {
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp",
"headers": {"CONTEXT7_API_KEY": "xxx"}
},
"jetbrains": {
"type": "sse",
"url": "http://localhost:64342/sse",
"headers": {"IJ_MCP_SERVER_PROJECT_PATH": "/path"}
}
}
}Ajout CLI :
claude mcp add <name> <cmd> [params]
claude mcp add filesystem -s user -- \
npx -y @modelcontextprotocol/server-filesystem
claude mcp list / removeCommande /mcp : Liste les serveurs MCP disponibles
Liste de serveurs MCP recommandés
- Serena : Analyse sémantique de code et édition avancée (IDE-like)
- Figma : Accès aux designs Figma via API pour générer du code
- Chrome DevTools : Contrôle et inspection d'un navigateur Chrome en live
- Browser : Automatisation de navigateur cloud (screenshots, scraping)
💡 Tip : Créez vos propres MCP
Demandez à Claude d'analyser vos besoins et de créer des MCP personnalisés :
"Analyse nos conversations et identifie les MCP qui amélioreraient ta fluidité et précision"
Exemples créés : docker-compose-mcp, gotenberg-mcp, graphql-mcp
Créer vos propres commandes
Automatiser la review de Pull Requests
Fonctionnement :
- Claude récupère la PR depuis GitHub
- Analyse les commentaires de review
- Lit le code modifié
- Applique les corrections demandées
Usage :
/review-pr 123Créer vos propres commandes slash
Structure :
.claude/
└── commands/
└── review-pr.md
Métadonnées disponibles :
description: Description de la commandeallowed-tools: Outils autorisés sans confirmationargument-hint: Indice pour les arguments
💡 Tip : Laissez Claude créer vos commandes
"Crée une commande /review-pr qui lit les commentaires d'une PR GitHub et applique les corrections demandées"
Claude générera la commande complète avec toute la logique nécessaire !
Exemple complet - .claude/commands/review-pr.md :
---
description: "Read PR comments and update code"
allowed-tools: Bash(gh:*), Bash(git:*)
argument-hint: "[pr-number]"
---
# Analyze Pull Request Comments
Read all comments from the current PR
(or specified PR number), identify unresolved
feedback, and implement the requested changes.
## Context Commands
- Current branch: !`git branch --show-current`
- PR info: !`gh pr view $ARGUMENTS --json number`
## Instructions
### Step 1: Fetch PR Information
1. If no PR number in $ARGUMENTS, determine it:
```bash
gh pr list --head $(git branch --show-current)
```
2. Otherwise use provided numberAgents spécialisés pour des tâches complexes
Déléguer à des agents spécialisés
Les sub-agents n'ont PAS accès au contexte global de la conversation principale.
Le thread principal agit comme orchestrateur, mais chaque agent est complètement isolé.
Qu'est-ce qu'un sub-agent ?
- Agent Claude autonome avec une spécialisation
- Exécution en parallèle possible (3-5 agents simultanés)
- Contexte et objectif focalisés
- Rapport de résultats structuré à l'orchestrateur
Quand utiliser un sub-agent ?
- Tâches complexes nécessitant une expertise spécifique
- Analyse de multiples fichiers en parallèle
- Recherche approfondie dans le codebase
- Génération de documentation ou tests
Compétences spécialisées et réutilisables
Problèmes :
- Fichier énorme (1500+ lignes)
- Claude charge tout à chaque conversation
- Consomme beaucoup de tokens inutilement
- Difficile à maintenir
- Tout est mélangé
Exemple : Guidelines frontend chargées même quand vous codez du backend
Il nous faut une solution intelligente et contextuelle
Qu'est-ce qu'un skill ?
- Instructions chargées uniquement quand nécessaires
- Contexte spécialisé (frontend, backend, tests, etc.)
- Réutilisable entre projets
- Activation automatique (via hooks)
Comparaison avec CLAUDE.md :
CLAUDE.md classique
- 1500 lignes chargées
- Tout le temps
- Tokens gaspillés : 40-60%
Avec Skills
- 300-400 lignes chargées
- Uniquement si pertinent
- Économie : 40-60% de tokens
Exemple concret :
Travail sur contrôleur backend :
✅ Skill "backend-dev-guidelines" (300 lignes)
→ Se charge automatiquement
❌ Frontend guidelines (1200 lignes)
→ Ne se charge PAS
Tokens consommés : 300 au lieu de 1500
Travail sur composant React :
✅ Skill "frontend-dev-guidelines" (400 lignes)
→ Se charge automatiquement
❌ Backend guidelines (1100 lignes)
→ Ne se charge PAS
Tokens consommés : 400 au lieu de 1500
Économie de tokens : 40-60% selon le contexte
Structure avec ressources :
.claude/skills/
└── frontend-dev-guidelines/
├── SKILL.md (398 lignes - toujours chargé)
└── resources/
├── react-hooks.md
├── tanstack-query.md
└── mui-patterns.md
SKILL.md : Résumé et règles critiques
resources/ : Détails techniques chargés uniquement si nécessaire
Exemple SKILL.md :
# Frontend Development Guidelines
## React Best Practices
- Utiliser hooks personnalisés pour logique réutilisable
- Préférer composition over inheritance
- [Détails complets](./resources/react-hooks.md)
## TanStack Query
- Toutes les requêtes API via TanStack Query
- [Guide complet](./resources/tanstack-query.md)
## Material-UI
- Design tokens via theme
- [Patterns MUI](./resources/mui-patterns.md)
## Règles critiques
- TypeScript strict mode obligatoire
- Tests unitaires pour composants critiquesLe problème : Skills inutiles si Claude ne pense pas à les utiliser
La solution : Hooks d'auto-activation
Comment ça marche ?
- Vous écrivez : "Crée un nouveau contrôleur pour gérer les notifications"
- Hook TypeScript analyse le prompt AVANT que Claude le lise
- Hook détecte le mot-clé "contrôleur"
- Injecte automatiquement le skill
backend-dev-guidelines - Claude reçoit le prompt + le skill actif
- Claude crée le contrôleur selon VOS patterns
Résultat : Code cohérent automatiquement, sans rappels manuels
Continuons avec la section Hooks pour voir comment configurer ce système...
Automatisation et contrôle qualité
Définition :
Un hook est un script TypeScript qui s'exécute automatiquement en réponse à des événements Claude Code.
Événements disponibles :
user-prompt-submit: Avant que Claude lise votre promptassistant-response: Après chaque réponse de Claudefile-edit: Après modification de fichiertool-call: Avant/après appel d'outil
Cas d'usage :
- Auto-activation de skills
- Vérification automatique du build
- Formatage de code
- Tracking des fichiers modifiés
- Rappels de bonnes pratiques
Hook = Automatisation qui travaille en arrière-plan
Claude n'a pas besoin d'y penser, c'est automatique
File Edit Tracker
Trace tous les fichiers modifiés pendant la session
Utilité : Savoir exactement ce qui a changé, facilite les commits
Build Checker
Vérifie les erreurs TypeScript après chaque réponse
Utilité : Zéro erreur laissée derrière
Error Handling Reminder
Rappel gentil pour la gestion d'erreurs
Utilité : Code robuste et sans oubli
Skill Auto-Activator
Analyse prompt et injecte skills pertinents
Utilité : Skills toujours actifs au bon moment
Hooks consomment des tokens. Utilisez-les judicieusement sur les projets importants.
Workflow automatisé : #NoMessLeftBehind
graph LR
A[Vous écrivez un prompt] --> B[Hook: Skill Auto-Activator]
B --> C[Claude reçoit prompt + skill]
C --> D[Claude modifie les fichiers]
D --> E[Hook: File Edit Tracker]
E --> F[Hook: Build Checker]
F --> G{Erreurs ?}
G -->|Oui| H[Hook: Error Reminder]
G -->|Non| I[Succès]
H --> J[Claude corrige automatiquement]
J --> F
style A fill:#3b82f6,stroke:#2563eb,stroke-width:2px,color:#fff
style C fill:#8b5cf6,stroke:#7c3aed,stroke-width:2px,color:#fff
style I fill:#16a34a,stroke:#22c55e,stroke-width:2px,color:#fff
style H fill:#ea580c,stroke:#f97316,stroke-width:2px,color:#fff
Résultat : Code cohérent, zéro erreur, sans intervention manuelle
Fichier : .claude/hooks.json
{
"hooks": [
{
"name": "build-checker",
"event": "assistant-response",
"script": "./hooks/build-checker.ts"
},
{
"name": "skill-activator",
"event": "user-prompt-submit",
"script": "./hooks/skill-activator.ts",
"config": {"rules": "./skill-rules.json"}
}
]
}Exemple hook TypeScript :
// hooks/build-checker.ts
export default async function buildChecker(context) {
const { files } = context;
const tsFiles = files.filter(f => f.endsWith('.ts'));
if (tsFiles.length === 0) return;
const result = await exec('pnpm tsc --noEmit');
if (result.exitCode !== 0) {
return {
message: "Build errors detected.",
errors: result.stderr
};
}
}💡 Tip : Laissez Claude créer vos hooks
"Crée un hook qui vérifie le build après chaque modification TypeScript"
Prêt à explorer Claude Code ?


