/skills validate、/skills test、/skills publish、/skills reload、/workbuddy login 等)与登录/发布流程。官方对技能的管理是「设置 → 技能」面板:安装走「上传技能 / 查找技能 / 创建技能」,启停在「已安装」中通过开关控制。下文中的技能包结构为示意示例,具体请以官方《技能》文档与技能包模板为准。WorkBuddy 的 Skills 技能包是扩展 AI 能力的核心机制。如果说 MCP 连接器让 WorkBuddy 能"使用工具",那么 Skills 则让 WorkBuddy 能"掌握技能"——一个 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 之类)承载「技能叫什么、干什么用、什么时候触发」,其余目录按需添加。一个最简技能可以只有元数据 + 一段提示词。
一个技能包通常包含这几类内容——核心是「让模型知道什么时候该用它、该怎么做」:
{
"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}})、条件分支、并行执行等高级编排能力。
开发阶段,把技能包导入 WorkBuddy 即可:在「设置 → 技能」面板点击「添加技能 → 上传技能」,拖拽或点击选择本地技能包文件,导入后系统会自动完成配置,无需额外操作。
导入后可在「已安装」列表中用开关启用或关闭该技能——关闭后技能仍保留在列表中,只是不参与模型的自动调用,重新开启即可恢复。
在 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
}
}
]
发布前建议按这些用例逐条手工验证,确保正向场景与边界场景都符合预期。
发布前建议自行完成一轮检查,重点确认:技能包文件完整、权限声明与实际行为一致、依赖可用、测试用例全部通过。
遵循语义化版本:
更新 manifest.json 中的 version 字段,并建议同步 Git 标签。
官方技能市场以官方推荐技能为主,自定义技能一般不直接上架。若要与他人共享,可把技能包文件(或代码仓库地址)发给对方,对方在技能面板「添加技能 → 上传技能」中导入即可使用。
团队协作时,推荐这些做法:
knowledge/ 目录,通过 RAG 按需检索,避免提示词过长