[Description]
When adding an OpenClaw Skill by creating a symbolic link (e.g., ln -s) linking an external folder to the ~/.openclaw/skills/ directory, the Agent fails to recognize or load the skill during session initialization.
[Steps to Reproduce]
- Prepare a physical skill directory: Create a valid skill folder at an arbitrary location, e.g.,
/Users/ray/my-custom-skill/ containing a valid SKILL.md.
- Create a symbolic link: Run
ln -s /Users/ray/my-custom-skill/ ~/.openclaw/skills/my-custom-skill.
- Start/Restart OpenClaw: Observe the available skills in the startup context or via internal checks.
- Observation: The skill
my-custom-skill is absent from the available skills list, even though the symbolic link exists and is traversable via the terminal.
[Expected Behavior]
OpenClaw should recursively resolve symbolic links within the skills/ scan path, allowing developers to manage skills in central repositories while using them via links.
[Environment]
- OpenClaw Version: v2026.3.13
- OS: macOS 26.3 (Apple Silicon)
- Node.js: v25.6.1
[Additional Context]
Converting the symbolic link into a regular physical directory (cp -r) resolves the issue immediately, confirming that the loading logic specifically struggles with symlinks.
[Description]
When adding an OpenClaw Skill by creating a symbolic link (e.g.,
ln -s) linking an external folder to the~/.openclaw/skills/directory, the Agent fails to recognize or load the skill during session initialization.[Steps to Reproduce]
/Users/ray/my-custom-skill/containing a validSKILL.md.ln -s /Users/ray/my-custom-skill/ ~/.openclaw/skills/my-custom-skill.my-custom-skillis absent from the available skills list, even though the symbolic link exists and is traversable via the terminal.[Expected Behavior]
OpenClaw should recursively resolve symbolic links within the
skills/scan path, allowing developers to manage skills in central repositories while using them via links.[Environment]
[Additional Context]
Converting the symbolic link into a regular physical directory (
cp -r) resolves the issue immediately, confirming that the loading logic specifically struggles with symlinks.