4 commands to audit, dedupe, and clean up your claude code skills. v1.3 now sees skills installed via /plugin install too. flags duplicates across user and plugin scopes, broken symlinks, and skills you never touch. bash + python, zero other deps. cross-platform (works with openai codex). free, open source.
hey, i'm Chris. i built this because my own skills folder was a mess.
the moment that made me build it: i ran a usage check and found out i actively use 4 out of 35 installed skills. the other 31 were just sitting there, eating context window space and doing nothing.
on top of that, 8 pairs were basically duplicates of each other (seo-audit and marketing-seo-audit at 92% overlap, really?) and 2 were pointing to files i deleted weeks ago.
skills janitor is bash + python3, no dependencies, and previews everything before changing anything.
it's free, MIT licensed, no tracking, no telemetry. just scripts.
would love to hear what your active rate looks like. mine was 11%. kind of embarrassing.
Report
11% active rate sounds about right. I have a similar pile of skills I keep adding "just in case" and never trigger. The dedup feature is the real value here - I definitely have overlapping skills that quietly fight each other for context space. Going to run this today
@dklymentiev exactly same case for me. "Just in case" skills made my skills list too long and messy, like an inbox with all newsletter I signed up for but never opened.
@dklymentiev you were right about context space. /janitor-tokens now shows exactly how much each skill costs and which unused ones are eating budget. Also added codex support so it scans both platforms in one pass.
I've been dumping so many custom tools into my Claude Code config lately that half my context window is probably just unused skill descriptions. I am really curious if this parses the local Claude logs to calculate usage stats or if I need to run it alongside a proxy. Hooking this up to an automated weekly cleanup script would be a massive time saver.
@y_taka it reads your local conversation history (~/.claude-account-personal/history.jsonl), no proxy needed. it matches slash commands directly and also does keyword similarity matching for when you reference skills without the slash command.
you get explicit vs estimated usage counts with weekly granularity. the context window bloat thing is real though, that's actuallyone of the features i want to add next - showing how many tokens each skill's system prompt eats so you can see the actual cost of keeping unused ones around.
for the weekly cleanup - right now you'd just cron /janitor-report and pipe the output, but an auto-clean mode with a usage threshold is on the roadmap too.
@y_taka v1.1 adds /janitor-tokens which shows the actual token cost per skill. still reads local history, no proxy needed. for weekly cleanup you can cron /janitor-report and pipe the output, auto-clean mode with a usage threshold is next on the list
Report
Solid. I have a ton of skills and sometimes it gets a bit difficult to manage and track the frequency. Does it also surface an overlap % between similar skills?
@klashkil yes, janitor-duplicates is showing overlap % for similar skills. example below:
Report
@krzysztof_hendzel oh this is great, i would prolly merge a bunch of skills together xD
Report
Can I also use this tool as a pre-check before installing a new skill to see if the same or a similar skill is already present, maybe with a different name?
@chintant hmm good call, I will probably add it in the next version. It's better to check skills before even installing, keeping your setup clean is my top goal.
@chintant shipped it. /janitor-precheck does exactly this now — give it a github url and it checks overlap against everything you have installed before you add it. thanks for the push on this one :)
Report
This solves a problem I didn't realize I had until I saw it. I've been building with Claude Code daily and my skills folder is a mess duplicates, things I set up once and forgot about, broken ones I never cleaned up. The audit plus dedup combo is exactly right. Love that it's open source too. What was the hardest part detecting overlapping skills that use different wording?
@linoy_bar_gal honestly yes, that was the part that took the longest. keyword matching missed too much (same skill, different verbs), pure embeddings missed too little (flagged unrelated skills with similar tone). ended up with a hybrid: token-level jaccard on descriptions + name similarity, weighted. not perfect but it catches the obvious 60% and stays explainable.
Report
solid util. though if you're surprised by which skills you actually use, the taxonomy was probably wrong to begin with.
@mykola_kondratiuk could be, I'm thinking about making it more simple or make it more like a set of actions under fewer commands, will see. thanks for the comment :)
@mykola_kondratiuk took your point about the taxonomy. consolidated from 9 to 7 commands -check/duplicates/cleanup/compare all merged into report/fix/search. Fewer things to remember, same coverage :)
Skills Janitor
11% active rate sounds about right. I have a similar pile of skills I keep adding "just in case" and never trigger. The dedup feature is the real value here - I definitely have overlapping skills that quietly fight each other for context space. Going to run this today
Skills Janitor
@dklymentiev exactly same case for me. "Just in case" skills made my skills list too long and messy, like an inbox with all newsletter I signed up for but never opened.
Skills Janitor
@dklymentiev you were right about context space. /janitor-tokens now shows exactly how much each skill costs and which unused ones are eating budget. Also added codex support so it scans both platforms in one pass.
Okan
I've been dumping so many custom tools into my Claude Code config lately that half my context window is probably just unused skill descriptions. I am really curious if this parses the local Claude logs to calculate usage stats or if I need to run it alongside a proxy. Hooking this up to an automated weekly cleanup script would be a massive time saver.
Skills Janitor
@y_taka it reads your local conversation history (~/.claude-account-personal/history.jsonl), no proxy needed. it matches slash commands directly and also does keyword similarity matching for when you reference skills without the slash command.
you get explicit vs estimated usage counts with weekly granularity. the context window bloat thing is real though, that's actuallyone of the features i want to add next - showing how many tokens each skill's system prompt eats so you can see the actual cost of keeping unused ones around.
for the weekly cleanup - right now you'd just cron /janitor-report and pipe the output, but an auto-clean mode with a usage threshold is on the roadmap too.
Skills Janitor
@y_taka v1.1 adds /janitor-tokens which shows the actual token cost per skill. still reads local history, no proxy needed. for weekly cleanup you can cron /janitor-report and pipe the output, auto-clean mode with a usage threshold is next on the list
Skills Janitor
@klashkil yes, janitor-duplicates is showing overlap % for similar skills. example below:
@krzysztof_hendzel oh this is great, i would prolly merge a bunch of skills together xD
Can I also use this tool as a pre-check before installing a new skill to see if the same or a similar skill is already present, maybe with a different name?
Skills Janitor
@chintant hmm good call, I will probably add it in the next version. It's better to check skills before even installing, keeping your setup clean is my top goal.
Skills Janitor
@chintant shipped it. /janitor-precheck does exactly this now — give it a github url and it checks overlap against everything you have installed before you add it. thanks for the push on this one :)
This solves a problem I didn't realize I had until I saw it. I've been building with Claude Code daily and my skills folder is a mess duplicates, things I set up once and forgot about, broken ones I never cleaned up. The audit plus dedup combo is exactly right. Love that it's open source too. What was the hardest part detecting overlapping skills that use different wording?
Skills Janitor
@linoy_bar_gal honestly yes, that was the part that took the longest. keyword matching missed too much (same skill, different verbs), pure embeddings missed too little (flagged unrelated skills with similar tone). ended up with a hybrid: token-level jaccard on descriptions + name similarity, weighted. not perfect but it catches the obvious 60% and stays explainable.
solid util. though if you're surprised by which skills you actually use, the taxonomy was probably wrong to begin with.
Skills Janitor
@mykola_kondratiuk could be, I'm thinking about making it more simple or make it more like a set of actions under fewer commands, will see. thanks for the comment :)
Skills Janitor
@mykola_kondratiuk took your point about the taxonomy. consolidated from 9 to 7 commands -check/duplicates/cleanup/compare all merged into report/fix/search. Fewer things to remember, same coverage :)