Skill Bridge
Manage a central library of Claude Code skills and activate them per-project — without committing them to the repository.

The Problem
Claude Code skills live inside .claude/skills/ in each project. If you write a useful skill, reusing it means copying it to every project that needs it, keeping those copies in sync, and deciding whether to commit them. Skill Bridge solves all three problems at once.
How It Works
Skills are stored once, in a central library. Activating a skill in a project drops a symlink (or an optional copy) into the project's .claude/skills/ directory. Because it's a symlink, edits to the library skill are reflected in every project immediately. Because the symlink is added to .git/info/exclude, it never appears as an untracked file — .gitignore stays clean and your teammates never see it.
~/.vscode/.../skillbridge/ ← library (one source of truth)
my-skill/
SKILL.md
/your-project/.claude/skills/
my-skill -> ../../../../.../my-skill ← symlink
Features
- Central library — all skills in one location, browsable in the sidebar.
- Per-project activation — tick a checkbox to activate or deactivate a skill in any registered project.
- Global activation — bundled skills are automatically symlinked to
~/.claude/skills/ and available in every Claude Code session without per-project setup.
- Git-safe by default — activated skills are automatically added to
.git/info/exclude.
- Import — bring an existing project skill into the library in one click, with an option to replace the local copy with a symlink.
- Export / Import — back up your entire library as a ZIP or share it with teammates.
- Skill templates — create new skills from a template picker (prompt redirect, Bash command, or blank).
- Bundled skills — ships with a pre-authored
skillbridge-creating-skills skill that explains how to author skills effectively.
- Hub panel — overview of how Skill Bridge works, with Export / Import controls.
Usage
- Click the Skill Bridge icon in the activity bar.
- Library — use
+ to create a skill, or pick from the template picker. Existing skills at the configured library path appear automatically.
- Projects — your open workspace is registered automatically. Use
+ to add other projects.
- Tick the checkbox next to a skill in the Projects panel to activate it. Untick to remove the symlink. A notification will remind you to restart your Claude Code session to apply the change.
- Use Import on a local skill (shown under a project but not in the library) to move it into the library.
- Use the Hub (? icon) to export your library as a ZIP or import skills from a teammate's ZIP.
A skill is a folder named after the skill containing a SKILL.md file:
my-skill/
SKILL.md
SKILL.md uses YAML frontmatter followed by a markdown body:
---
name: my-skill
description: One sentence Claude reads to decide when to trigger this skill.
---
Instructions for Claude go here.
The description field is what Claude Code uses to match the skill to a user's intent; keep it concise and specific.
Settings
| Setting |
Default |
Description |
skillBridge.libraryPath |
(extension storage) |
Absolute path to the skill library. Leave empty to use VS Code's managed extension storage. Supports ~ expansion. |
skillBridge.applyMode |
symlink |
symlink — a single source; edits propagate instantly. copy — an independent copy placed in the project. |
skillBridge.autoGitExclude |
true |
Automatically add the activated skill to .git/info/exclude to keep it out of git without touching .gitignore. |
Development
npm install
npm run compile # one-off build
npm run watch # incremental build
# Press F5 in VS Code to open an Extension Development Host
npm run package # produce a .vsix for local install
Notes
- Portable backup — skills are automatically mirrored to
~/.claude/skill-library whenever they are created, duplicated, or imported. This keeps a portable copy independent of VS Code's extension storage.
- Windows —
applyMode: symlink uses a directory junction, which does not require administrator rights.
- Git worktrees —
.git/info/exclude management only applies to standard repositories. Worktrees (where .git is a file, not a directory) are skipped silently.
- Deleting a library skill deactivates it from all registered projects before removing it.
- Foreign symlinks (symlinks pointing somewhere other than the library) are detected and shown in the Projects panel but cannot be toggled — remove them manually first.