# skill-creator > 创建高效技能的指南。当用户想要创建新技能(或更新现有技能)以扩展 Copilot 的能力时,应使用此技能,包括专业知识、工作流程或工具集成。 - Author: imbatony - Repository: imbatony/copilot-tools - Version: 20260130140414 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/imbatony/copilot-tools - Web: https://mule.run/skillshub/@@imbatony/copilot-tools~skill-creator:20260130140414 --- --- name: skill-creator description: 创建高效技能的指南。当用户想要创建新技能(或更新现有技能)以扩展 Copilot 的能力时,应使用此技能,包括专业知识、工作流程或工具集成。 --- # skill-creator 本技能提供创建高效技能的指导。 ## 关于技能 技能是模块化、自包含的包,通过提供专业知识、工作流程和工具来扩展 Copilot 的能力。可以将它们视为特定领域或任务的"入门指南"——它们将 Copilot 从通用代理转变为配备了模型无法完全掌握的程序性知识的专业代理。 ### 技能提供的内容 1. 专业工作流程 - 特定领域的多步骤流程 2. 工具集成 - 处理特定文件格式或 API 的指令 3. 领域专业知识 - 公司特定知识、数据模式、业务逻辑 4. 捆绑资源 - 用于复杂和重复任务的脚本、参考资料和资产 ### 技能的结构 每个技能由必需的 SKILL.md 文件和可选的捆绑资源组成: ``` skill-name/ ├── SKILL.md (必需) │ ├── YAML frontmatter 元数据 (必需) │ │ ├── name: (必需) │ │ └── description: (必需) │ └── Markdown 指令 (必需) └── 捆绑资源 (可选) ├── scripts/ - 可执行代码 (Python/Bash 等) ├── references/ - 按需加载到上下文的文档 └── assets/ - 输出中使用的文件 (模板、图标、字体等) ``` #### SKILL.md (必需) **元数据质量:** YAML frontmatter 中的 `name` 和 `description` 决定了 Copilot 何时使用该技能。要具体说明技能的功能和使用时机。使用第三人称(例如"当...时应使用此技能"而不是"使用此技能来...")。 #### 捆绑资源 (可选) ##### 脚本 (`scripts/`) 用于需要确定性可靠性或重复编写的任务的可执行代码(Python/Bash 等)。 - **何时包含**:当相同代码被重复编写或需要确定性可靠性时 - **示例**:用于 PDF 旋转任务的 `scripts/rotate_pdf.py` - **优点**:节省 Token、确定性强、可在不加载到上下文的情况下执行 - **注意**:脚本可能仍需要被 Copilot 读取以进行修补或环境特定调整 ##### 参考资料 (`references/`) 按需加载到上下文中以指导 Copilot 流程和思考的文档和参考材料。 - **何时包含**:用于 Copilot 在工作时应参考的文档 - **示例**:用于财务模式的 `references/finance.md`、用于公司 NDA 模板的 `references/mnda.md`、用于公司政策的 `references/policies.md`、用于 API 规范的 `references/api_docs.md` - **用例**:数据库模式、API 文档、领域知识、公司政策、详细工作流程指南 - **优点**:保持 SKILL.md 精简,仅在 Copilot 确定需要时加载 - **最佳实践**:如果文件较大(>10k 字),在 SKILL.md 中包含 grep 搜索模式 - **避免重复**:信息应只存在于 SKILL.md 或参考文件中,而不是两者都有。除非信息真正是技能的核心,否则优先将详细信息放在参考文件中——这样可以保持 SKILL.md 精简,同时使信息可发现而不占用上下文窗口。在 SKILL.md 中只保留必要的程序指令和工作流程指导;将详细的参考材料、模式和示例移至参考文件。 ##### 资产 (`assets/`) 不打算加载到上下文中,而是用于 Copilot 产生的输出中的文件。 - **何时包含**:当技能需要在最终输出中使用的文件时 - **示例**:用于品牌资产的 `assets/logo.png`、用于 PowerPoint 模板的 `assets/slides.pptx`、用于 HTML/React 样板的 `assets/frontend-template/`、用于排版的 `assets/font.ttf` - **用例**:模板、图像、图标、样板代码、字体、被复制或修改的示例文档 - **优点**:将输出资源与文档分离,使 Copilot 能够在不加载到上下文的情况下使用文件 ### 渐进式披露设计原则 技能使用三级加载系统来高效管理上下文: 1. **元数据 (name + description)** - 始终在上下文中 (~100 字) 2. **SKILL.md 主体** - 技能触发时 (<5k 字) 3. **捆绑资源** - 按 Copilot 需要加载 (无限制*) *无限制是因为脚本可以在不读入上下文窗口的情况下执行。 ## 技能创建流程 要创建技能,请按顺序遵循"技能创建流程",仅在有明确理由表明不适用时才跳过步骤。 ### 步骤 1:通过具体示例理解技能 仅当技能的使用模式已经清楚理解时才跳过此步骤。即使在处理现有技能时,此步骤仍然有价值。 要创建有效的技能,需要清楚地理解技能将如何使用的具体示例。这种理解可以来自直接的用户示例或经过用户反馈验证的生成示例。 例如,在构建图像编辑器技能时,相关问题包括: - "图像编辑器技能应支持哪些功能?编辑、旋转、还有其他吗?" - "你能举一些这个技能如何使用的例子吗?" - "我可以想象用户会要求诸如'去除这张图片中的红眼'或'旋转这张图片'之类的事情。你还能想到这个技能的其他使用方式吗?" - "用户说什么应该触发这个技能?" 为避免让用户不知所措,避免在单条消息中问太多问题。从最重要的问题开始,根据需要跟进以获得更好的效果。 当对技能应支持的功能有清晰的认识时,结束此步骤。 ### 步骤 2:规划可重用的技能内容 要将具体示例转化为有效的技能,通过以下方式分析每个示例: 1. 考虑如何从头开始执行示例 2. 确定在重复执行这些工作流程时哪些脚本、参考资料和资产会有帮助 示例:在构建 `pdf-editor` 技能以处理"帮我旋转这个 PDF"之类的查询时,分析显示: 1. 旋转 PDF 每次都需要重写相同的代码 2. 在技能中存储 `scripts/rotate_pdf.py` 脚本会很有帮助 示例:在设计 `frontend-webapp-builder` 技能以处理"给我构建一个待办事项应用"或"给我构建一个追踪我步数的仪表板"之类的查询时,分析显示: 1. 编写前端 webapp 每次都需要相同的 HTML/React 样板 2. 在技能中存储包含样板 HTML/React 项目文件的 `assets/hello-world/` 模板会很有帮助 示例:在构建 `big-query` 技能以处理"今天有多少用户登录了?"之类的查询时,分析显示: 1. 查询 BigQuery 每次都需要重新发现表模式和关系 2. 在技能中存储记录表模式的 `references/schema.md` 文件会很有帮助 要确定技能的内容,分析每个具体示例以创建要包含的可重用资源列表:脚本、参考资料和资产。 ### 步骤 3:初始化技能 此时,是时候实际创建技能了。 仅当正在开发的技能已存在且需要迭代或打包时才跳过此步骤。在这种情况下,继续下一步。 从头创建新技能时,始终运行 `init_skill.py` 脚本。该脚本方便地生成一个新的模板技能目录,自动包含技能所需的一切,使技能创建过程更加高效和可靠。 用法: ```bash scripts/init_skill.py --path ``` 该脚本: - 在指定路径创建技能目录 - 生成带有正确 frontmatter 和 TODO 占位符的 SKILL.md 模板 - 创建示例资源目录:`scripts/`、`references/` 和 `assets/` - 在每个目录中添加可自定义或删除的示例文件 初始化后,根据需要自定义或删除生成的 SKILL.md 和示例文件。 ### 步骤 4:编辑技能 编辑(新生成或现有的)技能时,请记住该技能是为另一个 Copilot 实例使用而创建的。专注于包含对 Copilot 有益且不明显的信息。考虑哪些程序性知识、领域特定细节或可重用资产可以帮助另一个 Copilot 实例更有效地执行这些任务。 #### 从可重用技能内容开始 要开始实施,从上面确定的可重用资源开始:`scripts/`、`references/` 和 `assets/` 文件。请注意,此步骤可能需要用户输入。例如,在实施 `brand-guidelines` 技能时,用户可能需要提供要存储在 `assets/` 中的品牌资产或模板,或存储在 `references/` 中的文档。 另外,删除技能不需要的任何示例文件和目录。初始化脚本在 `scripts/`、`references/` 和 `assets/` 中创建示例文件以演示结构,但大多数技能不需要所有这些。 #### 更新 SKILL.md **写作风格:** 使用**祈使句/不定式形式**(动词优先的指令)编写整个技能,而不是第二人称。使用客观的指导性语言(例如"要完成 X,执行 Y"而不是"你应该做 X"或"如果你需要做 X")。这保持了一致性和清晰度,便于 AI 理解。 要完成 SKILL.md,回答以下问题: 1. 技能的目的是什么,用几句话说明? 2. 技能应该在什么时候使用? 3. 在实践中,Copilot 应该如何使用该技能?上面开发的所有可重用技能内容都应该被引用,以便 Copilot 知道如何使用它们。 ### 步骤 5:打包技能 技能准备好后,应将其打包成可分发的 zip 文件与用户共享。打包过程会自动首先验证技能以确保它满足所有要求: ```bash scripts/package_skill.py ``` 可选的输出目录指定: ```bash scripts/package_skill.py ./dist ``` 打包脚本将: 1. **自动验证**技能,检查: - YAML frontmatter 格式和必需字段 - 技能命名约定和目录结构 - 描述的完整性和质量 - 文件组织和资源引用 2. 如果验证通过,**打包**技能,创建以技能命名的 zip 文件(例如 `my-skill.zip`),包含所有文件并保持正确的目录结构以便分发。 如果验证失败,脚本将报告错误并退出而不创建包。修复任何验证错误并再次运行打包命令。 ### 步骤 6:迭代 测试技能后,用户可能会请求改进。这通常发生在使用技能之后,对技能的表现有新鲜的上下文。 **迭代工作流程:** 1. 在实际任务中使用技能 2. 注意到困难或低效之处 3. 确定 SKILL.md 或捆绑资源应如何更新 4. 实施更改并再次测试