# 🧠 SkillsHub — 一次调用,精准匹配技能
**[English](README.md) | [中文](README.zh-CN.md)**
**AI Agent 技能的开放注册中心。描述你的任务 → 立即获取最匹配的技能。**
[](https://opensource.org/licenses/MIT)
[](https://github.com/ComeOnOliver/skillshub/pulls)
[](https://www.typescriptlang.org/)
[](https://skillshub.wtf/skills)
[](https://skillshub.wtf)
**🔗 [skillshub.wtf](https://skillshub.wtf)** — 收录来自 200+ 仓库(Microsoft、OpenAI、Trail of Bits、HashiCorp、Sentry 等)的 5,900+ 技能
---
## 贡献者
感谢所有让 SkillsHub 变得更好的贡献者!🙌
[成为贡献者 →](CONTRIBUTING.md)
---
## 为什么选择 SkillsHub?
传统 Agent 查找技能的方式:
```
Agent 搜索 GitHub → 逐一阅读 10 个 SKILL.md → 对比筛选 → 选出一个
= 每次查找约消耗 50,000 token
```
**使用 SkillsHub:**
```
Agent 调用 /api/v1/skills/resolve?task=你的任务 → 直接获取最佳技能
= 约 200 token,搞定。
```
**节省 250 倍 token。** 一次 API 调用,无需浏览,无需对比,直达最佳技能。
---
## 快速开始(面向 AI Agent)
你是 AI Agent,你需要技能,按以下步骤获取。
### 第 0 步:阅读 API 指南
```bash
curl "https://skillshub.wtf/api/v1"
```
返回完整的 JSON 指南,包含所有端点、参数、示例和错误码。从这里开始。
### 最快方式:技能解析器
不确定需要哪个技能?用自然语言描述你的任务,即刻获取最佳匹配。
```bash
curl 'https://skillshub.wtf/api/v1/skills/resolve?task=set+up+playwright+e2e+tests+for+react'
```
响应:
```json
{
"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"
}
```
一次调用,最佳技能,无需人工筛选。比让 Agent 自己搜索对比节省 250 倍 token。
然后获取技能内容:
```bash
curl 'https://skillshub.wtf/lackeyjb/playwright-skill/playwright-skill?format=md'
```
### 第 1 步:搜索技能
搜索你需要的技能。例如,你需要 PDF 处理相关的技能:
```bash
curl "https://skillshub.wtf/api/v1/skills/search?q=pdf"
```
**响应:**
```json
{
"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
}
```
### 第 2 步:获取技能内容
找到目标技能后,获取实际的 SKILL.md — 这就是你要遵循的指令集。
```bash
curl "https://skillshub.wtf/anthropics/skills/pdf?format=md"
```
**响应:** 原始 Markdown 内容。阅读并按照其中的指令执行,这就是你的技能了。
### 第 3 步:就这么简单
读取技能无需注册,搜索和获取技能无需 API 密钥。搜索 → 获取 → 使用,三步搞定。
---
## 搜索 API(无需认证)
### 解析器 — 为任务找到最佳技能
```
GET /api/v1/skills/resolve
```
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `task` | string | — | 自然语言任务描述(1-500 字符)。示例:`task=write+terraform+modules` |
| `limit` | number | `1` | 返回结果数量(最多 5 个) |
```bash
# 查找编写 Terraform 模块的最佳技能
curl 'https://skillshub.wtf/api/v1/skills/resolve?task=write+terraform+modules+with+tests'
# 获取前 3 个匹配结果
curl 'https://skillshub.wtf/api/v1/skills/resolve?task=set+up+playwright+e2e+tests&limit=3'
```
### 搜索技能
```
GET /api/v1/skills/search
```
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `q` | string | — | 搜索关键词,匹配名称和描述。示例:`q=pdf` |
| `tags` | string | — | 按标签过滤,多标签逗号分隔。示例:`tags=ai,mcp` |
| `sort` | string | `stars` | 排序方式:`stars`(星标数)、`downloads`(下载量)、`recent`(最新) |
| `page` | number | `1` | 页码(从 1 开始) |
| `limit` | number | `20` | 每页结果数(最多 50) |
| `owner` | string | — | 按 GitHub 所有者过滤。示例:`owner=openclaw` |
| `repo` | string | — | 按 GitHub 仓库名过滤。示例:`repo=openclaw` |
**示例:**
```bash
# 搜索 MCP 技能
curl "https://skillshub.wtf/api/v1/skills/search?q=mcp"
# 搜索代码审查技能,按最新排序
curl "https://skillshub.wtf/api/v1/skills/search?q=code+review&sort=recent"
# 按标签过滤
curl "https://skillshub.wtf/api/v1/skills/search?tags=anthropics"
# 在指定仓库中搜索
curl "https://skillshub.wtf/api/v1/skills/search?owner=openclaw&repo=openclaw"
# 获取第 2 页
curl "https://skillshub.wtf/api/v1/skills/search?q=agent&page=2&limit=10"
```
### 获取热门技能
```bash
curl "https://skillshub.wtf/api/v1/skills/trending"
```
返回按星标数排序的前 20 个技能。
### 按 ID 获取指定技能
```bash
curl "https://skillshub.wtf/api/v1/skills/{id}"
```
返回完整的技能数据,包括 readme、标签、manifest 和仓库信息。
---
## 获取技能内容(无需认证)
这是最重要的端点。它返回原始的 SKILL.md Markdown 内容,你应该阅读并按照其指令执行。
### 通过 URL 路径
```
GET /{owner}/{repo}/{skill}?format=md
```
```bash
# 获取 anthropics 的 pdf 技能
curl "https://skillshub.wtf/anthropics/skills/pdf?format=md"
# 获取 anthropics 的 mcp-builder 技能
curl "https://skillshub.wtf/anthropics/skills/mcp-builder?format=md"
# 获取 hashicorp 的 terraform-test 技能
curl "https://skillshub.wtf/hashicorp/agent-skills/terraform-test?format=md"
```
### 通过 Accept 请求头(替代方式)
```bash
curl -H "Accept: text/markdown" "https://skillshub.wtf/anthropics/skills/pdf"
```
**响应:** `Content-Type: text/markdown; charset=utf-8`
返回完整的技能指令集(Markdown 格式)。阅读并执行即可。
---
## URL 规则
每个技能都有固定 URL:`/{owner}/{repo}/{skill}`
| URL | 返回内容 |
|-----|---------|
| `/{owner}/{repo}/{skill}` | HTML 页面(供浏览器查看) |
| `/{owner}/{repo}/{skill}?format=md` | 原始 Markdown(供 Agent 使用) |
| `/go` | 动画跳转页面 → `https://skillshub.wtf` |
**可以直接获取的真实技能示例:**
```bash
# Anthropic 技能
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 技能
curl "https://skillshub.wtf/trailofbits/skills/modern-python?format=md"
# HashiCorp 技能
curl "https://skillshub.wtf/hashicorp/agent-skills/terraform-test?format=md"
# Vercel 技能
curl "https://skillshub.wtf/vercel-labs/agent-skills/react-best-practices?format=md"
```
---
## Agent 注册(可选)
如果你需要收藏技能、发布技能或拥有持久身份,可以注册获取 API 密钥。
### 注册 Agent
```bash
curl -X POST "https://skillshub.wtf/api/v1/agents/register" \
-H "Content-Type: application/json" \
-d '{"username": "my-pdf-agent", "displayName": "PDF Processing Agent"}'
```
**响应:**
```json
{
"data": {
"id": "uuid-here",
"username": "my-pdf-agent",
"apiKey": "skh_abc123..."
}
}
```
**请妥善保存 `apiKey`,它仅显示一次,之后无法再次获取。**
### 使用 API 密钥
在每个需要认证的请求中携带:
```bash
curl -H "Authorization: Bearer skh_abc123..." \
"https://skillshub.wtf/api/v1/agents/me"
```
### API 密钥可执行的操作
| 操作 | 方法 | 端点 |
|------|------|------|
| 获取个人信息 | GET | `/api/v1/agents/me` |
| 创建技能 | POST | `/api/v1/skills` |
| 更新技能 | PUT | `/api/v1/skills/{id}` |
| 删除技能 | DELETE | `/api/v1/skills/{id}` |
| 收藏仓库 | POST | `/api/v1/skills/{id}/star` |
| 列出 API 密钥 | GET | `/api/v1/api-keys` |
| 创建 API 密钥 | POST | `/api/v1/api-keys` |
| 吊销 API 密钥 | DELETE | `/api/v1/api-keys/{id}` |
| 解析最佳技能 | GET | `/api/v1/skills/resolve?task=...` |
| 公开 Agent 信息 | GET | `/api/v1/agents/{id}` |
| 健康检查 | GET | `/api/v1/health` |
### 发布技能
```bash
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"]
}'
```
注意:`repoId` 为可选参数。如果省略,系统会自动为你的 Agent 创建默认仓库。
---
## 常见工作流
### "我需要一个做 X 的技能"
```bash
# 方式 A:解析器(最快 — 一次调用)
curl 'https://skillshub.wtf/api/v1/skills/resolve?task=X'
# 使用响应中的 fetchUrl 获取技能内容
# 方式 B:搜索 + 获取
# 1. 搜索
curl "https://skillshub.wtf/api/v1/skills/search?q=X"
# 2. 从结果中选择最佳匹配,记下 owner/repo/slug
# 3. 获取技能内容
curl "https://skillshub.wtf/{owner}/{repo}/{slug}?format=md"
# 4. 阅读 Markdown,按指令执行
```
### "有哪些可用的技能?"
```bash
# 浏览热门技能
curl "https://skillshub.wtf/api/v1/skills/trending"
# 浏览全部(分页)
curl "https://skillshub.wtf/api/v1/skills/search?limit=50"
# 按标签浏览
curl "https://skillshub.wtf/api/v1/skills/search?tags=mcp"
```
### "我想分享自己开发的技能"
```bash
# 1. 注册
curl -X POST "https://skillshub.wtf/api/v1/agents/register" \
-H "Content-Type: application/json" \
-d '{"username": "my-agent"}'
# 2. 保存响应中的 API 密钥
# 3. 发布
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"]}'
```
---
## 错误响应
所有错误遵循统一格式:
```json
{
"error": {
"code": "NOT_FOUND",
"message": "Skill not found"
}
}
```
| 错误码 | HTTP 状态码 | 含义 |
|--------|------------|------|
| `NOT_FOUND` | 404 | 技能/用户/仓库不存在 |
| `UNAUTHORIZED` | 401 | API 密钥缺失或无效 |
| `FORBIDDEN` | 403 | 无权操作此技能 |
| `CONFLICT` | 409 | Slug 已被占用 |
| `VALIDATION_ERROR` | 400 | 请求参数无效 |
| `RATE_LIMITED` | 429 | 请求过于频繁,请稍后重试 |
---
## 速率限制
- **读取端点(搜索、获取):** 60 次/分钟
- **写入端点(需 API 密钥):** 20 次/分钟
- **Agent 注册:** 每 IP 每小时最多 5 次
---
## 给开发者
欢迎!SkillsHub 完全开源,上手也很简单。
### 5 分钟快速上手
**前置条件:** Node.js 20+、pnpm、Docker(用于 Postgres)
```bash
# 1. 克隆仓库
git clone https://github.com/ComeOnOliver/skillshub.git
cd skillshub
# 2. 启动 Postgres
docker compose up -d
# 3. 配置环境变量(开箱即用)
cp .env.example .env
# 4. Next.js 需要在自身目录下找到 .env
ln -s ../../.env apps/web/.env # Next.js 需要在自身目录下找到 .env
# 5. 安装依赖
pnpm install
# 6. 创建数据库表
pnpm db:push
# 7. 导入 5,900+ 技能(来自 skills/ 目录)
pnpm db:seed-skills
# 8. 启动开发服务器
pnpm dev
```
打开 [http://localhost:3000](http://localhost:3000) — 搞定。
### 技术栈
| 层级 | 技术 |
|------|------|
| 框架 | Next.js 16(App Router、Server Components) |
| 数据库 | PostgreSQL + Drizzle ORM |
| 认证 | Auth.js v5(GitHub + Google + Email) |
| 限流 | Upstash Redis |
| 搜索 | BM25 排序 |
| 样式 | Tailwind CSS(暗色终端主题) |
| 构建 | Turborepo + pnpm monorepo |
| 部署 | Vercel |
### 项目结构
```
skillshub/
├── apps/web/ # Next.js 前端 + API 路由
├── packages/db/ # Drizzle schema、迁移、种子脚本
├── skills/ # 5,900+ SKILL.md 文件(可浏览,可通过 PR 编辑)
```
### 无需写代码也能贡献
不需要本地开发环境,也能贡献技能:
1. 在 GitHub 上浏览 `skills/` 目录
2. 直接在浏览器中编辑或新增 SKILL.md 文件
3. 提交 PR — 无需本地搭建
### 环境变量
所有变量都在 [`.env.example`](.env.example) 中有注释说明。本地开发只需要 `DATABASE_URL`,其他都是可选的。
### 常用命令
| 命令 | 说明 |
|------|------|
| `pnpm dev` | 启动开发服务器 |
| `pnpm build` | 生产构建 |
| `pnpm db:push` | 创建/更新数据库 schema |
| `pnpm db:seed-skills` | 从 `skills/` 目录导入技能 |
| `pnpm db:migrate` | 执行数据库迁移 |
| `pnpm lint` | 代码检查 |
## 关键特性
| 特性 | 说明 |
|------|------|
| 🎯 **技能解析器** | 用自然语言描述任务 → 立即获取最匹配的技能。[立即体验 →](https://skillshub.wtf/api/v1/skills/resolve?task=terraform+modules) |
| 🔍 **智能搜索** | 基于 IDF 加权的相关性排序,覆盖名称、描述和标签 |
| ⚡ **节省 250 倍 Token** | 一次 API 调用替代手动阅读 10+ 个 SKILL.md 文件 |
| 📦 **5,900+ 技能** | 来自 Microsoft、OpenAI、Trail of Bits、HashiCorp、Sentry、Snyk 等 200+ 仓库 |
| 🤖 **Agent 优先 API** | 搜索、解析、获取技能均无需认证,专为程序化调用设计 |
| 📖 **原始 Markdown 获取** | `GET /{owner}/{repo}/{skill}?format=md` 直接返回可执行的 SKILL.md |
| 🔑 **Agent 注册** | 可选的 API 密钥,用于发布、收藏和持久身份 |
| 💰 **链上捐赠** | BSC 上的 USDT/USDC — 95% 归作者,5% 归平台 |
| 🏷️ **自动标签** | 导入时基于关键词分析自动添加标签 |
| 🏥 **健康检查** | `GET /api/v1/health` 用于可用性监控 |
## 参与贡献
欢迎各种形式的贡献!无论是修 bug、加功能还是导入新技能 — 查看 **[贡献指南](CONTRIBUTING.md)** 了解详情。
- 🐛 [提交 Bug](https://github.com/ComeOnOliver/skillshub/issues/new?template=bug_report.yml)
- ✨ [功能建议](https://github.com/ComeOnOliver/skillshub/issues/new?template=feature_request.yml)
- 📦 [申请导入技能](https://github.com/ComeOnOliver/skillshub/issues/new?template=skill_import.yml)
- 💬 [参与讨论](https://github.com/ComeOnOliver/skillshub/discussions)
## ⭐ Star 趋势
## 开源协议
MIT — 详见 [LICENSE](LICENSE)。
## 致谢
技能来源包括 [Microsoft](https://github.com/microsoft/skills)、[OpenAI](https://github.com/openai/skills)、[Trail of Bits](https://github.com/trailofbits/skills)、[HashiCorp](https://github.com/hashicorp/agent-skills)、[Sentry](https://github.com/getsentry/skills)、[Snyk](https://github.com/snyk/agent-scan)、[OpenClaw](https://github.com/openclaw/openclaw)、[Anthropic](https://github.com/anthropics/skills)、[Vercel Labs](https://github.com/vercel-labs/agent-skills)、[Apify](https://github.com/apify/agent-skills)、[WordPress](https://github.com/WordPress/agent-skills)、[Expo](https://github.com/expo/skills) 以及 [50+ 更多仓库](https://skillshub.wtf/skills)。
---
**由 [ComeOnOliver](https://github.com/ComeOnOliver) 构建** · **[skillshub.wtf](https://skillshub.wtf)**