技能
技能(Skill)是一种能力封装机制,用于将专业知识(如编码经验、常见问题解决方案等)组织为可复用的模块。Agent Skills本质上是包含指令、脚本和资源的文件夹,Agent可以按需动态加载这些专业化的“技能包”,以提升特定任务的执行能力、执行效率。
技能的目录结构
skill-name/
├── SKILL.md (必填)
│ ├── YAML frontmatter 元数据 (必填)
│ │ ├── name: (必填)
│ │ └── description: (必填)
│ └── Markdown 指令 (必填)
└── Bundled Resources/ 捆绑资源 (选填)
├── scripts/ - 可执行代码 (Python/Bash 等)
├── references/ - 旨在根据需要加载到上下文中的文档
└── assets/ - 输出中使用的文件 (模板、图标、字体等)
核心必填文件:
- skill-name/:整个技能的根目录,skill-name需要替换成实际的技能名称(比如data-analysis-skill)。
- SKILL.md:这是技能的核心描述文件,相当于技能的“说明书”,必须包含以下两部分:
- YAML frontmatter元数据:放在SKILL.md文件的最顶部,用三个英文连字符“---”包裹,是AI可解析的结构化信息。包含name(技能名称)和description(技能描述)两个字段。
- Markdown指令:YAML元数据下方的Markdown内容,用于详细说明技能的使用方法、参数、示例和依赖等。
可选捆绑资源目录:存放技能配套资源的目录,非必填,但能让技能更完整。
- scripts/:存放技能的可执行脚本,例如Python脚本、Shell脚本等,实现确定性操作。
- references/:存放技能依赖的参考文档,例如API文档、领域知识、公司政策等,是给Agent的知识库,这些文档会在技能执行时按需加载到上下文。
- assets/:存放资源文件,例如字体资源、公司Logo、PPT模板等,直接在Agent生成的输出中使用,不需要被加载到上下文窗口。
编写SKILL.md
创建一个带有YAML frontmatter和Markdown内容的SKILL.md文件样例如下:
--- name: safe-file-reader description: Read files without making changes. Use when you need read-only files access. --- # Safe File Reader This Skill provides read-only file access. ## Instructions 1. Use Read to view file contents 2. Use Grep to search within files 3. Use Glob to find files by pattern
- name:仅允许使用小写字母、数字和连字符(-),总长度不得超过64个字符。
- description:技能的简要描述及其使用时机,总长度不得超过1024个字符。description字段对于华为云码道发现何时使用这个技能至关重要,它应该涵盖技能的功能和华为云码道应该何时使用它。
添加支持文件
在SKILL.md同级目录下创建其他文件,例如:
my-skill/
├── SKILL.md
├── reference.md
├── examples.md
├── scripts/
│ └── helper.py
└── templates/
└── template.txt
在SKILL.md中写明引用这些支持文件,例如:
For advanced usage, see [reference.md](reference.md). Run the helper script: ```bash python scripts/helper.py input.txt ```
技能级别
系统内置技能
华为云码道已内置多款技能,开箱即用,快速提升开发效率。
|
技能名称 |
技能说明 |
适用范围 |
|---|---|---|
|
creating-sdd-directory |
用于初始化SDD(规范驱动开发)目录结构的技能。 |
All |
|
fix-java-ut |
修复Java单元测试,提供结构化和专家驱动的方法来验证和修复生成单元测试的正确性,通过专门的验证工具和专家修复策略确保编译和运行时正确性。 |
在JetBrains平台IDE使用 |
|
generate-java-ut |
生成Java单元测试,为Java函数创建单元测试,确保上下文信息有序检索、分析Mock对象,并在生成最终单元测试代码之前生成综合测试计划。 |
|
|
improve-java-ut-coverage |
提升Java单元测试覆盖率,当需要提升Java单元测试用例的覆盖率时使用,生成覆盖率提升的任务规划,分析未覆盖语句的原因,提供详细的覆盖率提升建议。 |
|
|
initializing-sdd-directory |
为项目智能初始化一个结构化的软件设计文档(SDD)目录体系,为后续实现设计、任务与代码的自动同步奠定基础。 |
|
|
java-test-report |
智能生成并解读Java项目的测试报告。不仅展示通过率与覆盖率,更会解读失败原因、定位未覆盖的关键代码,并直接给出优化测试用例的具体建议。 |
|
|
managing-design-document |
智能创建、更新和维护软件项目的技术设计文档。将代码、设计决策和需求变更自动同步到文档中,确保文档始终与项目实际保持一致,减少手动维护的负担。 |
All |
|
managing-sdd-design-markdown |
将SDD作为Markdown文件进行智能、结构化的维护,并确保其内容与代码实现和需求变更自动同步。利用Markdown的简洁性和版本控制友好性,结合AI的智能分析能力,将设计文档从静态的“归档文件”转变为与项目共同演进的“活文档”。 |
在JetBrains平台IDE使用 |
|
managing-sdd-spec-markdown |
将软件需求规格说明书(SRS/Specification)作为Markdown文件进行智能维护,并确保需求描述、验收标准与后续的设计、实现及测试用例保持精确的同步与可追溯性。将需求规格从一份独立的静态文档,转变为与项目生命周期紧密联动、可自动验证一致性的“单一可信源”。 |
|
|
managing-sdd-tasks-markdown |
将开发任务、待办事项与SDD在Markdown中智能关联,并确保任务状态、完成情况与设计实现、代码变更自动同步。让项目管理中的任务从孤立的“待办清单”,转变为与设计、代码紧密绑定并可自动追踪进展的“活工作项”,确保每一项任务都能精准驱动设计落地。 |
|
|
managing-spec-document |
智能维护项目的各类规格文档,并确保其内容与代码实现和需求变更自动同步。 |
All |
|
managing-tasks-document |
将项目任务(如开发、修复、评审)与相关技术文档(如设计、需求)智能关联,并自动同步任务状态与文档内容。让项目管理中的任务从静态的条目,转变为能自动驱动文档更新、并反映实际进展的“动态执行单元”,确保任务追踪与项目知识库实时一致。 |
|
|
skill-creator |
Skill创建助手。当您需要一个Agent Skill时,可以直接说出“帮忙创建一个Skill”并描述Skill所需要的详细能力,华为云码道会为您生成对应的Skill技能包。 |
在JetBrains平台IDE使用 |
|
test-driven-development |
测试驱动开发助手。当您描述新功能或修改需求时,直接说“用TDD帮我实现”,华为云码道会先自动生成测试用例,再写最小化通过代码,最后重构优化。适用于新功能开发、遗留代码改造,确保每段代码都有测试覆盖,降低后续BUG出现的概率。 |
|
|
frontend-design |
适用于Web页面生成和页面美化的场景,当用户需要构建Web组件、页面、Web应用程序时使用此技能,生成的内容更加美观。 |
在华为云码道IDE和Visual Studio Code中使用 |
|
i18n-integration |
i18n-integration是一个专门用于实现国际化(i18n)功能的技能,当用户需要为Web应用程序添加国际化支持时使用此技能。 |
|
|
ide-tool |
ide-tool是一个专门用于调用IDE功能的技能,当用户需要使用IDE命令或配置完成开发任务时使用此技能。 |
添加技能
华为云码道支持添加项目级与个人级两种类型的技能。除了直接创建技能外,您还可以通过导入的方式,快速添加自定义技能,灵活高效,轻松扩展能力。
如需删除已添加或导入的项目级、个人级技能,请前往技能对应的存放目录进行删除操作,具体存放位置参见表1。
为当前项目定制的技能,随代码库一并分发,确保团队成员在统一规范下协作开发,提升一致性与交付效率。项目级技能添加后即生效,何时使用由Agent决定。
- 参考快速启动操作,登录华为云码道。
- 打开华为云码道聊天窗口。
- 华为云码道IDE:单击IDE顶部菜单栏中的展开AI侧栏图标
,打开华为云码道聊天窗口。 - Visual Studio Code:单击Visual Studio Code侧边栏图标
,打开华为云码道聊天窗口。 - JetBrains:以IntelliJ IDEA为例,单击IntelliJ IDEA侧边栏图标
,打开华为云码道聊天窗口。
不同工具中华为云码道的界面风格有所差异,本章以其在IDE工具中的界面为例进行介绍,实际操作请以所用工具的显示为准。
- 华为云码道IDE:单击IDE顶部菜单栏中的展开AI侧栏图标
- 在聊天界面中,单击设置图标
,进入智能体设置页面。 - 选择“技能与规则”,在项目级页签中单击技能后的
。 - 输入技能名称,例如data-cleaner-skill,单击“确定”。
名称仅支持小写字母、数字和连字符(-),开头和结尾不能是连字符,总长度不能超过64个字符。
- 在SKILL.md文件中编写技能,完成后按快捷键(Windows/Linux:“Ctrl+S”;macOS:“Command(⌘)+S”)保存。
SKILL.md文件中单条技能的内容长度不能超过20000个字符。
根据您的使用习惯和偏好设定个人级技能,华为云码道将始终遵循这些Skills,在所有项目中为您提供更贴合个人风格的输出。个人级技能添加后即生效,何时使用由Agent决定。
- 参考快速启动操作,登录华为云码道。
- 打开华为云码道聊天窗口。
- 华为云码道IDE:单击IDE顶部菜单栏中的展开AI侧栏图标
,打开华为云码道聊天窗口。 - Visual Studio Code:单击Visual Studio Code侧边栏图标
,打开华为云码道聊天窗口。 - JetBrains:以IntelliJ IDEA为例,单击IntelliJ IDEA侧边栏图标
,打开华为云码道聊天窗口。
不同工具中华为云码道的界面风格有所差异,本章以其在IDE工具中的界面为例进行介绍,实际操作请以所用工具的显示为准。
- 华为云码道IDE:单击IDE顶部菜单栏中的展开AI侧栏图标
- 在聊天界面中,单击设置图标
,进入智能体设置页面。 - 选择“技能与规则”,在个人级页签中单击技能后的
。 - 输入技能名称,例如data-cleaner-skill,单击“确定”。
名称仅支持小写字母、数字和连字符(-),开头和结尾不能是连字符,总长度不能超过64个字符。
- 在SKILL.md文件中编写技能,完成后按快捷键(Windows/Linux:“Ctrl+S”;macOS:“Command(⌘)+S”)保存。
SKILL.md文件中单条技能的内容长度不能超过20000个字符。
如果您本地已创建好对应的技能文件夹,也可以通过导入的方式,快速将本地Skill导入,供华为云码道调用。
创建技能文件夹
- 新建文件夹。您需要在本地创建新文件夹,以技能名称命名,当前仅支持小写字母和连字符,例如data-cleaner-skill。
- 创建SKILL.md文件,文件开头需配置YAML Front Matter元数据信息。
SKILL.md文件的格式如下:
# --- name:data-cleaner-skill #(必须)技能名称,最长64个字符,仅限小写字母、数字和连字符,不能以连字符开头或结尾。 description:这是一个用于清洗格式化数据的专业工具,支持JSON和CSV转换。 #(必须)定义功能,描述技能的作用,最长是1024个字符。 license:Proprietary #(选填)定义Skill的授权协议,Proprietary表示专有协议,即该工具是闭源的、有专属版权,未经授权不可随意修改和分发,对应开源协议如MIT、Apache2.0。 --- #Data Cleaner Skill 您可以在当前Skill文件里编写技能的详细介绍、使用方法、输入输出示例等。
- (可选)放入功能文件。根据您的智能体逻辑,可以将相关的脚本文件(如.js、.py、.json等)放入SKILL.md的同目录下。
导入技能
- 导入项目级技能
将已创建的技能文件夹直接复制到工程目录下,放置到工程根目录下的“.codeartsdoer/skills”。导入后,项目级技能默认开启,由Agent决定何时使用。
- 导入个人级技能
将已创建的Skill文件夹直接复制到用户目录下,放置到“本地~/.codeartsdoer/skills/”。导入后,个人级技能默认开启,由Agent决定何时使用。
使用技能
- 参考快速启动操作,登录华为云码道。
- 打开华为云码道聊天窗口。
- 华为云码道IDE:单击IDE顶部菜单栏中的展开AI侧栏图标
,打开华为云码道聊天窗口。 - Visual Studio Code:单击Visual Studio Code侧边栏图标
,打开华为云码道聊天窗口。 - JetBrains:以IntelliJ IDEA为例,单击IntelliJ IDEA侧边栏图标
,打开华为云码道聊天窗口。
不同工具中华为云码道的界面风格有所差异,本章以其在IDE工具中的界面为例进行介绍,实际操作请以所用工具的显示为准。
- 华为云码道IDE:单击IDE顶部菜单栏中的展开AI侧栏图标
- 在聊天界面的输入框下方选择“智能体”,切换到智能体模式。
图1 切换到智能体模式
- 在聊天窗口的输入框中,输入“使用test-driven-development技能开发一个斐波那契数列生成器”,单击
图标。 - 查看技能调用结果。
图2 技能调用结果