skill-checkup
Skill0 starsChanged 9 months agoMITView on GitHub
Use when you need to validate the health of your Claude Code skills library — checks for broken file references, missing dependencies, frontmatter issues, duplicate triggers, and dependency drift. Runs structural and semantic audits across all installed skills. Invoke via '/checkup', '/review-skills', or 'check my skills'.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- iceberggymnast/skillstheir own version, first seen Oct 17, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- iceberggymnast/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 7 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 35
If the directory does not exist or is empty — STOP.
- Distinctive: line 56
All results are marked as FACT.
- Very specific: line 76
Verify the main file is named exactly SKILL.md (not skill.md, SKILL.MD, or other variants).
- Very specific: line 86
If anything is missing — [!].
- Very specific: line 96
If a dependency was modified AFTER the skill — [!] with drift in days.
- Very specific: line 111
Check if the description follows the "Use when..." pattern recommended by Anthropic best practices.
- Distinctive: line 146
If everything is healthy — say so, do not list N lines of "OK"
- Very specific: line 160
After each run, persist the result to ~/.claude/checkup-history.json:
- Distinctive: line 188
Keep the last 20 runs. Drop older entries when writing a new one.
- Distinctive: line 190
When a previous run exists — show the trend in the first line of the report.
- Distinctive: line 209
After creating a new skill:
- Distinctive: line 220
Healthy skills are silence: Only problems appear in the report.
- Distinctive: line 221
Tone is care, not control: No shouting, no aggression.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/checkup — Skills Library Health Check
Validates the structural health of your Claude Code skills. Reports problems, does not auto-fix.
Triggers
/checkup— standard check (Level 0 + Level 1)/checkup --quick— binary checks only (Level 0)/checkup --full— all levels including semantic analysis (Level 2)/checkup <skill-name>— check a single skill/review-skills— alias for/checkup
When NOT to Use
- Checking a single skill file you just wrote — use manual review instead
- Investigating runtime behavior — this is structural, not functional
- Fewer than 5 skills installed — overhead exceeds value
Workflow
Phase 0: Canary + Discovery
Canary test — verify a known truth before proceeding:
Determine the skills directory. Use $HOME to expand the path:
Bash: ls "$HOME/.claude/skills/"If the directory does not exist or is empty — STOP. Report: "Skills directory not found at ~/.claude/skills/. Cannot proceed." The rest of the report is unreliable.
Discovery — build the full catalog:
- Find all skill files:
Bash: find "$HOME/.claude/skills" -maxdepth 2 -name "SKILL.md" | sortAlso check for lowercase variants (skill.md) which indicate a naming issue.
- For each skill, collect metadata:
- File path
- Last modified date:
Bash: stat -f %m "{path}" 2>/dev/null || stat -c %Y "{path}" 2>/dev/null - File size
namefrom frontmatterdescriptionfrom frontmatter
- Store the catalog in memory for subsequent phases.
Phase 1: Validation (Level 0 + Level 1)
All results are marked as FACT.
Level 0 — Binary Checks
For each skill:
1. File dependencies exist.
Extract all file paths from the skill text (patterns: lines starting with / or ~/ that look like file paths, paths inside backticks). For each path, expand ~ to $HOME and check:
Bash: test -e "$HOME/path/to/file" && echo "exists" || echo "MISSING"If missing — [x].
2. Cross-references to other skills are valid.
Extract all skill mentions (patterns: /skill-name triggers, skills/X/SKILL.md paths). Verify each referenced skill exists in the catalog from Discovery. If not — [x].
3. Absolute paths are valid.
Find all absolute paths (/Users/..., /home/..., /opt/...). Verify existence. If missing — [x].
4. File naming is correct.
Verify the main file is named exactly SKILL.md (not skill.md, SKILL.MD, or other variants). If wrong — [!].
Level 1 — Structural Checks
5. Frontmatter is valid. Verify required elements:
- YAML frontmatter block (between
---markers) namefield present and non-emptydescriptionfield present and non-empty- At least one
##section heading in the body If anything is missing —[!].
6. Trigger uniqueness.
Collect all triggers (slash commands like /...) from all skills. If two skills share the same trigger — [!] for both, listing the conflict.
7. Drift detection. For each skill: extract file dependencies. Compare the skill's last-modified date with each dependency's last-modified date:
Bash: stat -f %m "{path}" 2>/dev/null || stat -c %Y "{path}" 2>/dev/nullIf a dependency was modified AFTER the skill — [!] with drift in days.
Phase 2: Semantic Analysis (Level 2, only with --full)
Results are marked as SUGGESTION.
IMPORTANT: The auditor SKIPS ITSELF (skill-checkup) in semantic checks.
8. Duplicate detection.
Compare skills pairwise: do two skills do the same thing? Check by descriptions and triggers. If overlap >70% — [~].
9. Description clarity.
For each skill: can a user unambiguously tell when to invoke it from the description alone? If the description is vague or ambiguous — [~].
10. Description format.
Check if the description follows the "Use when..." pattern recommended by Anthropic best practices. If not — [~].
Output Format
Last checkup: {date}. Since then: {+N skills, -N issues resolved, +N new issues}.
{N} skills. Library is healthy.
{healthy} healthy. {attention} need attention. {broken} broken.
[x] /{skill}: {what is wrong — plain language}
-> {what to do} (line {N} in {file path})
[!] /{skill}: drift — dependency {file} modified {N} days after skill
-> Review whether the change affects skill logic
---
Suggestions (--full only):
[~] /{skill-a} and /{skill-b}: possible functional overlap
-> Consider merging or clarifying boundaries
Checked in {N} seconds.Format rules:
- Healthy skills are NOT listed
[x]— broken (FACT, action required)[!]— needs attention (FACT, drift or potential issue)[~]— suggestion (SUGGESTION, from Level 2)- Verdict first, then numbers, then issues
- Each issue: what is wrong + what to do + where (file:line)
- SUGGESTIONS block is visually separated from FACTS
- If everything is healthy — say so, do not list N lines of "OK"
- No emoji
If the library is fully healthy:
{N} skills. Library is healthy.
Checked in {N} seconds. No issues found.History
After each run, persist the result to ~/.claude/checkup-history.json:
Read $HOME/.claude/checkup-history.json (if it exists)Append an entry:
{
"date": "YYYY-MM-DD",
"mode": "default|quick|full",
"summary": {
"total": 48,
"healthy": 46,
"attention": 2,
"broken": 0
},
"issues": [
{
"skill": "my-skill",
"level": "x",
"message": "dependency ~/templates/report.html not found"
}
],
"duration_seconds": 8
}Keep the last 20 runs. Drop older entries when writing a new one.
When a previous run exists — show the trend in the first line of the report.
Self-audit
- Canary test at startup — verify
~/.claude/skills/exists before anything else - Check self with binary tests only (Level 0). Skip semantic checks for skill-checkup
- At the end of the report — recommend a manual audit once a month
Proactive Reminders
On session start, if >14 days since the last checkup:
It's been {N} days since the last /checkup. Consider running a skills health check.After creating a new skill:
New skill created. Run /checkup {skill-name} for a quick validation.Principles
- Navigator, not autopilot. Reports problems, does not fix them.
- FACT vs SUGGESTION. The user always knows what is deterministic and what is a recommendation.
- Healthy skills are silence. Only problems appear in the report.
- Tone is care, not control. No shouting, no aggression. A calm doctor.
- Specificity. Not "problem in skill X". Rather "file Y not found, line Z, action — restore or update path".
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

