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.json 和 prompts/system.md。
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 会逐条执行并报告通过/失败。
发布前执行完整检查:
/skills validate code-reviewer
检查项包括:manifest.json 格式校验、必需文件完整性、权限声明合理性、依赖可用性、测试用例通过率。
遵循语义化版本:
更新 manifest.json 中的 version 字段,并建议同步 Git 标签。
# 登录(首次)
/workbuddy login
# 发布
/skills publish code-reviewer
# 更新已有技能
/skills publish code-reviewer --update
发布流程:上传包 → 自动化校验 → 人工审核(首次) → 上架。审核通常 1-3 个工作日。
未发布到官方市场的 Skill 也可以通过以下方式分享:
/skills install https://github.com/you/code-reviewer-skillskills.path 指向.skill 包,对方拖入 WorkBuddy 即可安装knowledge/ 目录,通过 RAG 按需检索,避免提示词过长