beta — in daily use for months

Skills that follow the project, not the session.

The same skill, copy-pasted into four repos, drifting apart since the day you wrote it. Skill Tree keeps one canonical copy and symlinks it into the projects that need it.

SYNCS INTO
  • Claude Code
  • Codex
  • Pi
  • opencode
REGISTRYreact-componentstailwind-setupplaywright-e2e+ bundlesweb-clientfrontend bundledocs-sitefrontend bundlecli-toolrust-cli bundleSYMLINKS, NOT COPIESREGISTRYreact-componentstailwind-setup+ playwright-e2e, bundles…web-clientfrontend bundledocs-sitefrontend bundlecli-toolrust-cli bundleSYMLINKS, NOT COPIES
01 — THE PROBLEM

Skills come in two scopes, and both are wrong.

GLOBAL — EVERYTHING, ALWAYS~/.claude/skills/reacttailwindclapplaywright…and 22 moreweb-clientdocs-sitego-serviceevery skill, every prompt, every repo~/.claude/skills/reacttailwindplaywright…and 22 moreweb-clientdocs-sitego-serviceevery skill, every prompt, every repo

Your Tailwind conventions ride into the Go service. You pay for them in tokens on every prompt, and in attention the model spends on instructions the task never needed.

PER-REPO — COPIES THAT DIVERGEweb-clientreact-comp.mdtailwind.mdedited 2 days agodocs-sitereact-comp.mdtailwind.mdedited 5 weeks agoadmin-panelreact-comp.mdtailwind.mdedited 4 months agothree copies · no connection between themweb-clientreact-comp.mdtailwind.mdedited 2 days agodocs-sitereact-comp.mdtailwind.mdedited 5 weeks agoseparate copies · no connection

Right scope, no shared spine. You sharpen react-comp.md in one repo and the other two are quietly wrong — still teaching the version you moved past, until you remember to go copy it across.

02 — HOW IT WORKS

One registry. Symlinks, not copies.

~/.skill-hub/react-componentstailwind-setupplaywright-e2e◆ frontend bundlereact + tailwind + e2eweb-client◆ frontend — 3 symlinksdocs-site◆ frontend — 3 symlinkscli-toolclap-conventions — 1 symlink→ .claude/skills/ · .agents/skills/~/.skill-hub/react-componentstailwind-setupplaywright-e2e◆ frontend bundlereact + tailwind + e2eweb-client◆ frontend — 3 symlinkscli-toolclap-conventions — 1 symlink→ .claude/skills/ · .agents/skills/
01 · The registry

Every skill collapses into one canonical home on your machine. Bundles sit beside them — named sets like frontend, so a stack you've built before is one object, not a checklist.

02 · Equip a project

The project doesn't get a copy — it gets a symlink. Sharpen the skill in the registry, hit sync once, and every project that has it equipped is current. Drift isn't a discipline you keep up; it's structurally impossible.

hub syncor one click in the app —every project, every agent, at once

03 · Equip a bundle

Assign frontend and every skill in it lands at once, in each agent's own directory. Nothing hand-picked, nothing forgotten.

Everything stays local. The registry optionally pushes to your own private GitHub repo — backup, and the same loadout on your other machine.

03 — THE APP

Your whole setup, on one screen.

Skill Tree project workspace with skills equipped
One project, everything it's equipped with — skills landed directly, skills arriving through a bundle, and which agents they've been written into. This is the registry model, made clickable.
Agent docs overview
Agent docs. Every AGENTS.md and CLAUDE.md in the project, in one place, editable — including the nested ones you forgot were there.
Snippets — reusable agent-doc blocks
Snippets. The same idea one level down: instruction blocks shared across projects, updated in one place. Permissions and hooks work the same way — newer, already useful.
04 — THREE WAYS IN

One registry. Nothing trapped in a GUI.

The app

Click it. Library, per-project loadouts, bundle assignment, agent docs — the whole registry, visible at once.

The CLI

Script it. The app drives the same CLI you can run yourself — hub sync, equip, bootstrap. Skip the app entirely if that's your preference; nothing depends on it.

The MCP service

Optional, off by default. Lets the agent read and edit its own skills mid-session — useful when you'd rather refine a skill inside the conversation than write it out by hand.

05 — GET IT

Day one starts from your setup.

First run reads the skills you already have — ~/.claude/skills/, ~/.codex/skills/, your project folders — and builds the registry out of them. Nothing to author before it's useful.

Free, Apache-2.0. Installers for macOS, Windows and Linux; macOS is the one tested so far. The app updates itself when a new release lands.

Not installing today? Read the docs
PREBUILT APPGrab the installer from the latest release and open it.

Not yet notarized — first launch on macOS needs xattr -dr com.apple.quarantine "/Applications/Skill Tree.app"

OR FROM SOURCE · PYTHON 3.11+
git clone https://github.com/Ramtoi/skill-tree.git
cd skill-tree
python3 hub.py bootstrap     # imports your existing skills