npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

add-fabien-skills

v0.1.1

Published

Installe les skills de Fabien-skills dans Claude Code, en une commande.

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-skills

Un 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-prive

Sans 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écutableraw.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-tags

Le 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*.