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 <noreply@anthropic.com>
This commit is contained in:
bastien 2026-04-15 20:32:35 +02:00
parent 7ccf4398e2
commit 2727618bc1

View File

@ -1,9 +1,9 @@
--- ---
name: skills-perso name: skills-perso
description: | description: |
List all personal skills installed in ~/.claude/skills/. List personal (user-created) skills from ~/.claude/skills/.
Shows only local skills (excludes symlinked/external skills like gstack or emil-design-eng). Excludes framework/gstack skills and symlinked/external skills.
For each skill, displays its name and description from SKILL.md frontmatter. Shows only skills the user wrote themselves.
Trigger: "skills-perso", "mes skills", "list my skills", "quels skills", "skills perso". Trigger: "skills-perso", "mes skills", "list my skills", "quels skills", "skills perso".
argument-hint: "" argument-hint: ""
disable-model-invocation: false disable-model-invocation: false
@ -15,15 +15,38 @@ allowed-tools:
# skills-perso # 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 ## 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`). 1. Run the detection command above to get the list of personal skill names.
2. For each directory found, read the first 15 lines of `SKILL.md` if it exists. 2. For each personal skill, read the first 15 lines of its `SKILL.md`.
3. Extract `name` and `description` from the YAML frontmatter. 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). 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 ## Output format
@ -35,8 +58,7 @@ List all personal skills from `~/.claude/skills/`, excluding symlinked/external
| feat | Small feature implementation (1-5 files)... | | 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). Keep descriptions to one line (~80 chars max, truncate with "..." if needed).
Do NOT include symlinked directories (they point to external/shared skills).