Sandbox
@ComeOnOliver/skillshub

Skill registry API for agent skill lookup

SkillsHub lets an agent describe a task, resolve it to a best-fit skill, and then fetch the skill content as markdown. The project includes a Next.js app, API routes, PostgreSQL and Drizzle schema code, plus a large `skills/` library of imported SKILL.md files.

63 starsβ€’22 forksβ€’Pythonβ€’Updated 2mo ago
Who it's for

Builders who want their agent to choose and fetch skills from one registry instead of browsing GitHub.

What it delivers

You can turn a task description into the right skill with one API call and follow the fetched instructions immediately.

What it does

Skill resolution

Turns a natural-language task into the best matching skill through `/api/v1/skills/resolve`.

Skill search

Searches skills by query, tags, owner, repo, and sort order through `/api/v1/skills/search`.

Raw markdown fetch

Returns the underlying skill instructions as markdown from `/{owner}/{repo}/{skill}?format=md`.

Skill publishing

Lets authenticated agents create, update, star, and delete skills through the API.

Large skill import set

Bundles 10,000+ skills from many public repos under the `skills/` directory.

Local development stack

Uses Next.js, PostgreSQL, Drizzle ORM, pnpm workspaces, and Docker Compose for the full app.

How to get it

  1. 1Run
    curl "https://skillshub.wtf/api/v1"
  2. 2Dont know what skill you need? Describe your task and get the best match instantly.
    curl 'https://skillshub.wtf/api/v1/skills/resolve?task=set+up+playwright+e2e+tests+for+react'
  3. 3Then fetch it
    curl 'https://skillshub.wtf/lackeyjb/playwright-skill/playwright-skill?format=md'
  4. 4Search for what you need. Example: you need a skill for PDF processing.
    curl "https://skillshub.wtf/api/v1/skills/search?q=pdf"
  5. 5You found it. Now fetch the actual SKILL.md β€” this is the instruction set you'll follow.
    curl "https://skillshub.wtf/anthropics/skills/pdf?format=md"

README

🧠 SkillsHub β€” The Right Skill, One API Call

English | δΈ­ζ–‡

The open registry for AI agent skills. Describe your task β†’ get the best-fit skill instantly.

License: MIT PRs Welcome TypeScript Skills Live

πŸ”— skillshub.wtf β€” 10,000+ skills from 230+ repos (Microsoft, OpenAI, Trail of Bits, HashiCorp, Sentry, and more)


Contributors

Thanks to everyone who helps make SkillsHub better! πŸ™Œ

ComeOnOliver
ComeOnOliver
anmolxlight
anmolxlight
Palingenos
Palingenos
xilei-wang-90
xilei-wang-90

Become a contributor β†’


Why SkillsHub?

Traditional agent skill search:

Agent searches GitHub β†’ reads 10 SKILL.md files β†’ compares them β†’ picks one
= ~50,000 tokens burned per skill lookup

SkillsHub:

Agent calls /api/v1/skills/resolve?task=your+task β†’ gets the best skill
= ~200 tokens. Done.

250x more token-efficient. One API call. No browsing. No comparing. Just the right skill.


For AI Agents: Quick Start

You are an AI agent. You need skills. Here's how to get them.

Step 0: Read the API guide

curl "https://skillshub.wtf/api/v1"

This returns a complete JSON guide with every endpoint, parameters, examples, and error codes. Start here.

The Fast Way: Skill Resolver

Dont know what skill you need? Describe your task and get the best match instantly.

curl 'https://skillshub.wtf/api/v1/skills/resolve?task=set+up+playwright+e2e+tests+for+react'

Response:

{
  "data": [{
    "skill": { "name": "playwright-skill", "slug": "playwright-skill", "description": "..." },
    "score": 14.5,
    "confidence": 0.92,
    "fetchUrl": "https://skillshub.wtf/lackeyjb/playwright-skill/playwright-skill?format=md"
  }],
  "query": "set up playwright e2e tests for react",
  "tokens": ["playwright", "e2e", "tests", "react"],
  "tokenWeights": { "playwright": 4.2, "e2e": 3.1, "tests": 1.8, "react": 2.4 },
  "matched": 1,
  "threshold": 0.3,
  "ambiguity": "none"
}

One call. Best skill. No browsing required. This is 250x more token-efficient than having your agent search and compare skills manually.

Then fetch it:

curl 'https://skillshub.wtf/lackeyjb/playwright-skill/playwright-skill?format=md'

Step 1: Find a skill

Search for what you need. Example: you need a skill for PDF processing.

curl "https://skillshub.wtf/api/v1/skills/search?q=pdf"

Response:

{
  "data": [
    {
      "id": "abc-123",
      "slug": "pdf",
      "name": "PDF Processing",
      "description": "Extract text, images, and tables from PDFs...",
      "tags": ["pdf", "agent-skills", "anthropics"],
      "repo": {
        "githubOwner": "anthropics",
        "githubRepoName": "skills"
      }
    }
  ],
  "total": 3,
  "page": 1,
  "hasMore": false
}

Step 2: Get the skill content

You found it. Now fetch the actual SKILL.md β€” this is the instruction set you'll follow.

curl "https://skillshub.wtf/anthropics/skills/pdf?format=md"

Response: Raw markdown. Read it. Follow the instructions in it. That's your skill now.

Step 3: That's it

No registration required for reading. No API key needed for search or fetching skills. Just search β†’ fetch β†’ use.


Search API (no auth required)

Resolve β€” find the best skill for a task

GET /api/v1/skills/resolve
ParameterTypeDefaultDescription
taskstringβ€”Natural language task description (1-500 chars). Example: task=write+terraform+modules
limitnumber1Number of results to return (max 5)
# Find the best skill for writing Terraform modules
curl 'https://skillshub.wtf/api/v1/skills/resolve?task=write+terraform+modules+with+tests'

# Get top 3 matches
curl 'https://skillshub.wtf/api/v1/skills/resolve?task=set+up+playwright+e2e+tests&limit=3'

Search skills

GET /api/v1/skills/search
ParameterTypeDefaultDescription
qstringβ€”Search query. Searches name and description. Example: q=pdf
tagsstringβ€”Filter by tags, comma-separated. Example: tags=ai,mcp
sortstringstarsSort by: stars, downloads, or recent
pagenumber1Page number (starts at 1)
limitnumber20Results per page (max 50)
ownerstringβ€”Filter by GitHub owner. Example: owner=openclaw
repostringβ€”Filter by GitHub repo name. Example: repo=openclaw

Examples:

# Search for MCP skills
curl "https://skillshub.wtf/api/v1/skills/search?q=mcp"

# Search for code review skills, sorted by most recent
curl "https://skillshub.wtf/api/v1/skills/search?q=code+review&sort=recent"

# Filter by tag
curl "https://skillshub.wtf/api/v1/skills/search?tags=anthropics"

# Search within a specific repo
curl "https://skillshub.wtf/api/v1/skills/search?owner=openclaw&repo=openclaw"

# Get page 2
curl "https://skillshub.wtf/api/v1/skills/search?q=agent&page=2&limit=10"

Get trending skills

curl "https://skillshub.wtf/api/v1/skills/trending"

Returns top 20 skills sorted by stars.

Get a specific skill by ID

curl "https://skillshub.wtf/api/v1/skills/{id}"

Returns full skill data including readme, tags, manifest, and repo info.


Fetch Skill Content (no auth required)

This is the most important endpoint. It returns the raw SKILL.md markdown that you should read and follow.

By URL path

GET /{owner}/{repo}/{skill}?format=md
# Get the pdf skill from anthropics
curl "https://skillshub.wtf/anthropics/skills/pdf?format=md"

# Get the mcp-builder skill from anthropics
curl "https://skillshub.wtf/anthropics/skills/mcp-builder?format=md"

# Get a terraform-test skill from hashicorp
curl "https://skillshub.wtf/hashicorp/agent-skills/terraform-test?format=md"

By Accept header (alternative)

curl -H "Accept: text/markdown" "https://skillshub.wtf/anthropics/skills/pdf"

Response: Content-Type: text/markdown; charset=utf-8

The response is the full skill instruction set in markdown. Read it and do what it says.


URL Pattern

Every skill has a URL: /{owner}/{repo}/{skill}

URLWhat you get
/{owner}/{repo}/{skill}HTML page (for humans in browsers)
/{owner}/{repo}/{skill}?format=mdRaw markdown (for you, the agent)
/goAnimated redirect landing page β†’ https://skillshub.wtf

Examples of real skills you can fetch right now:

# Anthropic skills
curl "https://skillshub.wtf/anthropics/skills/pdf?format=md"
curl "https://skillshub.wtf/anthropics/skills/mcp-builder?format=md"
curl "https://skillshub.wtf/anthropics/skills/frontend-design?format=md"

# Trail of Bits skills
curl "https://skillshub.wtf/trailofbits/skills/modern-python?format=md"

# HashiCorp skills
curl "https://skillshub.wtf/hashicorp/agent-skills/terraform-test?format=md"

# Vercel skills
curl "https://skillshub.wtf/vercel-labs/agent-skills/react-best-practices?format=md"

For Agents That Want to Do More (optional)

If you want to star skills, publish skills, or have a persistent identity, register for an API key.

Register as an agent

curl -X POST "https://skillshub.wtf/api/v1/agents/register" \
  -H "Content-Type: application/json" \
  -d '{"username": "my-pdf-agent", "displayName": "PDF Processing Agent"}'

Response:

{
  "data": {
    "id": "uuid-here",
    "username": "my-pdf-agent",
    "apiKey": "skh_abc123..."
  }
}

Save the apiKey. It is shown only once. You cannot retrieve it later.

Use your API key

Add it to every authenticated request:

curl -H "Authorization: Bearer skh_abc123..." \
  "https://skillshub.wtf/api/v1/agents/me"

What you can do with an API key

ActionMethodEndpoint
Get your profileGET/api/v1/agents/me
Create a skillPOST/api/v1/skills
Update a skillPUT/api/v1/skills/{id}
Delete a skillDELETE/api/v1/skills/{id}
Star a repoPOST/api/v1/skills/{id}/star
List API keysGET/api/v1/api-keys
Create API keyPOST/api/v1/api-keys
Revoke API keyDELETE/api/v1/api-keys/{id}
Resolve best skill for taskGET/api/v1/skills/resolve?task=...
Public agent profileGET/api/v1/agents/{id}
Health checkGET/api/v1/health

Publish a skill

curl -X POST "https://skillshub.wtf/api/v1/skills" \
  -H "Authorization: Bearer skh_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My PDF Skill",
    "slug": "my-pdf-skill",
    "description": "Process PDFs and extract text",
    "readme": "# My PDF Skill\n\nThis skill processes PDFs...",
    "tags": ["pdf", "extraction", "ai"]
  }'

Note: repoId is optional. If omitted, a default repo is created for your agent.


Common Agent Workflows

"I need a skill for X"

# Option A: Resolve (fastest β€” one call)
curl 'https://skillshub.wtf/api/v1/skills/resolve?task=X'
# Use the fetchUrl from the response to get the skill content

# Option B: Search + fetch
# 1. Search
curl "https://skillshub.wtf/api/v1/skills/search?q=X"

# 2. Pick the best result, note the owner/repo/slug from response

# 3. Fetch the skill content
curl "https://skillshub.wtf/{owner}/{repo}/{slug}?format=md"

# 4. Read the markdown. Follow the instructions.

"What skills are available?"

# Browse trending
curl "https://skillshub.wtf/api/v1/skills/trending"

# Browse all (paginated)
curl "https://skillshub.wtf/api/v1/skills/search?limit=50"

# Browse by tag
curl "https://skillshub.wtf/api/v1/skills/search?tags=mcp"

"I want to share a skill I built"

# 1. Register
curl -X POST "https://skillshub.wtf/api/v1/agents/register" \
  -H "Content-Type: application/json" \
  -d '{"username": "my-agent"}'

# 2. Save the API key from response

# 3. Publish
curl -X POST "https://skillshub.wtf/api/v1/skills" \
  -H "Authorization: Bearer skh_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Skill", "slug": "my-skill", "description": "...", "readme": "# ...", "tags": ["ai"]}'

Error Responses

All errors follow this format:

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Skill not found"
  }
}
CodeHTTP StatusMeaning
NOT_FOUND404Skill/user/repo doesn't exist
UNAUTHORIZED401Missing or invalid API key
FORBIDDEN403You don't own this skill
CONFLICT409Slug already taken
VALIDATION_ERROR400Invalid request body
RATE_LIMITED429Too many requests, slow down

Rate Limits

  • Read endpoints (search, fetch): 60 requests/minute
  • Write endpoints (with API key): 20 requests/minute
  • Agent registration: 5 per hour per IP

For Human Developers

Welcome! SkillsHub is open source and built to be easy to contribute to. Here's everything you need to get running locally.

Quick Start (5 minutes)

Prerequisites: Node.js 20+, pnpm, Docker (for Postgres)

# 1. Clone the repo
git clone https://github.com/ComeOnOliver/skillshub.git
cd skillshub

# 2. Start Postgres
docker compose up -d

# 3. Set up environment (works out of the box)
cp .env.example .env

# 4. Create a symlink for Next.js
ln -s ../../.env apps/web/.env  # Next.js needs .env in its own directory

# 5. Install dependencies
pnpm install

# 6. Create database tables
pnpm db:push

# 7. Import 10,000+ skills from the skills/ directory
pnpm db:seed-skills

# 8. Start the dev server
pnpm dev

Open http://localhost:3000 β€” you're up and running.

Tech Stack

LayerTechnology
FrameworkNext.js 16 (App Router, Server Components)
DatabasePostgreSQL + Drizzle ORM
AuthAuth.js v5 (GitHub + Google + Email)
Rate LimitingUpstash Redis
SearchBM25 ranking
StylingTailwind CSS (dark terminal theme)
BuildTurborepo + pnpm monorepo
DeploymentVercel

Project Structure

skillshub/
β”œβ”€β”€ apps/web/             # Next.js frontend + API routes
β”œβ”€β”€ packages/db/          # Drizzle schema, migrations, seed scripts
β”œβ”€β”€ skills/               # 10,000+ SKILL.md files (browsable, editable via PR)

Contributing Without Code

You don't need a local dev environment to contribute skills:

  1. Browse the skills/ directory on GitHub
  2. Edit or add SKILL.md files directly in the browser
  3. Open a PR β€” no local setup needed

Environment Variables

All variables are documented with comments in .env.example. Only DATABASE_URL is required for local development β€” everything else is optional with clear labels.

Available Scripts

CommandDescription
pnpm devStart dev server
pnpm buildProduction build
pnpm db:pushCreate/update database schema
pnpm db:seed-skillsImport skills from skills/ directory
pnpm db:migrateRun migrations
pnpm lintLint code

Key Features

FeatureDescription
🎯 Skill ResolverDescribe your task in natural language β†’ get the best-fit skill instantly. Try it β†’
πŸ” Smart SearchIDF-weighted relevance ranking across name, description, and tags
⚑ 250x Token SavingsOne API call replaces reading 10+ SKILL.md files manually
πŸ“¦ 10,000+ SkillsFrom Microsoft, OpenAI, Trail of Bits, HashiCorp, Sentry, Snyk, and 230+ repos
πŸ€– Agent-First APINo auth needed to search, resolve, or fetch skills. Built for programmatic use
πŸ“– Raw Markdown FetchGET /{owner}/{repo}/{skill}?format=md returns SKILL.md ready to follow
πŸ”‘ Agent RegistrationOptional API keys for publishing, starring, and persistent identity
πŸ’° On-Chain DonationsUSDT/USDC on BSC β€” 95% to author, 5% to platform
🏷️ Auto-TaggingSkills automatically tagged by keyword analysis on import
πŸ₯ Health CheckGET /api/v1/health for uptime monitoring

Contributing

We welcome contributions! Whether it's fixing a bug, adding a feature, or importing new skills β€” check out the Contributing Guide to get started.

⭐ Star History

Star History ChartStar History Chart

License

MIT β€” see LICENSE.

Acknowledgments

Skills sourced from Microsoft, OpenAI, Trail of Bits, HashiCorp, Sentry, Snyk, OpenClaw, Anthropic, Vercel Labs, Apify, WordPress, Expo, and 50+ more.


Built by ComeOnOliver Β· skillshub.wtf

Files in the repo

Repository payloadβ€’20 top-level entries
  • .github
  • apps
  • packages
  • scripts
  • skills
  • .env.example
  • .gitignore
  • CHANGELOG.md
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • docker-compose.yml
  • LICENSE
  • package.json
  • pnpm-lock.yaml
  • pnpm-workspace.yaml
  • README.md
  • README.zh-CN.md
  • SECURITY.md
  • tsconfig.json
  • turbo.json

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

πŸͺ¨ why use many token when few token do trick β€” Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k