Skip to content

Skills Catalog Management

The always-on cost of skills is the rendered ## Skills block inside the system prompt — not the size of every SKILL.md on disk. Skill bodies load on demand.

Terminal window
hermes prompt-size [--json] [--platform cli]

Offline, no API call. Reports the skills index characters/bytes, plus per-skill index cost. Before/after measurements are comparable only with the same platform and working directory.

Measured on the Agent Host (cli platform, 2026-09-12):

State Skills index (chars)
Before reform (YEU .agents/skills in external_dirs + 29 global symlinks) 25 008
external_dirs removed (77 bmad skills out of the global catalog) 16 510
29 Matt Pocock symlinks removed from ~/.hermes/skills 13 649

The reform cut the rendered block by 45 %; zero bmad skills remain in a session outside the YEU repo.

Source Scope Note
~/.hermes/skills Profile-global Only genuinely cross-task skills belong here
skills.external_dirs Profile-global, read-only Repo directories belong to project scope, not here
<git-root>/.hermes/skills, <git-root>/.agents/skills Project-scoped Load only when the session working directory is inside the repo
skills.trusted_project_dirs Trust barrier hermes skills trust <path> / hermes skills untrust <path>; untrusted repos never inject skills
Skill body On demand skill_view or the skill command

Project skills shadow same-named profile skills and are tagged [project] in the index.

Setting Effect
skills.guard_agent_created: true Security scan on every agent-created skill write; not an approval workflow
skills.write_approval: true Stages skill mutations for review: /skills pending, /skills diff <id>, /skills approve <id>, /skills reject <id>
skills.creation_nudge_interval: 0 Disables the periodic skill-review nudge; existing skills are untouched
memory.write_approval: true Same gate for memory: /memory pending, /memory approve <id>, /memory reject <id>
memory.nudge_interval: 0 Disables periodic memory nudges
Curator (enabled) Manages created_by: agent skills only: marks stale, archives with backups, never deletes

skills.disabled in config.yaml removes names from the rendered index; the skill files stay on disk and remain loadable explicitly.

  1. Back up the sources (~/.agents/, config, symlink manifest).
  2. Move rather than delete (symlinks to a backup directory, cp -a for canonical sources).
  3. Change one source at a time; start a fresh session or measure with hermes prompt-size after each step.
  4. Verify absence outside the trusted repo and presence inside it (project skills require the session working directory inside the repo).