By zvoque
Tracks Claude Code skill usage over time, flags skills that have gone cold, and helps you reversibly prune unused personal skills. Configurable thresholds, keep/snooze suppression, and an interactive cleanup. Near-zero token cost, zero dependencies.
Skill-usage tracking and cleanup for Claude Code.
You install skills and plugins, and your skill set quietly grows — most of them you never touch again. groundskeeper watches which skills you actually invoke, flags the ones that have gone cold, and helps you reversibly prune the unused personal ones. Configurable thresholds, keep/snooze when you want to silence a skill, and an interactive cleanup that asks before it touches anything.
No prompts during normal work, no measurable token cost: a background hook appends one line per skill use, and a once-a-week nudge only speaks up when something's actually gone cold.
Pure Node.js (fs/path/os only). node ships with Claude Code, so there's nothing to install — no jq, no bash, no bundled binaries. Runs natively on macOS, Linux, and Windows.
/plugin marketplace add zvoque/groundskeeper
/plugin install groundskeeper@groundskeeper
Restart the session so the hooks load. Usage logs immediately; cold flags appear after the grace + cold window.
PostToolUse hook matched to the Skill tool appends one line to ~/.claude/groundskeeper/usage.jsonl every time a skill runs — 0 model tokens, fires only on skill use.SessionStart hook prints at most one reminder line, at most once per nudge_days (default 7), and only if non-suppressed cold skills exist (~20 tokens/week)./skill-audit scans and reports. /skill-cleanup interactively prunes.A skill is cold when it hasn't been invoked in cold_days (default 45), ignoring any skill first seen less than grace_days (default 14) ago. Never-used skills are measured idle from when tracking began, so a fresh install flags nothing until it has observed for the cold window.
snooze_days, 30).Kept and snoozed skills never appear in cold reports or nudges.
Disabling moves a skill to ~/.claude/skills-disabled/<name>/ with a restore note. Nothing is deleted; restore anytime. Only personal skills (~/.claude/skills) are removable — plugin skills are reported on (and a fully-cold plugin is flagged), but never individually deleted.
/skill-audit — read-only scan: hot/cold/suppressed counts, the cold-skill table, and the active config window./skill-cleanup — interactive prune. Asks whether to disable all cold skills, choose specific ones, or snooze/keep instead — and never acts without your selection.Both are thin wrappers over plugins/groundskeeper/scripts/audit.js, which you can also run directly:
audit.js <cmd> | Action |
|---|---|
report | JSON usage report |
disable <name>... / restore <name>... | reversibly disable / restore personal skills |
list-disabled | list disabled skills |
config / config set <key> <val> | get/set thresholds (cold_days, grace_days, nudge_days, snooze_days) |
keep / unkeep <name>... | permanent suppression |
snooze <name> [days] / unsnooze <name>... | temporary suppression |
Stored under ~/.claude/groundskeeper/ (survives plugin updates):
usage.jsonl — append-only log (skill name + timestamp only; no prompt content).config.json — thresholds.state.json — last-nudge time, disabled registry, kept list, snoozed list.~/.claude/skills-disabled/ — disabled-skill graveyard../.claude/skills) are not tracked.git clone https://github.com/zvoque/groundskeeper
cd groundskeeper
node tests/run.js
Local install for development (instead of the marketplace add above):
/plugin marketplace add /path/to/groundskeeper
/plugin install groundskeeper@groundskeeper
MIT
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub zvoque/groundskeeper --plugin groundskeeperGives the agent a persistent memory of architecturally-significant decisions. Detects stack, design-direction, and structural tradeoff decisions made by the user or the agent, records each as an ADR in a gitignored .adr/ folder, and injects the decision index into future sessions so settled decisions are never re-litigated or contradicted.
Give Claude a mindset that sticks: persistent personas that re-assert every turn. Run one, several in parallel, or convene them as a team that debates a topic — plus a guided persona creator. Command-controlled; never edits settings.json.
Complete AI coding workflow system. Self-correcting memory + persistent FTS5-indexed research wikis + auto-research loop + multi-LLM council on a single SQLite store. 33 skills, 8 agents, 22 commands, 37 hook scripts across 24 events. Cross-agent via SkillKit.
Consult multiple AI coding agents (Gemini, OpenAI, Grok, Perplexity, plus codex and gemini CLIs when installed) to get diverse perspectives on coding problems
20 SEO/GEO skills and 5 commands on one shared contract for keyword research, content creation, technical audits, schema markup, monitoring, quality gates, entity truth, and campaign memory.
Production-grade academic research pipeline for Claude Code: research → write → review → revise → finalize. 4 skills, 27 modes, 39-agent ensemble, v3.7.3 + v3.8 L3 claim-faithfulness gate, v3.9.0 cross-index triangulation, v3.10 triangulation policy layer, v3.11 deterministic citation verification gate (#182).
Harness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses
Complete collection of battle-tested Claude Code configs from an Anthropic hackathon winner - agents, skills, hooks, and rules evolved over 10+ months of intensive daily use