skills-registry

v0.7.0 · Apache-2.0 · Free & open source

One GitHub repo.
Every AI agent.
Every device.

Your skills live in one repo you own. Access them from any device — laptop, desktop, cloud VM — via the CLI or MCP. No more copying SKILL.md files across machines. No more syncing ~/.claude, ~/.cursor, ~/.codex folders by hand. One registry. Everywhere you work.

curl … install.sh | sh  ·  needs gh + git

50+

AI tool dot-folders auto-detected at bootstrap

2

MCP tools exposed — list_skills, get_skill

Devices — one registry accessible everywhere

1

Command to install & wire up every agent on any machine

The problem

Skills trapped on one machine. Copied by hand. Out of sync everywhere.

Your best code-review skill lives on your work laptop. Your React component library skill is on your desktop. Your cloud VM has neither. Every AI tool hoards its own local skills folder, and you are the human sync cable — copy-pasting SKILL.md files, rsyncing dot-folders, DMing yourself snippets. Worse, every skill gets auto-loaded into startup context whether you need it or not. You pay tokens for skills you'll never use this conversation.

Before · local dot-folders

Duplication, drift, token bloat

  • ~/.claude/skills/code-review/SKILL.md
  • ~/.cursor/skills/code-review/SKILL.md
  • ~/.codex/skills/code-review/SKILL.md
  • ~/.factory/skills/code-review/SKILL.md
  • …and 46 other agents you forgot about
  • All loaded on every startup. Every conversation.
After · skills-registry

One repo. Every device. Fetched on demand.

  • anand-92/my-skills/code-review/SKILL.md
  • Same skills on laptop, desktop, and cloud VM
  • Every agent on every device points to the same repo
  • Edit once — every machine sees the update instantly
  • Pointer file in each agent's dot-folder (~200 bytes)
  • Real skill fetched only when needed

How it works

Single source of truth. Six deliberate constraints.

Every design decision falls out of one constraint: the MCP server runs in a stripped container — no shell PATH, no SSH agent, no git config user.email. So it doesn't depend on any of them.

01

One registry, every device

Install the CLI on any machine and point it at the same GitHub repo. Your skills follow you — laptop, desktop, remote server, or fresh VM. No manual syncing, no drift between devices.

02

Fetched on demand

Tiny pointer file in each agent's dot-folder. The actual skill is downloaded the moment get_skill(slug) is called — and not before. No startup-token tax, no bloat.

03

gh-only GitHub I/O

No git shell-out. No SSH. No embedded HTTP. Every call routes through the user's authenticated GitHub CLI via the Git Data API.

04

Tree-SHA cache

Skills cached in ~/.cache/skills-mcp/skills/. Cache key is GitHub's tree SHA — force-pushes and subtree changes invalidate correctly.

05

Path-traversal hardened

Every write — publish, add, sync — rejects .. segments and backslash traversals. 2 MiB cap per file. Same validation in Python and Go.

06

Git, but for skills

The registry is a real GitHub repo. Branch it, PR it, fork a teammate's, restore old versions. Apache-2.0 — yours forever.

Comparison

Why not just keep using local folders or a dotfiles repo?

CapabilityLocal dot-foldersDotfiles reposkills-registry
One home for every agentduplicatedyesyes
Access from any device (no manual sync)nomanualyes
Fetched on demand (no startup tokens)nonoyes
Versioned + branchablenoyesyes
Works in every MCP clientpartialnoyes
Share / fork between usersnoclunkyclone the repo
No shell or SSH config neededyesnoyes

Architecture

Two deliverables. One source repo.

A hosted MCP server your agents connect to, and a Go CLI you install once. No Python to manage locally — the server runs as a service.

skills-registry-mcp (hosted)Python 3.10+

Hosted FastMCP at mcp.skills-registry.dev. OAuth via GitHub. Two read-only MCP tools: list_skills, get_skill. Skills served from each user's linked repo via a GitHub App installation token.

Hosted at mcp.skills-registry.dev · Streamable HTTP

skills-registryGo 1.24+

Charmbracelet TUI manager — onboarding wizard + dashboard hub for day-to-day skill management. Commands: list, get, sync, add, publish, remove.

GitHub Releases · darwin/linux/windows × amd64/arm64

MCP surface

Two read-only tools. Any MCP client can call them.

list_skills

Enumerates every skill in your linked registry. Returns a markdown table with slug, name, description, and the URI to fetch.

read
get_skill(slug)

Returns the raw SKILL.md for one slug, served straight from your registry repo via the GitHub App installation token.

read

Agents call list_skills and get_skill on demand — you just say "what skills do I have?" or "use the code-review skill on this PR" and the agent picks the right tool.

// Claude Code / Claude Desktop / Cursor / VS Code - mcp.json
{
  "mcpServers": {
    "skills-registry": {
      "type": "http",
      "url": "https://mcp.skills-registry.dev/mcp"
    }
  }
}

skills-registry prints this snippet for you on first run.

Install

One command. Five things happen.

  1. Install the CLI

    One-liner: curl … install.sh | sh drops the Go binary into ~/.local/bin/skills-registry.

  2. Run skills-registry

    Bare invocation launches the onboarding wizard the first time, then routes to the dashboard hub on every subsequent run.

  3. Wizard creates your registry repo

    Scans local dot-folders, calls gh repo create, and pushes every skill it found in one git push.

  4. Paste the MCP JSON snippet

    The wizard prints a ready-to-paste mcp.json block pointing at https://mcp.skills-registry.dev/mcp. Drop it into your client config.

  5. Install the GitHub App + restart

    Authorize the skills-registry-mcp GitHub App on your registry repo, restart your MCP client, and the hosted server starts serving skills.

# Drops the Go binary into ~/.local/bin/skills-registry
$ curl -fsSL https://raw.githubusercontent.com/anand-92/skills-registry/main/install.sh | sh

# Then run the wizard:
$ skills-registry

Prereqs: gh authenticated (gh auth login). macOS, Linux.

CLI reference

The skills-registry binary

Charmbracelet TUI for day-to-day management. Same Git-Data-API publish flow as the MCP server, mirrored in Go.

CommandWhat it does
skills-registry bootstrapFirst-run setup. Idempotent — safe to re-run.
skills-registry listFuzzy-filterable TUI of every skill in your registry. Press / to search, Enter to preview.
skills-registry get <slug>Download one skill into ./skills-registry/<slug>/.
skills-registry syncPush local skills sitting in .claude/skills, .cursor/skills, etc. that aren't yet in the registry.
skills-registry add <owner/repo>Clone a teammate's registry. Multi-select which of their skills to pull into your own.
skills-registry publish <path>Publish a single local skill folder. Path-traversal validated. 2 MiB per-file cap.
skills-registry remove <slug>Atomic delete — drops the slug from the registry (single Git Data API commit with null-SHA tree entries), the local cache, and every agent dot-folder.
skills-registry --versionPrint version. Current: 0.7.x.

Override the registry per-process with SKILLS_REGISTRY=owner/repo — useful for browsing a teammate's read-only.

Free, open, and pre-1.0. Try it today.

Apache-2.0. No accounts. No telemetry. No paid tier — ever. Built by anand-92 as an open-source dev tool. Star the repo or file an issue if it breaks.

skills-registry★ Star on GitHubMCP surface stable · internals may shift between minor versions