Skill Claude Code fournissant la documentation complète de 23 composants du Design System Français (DSFR) avec exemples, spécifications d'accessibilité RGAA et scripts de synchronisation automatisés.
- Installation
- Utilisation avec Claude Code
- Structure du projet
- Composants disponibles
- Composants manquants
- Gestion du projet
- Architecture des fichiers
- Scripts disponibles
- Licence
# Ajouter le dépôt comme marketplace
/plugin marketplace add numerique-gouv/dsfr-skill
# Installer le plugin
/plugin install dsfr-skill@dsfr-skillVérifiez l'installation en tapant /help pour confirmer que le skill est disponible.
Installation globale (disponible partout) :
# Naviguer vers le dossier des skills Claude Code
cd ~/.claude/skills
# Cloner le skill
git clone https://github.com/numerique-gouv/dsfr-skill.git
# Le skill est maintenant disponibleInstallation spécifique à un projet :
# Installer dans un projet spécifique
cd /chemin/vers/votre/projet
mkdir -p .claude/skills
cd .claude/skills
git clone https://github.com/numerique-gouv/dsfr-skill.gitDans Claude Code, le skill sera actif si vous pouvez lui poser des questions sur le DSFR :
"Montre-moi comment créer un bouton avec le DSFR"
"Quelles sont les règles d'accessibilité pour un accordéon ?"
"Donne-moi un exemple de modale accessible"
Si le skill est chargé, Claude Code aura accès à toute la documentation et pourra répondre avec des détails précis sur les 15 composants DSFR documentés.
Note pour les contributeurs : Si vous souhaitez contribuer au projet ou synchroniser les composants, clonez le dépôt dans un dossier de travail :
git clone https://github.com/numerique-gouv/dsfr-skill.git
cd dsfr-skillPrérequis pour la synchronisation : bash, curl, awk, sed (outils Unix standards)
Une fois le skill installé, vous pouvez demander à Claude Code :
"Montre-moi comment créer un bouton primaire avec le DSFR"
"Quelles sont les règles d'accessibilité pour les accordéons ?"
"Donne-moi un exemple de modal avec le DSFR"
"Comment implémenter un fil d'Ariane accessible ?"
Claude Code aura accès à :
- Documentation technique complète (HTML, CSS, JavaScript)
- Guides d'accessibilité RGAA 4.1
- Spécifications design (variantes, états, anatomie)
- Exemples de code HTML complets et fonctionnels
dsfr-skill/
│
├── README.md # Ce fichier - guide du projet
├── LICENSE.md # Licence Ouverte 2.0 (Etalab)
├── TODO.md # Liste des composants manquants (35 composants)
│
├── .claude-plugin/
│ ├── plugin.json # Métadonnées du plugin Claude Code
│ └── marketplace.json # Configuration pour le marketplace de plugins
│
├── ressources/ # Templates pour génération automatique
│ ├── README.md # Documentation du dossier ressources
│ ├── SKILL_HEADER.md # En-tête du SKILL.md (frontmatter, guide)
│ └── SKILL_FOOTER.md # Pied de page (ressources, support)
│
├── scripts de synchronisation
│ ├── sync-component.sh # Synchroniser un composant individuel
│ ├── sync-all.sh # Synchroniser tous les composants
│ └── generate-skill-md.sh # Générer SKILL.md depuis templates
│
└── skills/dsfr/ # Contenu du skill (lu par Claude Code)
│
├── SKILL.md # Point d'entrée - documentation complète
├── VERSION.md # Informations de version et historique
│
└── composants/ # 15 composants documentés
│
├── accordion/
│ ├── index.md # Présentation, cas d'usage, règles éditoriales
│ ├── accessibilite.md # RGAA, ARIA, interactions clavier
│ ├── code.md # HTML, CSS, JavaScript, API
│ ├── design.md # Variantes, états, anatomie, personnalisation
│ ├── examples/ # Fichiers HTML complets et fonctionnels
│ │ ├── example-1.html
│ │ ├── example-2.html
│ │ └── ...
│ └── assets/ # Images (do/dont, anatomie, etc.)
│ ├── use/
│ ├── edit/
│ └── ...
│
├── alert/
├── badge/
├── breadcrumb/
├── button/
├── card/
├── checkbox/
├── footer/
├── header/
├── input/
├── link/
├── modal/
├── navigation/
├── radio/
└── select/
15 composants actuellement documentés :
| Composant | Description | Fichiers |
|---|---|---|
| accordion | Masquer ou révéler du contenu textuel | 4 docs + 4 exemples + 9 images |
| alert | Relayer une information importante | 4 docs + 3 exemples + 13 images |
| badge | Affichage d'un statut informatif | 4 docs + 2 exemples + 13 images |
| breadcrumb | Se repérer dans l'arborescence | 4 docs + 3 exemples + 10 images |
| button | Déclenchement d'une action | 4 docs + 4 exemples + 27 images |
| card | Carte cliquable avec aperçu | 4 docs + 5 exemples + 9 images |
| checkbox | Sélection multiple | 4 docs + 2 exemples + 7 images |
| footer | Informations en bas de page | 4 docs + 2 exemples + 3 images |
| header | Identification et navigation | 4 docs + 3 exemples + 5 images |
| input | Saisie de données | 4 docs + 3 exemples + 0 images |
| link | Navigation entre pages | 4 docs + 9 exemples + 9 images |
| modal | Contenu en fenêtre superposée | 4 docs + 3 exemples + 2 images |
| navigation | Menu de navigation principal | 4 docs + 7 exemples + 10 images |
| radio | Sélection unique | 4 docs + 7 exemples + 10 images |
| select | Liste déroulante | 4 docs + 6 exemples + 3 images |
Total : 60 fichiers markdown + 63 exemples HTML + ~130 images
Le DSFR contient plus de 50 composants. Ce skill en documente actuellement 15 (29%).
📋 Consultez TODO.md pour la liste complète des composants à implémenter, organisée par priorité :
./sync-component.sh <nom-du-composant>
# Exemples
./sync-component.sh button
./sync-component.sh modalCe que fait le script :
- Télécharge les 4 fichiers markdown depuis le dépôt DSFR officiel
doc/index.md→index.mddoc/accessibility/index.md→accessibilite.mddoc/code/index.md→code.mddoc/design/index.md→design.md
- Nettoie le frontmatter YAML
- Supprime les directives DSFR spécifiques (
:::dsfr-doc-*) - Extrait les métadonnées (titre, description)
- Crée une navigation vers les autres fichiers dans
index.md - Extrait les blocs HTML depuis
code.md - Crée des exemples HTML complets (avec
<!DOCTYPE>, imports DSFR) - Télécharge toutes les images référencées
- Met à jour les chemins d'images (
./assets/)
./sync-all.shSynchronise les 15 composants définis dans PRIORITY_COMPONENTS du script.
Quand synchroniser :
- Après une mise à jour du DSFR officiel
- Pour corriger des problèmes dans la documentation
- Lors de l'ajout de nouveaux composants
Étapes complètes :
-
Identifier le composant dans le DSFR
- Vérifier qu'il existe dans https://github.com/GouvernementFR/dsfr
- Trouver son nom technique (ex:
toggle,tag,table)
-
Synchroniser le composant
./sync-component.sh <nom-du-composant>
-
Vérifier la synchronisation
ls -la skills/dsfr/composants/<nom-du-composant>/ # Doit contenir : index.md, accessibilite.md, code.md, design.md, examples/, assets/ # Vérifier que index.md a la bonne structure head -10 skills/dsfr/composants/<nom-du-composant>/index.md # Doit afficher : titre (H1), description (blockquote), navigation
-
Ajouter aux composants prioritaires
Éditer
sync-all.sh:PRIORITY_COMPONENTS=( "alert" "badge" # ... autres composants existants "<nom-du-composant>" # Ajouter ici ) -
Régénérer SKILL.md
./generate-skill-md.sh
-
Vérifier que le composant apparaît dans SKILL.md
grep -A 6 "### <nom-du-composant>" skills/dsfr/SKILL.md -
Mettre à jour VERSION.md
Ajouter une entrée dans l'historique :
## 2025-XX-XX - Version X.X.X - Ajout du composant <nom-du-composant>
-
Commit et push
git add . git commit -m "feat: ajout du composant <nom-du-composant>" git push
Le fichier SKILL.md est généré automatiquement depuis les templates.
./generate-skill-md.shCe que fait le script :
- Charge
ressources/SKILL_HEADER.md(en-tête, guide d'utilisation) - Compte les composants dans
skills/dsfr/composants/ - Pour chaque composant :
- Extrait la description depuis
index.md(ligne> **...**) - Génère la section avec liens vers les fichiers
- Extrait la description depuis
- Ajoute
ressources/SKILL_FOOTER.md(ressources, support) - Écrit le résultat dans
skills/dsfr/SKILL.md
Quand régénérer :
- Après ajout d'un nouveau composant
- Après modification des templates dans
ressources/ - Après resynchronisation des composants
Le SKILL.md est composé de 3 parties :
Fichier : ressources/SKILL_HEADER.md
Contenu :
- Frontmatter YAML (name, description, version, tags)
- Introduction au DSFR
- Guide d'utilisation de la documentation
- Structure des fichiers (index, accessibilite, code, design, examples)
- Standards et conformité (RGAA, ARIA, compatibilité)
- Architecture technique (imports, classes CSS, JavaScript)
Pour modifier :
# Éditer le fichier
nano ressources/SKILL_HEADER.md # ou vim, code, etc.
# Régénérer SKILL.md
./generate-skill-md.sh
# Vérifier le résultat
head -100 skills/dsfr/SKILL.mdGénérée par : generate-skill-md.sh
Source des descriptions : première ligne > **...** dans chaque composants/*/index.md
Ne PAS éditer manuellement - modifier plutôt les index.md et resynchroniser :
./sync-component.sh <composant>
./generate-skill-md.shFichier : ressources/SKILL_FOOTER.md
Contenu :
- Guide de réponse aux questions utilisateur
- Exemples de questions et approches
- Principes à respecter
- Ressources externes (DSFR, RGAA, outils)
- Notes importantes (composants non inclus, limites)
- Support et contribution
Pour modifier :
# Éditer le fichier
nano ressources/SKILL_FOOTER.md # ou vim, code, etc.
# Régénérer SKILL.md
./generate-skill-md.sh
# Vérifier le résultat
tail -100 skills/dsfr/SKILL.md# 1. Modifier le header si nécessaire
nano ressources/SKILL_HEADER.md
# 2. Modifier le footer si nécessaire
nano ressources/SKILL_FOOTER.md
# 3. Régénérer
./generate-skill-md.sh
# 4. Vérifier
less skills/dsfr/SKILL.md
# 5. Commit
git add ressources/ skills/dsfr/SKILL.md
git commit -m "docs: mise à jour du SKILL.md"Chaque composant suit la même structure :
- Titre et description courte
- Navigation vers autres fichiers
- Présentation du composant
- Quand l'utiliser / ne pas l'utiliser
- Règles éditoriales
- Exemples visuels (do/don't avec images)
- Interactions clavier obligatoires
- Attributs ARIA requis
- Critères RGAA applicables
- Tests avec lecteurs d'écran
- Versions testées (navigateurs, lecteurs)
- Structure HTML complète
- Classes CSS (obligatoires et optionnelles)
- Dépendances JavaScript
- API JavaScript (
window.dsfr) - Événements personnalisés
- Exemples de code
- Anatomie du composant (éléments constitutifs)
- Variantes disponibles (tailles, couleurs, styles)
- États visuels (défaut, hover, focus, disabled, error, success)
- Personnalisation autorisée
- Guidelines design (espacement, alignement)
- Fichiers HTML autonomes (
example-1.html,example-2.html, ...) - Structure HTML5 complète avec
<!DOCTYPE> - Imports DSFR CSS et JS depuis CDN
- Code prêt à copier-coller et tester
- Un fichier par variante ou cas d'usage
- Sous-dossiers par catégorie :
use/: exemples d'usageedit/: règles éditorialescustom/: personnalisationanatomy/: anatomie du composant- etc.
- Formats : PNG, SVG, JPG
Usage : ./sync-component.sh <nom-du-composant>
Description : Synchronise un composant depuis le dépôt DSFR officiel
Paramètres :
<nom-du-composant>: nom technique du composant (ex:button,modal)
Variables d'environnement :
DSFR_REPO: URL du dépôt DSFR (par défaut : GitHub raw)BASE_PATH: chemin dans le dépôt DSFRLOCAL_PATH: destination locale
Fonctions principales :
download_file(): télécharge un fichierextract_title(): extrait le titre du frontmatterextract_short_description(): extrait la description courteclean_frontmatter(): supprime le frontmatter YAMLclean_dsfr_directives(): supprime les directives:::dsfr-doc-*extract_html_blocks(): extrait les blocs HTMLcreate_complete_html(): crée des fichiers HTML completsdownload_images(): télécharge les images référencées
Usage : ./sync-all.sh
Description : Synchronise tous les composants définis dans PRIORITY_COMPONENTS
Configuration :
PRIORITY_COMPONENTS=(
"alert"
"badge"
# ... liste des composants
)Usage : ./generate-skill-md.sh
Description : Génère skills/dsfr/SKILL.md depuis les templates
Sources :
ressources/SKILL_HEADER.md: en-têteskills/dsfr/composants/*/index.md: descriptionsressources/SKILL_FOOTER.md: pied de page
Fonction principale :
get_description(): extrait la description depuisindex.md
Ce projet est publié sous Licence Ouverte 2.0 (Etalab-2.0).
Droits : réutilisation libre et gratuite, y compris à des fins commerciales.
Obligation : mentionner la paternité (source + date de mise à jour).
Compatibilité : CC-BY, OGL (UK), ODC-BY.
Questions sur le skill : ouvrir une issue sur ce dépôt
Questions sur le DSFR :
Version : 1.0.0 | Dernière mise à jour : 2025-10-22