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.
Measuring the block
Section titled “Measuring the block”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 scopes
Section titled “Source scopes”| 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.
Guardrails and approvals
Section titled “Guardrails and approvals”| 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 |
Disabling a skill
Section titled “Disabling a skill”skills.disabled in config.yaml removes names from the rendered index; the skill files stay on disk and remain loadable explicitly.
Reversible change procedure
Section titled “Reversible change procedure”- Back up the sources (
~/.agents/, config, symlink manifest). - Move rather than delete (symlinks to a backup directory,
cp -afor canonical sources). - Change one source at a time; start a fresh session or measure with
hermes prompt-sizeafter each step. - Verify absence outside the trusted repo and presence inside it (project skills require the session working directory inside the repo).