skills-quality
Skill0 starsChanged 5 months agoMITView on GitHub
Audit Claude Code skills (project + global) for token-economy hygiene — do they push work onto the LLM that a deterministic script should handle? A Python pre-pass flags smells; only flagged or changed skills enter LLM review (manifest keyed on skill_hash + ruleset_hash, so editing the rules re-scans all). Use for "audit my skills for token waste / LLM-as-loop smells", "are my skills well-designed", or `/mikko-skills-quality`.
In this repository15 other files it gives its agents.
- ai-codegen-smell-auditSkill
- auditSkill
- dotnet-auditSkill
- llm-injection-auditSkill
- mikko-audit-suiteSkill
- mikko-helpSkill
- mikko-installSkill
- mikko-skillsSkill
- react-anti-patterns-auditSkill
- readme-drift-syncSkill
- security-auditSkill
- session-costSkill
- skill-calibrationSkill
- skills-freshnessSkill
- skill-usageSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 42
If the table is All skills pass quality + unchanged - nothing to review., STOP.
≈ “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
When to use
User says "audit my skills for quality", "any skills wasting tokens?", "look for LLM-as-loop smells", "are my skills well-designed", or invokes /mikko-skills-quality.
Quarterly cadence, or after writing a new skill. Companion to /mikko-skills-freshness (which checks for STALE skills); this one checks for BADLY-DESIGNED skills.
Workflow
0. First run — baseline first
Fresh install with no manifest yet? Run --update BEFORE reviewing. The script writes the manifest unconditionally and the next invocation starts from "all clean". Skip to step 5.
1. Run the audit
Pick the right script path for how the skill was installed:
| Install method | Script path |
install-mikko.sh (prefixed) | python ~/.claude/skills/mikko-skills-quality/skills-quality.py |
install.sh skills-quality --target user (unprefixed) | python ~/.claude/skills/skills-quality/skills-quality.py |
| Library checkout (no install) | python skills/skills-quality/skills-quality.py (from claude-skills repo root) |
Windows PowerShell — same paths with $env:USERPROFILE instead of ~ and \ separators.
Defaults: both scopes (project under cwd/.claude/skills/, global under ~/.claude/skills/), no manifest write.
2. Read the table
SCOPE SKILL STATUS TOP FINDING
project big-iterator flagged [HIGH] 6 loop-style prose patterns with no companion script. Likely asking ...
project no-frontmatter-skill flagged [HIGH] Frontmatter missing required field(s): description.
global touched-but-clean changed pre-pass clean - needs LLM verify (changed since last review)If the table is All skills pass quality + unchanged - nothing to review., STOP. Nothing further to do.
3. Per-row action
The TOP FINDING column + the optional Additional findings: block carry the full signal. Do NOT open the skill's SKILL.md by default — only when the message is ambiguous or the user asks for a fix proposal.
| Status | What to do |
flagged | Read the top finding. Decide if the smell is real; propose a concrete extraction (move iteration into a script, add the missing frontmatter field, etc.) — don't auto-fix. |
changed | Pre-pass passed but the skill was edited since the last baseline. Three-bullet check: (a) frontmatter still has name + description; (b) description still matches what the skill does; (c) any new loop-prose the rules might have missed. No deep read needed if all three are obvious from a 10-second skim. |
removed | Skill directory gone. Confirm intentional; --update will drop the entry. |
4. Ask before editing
Present findings as a short table first. Do not modify any skill file without an explicit per-skill go-ahead.
5. Baseline once accepted
Same path as step 1, plus --update:
python <path-from-step-1> --updateWrites the manifest at each scope root. The next audit treats today's state as baseline.
The ruleset
Lives in rules.py next to this script. Each rule's own message is self-describing in the audit output — no per-rule cheat-sheet needed here. The single non-obvious property: editing rules.py re-keys every skill, because the manifest entry's key is (skill_hash + sha256(rules.py)). A rule change forces a full re-review next audit.
install.sh (symlink mode) keeps reading the source rules.py and _lib/. If the source tree moves or you delete it, the symlinks dangle and the skill silently breaks on next invocation — re-install from a fresh checkout. install-mikko.sh (copy mode) bundles sibling copies; this makes the installed rules.py the authoritative source for the hash, so editing the installed copy re-keys everyone locally (handy for tuning thresholds without forking the source). git pull of the source repo won't propagate to copy-mode installs without re-running install-mikko.sh.
Freshness check
[[check]]
kind = "path_exists"
path = "skills-quality.py"
root = "skill_dir"
[[check]]
kind = "path_exists"
path = "rules.py"
root = "skill_dir"
[[check]]
kind = "file_contains"
path = "skills-quality.py"
pattern = "SCRIPT_VERSION"
root = "skill_dir"
[[check]]
kind = "file_contains"
path = "rules.py"
pattern = "RULES"
root = "skill_dir"
[[check]]
kind = "no_broken_md_links"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.

