Add skills.external_dirs config option — a list of additional directories
to scan for skills alongside ~/.hermes/skills/. External dirs are read-only:
skill creation/editing always writes to the local dir. Local skills take
precedence when names collide.
This lets users share skills across tools/agents without copying them into
Hermes's own directory (e.g. ~/.agents/skills, /shared/team-skills).
Changes:
- agent/skill_utils.py: add get_external_skills_dirs() and get_all_skills_dirs()
- agent/prompt_builder.py: scan external dirs in build_skills_system_prompt()
- tools/skills_tool.py: _find_all_skills() and skill_view() search external dirs;
security check recognizes configured external dirs as trusted
- agent/skill_commands.py: /skill slash commands discover external skills
- hermes_cli/config.py: add skills.external_dirs to DEFAULT_CONFIG
- cli-config.yaml.example: document the option
- tests/agent/test_external_skills.py: 11 tests covering discovery, precedence,
deduplication, and skill_view for external skills
Requested by community member primco.
What this PR does
Adds a
skills.external_dirsconfig option that lets users point Hermes at additional skill directories outside~/.hermes/skills/. Skills in external dirs are discovered alongside local skills — they show up in the system prompt index,skills_list,skill_view, and/skillslash commands.Requested by community member primco who maintains a shared
~/.agents/skills/directory across multiple AI tools and didn't want skills locked into Hermes.Config
Paths support
~expansion and${VAR}substitution (existing config feature). Non-existent dirs are silently skipped.Design decisions
skill_manage(create/edit/delete) always writes to~/.hermes/skills/Files changed (7 files, +446/-93)
agent/skill_utils.pyget_external_skills_dirs()andget_all_skills_dirs()helpersagent/prompt_builder.pybuild_skills_system_prompt()tools/skills_tool.py_find_all_skills(),skill_view(), security check updatedagent/skill_commands.py/skillslash commands discover external skillshermes_cli/config.pyskills.external_dirsin DEFAULT_CONFIGcli-config.yaml.exampletests/agent/test_external_skills.pyTests