{"id":50112183,"url":"https://github.com/anand-92/skills-registry","last_synced_at":"2026-06-05T07:01:15.870Z","repository":{"id":359438338,"uuid":"1246047187","full_name":"anand-92/skills-registry","owner":"anand-92","description":"Your personal GitHub registry for AI Agent Skills. One repo. EVERY agent. EVERY device. Loaded on demand — Zero startup bloat.","archived":false,"fork":false,"pushed_at":"2026-05-27T05:20:13.000Z","size":7085,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T17:25:44.754Z","etag":null,"topics":["agent-skill","agent-skills","ai-tools","claude","claude-code","cli","codex","cursor","fastmcp","go","mcp","model-context-protocol","python","registry","skills"],"latest_commit_sha":null,"homepage":"https://skills-registry.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anand-92.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-21T20:24:37.000Z","updated_at":"2026-05-27T05:19:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/anand-92/skills-registry","commit_stats":null,"previous_names":["anand-92/skills-mcp","anand-92/skills-registry"],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/anand-92/skills-registry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anand-92%2Fskills-registry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anand-92%2Fskills-registry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anand-92%2Fskills-registry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anand-92%2Fskills-registry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anand-92","download_url":"https://codeload.github.com/anand-92/skills-registry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anand-92%2Fskills-registry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33619972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-skill","agent-skills","ai-tools","claude","claude-code","cli","codex","cursor","fastmcp","go","mcp","model-context-protocol","python","registry","skills"],"created_at":"2026-05-23T13:02:16.409Z","updated_at":"2026-06-05T07:01:15.856Z","avatar_url":"https://github.com/anand-92.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"docs/img/banner-v2.jpg\" alt=\"skills-registry — One GitHub repo. Every AI agent. Skills fetched on demand.\" width=\"100%\"\u003e\n\n# skills-registry\n\n**One GitHub repo, every AI agent. Skills fetched on demand — not auto-loaded into every startup context.**\n\n[![CI](https://github.com/anand-92/skills-registry/actions/workflows/ci.yml/badge.svg)](https://github.com/anand-92/skills-registry/actions/workflows/ci.yml)\n[![License](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE)\n[![MCP](https://img.shields.io/badge/MCP-compatible-purple.svg)](https://modelcontextprotocol.io)\n[![Built with FastMCP](https://img.shields.io/badge/built%20with-FastMCP-orange.svg)](https://github.com/jlowin/fastmcp)\n[![Stars](https://img.shields.io/github/stars/anand-92/skills-registry?style=social)](https://github.com/anand-92/skills-registry/stargazers)\n\n\u003c/div\u003e\n\n---\n\n## What it does\n\nAI tools like Claude Code, Cursor, Codex, Goose, and Windsurf auto-load every installed skill into the agent's startup context — tokens you pay for whether the agent uses them or not.\n\n`skills-registry` flips this: skills live in **one GitHub repo you own**, and agents fetch them on demand through a hosted MCP server. Each agent auto-loads only a tiny pointer file telling it *how* to fetch the rest.\n\n**You get:**\n\n- 🪶 **Lighter agent startup.** Skills no longer balloon every conversation's context window. Agents pull what they need, when they need it.\n- 🏠 **One home for your skills.** Stop syncing `~/.claude/skills`, `~/.cursor/skills`, and `~/.factory/skills` by hand. Edit once, every agent sees it.\n- 🚀 **Share and version like code.** Your registry is a Git repo — branch it, PR it, fork a teammate's, restore old versions.\n\n---\n\n## What's a \"skill\"?\n\nA skill is a folder containing a `SKILL.md` (Markdown with optional YAML frontmatter) plus any supporting files the agent might need.\n\n```markdown\n---\nname: PDF Processing\ndescription: Extract and summarize PDF documents\n---\n\n# PDF Processing\n\nWhen the user asks about a PDF, do the following:\n1. Read the file with the pdf-text tool\n2. Summarize section by section\n...\n```\n\nOne file, plus any reference docs or examples. Most modern AI coding tools already understand this format; `skills-registry` keeps them in one place.\n\n---\n\n## Quick start\n\n\u003e **You need:** [GitHub CLI](https://cli.github.com/) installed and authenticated (`gh auth status` succeeds), and `git` on `PATH` (only for the first-time bulk push). No Python — the MCP server is hosted.\n\n**macOS / Linux**\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/anand-92/skills-registry/main/install.sh | sh\nskills-registry\n```\n\n**Windows (PowerShell)**\n\n```powershell\npowershell -c \"\u0026 ([scriptblock]::Create((irm https://raw.githubusercontent.com/anand-92/skills-registry/main/install.ps1)))\"\nskills-registry\n```\n\nThe installer drops the `skills-registry` Go binary into `~/.local/bin/`. Bare `skills-registry` routes automatically:\n\n- **First-time users** → **onboarding wizard** (alt-screen TUI): scan dot-folders → pick repo name/visibility → push every skill with one `git push` → pick agents to wire up → optionally delete the now-redundant local copies → print the hosted-MCP JSON snippet.\n- **Returning users** → **dashboard hub** with cards for Manage / Sync / Add / Publish / Purge / Settings.\n- **Piped / `--json` invocations** → usage text instead of a TUI (safe to drop into scripts).\n\nThe wizard ends with a JSON snippet for your MCP client config, pointing at `https://mcp.skills-registry.dev/mcp`. Your client handles the GitHub OAuth on first connect; the server can then read and (with permission) write to your registry repo.\n\nPaste the printed JSON into your MCP client config, reload, and ask:\n\n\u003e *\"What skills do I have available?\"*\n\u003e *\"Get the `code-review` skill and use it on this PR.\"*\n\nThe agent calls `search_skills` and `get_skill` automatically — you never touch the MCP tools directly.\n\n---\n\n## Daily use\n\nRun `skills-registry` for the dashboard, or use subcommands directly:\n\n| What you want | Command |\n|---|---|\n| Open the dashboard | `skills-registry` |\n| Browse + durably install skills into selected agent dot-folders | `skills-registry list [--query QUERY] [--plain]` |\n| Fuzzy-search your registry returning top 10 matches | `skills-registry search [QUERY]` |\n| Pull one skill into the global cache (`~/.cache/skills-mcp/skills/\u003cslug\u003e/`; override with `--dest`) | `skills-registry get \u003cslug\u003e [--dest PATH]` |\n| Push skills sitting in `.claude/skills` etc. into the registry | `skills-registry sync [--all]` |\n| Pull a skill from someone else's repo into yours + install locally | `skills-registry add \u003csource\u003e [--all]` |\n| Publish a new skill from a local folder | `skills-registry publish \u003cpath\u003e` |\n| Delete a skill from the registry + cache + agent dot-folders | `skills-registry remove \u003cslug\u003e` |\n| Update the installed binary to the latest release | `skills-registry update` |\n| Re-run the wizard / bootstrap (idempotent) | `skills-registry bootstrap` |\n\nMost users only touch `list`, `get`, and `publish`. The TUI is fuzzy-filterable; press `/` to search, Enter on a row to pick which agent dot-folders should receive a durable install — `.agents/skills` is always-on; popular agents are pre-checked. `get` stays the cache-only fetch for one-shot agent reads.\n\n### `remove`: delete a skill end-to-end\n\n```bash\nskills-registry remove code-review\n```\n\n`remove` is destructive. It deletes the slug from three places at once:\n\n1. The GitHub registry repo — single atomic commit via the Git Data API.\n2. The local cache (`~/.cache/skills-mcp/skills/\u003cslug\u003e/` + `\u003cslug\u003e.meta.json`).\n3. Every known AI tool dot-folder copy (`~/.claude/skills/\u003cslug\u003e/`, `~/.factory/skills/\u003cslug\u003e/`, `.agents/skills/\u003cslug\u003e/`, …).\n\nInteractive runs prompt for confirmation first. Pass `--yes` to skip it, or `--json` (which implies `--yes`) for machine-readable output. Removing a slug that isn't in the registry exits 1 cleanly — nothing destructive runs.\n\n### `update`: self-update the installed binary\n\n```bash\nskills-registry update                  # pull the newest GitHub release\nskills-registry update --dry-run        # show what would change, write nothing\nskills-registry update --version v0.6.0 # pin a specific tag\nskills-registry update --force          # reinstall even if you're already current\n```\n\n`update` mirrors the installer — it hits `api.github.com` to resolve the latest tag, downloads `skills-registry_\u003cos\u003e_\u003carch\u003e.tar.gz` (or `.zip` on Windows) directly from GitHub Releases, and atomically swaps the binary in place. No `gh` required, no auth, no shell state. Supports `darwin/linux/windows × amd64/arm64`. Set `SKILLS_REGISTRY_AUTO_UPDATE=1` in your shell to check for updates automatically right before the hub opens.\n\n### Programmatic use — `--json`\n\nEvery subcommand accepts a persistent `--json` flag. With it, the CLI suppresses TUIs and prompts and emits a single JSON payload to stdout. Errors land as `{\"error\": \"...\"}` with a non-zero exit. Use this when an agent or script drives the binary.\n\n| Command | Payload shape |\n|---|---|\n| `skills-registry list --json` | `[{\"slug\", \"name\", \"description\"}, …]` |\n| `skills-registry search [QUERY] --json` | `[{\"slug\", \"name\", \"description\"}, …]` |\n| `skills-registry get \u003cslug\u003e --json` | `{\"slug\", \"path\"}` (on-disk dest) |\n| `skills-registry publish \u003cpath\u003e --json` | `{\"slug\", \"sha\", \"url\"}` |\n| `skills-registry sync --json` | `{\"pushed\": [...slugs], \"skipped\": [...slugs]}` |\n| `skills-registry add \u003csource\u003e --json` | `{\"pushed\": [...slugs], \"skipped\": [...slugs], \"installed\": {\u003cslug\u003e: [...paths]}}` |\n| `skills-registry remove \u003cslug\u003e --json` | `{\"slug\", \"removed_from\": [...], \"sha\", \"repo\"}` |\n| `skills-registry update --json` | `{\"updated\", \"version\", \"asset\", \"path\", \"message\"}` |\n\nDestructive commands (`sync`, `remove`) auto-promote `--yes` when `--json` is set, so piped invocations never hang on a Bubble Tea prompt that can't render.\n\n---\n\n## vs. the alternatives\n\n|  | Local dot-folders | Dotfiles repo | **skills-registry** |\n|---|:---:|:---:|:---:|\n| One home for all your agents | ❌ duplicated | ✅ | ✅ |\n| Fetched on demand (no startup tokens) | ❌ | ❌ | ✅ |\n| Versioned + branchable | ❌ | ✅ | ✅ |\n| Works in every MCP client | partial | ❌ | ✅ |\n| Share / fork between users | ❌ | clunky | ✅ (just clone the repo) |\n| No shell or SSH config needed | ✅ | ❌ | ✅ |\n\n---\n\n## Configuration\n\nThe wizard sets sensible defaults. Override via shell env when needed:\n\n| Variable | Default | What it does |\n|---|---|---|\n| `SKILLS_REGISTRY` | (from config) | Point at a different registry for one command: `owner/repo` or `owner/repo@branch`. Great for browsing a teammate's. |\n| `SKILLS_LOG_LEVEL` | `INFO` | Bump to `DEBUG` when debugging. |\n| `SKILLS_REGISTRY_VERSION` | `latest` | Pin the installer to a release tag (`v0.7.0`, etc.). |\n| `SKILLS_BIN_DIR` | `~/.local/bin` | Where the installer drops the `skills-registry` binary. |\n| `SKILLS_REGISTRY_AUTO_UPDATE` | unset | Set to `1`/`true`/`yes` to opportunistically run `skills-registry update` before opening the hub. Errors are warning-logged, never fatal. |\n| `XDG_CONFIG_HOME` / `XDG_CACHE_HOME` | OS default | Where the registry config and skill cache live. |\n\nThe registry repo URL itself lives in `~/.config/skills-mcp/registry.toml`.\n\n---\n\n## Troubleshooting\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\"gh not found\" or exit code 3\u003c/strong\u003e\u003c/summary\u003e\n\nInstall GitHub CLI from \u003chttps://cli.github.com/\u003e and run `gh auth login`. `skills-registry` uses `gh` for every GitHub call — no SSH keys, no `git config user.email` required — so it must be on your `PATH` (or in `~/.local/bin`, `/opt/homebrew/bin`, `/usr/local/bin`, or `/usr/bin`).\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\"No registry configured\"\u003c/strong\u003e\u003c/summary\u003e\n\nThe wizard hasn't run yet, or `~/.config/skills-mcp/registry.toml` is missing. Run `skills-registry` (it opens the wizard first run), or set `SKILLS_REGISTRY=owner/repo` directly.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eThe MCP server doesn't show up in my client\u003c/strong\u003e\u003c/summary\u003e\n\nPaste the wizard's JSON snippet into your client's MCP config and fully restart the client (not just reload). On first connect the client opens a browser to authorize the Skills Registry GitHub App on your registry repo — accept it. If the server says \"no repo linked yet\", install the GitHub App via the link in the error and retry; the webhook auto-links within seconds.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMultiple GitHub accounts\u003c/strong\u003e\u003c/summary\u003e\n\n`skills-registry` uses whichever account `gh auth status` reports active. Use `gh auth switch` to pick the right one.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\"git not found\" during onboarding\u003c/strong\u003e\u003c/summary\u003e\n\nThe first-time bulk push uses a single `git push` to dodge GitHub's secondary rate limit. Install git (macOS: `brew install git`; Linux: `apt install git` / `dnf install git`; Windows: https://git-scm.com/downloads) and re-run. After onboarding, `git` is no longer needed — `publish` and `remove` route through `gh api`.\n\u003c/details\u003e\n\n---\n\n## Manual MCP client config\n\nThe wizard prints this JSON; if you prefer wiring it up by hand:\n\n```json\n{\n  \"mcpServers\": {\n    \"skills-registry\": {\n      \"url\": \"https://mcp.skills-registry.dev/mcp\"\n    }\n  }\n}\n```\n\nDrop it into your client's `mcp.json` (Claude Code, Claude Desktop, Cursor, VS Code+Copilot all use the same shape). On first connect, your client opens a browser to authorize the Skills Registry GitHub App on your registry repo. After that, every `search_skills` / `get_skill` call goes through the hosted server — no local binary required.\n\n\u003e **Codex.** Codex's TOML config only accepts stdio MCPs (`command = \"...\"`), and the hosted server speaks Streamable HTTP. Not supported yet — use the CLI directly (`skills-registry list`, `skills-registry get \u003cslug\u003e`).\n\n---\n\n## Project status\n\n`skills-registry` is at **v0.7** — usable day-to-day but pre-1.0. The hosted MCP read tools (`search_skills`, `get_skill`) and the CLI commands (`list` / `get` / `sync` / `add` / `publish` / `remove` / `search`) are stable. Internals may shift between minor versions; pin a CLI release with `SKILLS_REGISTRY_VERSION` if needed.\n\nFound a bug? Have an idea? [Open an issue](https://github.com/anand-92/skills-registry/issues). PRs welcome — see [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n---\n\n## Repo layout\n\n- [`cli/`](cli) — the Go binary users install (TUI + headless subcommands).\n- [`mac-app/`](mac-app) — native macOS app (SwiftUI, Apple Silicon) for managing the registry: GitHub login, browse with rich markdown + fuzzy search, publish/remove, bulk-import local skills, and 1-click CLI install. See its [README](mac-app/README.md).\n- [`install.sh`](install.sh) — POSIX one-shot installer for the Go binary.\n- [`docs/`](docs) — architecture deep-dive (`registry.md`) and supporting docs.\n- [`infa-not-for-users/`](infa-not-for-users) — the hosted MCP server (Python + FastMCP), Dockerfile, and Railway config. **Maintainer-only**; see its README for deployment details.\n- [`website/`](website) — Next.js landing page (`skills-registry.dev`).\n\n---\n\n## More\n\n- 📖 [`docs/registry.md`](docs/registry.md) — architecture deep dive (Git Data API, caching, atomic publish)\n- 🛡️ [`SECURITY.md`](SECURITY.md) — threat model and reporting\n- 🤖 [`AGENTS.md`](AGENTS.md) — contributor notes for AI assistants working in this repo\n\n---\n\n[Apache-2.0](LICENSE) · made by [@anand-92](https://github.com/anand-92)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanand-92%2Fskills-registry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanand-92%2Fskills-registry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanand-92%2Fskills-registry/lists"}