# Le Skill ## Définition Un skill est un ensemble d'instructions empaquetées — et, en option, des scripts ou ressources qui l'accompagnent — qu'un assistant IA charge dans son contexte de travail pour apprendre à accomplir une tâche précise. C'est fondamentalement un mécanisme de documentation et d'empaquetage de savoir-faire, pas une connexion active : l'assistant lit le skill, puis agit à partir de ce qu'il vient de lire, ce qui peut inclure l'instruction d'exécuter un script fourni avec lui. *(Schéma : un document au centre, une flèche vers « contexte de l'assistant », puis une flèche vers « action ».)* ## Utilité Le skill rend une procédure réutilisable d'une session à l'autre sans avoir à la réexpliquer à chaque fois : une checklist, un flux de travail, une connaissance de domaine (« comment relire un correctif de sécurité », « comment rédiger un changelog »). Il est aussi auto-descriptif — une courte description permet à l'assistant de reconnaître, sans intervention humaine, le moment où ce skill devient pertinent. ## Contre-exemple Utiliser un skill pour exposer une source de données vivante et changeant en continu (un cours de bourse en temps réel, par exemple) est un mauvais choix d'architecture : un skill est chargé une fois par invocation dans un contexte figé, il ne peut ni pousser de mise à jour ni maintenir une connexion persistante. C'est le rôle d'un outil actif, pas d'un skill. Autre contre-exemple, celui-ci de sécurité : un skill qui demande à l'assistant d'exécuter aveuglément tout ce qu'il trouve dans un fichier ou une page externe, comme s'il s'agissait d'instructions légitimes, est un schéma classique d'injection de prompt. Les instructions empaquetées doivent toujours traiter un contenu externe comme une donnée inerte, jamais comme une nouvelle chaîne d'instructions à suivre. ## Sécurité Le contenu d'un skill est chargé directement dans le contexte du modèle et traité avec la même confiance que le reste de la conversation — un skill non relu, ou provenant d'un tiers, est donc un vecteur direct d'injection de code ou d'instructions, exactement équivalent à exécuter le script de quelqu'un d'autre avec ses propres droits. Bonne pratique : ne charger que des skills provenant de sources fiables et relues, et lire tout script qu'un skill embarque avant de l'exécuter — exactement comme on relit un correctif avant de le fusionner. ## Combinaison possible Un skill empaquette très souvent un wrapper comme implémentation concrète : le fichier de description explique le « pourquoi » et le « quand », et un script embarqué — le wrapper — est ce qui est réellement exécuté. Un skill peut aussi se contenter de documenter comment appeler les outils exposés par un serveur MCP précis (« pour faire X, utiliser l'outil Y exposé par ce serveur »), sans code propre du tout. Voir les sujets « Le wrapper » et « Le protocole MCP » de ce même cours pour le détail de chacun. ## Langage de programmation conseillé et pourquoi N'importe quel langage convient pour le corps du skill lui-même, puisque c'est fondamentalement de la documentation (texte structuré, souvent avec un en-tête de métadonnées). S'il embarque un script exécutable en revanche, un langage à bibliothèque standard stable et à faible nombre de dépendances externes — Python en se limitant à sa bibliothèque standard, ou un shell POSIX pour quelque chose de très court — garde une portabilité élevée et évite d'introduire une chaîne de dépendances fragile que l'assistant devrait, lui aussi, accorder sa confiance sans pouvoir la vérifier entièrement.