Skip to content

Conversation

@akaihola
Copy link

@akaihola akaihola commented Nov 8, 2025

Fixes #3

Symlinked skill directories are no longer skipped. This allows skills symlinked into e.g. ~/.claude/skills to be discovered by openskills list, openskills sync and openskills manage.

Implementation

In findAllSkills(), remove isDirectory() check to allow symlinks.

The existsSync() call on SKILL.md already follows symlinks, so no explicit symlink handling is needed.

Tests

skills.test.ts adds tests for findSkill() and findAllSkills(), including symlink support.

The added tests cover:

  • Skill discovery in project and global directories
  • Symlinked skill directories
  • Deduplication and priority handling (project over global)
  • SKILL.md parsing and skill metadata extraction
  • Both regular and symlinked skill scenarios

Test isolation and cleanup are included.

Remove isDirectory() check to allow symlinks. The existsSync() call on
SKILL.md already follows symlinks, so no explicit symlink handling is
needed.
This allows skills symlinked into e.g. ~/.claude/skills to be discovered
by `openskills list`, `openskills sync` and `openskills manage`.

Fixes numman-ali#3
…k support

Cover:
- Skill discovery in project and global directories
- Symlinked skill directories
- Deduplication and priority handling (project over global)
- SKILL.md parsing and skill metadata extraction
- Both regular and symlinked skill scenarios

Include test isolation and cleanup.
@akaihola akaihola force-pushed the fix/symlinked-skills branch from 6b9988c to 56cdecb Compare November 8, 2025 18:23
@numman-ali numman-ali requested a review from Copilot November 8, 2025 21:25
@numman-ali
Copy link
Owner

Thank you for the PR @akaihola, have you checked that symlinked skills have no issue being access by your coding agent?

ie when they use the bash tools to read referenced files, or run scripts as part of resources of a skill, it does so without issue?

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds support for symlinked skill directories, allowing skills to be symlinked from external locations while maintaining compatibility with Claude Code's skills system.

  • Removes the isDirectory() check to allow symlinks to be recognized as valid skill entries
  • Adds comprehensive test coverage for symlinked skills including edge cases like deduplication and priority handling
  • Updates documentation to mention symlink support

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
src/utils/skills.ts Removes isDirectory() check to support symlinked directories as valid skill entries
tests/utils/skills.test.ts Adds comprehensive test suite covering symlinked skills, deduplication, and priority handling
README.md Updates documentation to mention symlink support

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@akaihola
Copy link
Author

have you checked that symlinked skills have no issue being access by your coding agent?

I verified that the agent in Zed is able to read and use symlinked skills. It also ran scripts in the skill successfully using the absolute path pointing inside the symlinked directory.

akaihola and others added 2 commits November 18, 2025 21:10
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Add `description` parameter to `createSymlinkedSkill` helper, and
remove the redundant `createSkill` call in symlinked skill test.
Pass `description` directly to `createSymlinkedSkill` instead.
@akaihola
Copy link
Author

akaihola commented Dec 2, 2025

@numman-ali should I refine this further to help prepare for merging?

@numman-ali
Copy link
Owner

Thank you for your help

Released in v1.3.0

@numman-ali numman-ali closed this Dec 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] Don't skip symlinked skill directories

2 participants