Skill Use Counter
Skill Use Counter
Owner: CodeCraft
Implemented: 2026-04-17 (Hive Activation Phase 3 T7 + T8)
Hook: ~/.claude/hooks/skill-use-counter.sh
Viewer: ~/system/tools/skill-usage.js
Audit: ~/system/tools/skill-audit-report.sh (weekly)
Purpose
Before T7, skill-registry.db.use_count stayed at 0 forever. We had 76 skills on disk and no idea which were alive, which were dead, or which to retire.
Now: every Skill tool invocation increments use_count. Once a week an audit report lists top used + dead candidates.
Hook wiring
Registered in ~/.claude/settings.json under PostToolUse:
{
"matcher": "Skill|mcp__skill",
"hooks": [
{"type": "command", "command": "bash ~/.claude/hooks/skill-use-counter.sh", "async": true}
]
}
The hook reads the tool invocation JSON from stdin, extracts the skill name, runs:
UPDATE skills SET use_count = use_count + 1 WHERE name = '<skill>';
Never blocks: exits 0 even if the DB is missing. SQL injection safe (single quotes are doubled before the sqlite3 call).
Logs
Every increment appends a line to ~/system/logs/skill-use.log:
2026-04-17T00:42:13Z SKILL=sync
2026-04-17T00:43:01Z SKILL=build
Reading usage
# Top 20 used
node ~/system/tools/skill-usage.js
# All (including 0-count)
node ~/system/tools/skill-usage.js --all
# Retirement candidates (0 uses, > 30 days old)
node ~/system/tools/skill-usage.js --dead
# Custom window
node ~/system/tools/skill-usage.js --dead --days 60
Weekly audit
com.alai.skill-audit.plist runs every Monday 07:00 CEST, writes ~/system/reports/skill-audit-<date>.md with:
- total skills
- top 20 used (name, category, uses)
- retirement candidates (0 uses, > 30 days old)
- recommendation section — human review required
Week 1 is bootstrap only — every skill was registered at use_count=0, so all show up as candidates. Wait for week 2+ to make real retirement decisions.
What to do with retirement candidates
Three options — pick per skill:
- Keep — valuable but under-discovered. Improve its
description/triggerin the registry so agents find it. - Deprecate — keep file on disk for reference but hide from discovery:
UPDATE skills SET active=0 WHERE name='X'. - Remove — delete directory + registry row. Only if truly obsolete.
The audit report is read-only. No auto-retirement.
Known issues
- The hook doesn't increment when a skill is invoked indirectly (skill-within-skill). Acceptable for now — top-level usage is the signal that matters.
use_countis cumulative since 2026-04-17. No time-windowed counter yet. If you need "uses in last N days", grep~/system/logs/skill-use.log.
No comments to display
No comments to display