Claude Skilllink
AI-powered skill and agent symlink manager for Claude Code.
Stop stuffing every skill and agent into ~/.claude and blowing up your context window. skilllink lets you maintain a master library of Skills, Agents, and Plugins in any folder you want, then intelligently symlinks only what makes sense for each project — guided by Claude.
How it works
~/.skilllink/ ← your master library (hundreds of tools)
catalog.yaml ← index with tags and descriptions
skills/
agents/
plugins/
myproject/.claude/ ← only the tools this project needs
skills/ → symlinks
agents/ → symlinks
- Run
/skill-this-projectin Claude Code — if you don't have a project description yet, Claude will ask and create one for you - Claude reads your catalog and recommends matching tools
- Confirm the list, then run the generated
skilllink applycommand - Symlinks are created — Claude Code only loads what's relevant
Install
One-liner (macOS / Linux):
curl -fsSL https://raw.githubusercontent.com/shaungehring/skilllink/main/install.sh | bash
Or directly from GitHub:
pip install git+https://github.com/shaungehring/skilllink
Or from PyPI (once published):
pip install skilllink
Or from source:
git clone https://github.com/shaungehring/skilllink
cd skilllink
pip install -e .
Setup
1. Point skilllink at your tooling directory
By default it looks at ~/.skilllink. Override with an env var:
export SKILLLINK_TOOLING_DIR=/path/to/your/AITooling
Add this to your ~/.zshrc or ~/.bashrc.
2. Build your catalog
If you already have tools organized in ~/.skilllink:
skilllink scan
This walks your directory, finds all .md files, and generates catalog.yaml with stub entries. It reads YAML frontmatter from each file to pre-populate names, descriptions, and tags. Then edit catalog.yaml to refine — that's what the AI uses to match tools to your project.
We recommend you keep an organized folder structure of agents skills and plugins in your ~/.skilllink folder. You can find Agents, Plugins, and Skills all over Github
Examples
- https://github.com/ComposioHQ/awesome-claude-skills
- https://github.com/travisvn/awesome-claude-skills
- https://awesome-skills.com/
- https://github.com/VoltAgent/awesome-claude-code-subagents
Example agent metadata
---
name: accessibility-tester
description: "Use this agent when you need comprehensive accessibility testing, WCAG compliance verification, or assessment of assistive technology support."
tools: Read, Grep, Glob, Bash
model: haiku
---
Example skill metadata
---
name: ai-agent-development
description: "AI agent development workflow for building autonomous agents, multi-agent systems, and agent orchestration with CrewAI, LangGraph, and custom agents."
category: granular-workflow-bundle
risk: safe
source: personal
date_added: "2026-02-27"
---
If you're starting fresh:
skilllink init
This drops a sample catalog.yaml you can adapt.
3. Install the slash command
Copy the slash command into your global Claude Code config:
mkdir -p ~/.claude/commands
cp .claude/commands/skill-this-project.md ~/.claude/commands/
4. Mark always-on tools
In catalog.yaml, set always_include: true for tools that should exist in every project (project scaffolding agent, git workflow agent, etc.). The skilllink apply command links these automatically — no need to name them explicitly.
Usage
Starting a new project
mkdir myproject && cd myproject
# Open Claude Code
code .
# Then in Claude Code: /skill-this-project
If the project doesn't have a PLAN.md, CLAUDE.md, or README.md yet, Claude will ask you to describe it and write the file for you. Then it reads your catalog, recommends tools, and outputs:
skilllink apply "React Toolkit" "TypeScript Strict Mode" "FastAPI Agent" "PostgreSQL Patterns" "AWS CDK Agent" --scope project
Run that command and your .claude/ is set up.
Manual commands
# See everything in your catalog
skilllink list
# Filter by tag or type
skilllink list --tag python
skilllink list --type agent
# See what's linked in current project
skilllink status
# Link a tool manually
skilllink link "React Toolkit" --scope project
# Remove a symlink
skilllink unlink "React Toolkit"
# Preview without changing anything
skilllink apply "React Toolkit" "FastAPI Agent" --dry-run
# Apply for real
skilllink apply "React Toolkit" "FastAPI Agent" --scope project
catalog.yaml schema
tools:
- name: React Toolkit # Display name — used in CLI and slash command
path: skills/react/SKILL.md # Relative to your tooling directory
type: skill # skill | agent | plugin
tags: # Keywords matched against your project stack
- react
- frontend
- typescript
description: React component patterns and hooks best practices
always_include: false # true = linked in every project automatically
Good tags are specific: react, fastapi, aws, postgres, langgraph. Claude matches these against words it detects in your PLAN.md or CLAUDE.md.
Project structure after setup
myproject/
PLAN.md
CLAUDE.md
.claude/
skills/
react-toolkit.md -> ~/.skilllink/skills/react/SKILL.md
typescript-strict.md -> ~/.skilllink/skills/typescript/SKILL.md
agents/
project-scaffolding-agent.md -> ~/.skilllink/agents/project-init/AGENT.md ★ always
fastapi-agent.md -> ~/.skilllink/agents/fastapi/AGENT.md
Claude Code loads skills and agents from .claude/ — only the symlinks that are there get loaded.
Sharing with the community
The catalog schema is the standard. If you publish a skill or agent:
- Include a
catalog-entry.yamlwith your recommended tags and description - Users drop your tool into their
~/.skilllink/folder - They add your
catalog-entry.yamlcontent to theircatalog.yaml - Done — your tool is discoverable by
/skill-this-project
Contributing
PRs welcome. The core is four files:
skilllink/catalog.py— catalog read/write/scan andToolEntrydataclassskilllink/linker.py— symlink managementskilllink/cli.py— CLI commands (argparse).claude/commands/skill-this-project.md— the Claude Code slash command
Run the test suite:
pip install -e ".[dev]"
pytest
License
MIT