Skip to content

Feature: install local path as symlink so app-bundled skills stay in sync automatically #206

@hhh2210

Description

@hhh2210

Problem

skillshare install <local-path> always copies the skill directory into the skillshare source tree. This works fine for standalone skills but breaks the expected workflow when the skill is owned by another application that ships it as part of its bundle.

Concrete example — Surge for macOS:

Surge ships a built-in skill at /Applications/Surge.app/Contents/Resources/Skills/surge. This skill describes every surge-cli command and is the authoritative reference for the Surge skill. The app team maintains and updates it with each release.

After skillshare install /Applications/Surge.app/Contents/Resources/Skills/surge, skillshare creates a snapshot copy in ~/.config/skillshare/skills/surge/. When Surge updates (e.g., new commands added to command-reference.md), the copy silently falls behind. There is no skillshare update path because the source is not a git repo — the only fix is to re-run skillshare install --force, which most users will not remember to do.

The workaround is to manually delete the copy and create a symlink in the source directory pointing to the app bundle path — but this bypasses skillshare's metadata and requires direct edits to the source directory, which CONTRIBUTING.md explicitly discourages.

Proposed Solution

Add a --link flag to skillshare install for local paths:

skillshare install --link /Applications/Surge.app/Contents/Resources/Skills/surge

Instead of copying the directory, skillshare places a symlink in the source tree:

~/.config/skillshare/skills/surge  →  /Applications/Surge.app/Contents/Resources/Skills/surge

The skill content always reflects the live app bundle. No manual re-install needed after app updates.

Other design points worth discussing in a proposal:

  • skillshare list should display linked skills with a distinct indicator (e.g. → /path/to/source) so users can see which skills are live-linked vs. copied
  • skillshare check / skillshare update should handle linked skills gracefully (skip or report "externally managed")
  • skillshare uninstall should remove the symlink without touching the target directory
  • skillshare doctor could warn when a link target no longer exists

Who Is Affected

Anyone who installs skills that are bundled and maintained by another application (e.g. Surge, or any CLI tool that ships its own skill file). Also useful for developers who author a skill in one repo and want it live-linked into their skillshare source without maintaining a copy.

Alternatives Considered

  • Re-run install --force after each app update — fragile, easy to forget, breaks the "install once" contract
  • Manual symlink in source dir — works but bypasses skillshare metadata/tracking entirely
  • Watch-based auto-sync — heavier than needed; a simple symlink at install time is sufficient

Metadata

Metadata

Assignees

Labels

featureNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions