Skills : Automatisation Invoquée par le Modèle

Jour 10 - Capacités que Claude active automatiquement

Skills : Automatisation Invoquée par le Modèle
Available in English

Hier, nous avons vu les subagents que vous invoquez explicitement avec @. Aujourd'hui, nous découvrons les Skills : des capacités que Claude active automatiquement selon le contexte de votre requête.

La Différence Clé : Model-Invoked

AspectCommandes SlashSubagentsSkills
InvocationExplicite (/command)Explicite (@agent)Automatique
DéclencheurUtilisateurUtilisateurClaude
ContextePromptContexte séparéEnrichissement

Les Skills sont model-invoked : Claude décide quand les utiliser en fonction de votre requête et de la description du skill.

Comment Fonctionnent les Skills

Le Processus

Votre requête
    ↓
Claude analyse le contexte
    ↓
Claude lit les descriptions des skills disponibles
    ↓
Si un skill correspond → Claude l'active automatiquement
    ↓
Le skill enrichit les instructions de Claude

Exemple Concret

Vous avez un skill pdf-expert avec la description :

"Extrait le texte et les tableaux des fichiers PDF. Utiliser quand l'utilisateur travaille avec des PDFs."

> Extrais les données du fichier rapport.pdf

[Claude détecte "PDF" + "extrais" → active automatiquement pdf-expert]

Sources des Skills

1. Skills Personnels

~/.claude/skills/
├── pdf-expert/
│   └── SKILL.md
└── api-tester/
    └── SKILL.md

Disponibles dans tous vos projets.

2. Skills Projet

.claude/skills/
├── deployment/
│   └── SKILL.md
└── migration/
    └── SKILL.md

Partagés avec l'équipe via Git.

3. Skills de Plugins

Installés via les plugins Claude Code (voir Jour 11).

Anatomie d'un Skill

Structure Minimale

my-skill/
└── SKILL.md

Structure Complète

my-skill/
├── SKILL.md           # Instructions (requis)
├── reference.md       # Documentation additionnelle
├── scripts/
│   └── helper.py      # Scripts utilitaires
└── templates/
    └── template.txt   # Templates à utiliser

Le Fichier SKILL.md

Frontmatter Requis

---
name: skill-name
description: Description claire de quand utiliser ce skill
---

Champs Optionnels

---
name: skill-name
description: Description claire de quand utiliser ce skill
allowed-tools: Read, Grep, Glob    # Restreindre les outils
---

Règles de Nommage

ChampRègles
nameLettres minuscules, chiffres, tirets. Max 64 caractères
descriptionMax 1024 caractères. Doit expliquer quand utiliser

Exemples de Skills

Skill : Expert PDF

---
name: pdf-expert
description: Extrait le texte, les tableaux et les métadonnées des fichiers PDF.
             Utiliser quand l'utilisateur demande d'analyser, lire ou extraire
             des données de fichiers PDF.
allowed-tools: Read, Bash
---

# Expert PDF

## Capacités
- Extraction de texte avec pdftotext
- Extraction de tableaux avec tabula-py
- Lecture des métadonnées avec pdfinfo

## Instructions
1. Vérifier que le fichier existe
2. Utiliser pdftotext pour le texte brut
3. Utiliser tabula si des tableaux sont détectés
4. Formater le résultat de manière lisible

## Commandes Utiles
```bash
# Extraire le texte
pdftotext input.pdf -

# Infos PDF
pdfinfo input.pdf

### Skill : Testeur d'API

```markdown
---
name: api-tester
description: Teste et débogue les APIs REST. Utiliser quand l'utilisateur veut
             tester des endpoints, vérifier des réponses API, ou déboguer des
             problèmes de requêtes HTTP.
allowed-tools: Read, Bash
---

# Testeur d'API

## Capacités
- Test d'endpoints avec curl
- Validation des réponses JSON
- Mesure des temps de réponse
- Test d'authentification

## Méthodologie
1. Identifier l'endpoint à tester
2. Construire la requête curl appropriée
3. Analyser la réponse (status, body, headers)
4. Proposer des correctifs si erreur

## Templates Curl

### GET avec auth
```bash
curl -X GET "URL" \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json"

POST avec body

curl -X POST "URL" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'

### Skill : Helper de Migration

```markdown
---
name: migration-helper
description: Aide à créer et gérer les migrations de base de données.
             Utiliser quand l'utilisateur parle de migrations, schémas,
             ou changements de structure de base de données.
allowed-tools: Read, Write, Bash(npx prisma:*)
---

# Helper de Migration

## Framework Supporté
Prisma (détecté via prisma/schema.prisma)

## Processus de Migration
1. Analyser le changement demandé
2. Proposer les modifications de schéma
3. Générer la migration avec `prisma migrate dev`
4. Vérifier que la migration est correcte

## Bonnes Pratiques
- Toujours nommer les migrations de façon descriptive
- Vérifier les données existantes avant migration destructive
- Tester sur une copie de la BDD locale d'abord

## Commandes Prisma
```bash
# Créer une migration
npx prisma migrate dev --name description

# Voir le statut
npx prisma migrate status

# Reset (attention !)
npx prisma migrate reset

### Skill : Scanner de Sécurité

```markdown
---
name: security-scanner
description: Scanne le code pour les vulnérabilités de sécurité.
             Utiliser quand l'utilisateur demande un audit de sécurité,
             cherche des failles, ou veut sécuriser son code.
allowed-tools: Read, Grep, Glob
---

# Scanner de Sécurité

## Vulnérabilités Recherchées

### Injection
- Injection SQL
- Injection NoSQL
- Injection de commandes
- Injection LDAP

### XSS
- XSS Réfléchi
- XSS Stocké
- XSS basé sur le DOM

### Auth/Session
- Authentification cassée
- Fixation de session
- Référence directe non sécurisée

### Autres
- Exposition de données sensibles
- Mauvaise configuration de sécurité
- Désérialisation non sécurisée

## Patterns à Rechercher

```javascript
// Injection SQL
`SELECT * FROM users WHERE id = ${userId}`  // ❌ Dangereux
`SELECT * FROM users WHERE id = ?`          // ✅ Paramétré

// XSS
element.innerHTML = userInput;              // ❌ Dangereux
element.textContent = userInput;            // ✅ Sûr

// Injection de commande
exec(`ls ${userPath}`);                     // ❌ Dangereux
execFile('ls', [userPath]);                 // ✅ Plus sûr

Format de Rapport

Pour chaque vulnérabilité trouvée :

  • Fichier et ligne
  • Type de vulnérabilité
  • Sévérité (Critique/Haute/Moyenne/Faible)
  • Code vulnérable
  • Correctif proposé

## Bonnes Pratiques pour les Descriptions

### ✅ Bonne Description

```yaml
description: Extrait le texte et les tableaux des fichiers PDF. Utiliser quand
             l'utilisateur demande d'analyser, lire, parser, ou extraire
             des données de fichiers PDF ou documents.

Pourquoi c'est bon :

  • Explique ce que fait le skill
  • Liste les déclencheurs (analyser, lire, parser, extraire)
  • Mentionne les mots-clés (PDF, documents)

❌ Mauvaise Description

description: Aide avec les documents

Pourquoi c'est mauvais :

  • Trop vague
  • Pas de déclencheurs clairs
  • Claude ne saura pas quand l'activer

Restreindre les Outils

Pour un skill en lecture seule :

---
name: code-analyzer
description: ...
allowed-tools: Read, Grep, Glob
---

Claude ne pourra pas modifier de fichiers quand ce skill est actif.

Fichiers de Support

Fichiers de Référence

my-skill/
├── SKILL.md
└── reference.md    # Documentation additionnelle

Dans SKILL.md, référencez avec :

Voir @reference.md pour plus de détails.

Scripts

my-skill/
├── SKILL.md
└── scripts/
    └── analyze.py
## Utiliser le script d'analyse
```bash
python scripts/analyze.py $FILE

## Tester l'Activation Automatique

### Test Simple

1. Créez un skill avec une description claire
2. Faites une requête qui correspond
3. Vérifiez si Claude utilise les instructions du skill

### Debug

Si le skill ne s'active pas :
- Vérifiez que la description est assez spécifique
- Testez avec des mots-clés explicites
- Vérifiez la syntaxe du SKILL.md

## Ce qui Arrive Demain

Dans le **Jour 11**, nous verrons les **Plugins et le Marketplace** : comment installer, créer et partager des packs complets de commandes, agents, skills et hooks.

---

*Cet article fait partie de la série "Maîtriser Claude Code en 20 jours". [Jour 9 : Subagents](/fr/claude-code-subagents-fr/)*