add-fabien-skills
v0.1.1
Published
Installe les skills de Fabien-skills dans Claude Code, en une commande.
Maintainers
Readme
add-fabien-skills
Installe les skills de Fabien-skills dans Claude Code, en une commande, sans cloner le dépôt.
npx add-fabien-skillsUn picker s'ouvre : tu choisis les skills, où les poser, si l'agent a le droit de les déclencher tout seul. Rien d'autre à installer.
En entreprise : épingler la version
npx add-fabien-skills résout @latest, c'est-à-dire ce que le propriétaire du paquet a
publié il y a cinq minutes. Pour une diffusion interne, épingle :
npx [email protected]Le paquet est publié avec une attestation de provenance : npm garde un lien vérifiable entre le tarball et le commit exact qui l'a produit. Pour le contrôler avant de faire tourner quoi que ce soit :
npm view add-fabien-skills # la mention "Provenance" pointe le commit et le workflow
npm audit signatures # vérifie signature + attestation d'un arbre installéPublier n'est possible que depuis un tag de ce dépôt, via
publish.yml,
et npm l'applique lui-même : le paquet est configuré en trusted publishing (OIDC). Il n'existe
aucun token de publication — ni dans ce dépôt, ni ailleurs. npm ne délivre un droit d'écriture
qu'à un job dont l'identité correspond à ce dépôt, ce fichier de workflow et cet environnement.
Il n'y a donc pas de secret à voler.
Non interactif
npx add-fabien-skills -s tdd,code-review -t local
npx add-fabien-skills -s all -t global --force
npx add-fabien-skills --list| Option | |
|---|---|
| -s, --skills <a,b,c> | skills à installer par nom, ou all |
| -t, --target <where> | global → ~/.claude/skills · local → ./.claude/skills |
| -d, --dmi <bool> | force disable-model-invocation ; par défaut on garde le réglage du dépôt |
| -f, --force | écrase sans demander |
| -l, --list | liste les skills puis sort |
| -n, --dry-run | montre le plan, n'écrit rien |
| -y, --yes | prend les réponses par défaut — n'implique pas --force |
| --no-interactive | n'ouvre aucun prompt (déduit du terminal sinon) |
| --ref <ref> | branche ou tag du dépôt |
| --source <path> | lit un dépôt local au lieu de GitHub |
| -v, --version | la version de l'outil |
Les diagnostics vont sur stderr et la liste sur stdout, donc --list > skills.txt
donne un fichier propre. Sortie 0 en cas de succès, 1 en cas d'erreur, 130 si tu annules.
Requiert Node ^20.18 ou >= 22.8. En dessous, le CLI s'arrête avec un message plutôt
qu'avec une trace : engines n'est qu'indicatif, npm exécute quand même le paquet.
Dépôts privés
Fabien-skills est public, donc rien à configurer — et exporter un GITHUB_TOKEN ne change
rien, c'est voulu. Le CLI passe toujours par le CDN d'abord et ne bascule sur l'API GitHub
authentifiée que si celui-ci répond 404 et qu'un token existe, c'est-à-dire uniquement pour un
dépôt réellement privé. L'API coûte un appel authentifié par fichier sur un quota de 5000/h, là
où le CDN n'en consomme aucun.
Pour un fork interne privé :
export GITHUB_TOKEN=$(gh auth token)
npx add-fabien-skills --source owner/repo-priveSans token, un dépôt privé se manifeste par un 404 indiscernable d'un index manquant. Le CLI interroge l'API pour trancher et annonce laquelle des deux causes s'applique, parce que le correctif n'est pas le même.
Comment ça marche
Le CLI ne clone jamais. Il lit
skills.json à la
racine du dépôt — une seule requête de ~12 Ko gzippés — puis télécharge uniquement les fichiers
des skills choisis.
C'est délibéré : le tarball du dépôt pèse ~16 Mo, presque entièrement les médias d'un seul skill
(research/last30days/assets). Cloner pour installer un skill de 7 Ko serait la façon la plus
lente de faire les choses.
L'index porte, pour chaque skill : son chemin, sa description, ses avertissements, sa liste de
fichiers avec leur taille et leur bit exécutable — raw.githubusercontent.com sert le contenu
sans les permissions, donc sans ça les 16 lanceurs embarqués de la collection arriveraient non
exécutables.
Aucune dépendance runtime. Pour un outil npx, chaque dépendance est du téléchargement que
l'utilisateur subit avant de voir le premier pixel.
Développer
npm install # `yaml`, uniquement pour générer l'index
npm test # runner natif de Node, aucune dépendance de test
npm start # lance le CLI sur le dépôt local
npm run index # régénère ../skills.json
npm run index:check # échoue si l'index est périménpm run index est la seule étape obligatoire après avoir ajouté, renommé ou supprimé un skill —
sinon npx add-fabien-skills ne le voit pas. Le générateur refuse d'écrire si un SKILL.md a un
frontmatter invalide, si name: ne correspond pas au nom du dossier, ou si deux skills partagent
un nom : ce sont exactement les cas où l'installation écraserait la mauvaise cible.
Publier une version
cd cli
npm version patch # ou minor / major — bumpe, commit et pose le tag vX.Y.Z
git push --follow-tagsLe tag déclenche publish.yml,
qui rejoue les tests, index:check et publint avant de publier. npm version pose lui-même le
tag à partir de package.json, ce qui rend le désaccord tag/version structurellement impossible
plutôt que simplement vérifié.
Une version de préversion (npm version prerelease --preid beta) part automatiquement sous le
dist-tag next : npx add-fabien-skills résout latest et ne doit jamais tomber sur une beta.
Le tag v* est global au dépôt alors que la version est locale à cli/. Le jour où un second
paquet publiable apparaît ici, il faudra passer à cli-v*.
