diff --git a/website/docs/user-guide/features/skills.md b/website/docs/user-guide/features/skills.md index 28ea452b3bf..9086cfc06b3 100644 --- a/website/docs/user-guide/features/skills.md +++ b/website/docs/user-guide/features/skills.md @@ -236,7 +236,8 @@ Paths support `~` expansion and `${VAR}` environment variable substitution. ### How it works -- **Read-only**: External dirs are only scanned for skill discovery. When the agent creates or edits a skill, it always writes to `~/.hermes/skills/`. +- **Create locally, update in place**: New agent-created skills are written to `~/.hermes/skills/`. Existing skills are modified where they are found, including skills under `external_dirs`, when the agent uses `skill_manage` actions such as `patch`, `edit`, `write_file`, `remove_file`, or `delete`. +- **External dirs are not a write-protection boundary**: If an external skill directory is writable by the Hermes process, agent-managed skill updates can change files in that directory. Use filesystem permissions or a separate profile/toolset setup if shared external skills must stay read-only. - **Local precedence**: If the same skill name exists in both the local dir and an external dir, the local version wins. - **Full integration**: External skills appear in the system prompt index, `skills_list`, `skill_view`, and as `/skill-name` slash commands — no different from local skills. - **Non-existent paths are silently skipped**: If a configured directory doesn't exist, Hermes ignores it without errors. Useful for optional shared directories that may not be present on every machine. @@ -250,7 +251,7 @@ Paths support `~` expansion and `${VAR}` environment variable substitution. └── mlops/axolotl/ └── SKILL.md -~/.agents/skills/ # External (read-only, shared) +~/.agents/skills/ # External (shared, mutable if writable) ├── my-custom-workflow/ │ └── SKILL.md └── team-conventions/