E1 · 进阶深入

Skills 开发教程:创建与发布自定义技能包

2026-07-27

WorkBuddy 的 Skills 技能包是扩展 AI 能力的核心机制。如果说 MCP 连接器让 WorkBuddy 能"使用工具",那么 Skills 则让 WorkBuddy 能"掌握技能"——一个 Skill 封装了特定领域的知识、提示词模板、工具调用链和工作流逻辑。本文将从零开始,带你完成一个自定义 Skill 的开发、调试、测试和发布全流程。

📁目录结构

每个 Skill 是一个独立目录,遵循固定的文件组织规范:

my-skill/
├── manifest.json        # 技能元数据(必需)
├── README.md            # 技能说明文档
├── prompts/             # 提示词模板
│   ├── system.md        # 系统提示词
│   ├── user-template.md # 用户输入模板
│   └── few-shot/        # Few-shot 示例
│       ├── example-1.md
│       └── example-2.md
├── tools/               # 工具定义
│   └── tools.json       # 工具列表与参数 Schema
├── workflows/           # 工作流定义
│   └── main.json        # 主工作流
├── knowledge/           # 领域知识库
│   ├── glossary.md      # 术语表
│   └── best-practices.md
├── tests/               # 测试用例
│   ├── test-cases.json
│   └── expected/        # 期望输出
│       └── case-1.json
└── assets/              # 静态资源
    └── icon.svg         # 技能图标

其中 manifest.json 是唯一必需文件,其余按需添加。一个最简 Skill 可以只包含 manifest.jsonprompts/system.md

📋manifest.json 详解

manifest.json 是 Skill 的"身份证",WorkBuddy 通过它识别和加载技能:

{
  "name": "code-reviewer",
  "version": "1.2.0",
  "description": "智能代码审查技能,支持多语言代码质量分析",
  "author": "your-name",
  "license": "MIT",
  "category": "development",
  "tags": ["code-review", "quality", "security"],

  "entry": "prompts/system.md",
  "tools": "tools/tools.json",
  "workflows": ["workflows/main.json"],

  "dependencies": {
    "mcp": ["filesystem", "git"],
    "skills": []
  },

  "permissions": {
    "filesystem": "read",
    "network": false,
    "subprocess": false
  },

  "config": {
    "severity_threshold": {
      "type": "string",
      "enum": ["low", "medium", "high"],
      "default": "medium",
      "description": "报告的最低严重级别"
    },
    "languages": {
      "type": "array",
      "items": { "type": "string" },
      "default": ["javascript", "python", "java"],
      "description": "支持审查的编程语言"
    }
  },

  "compatibility": {
    "workbuddy": ">=1.5.0"
  }
}

关键字段说明

✍️提示词模板编写

提示词是 Skill 的核心逻辑载体。WorkBuddy 支持在 Markdown 中使用模板语法:


# 角色
你是一位资深代码审查专家,擅长 {{languages}} 语言的代码质量分析。

# 审查标准
按照以下维度逐项审查:
1. **代码规范**:命名、格式、注释是否符合团队规范
2. **逻辑正确性**:边界条件、异常处理、并发安全
3. **性能**:时间/空间复杂度、不必要的计算
4. **安全**:注入风险、敏感数据暴露、权限越权
5. **可维护性**:函数粒度、耦合度、可测试性

# 输出格式
以 Markdown 表格输出审查结果:

| 文件 | 行号 | 级别 | 类别 | 问题描述 | 修改建议 |
|------|------|------|------|----------|----------|

仅报告 {{severity_threshold}} 及以上级别的问题。

模板中的 {{变量}} 会从 config 中取值,用户可在技能设置中修改。也可以在调用时动态传入:


请审查以下代码变更:

## 变更文件
{{file_list}}

## Diff 内容
{{diff_content}}

## 上下文
{{context}}

🔧工具定义

Skill 可以定义专属工具,扩展 WorkBuddy 的可调用能力:

// tools/tools.json
[
  {
    "name": "run_linter",
    "description": "对指定文件运行代码检查工具",
    "parameters": {
      "type": "object",
      "properties": {
        "files": {
          "type": "array",
          "items": { "type": "string" },
          "description": "待检查的文件路径列表"
        },
        "linter": {
          "type": "string",
          "enum": ["eslint", "pylint", "checkstyle"],
          "description": "使用的检查工具"
        }
      },
      "required": ["files"]
    }
  },
  {
    "name": "get_git_diff",
    "description": "获取 Git 变更的 diff 内容",
    "parameters": {
      "type": "object",
      "properties": {
        "base": { "type": "string", "default": "main" },
        "scope": { "type": "string", "enum": ["staged", "unstaged", "all"] }
      }
    }
  }
]

工具的实际执行由 MCP 连接器承担,这里定义的是 Skill 层面的工具调用意图和参数约束,WorkBuddy 会自动路由到对应的 MCP 连接器。

🔄工作流定义

工作流将多个步骤编排为自动化流程:

// workflows/main.json
{
  "name": "full-review",
  "steps": [
    {
      "id": "get_diff",
      "tool": "get_git_diff",
      "params": { "scope": "staged" }
    },
    {
      "id": "lint",
      "tool": "run_linter",
      "params": { "files": "{{steps.get_diff.result.files}}" }
    },
    {
      "id": "review",
      "prompt": "prompts/user-template.md",
      "params": {
        "diff_content": "{{steps.get_diff.result.diff}}",
        "file_list": "{{steps.get_diff.result.files}}",
        "lint_result": "{{steps.lint.result}}"
      }
    }
  ],
  "output": "{{steps.review.result}}"
}

工作流支持步骤间数据传递({{steps.id.result}})、条件分支、并行执行等高级编排能力。

🐛开发调试

本地加载

开发阶段,将 Skill 目录放到 WorkBuddy 的本地技能路径下:

# macOS/Linux
~/.workbuddy/skills/local/

# Windows
%USERPROFILE%\.workbuddy\skills\local\

放入后重启 WorkBuddy 或执行 /skills reload 即可加载。本地 Skill 会显示 [local] 标记,修改文件后实时生效。

调试模式

在 Skill 的 config 中开启调试:

{
  "config": {
    "_debug": {
      "type": "boolean",
      "default": false,
      "description": "开启调试模式,输出详细日志"
    }
  }
}

开启后,WorkBuddy 会在控制台输出:提示词渲染结果、工具调用详情、工作流执行轨迹。也可以在对话中使用 /debug on 全局开启。

测试用例

tests/test-cases.json 中定义测试:

[
  {
    "name": "检测空指针异常",
    "input": {
      "code": "function getAge(user) { return user.age; }",
      "language": "javascript"
    },
    "expected": {
      "contains": ["空指针", "null", "undefined"],
      "severity": "high"
    }
  },
  {
    "name": "忽略合规代码",
    "input": {
      "code": "function add(a, b) { return a + b; }",
      "language": "javascript"
    },
    "expected": {
      "issues_count": 0
    }
  }
]

运行测试:/skills test code-reviewer,WorkBuddy 会逐条执行并报告通过/失败。

🚀发布流程

1. 质量检查

发布前执行完整检查:

/skills validate code-reviewer

检查项包括:manifest.json 格式校验、必需文件完整性、权限声明合理性、依赖可用性、测试用例通过率。

2. 版本管理

遵循语义化版本:

更新 manifest.json 中的 version 字段,并建议同步 Git 标签。

3. 发布到技能市场

# 登录(首次)
/workbuddy login

# 发布
/skills publish code-reviewer

# 更新已有技能
/skills publish code-reviewer --update

发布流程:上传包 → 自动化校验 → 人工审核(首次) → 上架。审核通常 1-3 个工作日。

4. 分享与协作

未发布到官方市场的 Skill 也可以通过以下方式分享:

💡最佳实践

📚 参考资料

💬 你对 WorkBuddy 有什么疑问?或者已经在用了,有什么心得想分享?欢迎在下方留言讨论!