Vous avez un métier de la paperasse que vous aimeriez voir automatisé ? Les contributions sont les bienvenues.
- Fork le repo
- Créez un dossier au nom du métier en français (minuscules, tirets)
- Ajoutez un
SKILL.mdavec frontmatter (name, description, last_updated) - Ajoutez un dossier
references/avec les textes de loi et barèmes pertinents - Si possible, ajoutez des evals dans un dossier
evals/(voir les skills existants pour le format) - Faites une PR
Noms de dossiers en français, en minuscules, avec tirets :
comptable(expert-comptable)controleur-fiscal(contrôleur fiscal / simulation DGFIP)commissaire-aux-comptes(commissaire aux comptes)notaire(notaire)avocat(avocat d'affaires)drh(DRH / ressources humaines)
Un skill représente un métier (ou un rôle professionnel identifiable) et doit être self-contained : un utilisateur qui invoque comptable s'attend à ce qu'il couvre tout ce que fait un comptable, sans devoir combiner plusieurs skills.
Critère de décision pour un nouveau skill : « est-ce qu'un humain se présente avec cette casquette sur le marché du travail ? » Si oui → skill. Sinon → module partagé.
Les canaux, APIs, outils transverses (guichet unique INPI, API Entreprise, portails URSSAF/DGFiP, etc.) ne sont pas des skills. Ce sont des briques utilisées par plusieurs métiers.
Pour éviter la duplication tout en gardant les skills self-contained, le code partagé vit à la racine du repo et les skills le référencent par symlink :
paperasse/
├── integrations/
│ └── guichet-unique/ # client API INPI, soumission formalités
├── data/
│ └── formes-juridiques.json # codes INPI partagés
├── scripts/
│ └── submit-depot-comptes.js
├── comptable/
│ ├── SKILL.md
│ ├── integrations/guichet-unique -> ../../integrations/guichet-unique
│ └── data/formes-juridiques.json -> ../../data/formes-juridiques.json
└── notaire/
├── SKILL.md
└── integrations/guichet-unique -> ../../integrations/guichet-unique
Chevauchement ≠ duplication : si notaire et un futur avocat font tous les deux des modifications statutaires, c'est fidèle à la réalité (les deux professions le font). La logique est partagée via les symlinks, le framing métier diffère dans chaque SKILL.md (le notaire rédige un acte authentique, l'avocat un acte SSP).
mon-skill/
├── SKILL.md # Instructions pour l'agent (obligatoire)
├── references/ # Textes de loi, barèmes, données de référence
│ ├── texte-de-loi.md
│ └── bareme.md
└── evals/ # Tests automatisés (recommandé)
├── evals.json
└── files/ # Fichiers de test (company.json, FEC, etc.)
---
name: Mon Skill
description: Description courte du skill
last_updated: 2026-03-25
includes:
- data/**
- company.example.json
---name: nom affichédescription: une lignelast_updated: date de dernière mise à jour (les skills de plus de 6 mois affichent un avertissement)includes: fichiers à inclure depuis la racine du repo (pour les données partagées)
Chaque skill devrait avoir des evals qui vérifient les réponses de l'agent. Format : un fichier evals.json avec des cas de test (question + critères de validation). Voir comptable/evals/ pour un exemple complet.
Boucle de validation recommandée :
# Planifier uniquement les skills impactés par la branche
uv run --project evals python evals/run_evals.py --changed-only --plan-only
# Exécuter les evals concernées en réutilisant le cache
uv run --project evals python evals/run_evals.py --changed-only --reuse-cacheEn contribuant, vous acceptez que votre contribution soit publiée sous licence MIT.