Skill Kit is a CLI that shows you which AI agent skills you actually use - and which ones waste context.
npx @crafter/skillkit stats
Discovers and tracks skills for Claude Code and OpenCode. Filter by agent with --claude or --opencode. More connectors coming as agents standardize their session formats.
The Problem
The skills ecosystem is growing fast. Skills.sh, manual installs, project-level skills - they accumulate. Every skill gets loaded into the agent’s context window on every session.
Context is a finite budget. Every unused skill steals tokens from your actual code.
But there’s zero visibility:
- Which skills are actually being used?
- How much context budget are they consuming?
- Which ones haven’t been invoked in months?
I use Claude Code daily at Clerk and for my open source work at Crafter Station . I had 40+ skills installed across global and project scopes. No idea which ones mattered.
The Solution
Skill Kit gives you four commands:
stats
Usage analytics with sparkline trends. Auto-discovers your skills on first run, no setup needed.
$ skillkit stats
First run detected, scanning skills...
Found 12 skills across 3 agents.
SKILL 30d TREND
commit 42 ▂▃▅▇█▆▅▇█
review 38 ▁▃▅▆▇▇▆▅▃
deploy 27 ▁▁▂▃▅▇█▇▅
It parses session data from each connector - Claude Code’s JSONL files for Skill tool_use blocks, OpenCode’s SQLite database for skill tool parts - and maps each invocation back to the skill that triggered it.
Use --days 7 to narrow the window or --all to see every skill.
health
Context budget check. Flags unused skills.
$ skillkit health
[████████░░] 78% metadata budget (12.5K / 16.0K)
! 3 skills unused in 30d - run skillkit prune
prune
Removes skills that haven’t been used in 30 days. Shows what you’ll reclaim before confirming.
$ skillkit prune
× scaffold (0.9K)
× lint (2.1K)
2 skills · 3.0K context reclaimable
Run with --yes to confirm deletion.
list
Lists all installed skills with size and installation method.
Advanced
Under the hood, skillkit scan discovers skills and indexes sessions. It runs automatically on first use, but you can run it manually to force a re-scan or use --include-commands to also track slash commands.
How It Works
Everything runs locally. SQLite database at ~/.skillkit/analytics.db. No telemetry, no network calls, nothing leaves your machine.
The scanner walks skill directories for Claude Code (~/.claude/skills/) and OpenCode (~/.local/share/opencode/skills/ or %LOCALAPPDATA%\opencode\skills on Windows), reads SKILL.md files, and detects whether each skill was installed via skills.sh or manually. It deduplicates symlinked skills across agents.
For usage data, the connector system parses session storage from each supported agent:
- Claude Code: JSONL session files from
~/.claude/projects/- each file contains tool_use blocks. When aSkilltool is invoked, Skill Kit maps the skill name back to an installed skill and records the invocation. - OpenCode: SQLite database at
~/.local/share/opencode/opencode.db(macOS/Linux) or%LOCALAPPDATA%\opencode\opencode.db(Windows) - queries theparttable for tool entries withtool: "skill"and extracts the skill name from the input state.
The connector architecture makes it straightforward to add more agents as they adopt trackable skill invocations.
Why only two connectors? Most agents (Cursor, Windsurf, Copilot, etc.) load skills as context rules injected into the system prompt. There’s no discrete “Skill” tool call in their session data - skills are invisible at that layer. Claude Code and OpenCode are currently the only agents that invoke skills through a dedicated, trackable tool call. The connector architecture makes it trivial to add more as agents standardize. You can filter by agent with --claude or --opencode.
Sparklines are generated from 30-day invocation data, bucketed daily. The health check calculates total metadata bytes across all loaded skills and compares against the 16K context budget.
Use as a Skill
You can also install Skill Kit as a skill from our skills repo :
npx skills add crafter-station/skills --skill skillkit
Then ask your agent: “which skills do I use the most?” or “clean up unused skills” and it runs the right commands.
Try It
npx @crafter/skillkit stats
npx @crafter/skillkit health
npx @crafter/skillkit prune
Open Source
skillkit.crafter.run · GitHub · MIT License.
Follow @RaillyHugo for more on developer tools and context engineering.