Aller au contenu principal
Retour au blog

Maîtriser CLAUDE.md — Partie 3 : Commandes custom et agents

Flavien Métivier4 novembre 20257 min

Après avoir vu la structure du CLAUDE.md et la hiérarchie multi-niveaux, on passe à la puissance réelle de Claude Code : les commandes custom et le système de Skills. C'est ici que tu transformes Claude Code d'un simple assistant en un outil adapté à ton workflow.

Les slash commands : automatiser les workflows répétitifs

Les commandes personnalisées sont des fichiers Markdown stockés dans .claude/commands/. Chaque fichier décrit un workflow que tu peux invoquer avec /nom-commande dans Claude Code.

.claude/
└── commands/
    ├── review.md          # /review — Code review automatique
    ├── test.md            # /test — Lancer et analyser les tests
    ├── deploy.md          # /deploy — Workflow de déploiement
    └── pr.md              # /pr — Créer une PR avec description

Exemple : commande /review

Voici une commande de review de code complète. Elle analyse les fichiers modifiés, vérifie les conventions et produit un rapport structuré :

---
description: Review de code avec analyse complète
---

# Code Review

## Instructions

1. Identifie les fichiers modifiés avec `git diff --name-only`
2. Pour chaque fichier PHP modifié :
   - Vérifie declare(strict_types=1)
   - Vérifie les types de retour explicites
   - Détecte les violations d'architecture (Domain ne dépend pas d'Infrastructure)
   - Recherche les N+1 queries potentiels
3. Produis un rapport avec :
   - Score global (A-F)
   - Liste des problèmes par sévérité
   - Suggestions d'amélioration avec code

Exemple : commande /test

---
description: Lance les tests et analyse les résultats
---

# Test Runner

## Instructions

1. Détecte le framework de test (PHPUnit via composer.json)
2. Lance les tests : `vendor/bin/phpunit --coverage-text`
3. Analyse les résultats :
   - Nombre de tests passés/échoués
   - Coverage globale
   - Tests les plus lents (> 1s)
4. Si des tests échouent :
   - Analyse le message d'erreur
   - Propose un fix
5. Si la coverage < 80% :
   - Identifie les fichiers non couverts
   - Propose des tests à écrire

Les Skills : l'évolution lazy-loaded

Depuis la version 2.1.3, les Skills remplacent et étendent les commandes. La différence clé : un Skill n'est chargé en mémoire que lorsqu'il est invoqué. Au démarrage, Claude Code ne charge que le nom et la description (~35 tokens par Skill), pas le contenu complet.

# Comparaison de consommation tokens

# Tout dans CLAUDE.md :
# Conventions PHP    → 800 tokens (chargés à chaque requête)
# Standards Tests    → 600 tokens
# Audit Sécurité     → 500 tokens
# Total startup     → 1 900 tokens

# Avec Skills :
# Skill php          → 35 tokens (nom + description)
# Skill testing      → 42 tokens
# Skill security     → 38 tokens
# Total startup     → 115 tokens
# Économie          → 94% de tokens au démarrage

Structure d'un Skill

.claude/skills/
└── php-conventions/
    ├── skill.md              # Instructions principales
    ├── resources/            # Fichiers de référence
   └── template.php
    └── scripts/              # Scripts exécutables
        └── validate.sh

Votre équipe utilise Claude Code ?

Découvrir le workshop

Le fichier skill.md supporte un frontmatter YAML pour configurer le comportement :

---
name: php-conventions
description: Applique les conventions PHP du projet
model: haiku
allowed-tools:
  - Read
  - Grep
  - Bash
---

# PHP Conventions

## Vérifications
1. declare(strict_types=1) dans chaque fichier
2. Classes final par défaut
3. Value Objects readonly
4. Pas de mixed/any dans les signatures
5. Getters typés explicitement

Le Forked Context : garder un contexte propre

Les Skills qui chargent beaucoup de fichiers (scan, audit, analyse) peuvent polluer ton contexte principal. Le frontmatter context: fork résout ce problème :

---
name: security-audit
description: Audit de sécurité complet
context: fork
---

# Security Audit
Ce skill s'exécute dans un contexte isolé.
Le contexte principal reste propre — pas besoin de /clear après.

Subagents : diviser pour mieux régner

Pour les projets multi-modules, les subagents permettent de paralléliser le travail. Chaque subagent a son propre contexte ciblé, ce qui réduit la consommation de tokens :

# Terminal 1 — Agent principal
claude
"Voici le plan : subagent 1 sur le backend, 2 sur les tests"

# Terminal 2 — Subagent backend (contexte ciblé)
cd src/
claude
"Refactore les services vers le pattern CQRS"

# Terminal 3 — Subagent tests
cd tests/
claude
"Ajoute les tests unitaires manquants"

# Économie : 68% de tokens vs un agent unique sur tout le projet

Organiser tes commandes pour l'équipe

Pour un projet en équipe, structure tes commandes par catégorie. Elles sont committées dans Git et partagées automatiquement :

.claude/
├── commands/
   ├── development/        # /test, /lint, /format
   ├── git/                # /pr, /commit, /sync
   └── deployment/         # /deploy, /rollback
└── skills/
    ├── php-conventions/    # Lazy-loaded
    ├── testing-standards/
    └── security-audit/

Dans le dernier article de cette série, on abordera les hooks et l'automatisation : PostToolUse, quality gates automatiques et l'intégration CI/CD. Pour maîtriser l'ensemble de ces techniques, notre programme Claude Code Mastery te guide pas à pas avec des exemples tirés de projets Symfony réels.

Cet article vous a plu ? Partagez-le !

Votre équipe utilise Claude Code ?

Workshop intensif : votre équipe opérationnelle en 1 jour.