From 2d53b8f70c6a129eb5e9f849796fcff3091d6e67 Mon Sep 17 00:00:00 2001 From: bastien Date: Wed, 15 Apr 2026 20:32:35 +0200 Subject: [PATCH] fix(skills-perso): exclude framework/gstack skills from listing Use git history heuristic: skills added in bulk commits (5+ SKILL.md files at once) are framework installs, not user-created. Only show skills added in small commits (1-3 files). Co-Authored-By: Claude --- skills/skills-perso/SKILL.md | 40 ++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/skills/skills-perso/SKILL.md b/skills/skills-perso/SKILL.md index 947f004..5015481 100644 --- a/skills/skills-perso/SKILL.md +++ b/skills/skills-perso/SKILL.md @@ -1,9 +1,9 @@ --- name: skills-perso description: | - List all personal skills installed in ~/.claude/skills/. - Shows only local skills (excludes symlinked/external skills like gstack or emil-design-eng). - For each skill, displays its name and description from SKILL.md frontmatter. + List personal (user-created) skills from ~/.claude/skills/. + Excludes framework/gstack skills and symlinked/external skills. + Shows only skills the user wrote themselves. Trigger: "skills-perso", "mes skills", "list my skills", "quels skills", "skills perso". argument-hint: "" disable-model-invocation: false @@ -15,15 +15,38 @@ allowed-tools: # skills-perso -List all personal skills from `~/.claude/skills/`, excluding symlinked/external directories. +List only **user-created** skills from `~/.claude/skills/`, excluding framework +(gstack) skills, symlinked directories, and external skills. + +## How to detect user-created skills + +Use git history to identify skills added in bulk commits (framework installs). +A skill is considered **framework** if its SKILL.md was first added in a commit +that also added 5+ other SKILL.md files. User-created skills are added in small +commits (1-3 SKILL.md files at a time). + +Run this command to get the list of personal skills: + +```bash +for dir in ~/.claude/skills/*/; do + [ -L "${dir%/}" ] && continue + skill=$(basename "${dir%/}") + skill_file="${dir}SKILL.md" + [ -f "$skill_file" ] || continue + commit=$(git -C ~/Documents/claude log --diff-filter=A --format='%H' -1 -- "skills/${skill}/SKILL.md" 2>/dev/null) + [ -z "$commit" ] && continue + count=$(git -C ~/Documents/claude diff-tree --no-commit-id --name-only -r "$commit" -- 'skills/*/SKILL.md' 2>/dev/null | wc -l) + [ "$count" -le 3 ] && echo "$skill" +done +``` ## Steps -1. List all directories in `~/.claude/skills/` that are NOT symlinks (use `find ~/.claude/skills -maxdepth 1 -mindepth 1 -type d -not -type l | sort`). -2. For each directory found, read the first 15 lines of `SKILL.md` if it exists. +1. Run the detection command above to get the list of personal skill names. +2. For each personal skill, read the first 15 lines of its `SKILL.md`. 3. Extract `name` and `description` from the YAML frontmatter. 4. Display a clean table with two columns: **Skill** and **Description** (first line of description only, trimmed). -5. At the end, show the total count. +5. At the end, show the total count of personal skills (and mention how many framework skills were excluded). ## Output format @@ -35,8 +58,7 @@ List all personal skills from `~/.claude/skills/`, excluding symlinked/external | feat | Small feature implementation (1-5 files)... | | ... | ... | -**Total: N skills** +**Total: N personal skills** (M framework skills excluded) ``` Keep descriptions to one line (~80 chars max, truncate with "..." if needed). -Do NOT include symlinked directories (they point to external/shared skills).