1. 背景:技能检索与部署的挑战
在利用 AI Agent(如 Claude Code, Cursor, Trae)进行开发时,开发者面临的核心挑战在于技能(Skill)的 检索效率 与 安装成本:
- 发现困难:优质的 Prompt 和指令集散落在 GitHub、博客或社区中,缺乏标准化的中心化检索入口。
- 安装繁琐:手动将指令内容配置到不同 Agent 的特定目录中,操作路径长且低效。
- 配置不统一:不同 Agent 的配置标准不统一,难以实现跨平台的技能同步与管理。
Vercel Skill 定位于 跨 Agent 的技能包管理器。它通过 find 命令建立标准化的检索机制,通过 add 命令实现自动化部署,将 Agent 的能力扩展过程标准化。
2. 核心功能:find 与 add
find:检索与发现
npx skills find react
用于在官方资源库中交互式搜索技能。
add:安装与同步
npx skills add https://github.com/vercel-labs/skills --skill find-skills
用于从远程仓库、URL 或本地路径安装技能。它能自动识别本地已安装的 Agent(如 Claude Code, Cursor, Trae)并实现一键同步配置。
find-skills:赋予 Agent 搜索 skill 能力
除了 CLI 工具,官方还提供了一个名为 find-skills 的内置技能,专门用于辅助 Agent 发现新能力。
- 核心功能:让 Agent 能够根据用户的模糊需求(如“帮我找个写测试的工具”),自主调用检索逻辑。
- 多轮检索机制:Agent 会根据初始反馈,自动尝试多轮查找,并生成更精准的关键词进行二次搜索,直到找到最匹配的技能。
- 决策辅助:Agent 会对比搜索结果,向用户解释每个技能的用途,并给出安装建议,从而降低用户的决策成本。
- 安装方式:
npx skills add vercel-labs/skills@find-skills
使用效果:
3. 实现原理
Vercel Skill 采用“协调者”架构。find 与 add 既可以独立运行,也可以在交互模式下链式调用。
find 检索流程时序图
sequenceDiagram
participant User as 用户
participant CLI as Vercel Skill CLI (find.ts)
participant Registry as skills.sh API
User->>CLI: npx skills find "react"
loop 交互式输入
CLI->>Registry: GET /api/search (携带 query)
Registry-->>CLI: 返回技能元数据列表 (包含名称、仓库源、安装量等)
CLI->>User: 动态渲染交互界面 (显示名称与 Source)
end
User->>CLI: 确认选择项 (提取 Source 标识符)
Note over CLI: 内部调用 runAdd(source)
add 部署流程时序图
sequenceDiagram
participant User as 用户
participant CLI as Vercel Skill CLI (add.ts)
participant Source as 源码托管 (GitHub/Local)
participant Agent as AI Agent (如 Claude Code)
User->>CLI: npx skills add <source>
CLI->>CLI: 解析 Source (标准 URL 或 简写)
alt 远程源 (GitHub/GitLab)
CLI->>Source: 克隆仓库至临时目录
else 本地源
CLI->>Source: 读取本地路径
end
CLI->>CLI: 发现并解析 SKILL.md
CLI->>Agent: 自动探测已安装的 Agent 环境
User->>CLI: 确认安装范围与方式 (Symlink/Copy)
loop 遍历目标 Agent
CLI->>Agent: 写入配置或创建软链接
end
Agent-->>User: 部署完成并打印路径
- 源解析:将用户输入的简写(如
owner/repo)或标准 URL 解析为统一的结构。 - 资源获取:针对远程仓库,CLI 自动克隆源码至临时目录;针对本地路径则直接读取。
- 环境探测:扫描系统预定义的 Agent 配置路径(如 Claude Code、Cursor、Trae 等),识别当前活跃环境。
- 自动化部署:根据用户选择的范围(全局/项目)和方式(软链接/复制),CLI 批量在目标 Agent 的技能目录下建立关联。
4. 企业内部 skill 平台的接入方式
Search 功能接入
对于企业内部环境,Vercel Skill 提供了 SKILLS_API_URL 环境变量,用于修改请求的域名;只要域名提供对应的接口,并保持入参出参一致即可。
SKILLS_API_URL=https://your-internal-api.com npx skills find react
企业内部搜索接入时序图:
sequenceDiagram
participant CLI as Skills CLI
participant IntAPI as 企业内部 API (SKILLS_API_URL)
participant Registry as 内部 Skill 注册表
participant ExtAPI as 外部公开 API (skills.sh)
CLI->>IntAPI: GET /api/search?q=...
activate IntAPI
IntAPI->>Registry: 检索企业私有 Skill
Registry-->>IntAPI: 返回私有 Skill 列表
rect rgb(240, 240, 240)
Note over IntAPI, ExtAPI: 可选:聚合外部搜索
IntAPI->>ExtAPI: GET /api/search?q=...
ExtAPI-->>IntAPI: 返回公开 Skill 列表
end
IntAPI->>IntAPI: 合并并转换格式
IntAPI-->>CLI: 返回统一格式的技能列表
deactivate IntAPI
接口伪代码示例(同时支持搜索企业内和企业外部的 skill):
// 企业内部 Skill 搜索接口示例 (Next.js / Vercel Route Handler)
// GET /api/search?q=...
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const query = searchParams.get('q');
// 1. 搜索企业内部私有 Skill 仓库
const internalSkills = await searchInternalRegistry(query);
// 2. 搜索企业外部公开 Skill (可选,实现聚合搜索)
const publicSkills = await fetch(`https://skills.sh/api/search?q=${query}`)
.then((res) => res.json())
.then((data) => data.skills)
.catch(() => []);
// 3. 统一转换格式并合并结果
return Response.json({
skills: [
...internalSkills.map((s) => ({
id: s.id,
name: s.name,
installs: s.downloads,
topSource: s.gitUrl, // 内部 Git 地址
})),
...publicSkills,
],
});
}
Add 功能接入与权限处理
针对企业内部 add 功能,主要有以下两种接入方案:
方案一:无改造直接接入 (Direct Clone)
不需要任何改造,直接传入 Git 仓库进行下载。
- 原理:直接利用本地 Git 环境进行
Clone内部仓库。 - 优点:实现成本低,完全复用现有逻辑。
- 缺点:受限于用户本地权限,对于没有仓库访问权限的用户会安装失败。
方案二:平台中间层接入 (Well-known Proxy)
如果要做到通用且安全,可以通过引入一个平台中间层 (Proxy Layer)。此时 add 命令传入不再是内部 Git 地址,而是中间层的 HTTP 域名。
-
原理:
- 屏蔽权限复杂性:服务端统一持有 Git Token/SSH Key,负责克隆内部私有仓库。终端用户无需配置 Git 权限。
- 协议转换:将复杂的 Git 结构转换为标准的 Well-known (RFC 8615) 静态文件接口。
- 按需发现:支持通过子路径(如
middleware.com/org-name)实现多团队的技能发现。
-
实现细节:
- 接口规范:需实现
GET /.well-known/skills/index.json索引接口。 - 单个文件下载:CLI 在解析
index.json后,会根据files数组中的路径,拼接完整的 URL 逐个下载文件(例如:GET /.well-known/skills/db-helper/SKILL.md)。 - 数据结构示例:
{ "skills": [ { "name": "internal-db-helper", "description": "企业内部数据库查询助手", "files": ["SKILL.md", "handler.ts"] } ] }
- 接口规范:需实现
-
工作流时序图:
sequenceDiagram participant User as 用户 (CLI) participant Proxy as 中间层 (Well-known Server) participant Git as 内部 Git (GitLab/Bitbucket) User->>Proxy: npx skills add https://proxy.com/skills Proxy->>Proxy: 鉴权并解析目标技能 Proxy->>Git: 服务端 Clone (使用预设 Token) Proxy->>Proxy: 提取 SKILL.md 并生成 index.json Proxy-->>User: 返回 index.json 索引 User->>Proxy: GET /.well-known/skills/db-helper/SKILL.md Proxy-->>User: 返回文件流 Note over User: CLI 完成本地安装
这种方案将“仓库访问控制”转化为了“Web API 访问控制”,极大地降低了企业内部推广技能包的门槛。
总结
Vercel Skill 通过标准化的 CLI 工具,打破了 AI Agent 技能发现与部署的壁垒:
- 用户侧:提供了类似
npm的丝滑体验,实现了一次安装、多 Agent 同步。 - 开发者侧:通过简单的
SKILL.md规范即可发布技能,支持 Git、本地路径及 Web URL 等多种源。 - 企业侧:通过灵活的 API 环境变量及 Well-known 代理模式,在确保安全与权限受控的前提下,实现了企业内部私有技能的高效分发。
随着 AI Agent 生态的爆发,这种跨平台、标准化的技能包管理方案将成为提升开发者生产力的关键基础设施。