writing-skills

À utiliser lors de la création de nouvelles compétences, de la modification de compétences existantes ou de la vérification du fonctionnement des compétences avant leur déploiement.

Qu'est-ce que writing-skills ?

Cette compétence adapte le développement piloté par les tests (TDD) à la documentation des compétences pour agents IA. Elle définit un cycle ROUGE-VERT-REFACTOR où vous rédigez d'abord des scénarios de test (situations de pression avec sous-agents), observez l'échec de l'agent sans la compétence (comportement de base), rédigez la compétence (documentation), vérifiez que les tests passent (conformité de l'agent), puis refactorez pour éliminer les failles. Elle est conçue pour les environnements d'exécution d'agents comme Claude Code, Codex, Copilot CLI et Gemini CLI, en insistant sur l'importance de descriptions précises, d'une structure de fichier SKILL.md bien définie, et d'une optimisation de la découvrabilité (SDO). La compétence souligne qu'il est interdit d'écrire une compétence sans avoir au préalable un test qui échoue, et elle fournit des conseils détaillés sur la rédaction de descriptions, les types de compétences, et l'organisation des fichiers.

Compatible avec✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/obra/superpowers/tree/main/skills/writing-skills

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Rédiger des Compétences

Aperçu

Rédiger des compétences, c'est le Développement Piloté par les Tests appliqué à la documentation des processus.

Les compétences personnelles se trouvent dans le répertoire des compétences de votre environnement d'exécution (~/.claude/skills/ sur Claude Code) — consultez codex-tools.md ou gemini-tools.md pour le chemin sur ces environnements. Codex, Copilot CLI et Gemini CLI reconnaissent également ~/.agents/skills/ comme un alias multi-environnement.

Vous rédigez des cas de test (scénarios de pression avec sous-agents), vous les regardez échouer (comportement de base), vous rédigez la compétence (documentation), vous regardez les tests réussir (les agents se conforment), et vous refactorez (pour combler les failles).

Principe fondamental : Si vous n'avez pas regardé un agent échouer sans la compétence, vous ne savez pas si la compétence enseigne la bonne chose.

CONNAISSANCES REQUISES : Vous DEVEZ comprendre superpowers:test-driven-development avant d'utiliser cette compétence. Cette compétence définit le cycle fondamental ROUGE-VERT-REFACTOR. Celle-ci adapte le TDD à la documentation.

Guide officiel : Pour les bonnes pratiques officielles de création de compétences d'Anthropic, consultez anthropic-best-practices.md. Ce document fournit des modèles et directives supplémentaires qui complètent l'approche axée sur le TDD de cette compétence.

Qu'est-ce qu'une Compétence ?

Une compétence est un guide de référence pour des techniques, modèles ou outils éprouvés. Les compétences aident les futurs agents à trouver et appliquer des approches efficaces.

Les compétences sont : Des techniques réutilisables, des modèles, des outils, des guides de référence

Les compétences ne sont PAS : Des récits sur la façon dont vous avez résolu un problème une fois.

Correspondance TDD pour les Compétences

Concept TDDCréation de compétence
Cas de testScénario de pression avec sous-agent
Code de productionDocument de compétence (SKILL.md)
Le test échoue (ROUGE)L'agent enfreint la règle sans la compétence (base)
Le test réussit (VERT)L'agent se conforme avec la compétence présente
RefactorCombler les failles tout en maintenant la conformité
Écrire le test d'abordExécuter le scénario de base AVANT d'écrire la compétence
Le regarder échouerDocumenter les justifications exactes de l'agent
Code minimalRédiger la compétence en ciblant ces violations spécifiques
Le regarder réussirVérifier que l'agent se conforme maintenant
Cycle de refactorTrouver de nouvelles justifications → corriger → revérifier

L'ensemble du processus de création de compétences suit le cycle ROUGE-VERT-REFACTOR.

Quand Créer une Compétence

Créer quand :

  • La technique n'était pas intuitivement évidente pour vous
  • Vous y feriez référence à nouveau dans différents projets
  • Le modèle s'applique largement (pas spécifique à un projet)
  • D'autres en bénéficieraient

Ne pas créer pour :

  • Des solutions ponctuelles
  • Des pratiques standard bien documentées ailleurs
  • Des conventions spécifiques à un projet (mettez-les dans votre fichier d'instructions)
  • Des contraintes mécaniques (si c'est applicable avec regex/validation, automatisez-le — réservez la documentation pour les jugements)

Types de Compétences

Technique

Méthode concrète avec des étapes à suivre (attente-conditionnelle, traçage-cause-racine)

Modèle

Façon de penser les problèmes (aplatir-avec-drapeaux, invariants-de-test)

Référence

Documentation d'API, guides de syntaxe, documentation d'outils (documents Office)

Structure des Répertoires

skills/
  skill-name/
    SKILL.md              # Référence principale (obligatoire)
    supporting-file.*      # Uniquement si nécessaire

Espace de noms plat - toutes les compétences dans un seul espace de noms consultable

Fichiers séparés pour :

  1. Références lourdes (100+ lignes) - Documentation d'API, syntaxe complète
  2. Outils réutilisables - Scripts, utilitaires, modèles

Garder en ligne :

  • Principes et concepts
  • Modèles de code (< 50 lignes)
  • Tout le reste

Structure de SKILL.md

Frontmatter (YAML) :

  • Deux champs obligatoires : name et description (voir agentskills.io/specification pour tous les champs pris en charge)
  • Maximum 1024 caractères au total
  • name : Utilisez uniquement des lettres, des chiffres et des tirets (pas de parenthèses, caractères spéciaux)
  • description : Troisième personne, décrit UNIQUEMENT quand utiliser (PAS ce qu'elle fait)
    • Commencez par "Utiliser quand..." pour vous concentrer sur les conditions de déclenchement
    • Incluez des symptômes, situations et contextes spécifiques
    • Ne RÉSUMEZ JAMAIS le processus ou le flux de travail de la compétence (voir la section SDO pour savoir pourquoi)
    • Essayez de rester sous les 500 caractères si possible
---
name: Nom-De-La-Competence-Avec-Tirets
description: Utiliser quand [conditions et symptômes de déclenchement spécifiques]
---

# Nom de la Compétence

## Aperçu
Qu'est-ce que c'est ? Principe fondamental en 1-2 phrases.

## Quand l'Utiliser
[Petit organigramme en ligne SI la décision n'est pas évidente]

Liste à puces avec SYMPTÔMES et cas d'utilisation
Quand NE PAS l'utiliser

## Modèle Principal (pour techniques/modèles)
Comparaison de code avant/après

## Référence Rapide
Tableau ou puces pour parcourir les opérations courantes

## Implémentation
Code en ligne pour les modèles simples
Lien vers un fichier pour les références lourdes ou outils réutilisables

## Erreurs Fréquentes
Ce qui va mal + correctifs

## Impact dans le Monde Réel (optionnel)
Résultats concrets

Optimisation de la Découvrabilité des Compétences (SDO)

Crucial pour la découverte : Les futurs agents ont besoin de TROUVER votre compétence

1. Champ de Description Riche

Objectif : Votre agent lit la description pour décider quelles compétences charger pour une tâche donnée. Faites en sorte qu'il réponde à la question : "Dois-je lire cette compétence maintenant ?"

Format : Commencez par "Utiliser quand..." pour vous concentrer sur les conditions de déclenchement

CRITIQUE : Description = Quand Utiliser, PAS Ce Que Fait la Compétence

La description doit UNIQUEMENT décrire les conditions de déclenchement. Ne résumez PAS le processus ou le flux de travail de la compétence dans la description.

Pourquoi c'est important : Les tests ont révélé que lorsqu'une description résume le flux de travail de la compétence, un agent peut suivre la description au lieu de lire le contenu complet de la compétence. Une description disant "revue de code entre les tâches" a amené un agent à effectuer UNE seule revue, même si l'organigramme de la compétence montrait clairement DEUX revues (conformité aux spécifications puis qualité du code).

Lorsque la description a été changée en simplement "Utiliser quand on exécute des plans d'implémentation avec des tâches indépendantes" (sans résumé du flux de travail), l'agent a correctement lu l'organigramme et suivi le processus de revue en deux étapes.

Le piège : Les descriptions qui résument le flux de travail créent un raccourci que les agents emprunteront. Le corps de la compétence devient une documentation que les agents ignorent.

# ❌ MAUVAIS : Résume le flux de travail - les agents peuvent suivre ceci au lieu de lire la compétence
description: Utiliser quand on exécute des plans - dispatche un sous-agent par tâche avec revue de code entre les tâches

# ❌ MAUVAIS : Trop de détails de processus
description: Utiliser pour le TDD - écrire le test d'abord, le regarder échouer, écrire le code minimal, refactorer

# ✅ BON : Juste les conditions de déclenchement, pas de résumé du flux de travail
description: Utiliser quand on exécute des plans d'implémentation avec des tâches indépendantes dans la session en cours

# ✅ BON : Conditions de déclenchement uniquement
description: Utiliser quand on implémente une fonctionnalité ou un correctif, avant d'écrire le code d'implémentation

Contenu :

  • Utilisez des déclencheurs, symptômes et situations concrets qui signalent que cette compétence s'applique
  • Décrivez le problème (conditions de course, comportement incohérent) pas les symptômes spécifiques au langage (setTimeout, sleep)
  • Gardez les déclencheurs indépendants de la technologie, sauf si la compétence elle-même est spécifique à une technologie
  • Si la compétence est spécifique à une technologie, rendez-le explicite dans le déclencheur
  • Écrivez à la troisième personne (injecté dans le prompt système)
  • Ne résumez JAMAIS le processus ou le flux de travail de la compétence
# ❌ MAUVAIS : Trop abstrait, vague, n'inclut pas quand utiliser
description: Pour les tests asynchrones

# ❌ MAUVAIS : Première personne
description: Je peux vous aider avec les tests asynchrones quand ils sont instables

# ❌ MAUVAIS : Mentionne une technologie mais la compétence n'est pas spécifique à celle-ci
description: Utiliser quand les tests utilisent setTimeout/sleep et sont instables

# ✅ BON : Commence par "Utiliser quand", décrit le problème, pas de flux de travail
description: Utiliser quand les tests ont des conditions de course, des dépendances temporelles, ou réussissent/échouent de manière incohérente

# ✅ BON : Compétence spécifique à une technologie avec déclencheur explicite
description: Utiliser quand on utilise React Router et qu'on gère les redirections d'authentification

2. Couverture de Mots-Clés

Utilisez des mots qu'un agent rechercherait :

  • Messages d'erreur : "Hook expiré", "ENOTEMPTY", "condition de course"
  • Symptômes : "instable", "bloqué", "zombie", "pollution"
  • Synonymes : "expiration/blocage/gel", "nettoyage/teardown/afterEach"
  • Outils : Commandes réelles, noms de bibliothèques, types de fichiers

3. Nommage Descriptif

Utilisez la voix active, verbe en premier :

  • ✅ creating-skills pas skill-creation
  • ✅ condition-based-waiting pas async-test-helpers

4. Efficacité des Jetons (Cruciale)

Problème : Les compétences de prise en main et fréquemment référencées se chargent dans CHAQUE conversation. Chaque jeton compte.

Nombres de mots cibles :

  • Flux de travail de prise en main : <150 mots chacun
  • Compétences fréquemment chargées : <200 mots au total
  • Autres compétences : <500 mots (soyez concis)

Techniques :

Déplacer les détails vers l'aide de l'outil :

# ❌ MAUVAIS : Documenter tous les drapeaux dans SKILL.md
search-conversations prend en charge --text, --both, --after DATE, --before DATE, --limit N

# ✅ BON : Référencer --help
search-conversations prend en charge plusieurs modes et filtres. Exécutez --help pour les détails.

Utiliser des références croisées :

# ❌ MAUVAIS : Répéter les détails du flux de travail
Lors de la recherche, dispatcher un sous-agent avec un modèle...
[20 lignes d'instructions répétées]

# ✅ BON : Référencer une autre compétence
Utilisez toujours des sous-agents (économie de 50 à 100 fois le contexte). OBLIGATOIRE : Utilisez [nom-autre-compétence] pour le flux de travail.

Compresser les exemples :

# ❌ MAUVAIS : Exemple verbeux (42 mots)
votre partenaire humain : "Comment avons-nous géré les erreurs d'authentification dans React Router avant ?"
Vous : Je vais rechercher les conversations passées pour les modèles d'authentification React Router.
[Dispatcher un sous-agent avec la requête de recherche : "gestion erreurs authentification React Router 401"]

# ✅ BON : Exemple minimal (20 mots)
Partenaire : "Comment avons-nous géré les erreurs d'authentification dans React Router ?"
Vous : Recherche...
[Dispatcher un sous-agent → synthèse]

Éliminer la redondance :

  • Ne répétez pas ce qui se trouve dans les compétences référencées
  • N'expliquez pas ce qui est évident d'après la commande
  • N'incluez pas plusieurs exemples du même modèle

Vérification :

wc -w skills/path/SKILL.md
# Flux de travail de prise en main : visez <150 chacun
# Autres compétences fréquemment chargées : visez <200 au total

Nommez par ce que vous FAITES ou l'idée principale :

  • ✅ condition-based-waiting > async-test-helpers
  • ✅ using-skills pas skill-usage
  • ✅ flatten-with-flags > data-structure-refactoring
  • ✅ root-cause-tracing > debugging-techniques

Les gérondifs (-ing) fonctionnent bien pour les processus :

  • creating-skills, testing-skills, debugging-with-logs
  • Actifs, ils décrivent l'action que vous effectuez

5. Références Croisées à d'Autres Compétences

Lors de la rédaction d'une documentation qui référence d'autres compétences :

Utilisez uniquement le nom de la compétence, avec des marqueurs d'exigence explicites :

  • ✅ Bon : **SOUS-COMPÉTENCE REQUISE :** Utilisez superpowers:test-driven-development
  • ✅ Bon : **CONNAISSANCES REQUISES :** Vous DEVEZ comprendre superpowers:systematic-debugging
  • ❌ Mauvais : Voir skills/testing/test-driven-development (pas clair si obligatoire)
  • ❌ Mauvais : @skills/testing/test-driven-development/SKILL.md (charge forcée, consomme du contexte)

Pourquoi pas de liens @ : La syntaxe @ force le chargement immédiat des fichiers, consommant 200k+ de contexte avant que vous n'en ayez besoin.

Utilisation des Organigrammes

digraph when_flowchart {
    "Besoin d'afficher des informations ?" [shape=diamond];
    "Décision où je pourrais me tromper ?" [shape=diamond];
    "Utiliser le markdown" [shape=box];
    "Petit organigramme en ligne" [shape=box];

    "Besoin d'afficher des informations ?" -> "Décision où je pourrais me tromper ?" [label="oui"];
    "Décision où je pourrais me tromper ?" -> "Petit organigramme en ligne" [label="oui"];
    "Décision où je pourrais me tromper ?" -> "Utiliser le markdown" [label="non"];
}

Utilisez les organigrammes UNIQUEMENT pour :

  • Points de décision non évidents
  • Boucles de processus où vous pourriez vous arrêter trop tôt
  • Décisions "Quand utiliser A vs B"

N'utilisez jamais les organigrammes pour :

  • Du matériel de référence → Tableaux, listes
  • Des exemples de code → Blocs Markdown
  • Des instructions linéaires → Listes numérotées
  • Des étiquettes sans signification sémantique (step1, helper2)

Consultez graphviz-conventions.dot dans ce répertoire pour les règles de style graphviz.

Visualisation pour votre partenaire humain : Utilisez render-graphs.js dans ce répertoire pour rendre les organigrammes d'une compétence en SVG :

node ./render-graphs.js ../une-competence           # Chaque diagramme séparément
node ./render-graphs.js ../une-competence --combine # Tous les diagrammes dans un seul SVG

Exemples de Code

Un excellent exemple vaut mieux que plusieurs médiocres

Choisissez le langage le plus pertinent :

  • Techniques de test → TypeScript/JavaScript
  • Débogage système → Shell/Python
  • Traitement de données → Python

Bon exemple :

  • Complet et exécutable
  • Bien commenté expliquant POURQUOI
  • Issu d'un scénario réel
  • Montre clairement le modèle
  • Prêt à être adapté (pas un modèle générique)

Ne faites pas :

  • Implémenter dans 5+ langages
  • Créer des modèles à remplir
  • Écrire des exemples artificiels

Vous êtes doué pour le portage - un seul excellent exemple suffit.

Organisation des Fichiers

Compétence Autonome

defense-in-depth/
  SKILL.md    # Tout en ligne

Quand : Tout le contenu tient, aucune référence lourde nécessaire

Compétence avec Outil Réutilisable

condition-based-waiting/
  SKILL.md    # Aperçu + modèles
  example.ts  # Aides fonctionnelles à adapter

Quand : L'outil est un code réutilisable, pas seulement un récit

Compétence avec Référence Lourde

pptx/
  SKILL.md       # Aperçu + flux de travail
  pptxgenjs.md   # 600 lignes de référence API
  ooxml.md       # 500 lignes de structure XML
  scripts/       # Outils exécutables

Quand : Le matériel de référence est trop volumineux pour être en ligne

Invoquez les scripts fournis via leur interpréteur dans le texte (bash scripts/tool.sh, node scripts/tool.js), jamais par un chemin nu : certains packs de plugins de harnais suppriment les bits exécutables, et un scripts/tool.sh nu échoue là avec Permission denied.

La Loi de Fer (Comme en TDD)

PAS DE COMPÉTENCE SANS UN TEST ÉCHOUANT D'ABORD

Ceci s'applique aux NOUVELLES compétences ET aux MODIFICATIONS des compétences existantes.

Rédiger une compétence avant de tester ? Supprimez-la. Recommencez. Modifier une compétence sans tester ? Même violation.

Aucune exception :

  • Pas pour "des ajouts simples"
  • Pas pour "juste ajouter une section"
  • Pas pour "des mises à jour de documentation"
  • Ne conservez pas les modifications non testées comme "référence"
  • Ne le faites pas.

…

[tronqué pour la traduction]

Individual skills in this repo

This repo contains 14 individual skills — each has its own dedicated page.

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).

diagnosing-superpowers

Use when a superpowers session went wrong and your human partner wants to know why — repeated work, ignored plans, stumbles, poor results, a skill that didn't fire, "it took too long", "why is it so expensive", "what is it doing" — or wants to build a bug report for the superpowers maintainers, for the current session or a past one identified by id or path, on any harness.

dispatching-parallel-agents

Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies

executing-plans

Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available

finishing-a-development-branch

Use when implementation is complete, all tests pass, and you need to decide how to integrate the work

receiving-code-review

Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation

requesting-code-review

Use when completing tasks, implementing major features, or before merging to verify work meets requirements

subagent-driven-development

Use when executing implementation plans with independent tasks in the current session

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes

test-driven-development

Use when implementing any feature or bugfix, before writing implementation code

using-git-worktrees

Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback

using-superpowers

Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions

verification-before-completion

Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always

writing-plans

Use when you have a spec or requirements for a multi-step task, before touching code

Skills associés