Synthèse automatique
Audite les skills utilisateur de Claude Code dans ~/.claude/skills/ et produit un rapport Markdown sur leur fréquence d'usage, les doublons et les descriptions manquantes ou trop longues.
Points forts
- S'appuie sur un journal d'usage JSONL alimenté par un hook PostToolUse (matcher Skill) plutôt que sur un simple grep de transcripts, avec repli explicite sur l'heuristique transcript quand le journal est absent
- Signale honnêtement la couverture du journal et marque les verdicts « unused » comme provisoires ou heuristiques, plutôt que de les présenter comme définitifs
- Rapport structuré et actionnable : liste des non-utilisés, compte d'invocations et date de dernier usage, top 5 des descriptions les plus longues, doublons de champ name
- Outil purement consultatif : ne supprime ni ne modifie rien sans confirmation explicite
Limites
- Sous-estime l'usage : une invocation tapée manuellement via /name ne déclenche pas le tool Skill et n'est donc jamais journalisée
- Ne produit des verdicts fiables qu'après une période d'accumulation du journal ; sur une machine récente, la liste des non-utilisés est surtout du bruit
- Dépend de zsh, jq et ripgrep, et suppose une arborescence ~/.claude/ avec hook déjà installé
À utiliser lorsqu'on veut faire le ménage dans son jeu de skills et savoir lesquels sont réellement invoqués, redondants ou mal décrits.
À éviter si l'on cherche une suppression automatique ou un audit de skills projet stockés ailleurs que sous ~/.claude/skills/, ou si le hook d'usage n'a jamais été installé et qu'on veut des chiffres fiables immédiatement.
Analyse de sécurité
PrudenceThe instruction text itself is benign and explicitly advisory ("suggest only — never delete or edit a skill without explicit confirmation"), with no network calls, exfiltration, obfuscation, or destructive commands. Risk is limited to Bash being used to run a bundled helper script and read local log files for a legitimate read-only audit; because that script's contents are not shipped in the manifest, it warrants a caution rather than a clean safe rating.
- •Grants Bash and executes `~/.claude/skills/skill-cleaner/scripts/cleaner.sh`, whose body is not included in SKILL.md and therefore cannot be reviewed here
- •Reads local runtime state (`~/.claude/state/skill-usage.jsonl`) and optionally transcripts; no evidence of anything being sent off-machine, but scope of filesystem reads is defined only by the unshipped script
- •Requires a top-level Claude Code hook (`PostToolUse` on `Skill`) to be installed for accurate results — a config-modifying instruction, though it is scoped and user-confirmed
Exemples
Which of my Claude Code skills haven't been used in the last 90 days? Run the skill cleaner audit with a 90-day lookback and show me the unused list with its coverage caveat.My ~/.claude/skills folder has grown a lot. Audit it, show me the most-used skills and any duplicates, then recommend what to tighten or remove — don't change anything yet.Run the skill audit and list the five longest skill descriptions so I can see which ones are eating prompt budget every turn.description: Audits ~/.claude/skills/ for hygiene issues. Use when trimming the skill set, asking which skills are unused or most-used, or finding duplicates. Reports usage frequency, unused skills, duplicates, and missing or overlong descriptions. allowed-tools:
- Bash
- Read
Skill Cleaner
Audits user-level Claude Code skills under ~/.claude/skills/. Suggest only — never delete or edit a skill without explicit confirmation.
Prerequisites
zsh(the script's interpreter — shebang is#!/usr/bin/env zsh)jq— parses the usage log (the ground-truth source for unused detection)rg(ripgrep) — only for the transcript fallback used before the log has coverage
Usage log (source of truth)
Unused detection reads a JSONL usage log written by a PostToolUse hook, not a transcript grep. The hook (~/.claude/hooks/log-skill-use.sh, matcher Skill) appends one {"ts","skill","cwd"} record per skill invocation to ~/.claude/state/skill-usage.jsonl. This captures every invocation deterministically — including skills invoked only by other skills via the Skill tool, which the old transcript heuristic could miss.
The log is runtime state (gitignored) and only accumulates from when the hook was installed. Until it reaches back the full lookback window, the report marks the Unused list provisional and shows the log's actual coverage. If the log is empty or missing entirely, the script falls back to the transcript grep and labels the result a heuristic.
One undercount to keep in mind: a user-typed /name invocation expands in place without a Skill tool call, so the hook never logs it. Log-based "unused" verdicts are a lower bound — sanity-check against the transcript heuristic before recommending deletion.
To bootstrap coverage on a fresh machine where the hook isn't wired yet, add a PostToolUse hook with matcher Skill that runs ~/.claude/hooks/log-skill-use.sh (use the update-config skill), then let the log accumulate.
Run
~/.claude/skills/skill-cleaner/scripts/cleaner.sh
Flags:
--days N— lookback window (default 60)--root DIR— override skills root--usage-log FILE— override the usage-log path--transcripts DIR— override transcripts root (fallback only)
Output
Markdown report to stdout. A header line names the source (usage log vs. transcript fallback) and, in log mode, the log's coverage. Then:
- Unused — skills with zero invocations in the last N days per the usage log. Marked provisional while log coverage is shorter than the window, or heuristic when running off the transcript fallback.
- Usage (log mode only) — skills that were invoked in the window, with invocation count and last-used date, most-used first. Turns "unused" from a binary into a frequency signal.
- Longest descriptions — top 5 by character count. Long descriptions cost prompt budget every turn; trim only if trigger keywords are redundant.
- Duplicates — same
name:field across two skill directories. - Missing description — skills with no
description:in frontmatter.
Example output
# Skill Audit
- Source: usage log (`~/.claude/state/skill-usage.jsonl`) — 1 record, 1 in last 60d
- Log coverage: ~0d (oldest record 2026-07-05)
## Unused (no invocation in 60d)
> ⚠ Provisional — the usage log only reaches back ~0d, less than the 60d window.
- cc-review
- deps-audit
- …
## Usage (last 60d, most-used first)
- skill-cleaner — 1× (last 2026-07-05)
## Duplicates
_None._
Acting on results
- Treat "unused" as a candidate list, not a kill list. Confirm with the user before deleting any skill directory.
- Weight the list by its label: a provisional or heuristic Unused list may flag skills that are simply older than the log — lean on the Usage section and let coverage accrue before acting.
- Prefer tightening a long description over deleting the skill.
- For duplicates, identify which copy is canonical (usually the one in
~/.claude/skills/over any project-local override) before removing.
Do not use when
- Scoring a skill's quality or content depth — use
cc-review - Checking a skill against a newly-shipped Claude Code release — use
cc-release-review
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/skill-hygiene-auditor-mrwakb7d/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/skill-hygiene-auditor-mrwakb7d' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/skill-hygiene-auditor-mrwakb7d/download' --output '.skill-downloads/skill-hygiene-auditor-mrwakb7d/SKILL.md.part' && mv '.skill-downloads/skill-hygiene-auditor-mrwakb7d/SKILL.md.part' '.skill-downloads/skill-hygiene-auditor-mrwakb7d/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Extrait original : Prerequisites
zsh(the script's interpreter — shebang is#!/usr/bin/env zsh)jq— parses the usage log (the ground-truth source for unused detection)rg(ripgrep) — only for the transcript fallback used before the log has coverage
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Le fichier ne fournit pas un en-tête name/description exploitable pour cette procédure native. Le téléchargement reste disponible pour lecture ; utilisez le mode manuel ci-dessous.
Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/skill-hygiene-auditor-mrwakb7d/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Lecteur PDF
Productivite
Lit et extrait le texte de fichiers PDF (rapports, contrats, tableurs). Gère les fichiers locaux, les URL et les pièces jointes WhatsApp. Utilisez-le dès qu'un contenu PDF est nécessaire, même sans demande explicite.
Workflows de messagerie Discord
Productivite
Utilisez l'outil message pour envoyer, modifier et modérer des messages Discord avec des composants interactifs.
Aperçu interactif des verdicts
Productivite
Générer un aperçu HTML interactif des verdicts (garder/supprimer) pour la revue par le mainteneur, puis traiter le JSON de retour.