Skip to content

Hermes Skill Cleaner Setup

A zero-dependency TypeScript CLI that audits your Hermes agent skill collection. Identifies wasted context-window tokens, duplicate skills, unused skills, and overly verbose descriptions -- with concrete cleanup recommendations.

Quick Install

git clone https://github.com/FavorPan/hermes-skill-cleaner.git
cd hermes-skill-cleaner

# Quick budget check (fastest  --  skips log scanning)
node --experimental-strip-types scripts/hermes-skill-cleaner.ts --no-logs

# Full report with usage stats
node --experimental-strip-types scripts/hermes-skill-cleaner.ts

Requirements: Node.js 22+ (for --experimental-strip-types), zero npm dependencies.

What It Audits

1. Skill Budget

Calculates what % of your context window's 2% skill budget is consumed by loaded skills, and reports remaining headroom.

## Skill Budget
context_window: 200,000 tokens
skill_budget:   4,000 tokens (2%)
skills_loaded:  156
skills_used:    2,850 tokens (71% of budget)
remaining:      1,150 tokens (29% of budget)

2. Duplicate Detection

Finds duplicate skills across three strategies: - By name -- same skill name in different directories - By body hash -- identical content under different names - By Jaccard similarity -- near-identical skills (copy-paste variants)

3. Usage Scanning

Parses Hermes session JSONL logs to find which skills are actually invoked. Skills with zero usage traces across recent sessions are flagged as removal candidates.

4. Description Bloat

Identifies skills where the YAML frontmatter description exceeds 200+ characters, with compact alternatives suggested.

CLI Options

Flag Description Default
--no-logs Skip session log scanning (fastest) off
--deep-logs Include archived sessions in scan off
--months N Lookback window for log files 3
--max-log-mb N Max total log bytes to scan 300
--context-tokens N Override context window size from config
--budget-percent N Budget as % of context window 2
--root <path> Add extra skill root directory none
--json Output JSON instead of markdown off
--model <name> Override model name from config

Common Recipes

SCRIPT=scripts/hermes-skill-cleaner.ts

# Quick budget check
node --experimental-strip-types $SCRIPT --no-logs 2>&1 | grep -A5 "## Skill Budget"

# Full report
node --experimental-strip-types $SCRIPT

# Deep scan including archived sessions
node --experimental-strip-types $SCRIPT --months 6 --max-log-mb 800 --deep-logs

# Custom context window (e.g., 272K tokens)
node --experimental-strip-types $SCRIPT --context-tokens 272000 --budget-percent 2 --no-logs

# JSON output for scripting
node --experimental-strip-types $SCRIPT --json --no-logs

# Find unused skills
node --experimental-strip-types $SCRIPT --deep-logs --months 6 --max-log-mb 800 2>&1 | \
  grep "usage=\$0, reads=0, text=0"

Phase 1: Remove Duplicates

Delete 100% body-hash matched skills, keeping the shorter-path copy. Re-run after to verify.

Phase 2: Remove Truly Unused Skills

Run with --deep-logs for accurate usage data. Delete skills showing usage=$0, reads=0, text=0.

Phase 3: Compress Long Descriptions

Target descriptions >200 chars. Fold multi-line YAML blocks to single-line, remove redundant trigger word lists, drop duplicate translations.

Re-run after each phase to measure progress.

Installing as a Hermes Skill

# Symlink into your skills directory
ln -s "$(pwd)" ~/.hermes/skills/hermes-skill-cleaner

# Or copy directly
cp -r . ~/.hermes/skills/hermes-skill-cleaner

Restart Hermes or /reset for the skill to be discovered. Invoke with: "audit my skills" or "clean up unused skills".

Disabling Skill Groups

Hermes has no built-in skill disable mechanism. Move directories out:

mkdir -p ~/.hermes/skills-disabled
mv ~/.hermes/skills/<category-or-name> ~/.hermes/skills-disabled/

To restore: mv ~/.hermes/skills-disabled/<name> ~/.hermes/skills/

Context Window Detection

The script reads Hermes context window size from (highest priority first): 1. --context-tokens CLI argument 2. model.context_length in ~/.hermes/config.yaml 3. Fallback: 272,000 tokens


Session Maintenance Setup | Skills Catalog → Powered by CorpusIQ