logo
0
0
WeChat Login
docs: 更新 README 并添加中文说明文档

ai-skills

一个多平台可复用 Agent 技能仓库。

功能特性

  • skills-src/ 目录下编写一次技能
  • 自动生成多平台投影:
    • Claude Code: .claude/skills/
    • Codex: .agents/skills/
    • OpenCode: .opencode/skills/
    • WorkBuddy: .workbuddy/skills/

命令

npm run sync # 同步所有技能到所有平台 npm run sync:watch # 监视模式(需先执行: npm install chokidar) npm run sync:skill -- <name> # 同步指定技能(增量同步) npm run validate # 验证所有 meta.json 文件 npm run test # 运行测试

命令行选项

node tools/sync-skills.mjs [选项] 选项: --skill, -s <名称> 仅同步指定的技能 --watch, -w 监视文件变化并自动同步 --validate, -v 仅验证 meta.json 文件,不同步 --help, -h 显示帮助信息

技能目录结构

skills-src/<技能名称>/ ├── meta.json # 必需:元数据和平台配置 ├── SKILL.md # 必需:技能指令文档 ├── scripts/ # 可选:可执行脚本 ├── assets/ # 可选:静态资源 ├── references/ # 可选:参考文档 ├── prompts/ # 可选:提示词模板 └── config.json # 可选:技能配置文件

meta.json 字段说明

字段必需描述
name小写 kebab-case 格式标识符(1-64 字符)
description简短描述(10-500 字符)
version语义化版本号(如 "1.0.0")
author作者名称或账号(最大 100 字符)
tags标签数组,用于分类发现(最多 10 个)
entry可执行脚本路径(相对于技能目录)
platforms平台特定配置

平台配置示例

{ "platforms": { "claude": { "argument_hint": "--file <路径> 或 --text <内容>", "allowed_tools": ["read_file", "write_to_file"], "user_invocable": true, "disable_model_invocation": false }, "codex": { "display_name": "我的技能", "short_description": "简短描述", "allow_implicit_invocation": true }, "opencode": { "use_claude_projection": true }, "bolt": { "use_claude_projection": true } } }

平台配置字段说明

Claude 平台:

  • argument_hint - 参数提示信息
  • allowed_tools - 允许使用的工具列表
  • user_invocable - 是否允许用户直接调用
  • disable_model_invocation - 是否禁用模型自动调用

Codex 平台:

  • display_name - 显示名称
  • short_description - 简短描述
  • allow_implicit_invocation - 是否允许隐式调用

OpenCode / Bolt 平台:

  • use_claude_projection - 是否使用 Claude 格式投影

开发工作流

  1. skills-src/<技能名称>/ 下编辑技能
  2. 运行 npm run sync(或 npm run sync:watch 自动同步)
  3. 在目标平台使用生成的技能文件夹

注意事项

  • 不要手动编辑 .claude/.agents/.opencode/.workbuddy/ 目录下的生成文件
  • 每个技能专注于单一功能
  • 所有修改应在 skills-src/ 目录下进行
  • 所有 meta.json 文件根据 skills-src/schema.json 进行验证
  • 同步单个技能时使用增量同步(跳过未变更的文件)

验证规则

meta.json 文件必须符合以下验证规则:

  • name: 必须匹配正则 ^[a-z][a-z0-9-]*$(小写字母开头,可包含小写字母、数字和连字符)
  • description: 长度必须在 10-500 字符之间
  • version: 必须匹配正则 ^\d+\.\d+\.\d+$(语义化版本格式)
  • tags: 每个标签必须匹配 ^[a-z][a-z0-9-]*$