Skip to content

Skill curator

The learning loop means Hermes creates skills on its own over time. Left unchecked, that pile of narrow, near-duplicate skills would clutter the catalog and waste tokens. The curator is the background janitor that keeps it tidy: it tracks how often each skill is used, ages out the stale ones, and (optionally) consolidates overlapping skills.

What it manages

The curator primarily manages agent-created skills, the ones the background self-improvement review writes on its own. It can also archive unused bundled skills (default prune_builtins: true), but hub-installed skills and skills you hand-wrote are always left alone. It never deletes; the worst it does is archive into ~/.hermes/skills/.archive/, which is recoverable.

How it runs

The curator is triggered by an inactivity check, not a cron daemon. It runs only when both are true:

  • Enough time has passed since the last run (interval_hours, default 7 days).
  • The agent has been idle long enough (min_idle_hours, default 2 hours).

So on an active dev machine it naturally only fires during quiet stretches. On a brand-new install it defers the first real pass by a full interval, giving you time to review or opt out.

A run has two phases:

  1. Automatic transitions (deterministic, no LLM). Skills unused for 30 days become stale; unused for 90 days are archived. This is the always-on pruning.
  2. LLM consolidation (one auxiliary-model pass), off by default. When enabled, a forked agent surveys agent-created skills and may patch, merge overlapping ones into umbrellas, or archive them.

Configuration

yaml
# ~/.hermes/config.yaml
curator:
  enabled: true
  interval_hours: 168       # 7 days
  min_idle_hours: 2
  stale_after_days: 30
  archive_after_days: 90
  consolidate: false        # opt-in LLM umbrella-building pass
  prune_builtins: true      # also archive unused bundled skills (hub skills exempt)

Disable entirely with curator.enabled: false. Keep pruning but enable consolidation with curator.consolidate: true.

Offline note

The consolidation pass costs auxiliary-model tokens (and inference time on your local box). On a local-only setup I usually leave consolidate: false and rely on the free, deterministic stale/archive pruning. If I do want consolidation, I point it at a cheap fast model via auxiliary.curator.

CLI

bash
hermes curator status          # last run, counts, pinned list, least-used skills
hermes curator run             # run now (prune-only unless consolidate is on)
hermes curator run --dry-run   # preview without changing anything
hermes curator run --consolidate   # force the LLM pass for this run
hermes curator pin <skill>     # never auto-transition this skill
hermes curator unpin <skill>
hermes curator restore <skill> # bring an archived skill back to active
hermes curator list-archived
hermes curator rollback        # restore from the newest pre-run snapshot

The same commands are available as /curator inside a session.

Safety nets

  • Before every real pass, Hermes snapshots ~/.hermes/skills/ to .curator_backups/. hermes curator rollback undoes a whole run.
  • Pinning protects a skill from both the curator and the agent's own delete tool. Only agent-created skills can be pinned.
  • A small set of load-bearing built-ins (like the skill behind /plan) is hardcoded as never-archivable.
  • Per-run reports are written to ~/.hermes/logs/curator/<timestamp>/REPORT.md so you can audit exactly what changed.

Your hand-written skills are safe

If you created a SKILL.md yourself, or the agent created one at your explicit request during a chat, it is marked user-directed and the curator will not touch it. Run hermes curator status to see exactly which skills are in the curator's jurisdiction, if the agent-created count is 0, it does nothing.

Personal learning notes on Hermes Agent. Not affiliated with Nous Research. Verify against official docs.