skill-cleaner
Skill5 starsChanged 11 days agoMITView on GitHub
Audits installed Agent Skills for duplicates, unused candidates, loaded roots, oversized descriptions, and prompt cost. Use when cleaning or debugging skill collections.
5 other projects use a version of this, 2 of them edited.
Adopted by
Most recently taken up by
- maro114510/skillstheir own version, first seen Nov 6, 2026
- steipete/agent-scriptsedited, first seen Oct 20, 2026
- ilamanov/skillstheir own version, first seen Oct 13, 2026
- joelhooks/joelclawedited, first seen Oct 8, 2026
- YuzuruS/claude-skill-cleanertheir own version, first seen May 26, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- steipete/agent-scripts★ 7.4k50% same
- joelhooks/joelclaw★ 6529% same
Wrote their own version · 3
- YuzuruS/claude-skill-cleaner★ 5same name
- ilamanov/skills★ 1same name
- maro114510/skills★ 1same 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.
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- architecture-knowledge-baseSkill
- audio-transcribeSkill
- better-uiSkill
- brainstormingSkill
- broSkill
- chatgpt-imagegenSkill
- coding-standardsSkill
- decision-roomSkill
- deslopifySkill
- domain-modelingSkill
- frontend-designSkill
- gemini-ttsSkill
- goalSkill
- readbackSkill
- rephraseSkill
- reply-broSkill
- setup-goalSkill
- strunk-writing-qualitySkill
- technical-writingSkill
- tech-specSkill
- tool-installSkill
- type-breakdownSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 10 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
10
Distinctive
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
- Distinctive: line 11
Use this when trimming skill prompt budget, finding duplicate skills, auditing enabled/disabled skill roots, or deciding which …
- Distinctive: line 31
Read the report in this order:
- Distinctive: line 38
Before deleting or editing:
- Distinctive: line 39
Verify the kept copy exists and is loaded.
- Distinctive: line 40
Treat cross-runtime duplicates as informational: separate runtimes may legitimately need separate copies.
- Distinctive: line 41
Never delete managed plugin-cache files directly.
- Distinctive: line 42
Delete a suggested duplicate only after verifying the kept path exists and the same runtime loads it.
- Distinctive: line 43
Keep repo-local OpenClaw maintainer skills when they encode repo policy or live operations.
- Very specific: line 62
Use --no-logs unless the user wants usage-history analysis.
- Distinctive: line 65
If asked to apply cleanup, make small grouped commits: descriptions, deletes, config disables.
- Distinctive: line 66
Do not delete ignored/untracked skill dirs without naming the destination or confirming they are disposable.
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill Cleaner
Use this when trimming skill prompt budget, finding duplicate skills, auditing enabled/disabled skill roots, or deciding which skills/plugins to remove.
Workflow
- Resolve this skill's directory from the loaded
SKILL.md, then run its bundled analyzer:
node ./scripts/skill-cleaner.mjs --no-logsUseful variants:
node ./scripts/skill-cleaner.mjs --months 3
node ./scripts/skill-cleaner.mjs --months 6 --max-log-mb 800 --deep-logs
node ./scripts/skill-cleaner.mjs --context-tokens 200000 --budget-percent 2 --no-logs
node ./scripts/skill-cleaner.mjs --root /path/to/another/skills-directory --no-logs
node ./scripts/skill-cleaner.mjs --json --no-logs- Read the report in this order:
Skill Budget: GPT-5.5 context size, 2% skills budget, Codex-budgeted usage, and pre-budget full-list pressure.Description candidates: long descriptions where relaxed grammar saves prompt budget.Duplicates: same skill name or near-identical description/body across Codex, plugin cache, repo siblings, and personal skill roots.Unused candidates: no recent$skillmention,SKILL.mdread, or explicit skill-use trace in recent Codex/OpenClaw logs.Root summary: where skills came from and whether config marks them disabled.
- Before deleting or editing:
- Verify the kept copy exists and is loaded.
- Treat cross-runtime duplicates as informational: separate runtimes may legitimately need separate copies.
- Never delete managed plugin-cache files directly; use the runtime's plugin manager.
- Delete a suggested duplicate only after verifying the kept path exists and the same runtime loads it.
- Keep repo-local OpenClaw maintainer skills when they encode repo policy or live operations.
- Preserve trigger nouns in descriptions: product, tool, action, object.
Analyzer Notes
- The script mirrors Codex's model-visible line shape:
- name: description (file: path). - It applies Codex-like frontmatter rules: YAML frontmatter only, default name from parent dir, single-line sanitized
nameanddescription. - It follows Codex
core-skills/src/render.rs: 2% of rawcontext_window, token costceil(utf8_bytes / 4), then full descriptions -> equal description truncation -> omitted minimum lines. - It reads
~/.codex/models_cache.jsonfor the selected model'scontext_window; fallback is 200,000 tokens and 2%. Pass--context-tokensfor an exact budget. - It scans common global roots for
.agents, Pi, Codex, Claude Code, OpenCode, and OpenClaw, plus skill roots in the current project and its ancestors. - Extra folders are included only with repeatable
--root <path>flags. - It realpath-dedupes roots, so agent-specific symlinks to a shared skill directory do not create false duplicates.
- For duplicate names, it reports description/body similarity and suggests deletion candidates only when bodies are near copies. Keep priority defaults to direct Codex system skills, then direct Codex skills, then plugin skills, then personal/repo copies.
- It scans
~/.codex/history.jsonland recent~/.codex/sessions/**/*.jsonlby default. Add--deep-logsfor archived sessions and common OpenClaw/Clawd log folders. - Usage evidence is heuristic:
$skill,Use $skill, and paths likeskills/<name>/SKILL.md.
Privacy and Output Policy
- Scanning stays local. The report emits paths and usage counts, not session contents.
- Use
--no-logsunless the user wants usage-history analysis. - Reports can contain usernames and local paths; review them before sharing.
- Suggest first; edit only when the user asks.
- If asked to apply cleanup, make small grouped commits: descriptions, deletes, config disables.
- Do not delete ignored/untracked skill dirs without naming the destination or confirming they are disposable.
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.

