Skills 生态介绍

Skills 生态介绍本文介绍了 Shills 市场 同时深入分析 Vercel Labs 开源的 Skills CLI 工具 这是一个为 AI 编程助手构建的开放式技能包管理器 支持 30 种主流 AI 编程工具 Skills 技能 是可重用的指令集 用于扩展 AI 编程助手的能力 它们以 SKILL md 文件的形式定义 包含 YAML frontmatter 元数据和 Markdown 格式的指令内容

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



本文介绍了Shills 市场,同时深入分析 Vercel Labs 开源的 Skills CLI 工具,这是一个为 AI 编程助手构建的开放式技能包管理器,支持 30+ 种主流 AI 编程工具。

Skills(技能)是可重用的指令集,用于扩展 AI 编程助手的能力。它们以 SKILL.md 文件的形式定义,包含 YAML frontmatter 元数据和 Markdown 格式的指令内容。

Skills 让 AI 助手能够执行专业化任务,例如:

  • 从 Git 历史生成发布说明
  • 按照团队规范创建 PR
  • 与外部工具集成(Linear、Notion 等)
  • 遵循特定框架的**实践

skills.sh 是官方的技能发现平台,用户可以:

  • 浏览技能目录:按类别、热门程度、来源筛选技能
  • 搜索技能:通过关键词搜索特定功能的技能
  • 查看安装统计:了解技能的使用情况
  • 获取安装命令:一键复制安装命令

Skills 遵循开放的 Agent Skills 规范,确保跨工具兼容性。一个标准的 SKILL.md 文件结构如下:

--- name: my-skill description: 技能的简短描述,说明何时使用 metadata:  internal: false # 可选,设为 true 隐藏技能 --- # My Skill 这里是 AI 助手需要遵循的详细指令。  何时使用 描述应该激活此技能的场景。  步骤 1. 首先,执行这个操作 2. 然后,执行那个操作 

必填字段:

  • name:唯一标识符(小写,允许连字符)
  • description:简短说明技能的功能

npx skills 提供了完整的技能生命周期管理能力。

这是最核心的命令,支持多种来源格式:

# GitHub 简写格式(推荐) npx skills add vercel-labs/agent-skills # 完整 GitHub URL npx skills add https://github.com/vercel-labs/agent-skills # 指定分支和路径 npx skills add https://github.com/vercel-labs/agent-skills/tree/main/skills/frontend-design # GitLab URL npx skills add https://gitlab.com/org/repo # 任意 Git URL npx skills add :vercel-labs/agent-skills.git # 本地路径 npx skills add ./my-local-skills # 直接 URL(如 Mintlify 文档站点) npx skills add https://docs.example.com/skill.md 

命令行选项

选项 说明 -g, --global 安装到用户目录而非项目目录 -a, --agent 指定目标 Agent(如 claude-code, cursor-s, --skill 安装指定名称的技能 -l, --list 仅列出可用技能,不安装 -y, --yes 跳过所有确认提示 --all 安装所有技能到所有 Agent

安装范围

范围 标志 位置 用例 项目级 (默认) ./ /skills/ 与项目一起提交,团队共享 全局 -g ~/ /skills/ 所有项目可用

安装模式

模式 说明 Symlink(推荐) 创建符号链接指向规范副本,单一数据源,便于更新 Copy 为每个 Agent 创建独立副本,用于不支持符号链接的环境

使用示例

# 列出仓库中的技能 npx skills add vercel-labs/agent-skills --list # 安装特定技能 npx skills add vercel-labs/agent-skills --skill frontend-design --skill skill-creator # 安装到特定 Agent npx skills add vercel-labs/agent-skills -a claude-code -a cursor # 非交互式安装(CI/CD 友好) npx skills add vercel-labs/agent-skills --skill frontend-design -g -a claude-code -y # 安装仓库中所有技能到所有 Agent npx skills add vercel-labs/agent-skills --all 

提供交互式的 fzf 风格搜索界面:

# 交互式搜索 npx skills find # 按关键词搜索 npx skills find typescript # 按短语搜索 npx skills find "react testing" 

搜索结果示例:

Install with npx skills add <owner/repo@skill> vercel-labs/agent-skills@vercel-react-best-practices └ https://skills.sh/vercel-labs/agent-skills/vercel-react-best-practices 

检查已安装技能是否有可用更新:

npx skills check 

工作原理

  1. 读取 ~/.agents/.skill-lock.json 锁文件
  2. https://add-skill.vercel.sh/check-updates 发送 POST 请求
  3. 通过比较 skillFolderHash(GitHub 树 SHA)检测更新
  4. 显示有更新的技能列表

更新所有已安装的技能到最新版本:

npx skills update 

该命令会自动重新安装所有检测到更新的技能。

创建新技能的模板文件:

# 在当前目录创建 SKILL.md npx skills init # 在子目录创建新技能 npx skills init my-skill 

生成的模板:

--- name: my-skill description: A brief description --- # my-skill Instructions for the agent to follow when this skill is activated.  When to Use Describe the scenarios where this skill should be used.  Steps 1. First, do this 2. Then, do that 

将已安装的技能与远程源匹配,用于更新跟踪:

# 生成锁文件 npx skills generate-lock # 预览但不写入 npx skills generate-lock --dry-run 

Skills CLI 的核心设计目标之一是兼容尽可能多的 AI 编程工具。目前支持 30 种 主流 Agent。

Agent 命令行标识 项目路径 全局路径 Claude Code claude-code .claude/skills/ ~/.claude/skills/ Cursor cursor .cursor/skills/ ~/.cursor/skills/ GitHub Copilot github-copilot .github/skills/ ~/.copilot/skills/ Codex codex .codex/skills/ ~/.codex/skills/ OpenCode opencode .opencode/skills/ ~/.config/opencode/skills/ Cline cline .cline/skills/ ~/.cline/skills/ Windsurf windsurf .windsurf/skills/ ~/.codeium/windsurf/skills/ Gemini CLI gemini-cli .gemini/skills/ ~/.gemini/skills/ Roo Code roo .roo/skills/ ~/.roo/skills/ Continue continue .continue/skills/ ~/.continue/skills/ ... ... ... ...

完整列表包括:Amp, Antigravity, Clawdbot, CodeBuddy, Command Code, Crush, Droid, Goose, Kilo Code, Kiro CLI, MCPJam, Mux, OpenHands, Pi, Qoder, Qwen Code, Trae, Zencoder, Neovate 等。

CLI 通过检测特定目录是否存在来判断用户安装了哪些 Agent:

// agents.ts 中的检测逻辑示例 'claude-code': { detectInstalled: async () => { return existsSync(claudeHome); // 检查 ~/.claude 是否存在 }, }, 'cursor': { detectInstalled: async () => { return existsSync(join(home, '.cursor')); }, }, 

安装时,CLI 会:

  1. 自动检测所有已安装的 Agent
  2. 如果未检测到任何 Agent,提示用户手动选择
  3. 支持同时安装到多个 Agent

每个 Agent 的配置包含:

interface AgentConfig { name: string; // 内部名称 displayName: string; // 显示名称 skillsDir: string; // 项目级技能目录 globalSkillsDir: string; // 全局技能目录 detectInstalled: () => Promise<boolean>; // 检测函数 } 

由于各 Agent 实现差异,部分高级功能并非全部支持:

功能 Claude Code Cursor Copilot Cline OpenCode 其他 基础技能 ✅ ✅ ✅ ✅ ✅ ✅ allowed-tools ✅ ✅ ✅ ✅ ✅ 部分 context: fork ✅ ❌ ❌ ❌ ❌ ❌ Hooks ✅ ❌ ❌ ✅ ❌ ❌

src/ ├── cli.ts # CLI 主入口,命令路由 ├── add.ts # add 命令的核心逻辑 ├── find.ts # find 命令 - 交互式技能搜索 ├── agents.ts # Agent 定义和检测 ├── installer.ts # 技能安装逻辑(符号链接/复制) ├── skills.ts # 技能发现和解析 ├── skill-lock.ts # 锁文件管理 ├── source-parser.ts # 解析 git URL、GitHub 简写、本地路径 ├── git.ts # Git 克隆操作 ├── telemetry.ts # 匿名使用跟踪 ├── types.ts # TypeScript 类型定义 ├── mintlify.ts # Mintlify 技能获取 └── providers/ # 远程技能提供者 ├── index.ts ├── registry.ts # 提供者注册表 ├── types.ts ├── huggingface.ts # HuggingFace 提供者 ├── mintlify.ts # Mintlify 提供者 └── wellknown.ts # Well-known 端点提供者 

source-parser.ts 负责将用户输入解析为结构化格式,支持多种来源类型:

export function parseSource(input: string): ParsedSource { // 1. 本地路径 (local) // 2. 直接 URL (direct-url) // 3. GitHub URL (github) // 4. GitLab URL (gitlab) // 5. GitHub 简写 (github) // 6. Well-known 端点 (well-known) // 7. 回退:直接 Git URL (git) } 

支持的格式包括:

类型 示例 本地路径 ./my-skills, /absolute/path GitHub URL https://github.com/owner/repo GitHub URL + 路径 https://github.com/owner/repo/tree/branch/path GitLab URL https://gitlab.com/owner/repo GitHub 简写 owner/repo, owner/repo/path/to/skill 直接 URL https://docs.example.com/skill.md Well-known https://example.com(检查 /.well-known/skills/index.json
用户输入 → parseSource() → 判断类型 │ ┌─────────────────────────┼─────────────────────────┐ ↓ ↓ ↓ local github direct-url │ │ │ ↓ ↓ ↓ 验证路径存在 cloneRepo() findProvider() │ │ │ ↓ ↓ ↓ discoverSkills() discoverSkills() fetchSkill() │ │ │ └─────────────────────────┴─────────────────────────┘ │ ↓ detectInstalledAgents() │ ↓ 用户选择 Agent 和选项 │ ↓ installSkillForAgent() / installRemoteSkillForAgent() │ ↓ addSkillToLock() │ ↓ 显示结果 

installer.ts 实现两种安装模式:

Symlink 模式(推荐)

.agents/skills/ 
     
    
       
         / 
        # 规范位置(单一数据源) 
       

└── SKILL.md 

.claude/skills/ → ../.agents/skills/ # 符号链接 .cursor/skills/ → ../.agents/skills/ # 符号链接

Copy 模式

.claude/skills/ 
     
    
       
         / 
        # 独立副本 
       

└── SKILL.md 

.cursor/skills/ / # 独立副本

└── SKILL.md 

关键实现细节:

async function createSymlink(target: string, linkPath: string): Promise<boolean> 

~/.agents/.skill-lock.json 跟踪已安装技能:

interface SkillLockFile { version: number; // 当前版本 3 skills: Record<string, SkillLockEntry>; dismissed?: DismissedPrompts; }

interface SkillLockEntry

采用策略模式扩展远程技能来源:

interface HostProvider 

内置提供者:

  • MintlifyProvider - 处理 Mintlify 文档站点
  • HuggingFaceProvider - 处理 HuggingFace Spaces
  • WellKnownProvider - 处理 RFC 8615 风格的 well-known 端点

function sanitizeName(name: string): string { let sanitized = name.replace(/[/\:0]/g, ''); sanitized = sanitized.replace(/^[.s]+|[.s]+$/g, ''); sanitized = sanitized.replace(/^.+/, ''); // ... } function isPathSafe(basePath: string, targetPath: string): boolean 
export async function cleanupTempDir(dir: string): Promise<void> await rm(dir, { recursive: true, force: true }); } 

遥测数据采集尊重用户选择:

function isEnabled(): boolean { return !process.env.DISABLE_TELEMETRY && !process.env.DO_NOT_TRACK; } 

skills.ts 在仓库中按以下顺序搜索技能:

  1. 直接指定的路径
  2. 常见技能目录:
    • skills/
    • skills/.curated/
    • skills/.experimental/
    • skills/.system/
    • .agents/skills/
    • .agent/skills/
    • .claude/skills/
    • 所有 Agent 的技能目录
  3. 递归搜索(最大深度 5 层,跳过 node_modules.gitdist 等)

async function parseSkillMd(skillMdPath: string): Promise<Skill | null> { const content = await readFile(skillMdPath, 'utf-8'); const { data } = matter(content); // 使用 gray-matter 解析 frontmatter // 必须有 name 和 description if (!data.name || !data.description) return null; // 跳过内部技能(除非设置了环境变量) if (data.metadata?.internal && !shouldInstallInternalSkills()) return null; return { name, description, path, rawContent, metadata }; } 

端点 用途 https://add-skill.vercel.sh/t 遥测追踪 https://add-skill.vercel.sh/check-updates 更新检测 https://skills.sh/api/skills/search 技能名称匹配 https://skills.sh/api/search 技能搜索 https://api.github.com/repos/.../git/trees/... 获取文件夹哈希

变量 说明 INSTALL_INTERNAL_SKILLS 设为 1 显示和安装标记为 internal: true 的技能 DISABLE_TELEMETRY 禁用匿名使用遥测 DO_NOT_TRACK 禁用遥测的替代方式 CODEX_HOME 自定义 Codex 主目录 CLAUDE_CONFIG_DIR 自定义 Claude 配置目录

  1. 保持简洁:一个技能专注于一个任务
  2. 清晰的触发条件:在 description 中明确说明何时使用
  3. 步骤化指令:使用编号列表让 AI 易于遵循
  4. 包含示例:展示预期的输入输出
my-project/ ├── skills/ │ ├── code-review/ │ │ └── SKILL.md │ ├── pr-creation/ │ │ └── SKILL.md │ └── testing/ │ └── SKILL.md 

  • 将技能提交到版本控制
  • 使用项目级安装(默认)
  • 在 README 中记录可用技能

Skills CLI 通过以下设计决策构建了一个强大的 AI 编程助手技能生态系统:

  1. 浅克隆:使用 –depth 1 加速仓库克隆
  2. 符号链接优先:单一真相来源,便于更新
  3. 防抖搜索:避免频繁 API 调用
  4. 锁文件版本控制:支持未来格式迁移
  5. 提供者模式:易于扩展新的技能来源
  6. 路径安全验证:防止目录遍历攻击
  7. 优雅降级:符号链接失败时自动回退到复制

通过 skills.sh 平台和 npx skills 命令行工具,开发者可以轻松发现、安装、管理和创建 AI 编程助手技能,为任何支持的 Agent 扩展专业能力。


  • Skills CLI GitHub 仓库
  • Agent Skills 规范
  • Skills 市场
  • Vercel Agent Skills 仓库

小讯
上一篇 2026-04-24 14:30
下一篇 2026-04-24 14:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/275290.html