Create Skill 扩展规则
这个技能扩展了内置的 create-skill 技能,提供额外的最佳实践和规则,帮助创建更高质量的 SKILL.md 文件。
核心原则
在创建 SKILL.md 时,始终遵循以下原则:
保持简洁
只包含代理需要知道但无法轻易推断的信息。代理已经很智能,避免过度解释。
✅ 好的示例:
## 使用 Vitest 测试
运行测试: `pnpm test`
测试文件必须放在 `__tests__` 目录
❌ 过于冗长:
## 使用 Vitest 测试
测试是软件开发的重要组成部分。我们使用 Vitest 作为测试框架,
因为它速度快且与 Vite 集成良好。Vitest 是由 Vite 团队开发的,
它提供了与 Jest 兼容的 API...
指导原则:
- 每个句子都应该有实际价值
- 删除显而易见的说明
- 专注于特定于项目的知识
- 避免教学式的解释
使用具体的命令
始终提供可直接执行的命令,而不是抽象描述。
✅ 具体: pnpm install、python scripts/validate.py
❌ 抽象: "安装项目依赖"、"运行验证脚本"
说明优先级
使用"必须"、"应该"、"可以"等词来表明重要性,帮助代理理解约束的严格程度。
## 代码风格
- **必须**: 使用 TypeScript strict 模式
- **应该**: 优先使用函数式组件
- **可以**: 使用 ESLint 自动修复小问题
优先级指南:
- 必须 - 不可违反的硬性要求
- 应该 - 强烈建议但有例外情况
- 可以 - 可选的改进建议
包含上下文
解释为什么某个规则很重要,而不仅仅是说明是什么。简短的原因说明能帮助代理做出更好的决策。
## 验证流程
- 所有 API 端点必须有集成测试(防止生产环境中断)
- 使用 `pnpm test:api` 运行 API 测试
利用层级结构
使用清晰的标题层级让代理能够快速定位相关信息。
好的层级示例:
# 主标题
## 主要部分
### 子部分
#### 详细说明(如需要)
使用相对路径引用文件
在 SKILL.md 中引用其他文件时,统一使用 Markdown 链接格式 [描述](相对路径)。
✅ 好的示例:
详见[setup.ts](./config/setup.ts)
查看[usage.md](./examples/usage.md)
使用[validate.py](./scripts/validate.py)
❌ 避免:
详见 `config/setup.ts`(缺少链接)
详见 C:\project\config\setup.ts(绝对路径)
详见 /home/user/project/config/setup.ts(绝对路径)
为什么重要:
- 链接可点击,方便代理和用户导航
- 相对路径跨平台兼容
- 保持文档的可移植性
避免操作系统特定的命令
在 SKILL.md 中提供命令时,使用跨平台的方式或工具无关的描述。
✅ 跨平台:
## 环境设置
- 创建配置文件 `.env`(复制 `.env.example` 的内容)
- 安装依赖: `pnpm install`
- 运行脚本: `node scripts/setup.js`
❌ 操作系统特定:
- 创建配置: `touch .env`(仅 Unix/Linux)
- 创建链接: `ln -s source target`(仅 Unix/Linux)
- 查看进程: `ps aux | grep node`(仅 Unix/Linux)
- 复制文件: `cp source dest`(仅 Unix/Linux)
- 移动文件: `mv old new`(仅 Unix/Linux)
避免使用有序编号
避免使用 1. 2. 3. 这样的有序标记,使用层级标题或无序列表代替,减少维护负担。
✅ 推荐做法:
## 部署流程
### 准备阶段
- 确保所有测试通过: `pnpm test`
- 更新版本号: `pnpm version`
### 构建阶段
- 构建生产版本: `pnpm build`
- 验证构建输出: `pnpm validate:build`
或使用无序列表:
## 核心要素
- **简洁性** - 只包含必要信息
- **具体性** - 提供可执行的命令
- **可用性** - 跨平台兼容
❌ 避免:
## 部署流程
1. 准备阶段
- 确保所有测试通过
- 更新版本号
2. 构建阶段
- 构建生产版本
- 验证构建输出
为什么重要:
- 插入新步骤时不需要重新编号所有后续项目
- 删除步骤不会造成编号断层
- 减少维护成本和出错风险
- 标题层级提供了更好的语义结构
例外情况:
- 如果顺序执行非常关键且需要明确强调步骤编号(如"严格按照步骤 1、2、3 执行"),可以使用有序编号
- 在代码块或示例输出中引用特定步骤时
命令格式规范
可执行命令的写法
提供命令时,使用代码块格式:
运行测试:
\`\`\`bash
pnpm test
\`\`\`
或内联格式: `pnpm test`
脚本调用的写法
如果技能包含 scripts/ 目录中的脚本,明确说明如何调用:
## 验证工具
运行验证:
\`\`\`bash
python scripts/validate.py input.json
\`\`\`
参数说明:
- `input.json` - 要验证的输入文件
示例模式的使用
当技能需要展示输出格式或代码模式时,使用具体的示例而非抽象描述。
输出格式示例
## 报告格式
使用以下结构:
\`\`\`markdown
# 分析报告
## 摘要
[一段话概述关键发现]
## 详细发现
- 发现一 - 具体数据支持
- 发现二 - 具体数据支持
## 建议
- 具体可执行的建议 1
- 具体可执行的建议 2
\`\`\`
代码模式示例
## 错误处理模式
使用此模式处理异步操作:
\`\`\`typescript
try {
const result = await operation();
return { success: true, data: result };
} catch (error) {
console.error('Operation failed:', error);
return { success: false, error: error.message };
}
\`\`\`
验证清单
创建或更新 SKILL.md 后,使用此清单验证质量:
内容质量
- 每个说明都简洁明了,无冗余
- 所有命令都是具体可执行的
- 使用了优先级词汇(必须/应该/可以)
- 重要规则包含了原因说明
- 标题层级清晰合理
技术规范
- 所有文件引用使用
[描述](相对路径)格式 - 避免了操作系统特定的命令(如
touch、ln、ps等) - 所有命令都跨平台兼容
格式规范
- Markdown 格式正确
- 代码块有正确的语言标记
- 示例代码完整可用
- 链接都有效
可用性
- 新手能够理解并遵循
- 有足够的示例支持
- 复杂概念有清晰的说明
- 避免了行话和假设
常见问题
何时需要提供命令的详细说明?
当命令的参数或行为不够直观时。例如:
运行特定测试:
\`\`\`bash
pnpm test -- --filter="auth\*"
\`\`\`
- `--filter` 参数支持 glob 模式
- 只运行匹配的测试文件
如何处理平台差异?
如果某个操作在不同平台上确实不同,提供描述而非命令:
## 环境设置
- 创建 `.env` 文件在项目根目录
- 复制 `.env.example` 的内容到 `.env`
- 根据你的环境修改配置值
SKILL.md 应该多详细?
遵循"最小必要信息"原则:
- 包含:项目特定的知识、非显而易见的约定、关键的上下文
- 排除:常识性内容、可以从代码推断的信息、过度的背景知识
如何组织复杂的工作流程?
使用清晰的子标题组织步骤:
## 部署流程
### 准备阶段
- 确保所有测试通过: `pnpm test`
- 更新版本号: `pnpm version`
### 构建阶段
- 构建生产版本: `pnpm build`
- 验证构建输出: `pnpm validate:build`
### 发布阶段
- 发布到 npm: `pnpm publish`
- 创建 Git tag: `git tag v$(node -p "require('./package.json').version")`
与内置 create-skill 技能的配合
此扩展技能与内置的 create-skill 技能互补:
- 内置技能: 提供 SKILL.md 的基本结构、元数据规范、文件组织
- 此扩展: 提供编写风格、命令格式、跨平台兼容性、质量标准
在创建技能时,先应用内置 create-skill 技能建立基础结构,然后应用此扩展技能确保内容质量和规范性。
总结
创建高质量的 SKILL.md 文件需要平衡以下要素:
- 简洁性 - 只包含必要信息
- 具体性 - 提供可执行的命令和清晰的示例
- 可用性 - 跨平台兼容、工具无关
- 结构化 - 清晰的层级和组织
- 上下文 - 解释原因而非只陈述事实
遵循这些规则,你的技能文档将能帮助代理更好地理解和执行任务。
