AgentDock

Skills

在 AgentDock 中理解、设计和管理 AI 编程 Skills

Skills

AI Skills 是 AgentDock 的核心资产,它们将专业知识和最佳实践编码为可复用的能力模块。


什么是 Skill?

Skill 是一个结构化的知识包,教导 AI 助手如何执行特定类型的任务。它包含:

  • 核心思想(Essence):Skill 的灵魂,定义目标、重点和边界
  • 设计原则(Principles):抽象的任务目标和关键判断标准
  • 执行流程(Workflow):LLM 自主规划的执行路径
  • 资产文件(Assets):脚本、模板、配置等支持文件
  • 使用示例(Examples):实际应用场景和最佳实践

Skill 的价值

  1. 知识沉淀:将专家经验转化为可复用的资产
  2. 质量保证:确保任务执行符合标准和最佳实践
  3. 效率提升:减少重复沟通,加速任务完成
  4. 小模型友好:通过结构化指令,让小尺寸 LLM(如 Qwen 7B/9B)也能高质量完成任务

Skill 的核心范式

1. 精髓/灵魂/核心思想(Essence)

每个 Skill 必须明确回答三个问题:

目标是什么?(Goal)

清晰定义 Skill 要达成的最终状态。

示例(template-testing skill):

在合并模板变更到 main 分支之前,通过自动化测试验证模板的可用性和质量。

重点该干嘛?(Focus)

列出必须执行的关键动作。

示例

  • 在 monorepo 上下文中运行完整测试(lint, type-check, build, dev server)
  • 验证新增功能的 HTTP 端点可访问性
  • 检查架构约束(Layer 2)、安全防护(open redirect、硬编码密钥)
  • 提供明确的合并建议和下一步指引

不可以做啥、不干预、明确边界内自主规划(Boundaries)

定义 Skill 的行为边界,确保安全和可控。

示例

  • 可以:运行测试脚本、读取日志、分析失败原因、建议修复方案
  • 不可以:自动修改代码、跳过失败的测试、忽略安全警告
  • 不干预:用户决定是否合并、何时发布、如何修复问题

自主规划:在边界内,LLM 应自主决定:

  1. 选择哪个测试脚本(快速验证 vs 完整 E2E)
  2. 如何解读测试结果
  3. 哪些失败需要立即修复,哪些是误报
  4. 是否需要额外的手动验证

2. 设计原则(Design Principles)

原则 1:任务目标抽象

将具体任务抽象为通用的输入输出模型:

输入:template_name (e.g., "web-nextjs")
     change_branch (e.g., "add-user-account-features")
     test_level ("quick" | "full" | "e2e", default: "e2e")

输出:测试报告(PASS/FAIL)
     合并建议(READY/BLOCKED)
     下一步行动清单

这样设计的好处:

  • 通用性:适用于任何模板,不限于 web-nextjs
  • 可扩展:可以轻松添加新的测试级别
  • 小模型友好:清晰的输入输出格式便于理解

原则 2:关键判断标准

为每个检查项定义明确的通过/失败标准:

检查项通过标准失败处理
ESLint无错误退出码 0列出错误,建议修复
TypeScript编译成功显示类型错误位置
Build生成 .next 目录检查构建日志
Dev Server60s 内响应 200检查端口占用、缓存损坏
Layer 2无违规 import强制使用 Repository 模式
安全检查无硬编码密钥BLOCK MERGE

关键点:

  • 量化标准:避免模糊描述(如"快速启动" → "60s 内响应")
  • 分级处理:区分致命错误和警告
  • ** actionable**:每个失败都有对应的修复建议

原则 3:必要约束 & 质量检查点

识别任务执行中的关键约束和质量检查点:

必要约束

  • 必须在 monorepo 内测试(模板依赖 workspace packages)
  • 必须使用 npx 而非 pnpm(避免 workspace 依赖检查干扰)
  • 必须清理 Turbopack 缓存(防止缓存损坏导致 500 错误)
  • 必须自动清理(测试结束后停止服务器、删除临时文件)

质量检查点

# Phase 1: 静态检查
 ESLint passed
 TypeScript compilation successful
 Production build successful

# Phase 2: 运行时检查
 Dev server started (<60s)
 Homepage returns 200
 New feature pages return 200

# Phase 3: 安全检查
 No Layer 2 violations
 Open redirect protection present
 No hardcoded secrets

原则 4:让 LLM 自主规划执行路径

提供决策树而非固定步骤:

1. 检测当前分支和待测试模板
2. 选择合适的测试脚本:
   - quick: scripts/validate-template.sh
   - full/e2e: scripts/e2e-template-test-v2.sh
3. 运行测试并捕获输出
4. 解析测试结果:
   - 如果 PASS_COUNT > 0 && FAIL_COUNT == 0 → READY FOR MERGE
   - 如果 FAIL_COUNT > 0 → BLOCKED,分析失败原因
5. 生成结构化报告
6. 提供下一步行动建议
7. 确保 cleanup 已执行

这种设计的优势:

  • 适应性:LLM 可以根据实际情况调整策略
  • 容错性:遇到意外情况时可以灵活应对
  • 小模型友好:清晰的决策逻辑易于跟随

Skill 的结构

一个完整的 Skill 包含以下文件和目录:

.lingma/skills/{skill-name}/
├── SKILL.md                    # 核心定义文件(必需)
├── assets/                     # 支持文件(可选)
│   ├── script.sh              # 测试脚本、工具脚本
│   ├── template.md            # 报告模板、配置文件
│   └── checklist.json         # 验收清单
├── examples/                   # 使用示例(推荐)
│   └── usage-examples.md      # 场景化示例
└── README.md                   # 快速入门(可选)

SKILL.md 文件结构

# {Skill Name}

## 核心思想(Essence)
- 目标
- 重点
- 边界

## 设计原则(Design Principles)
1. 任务目标抽象
2. 关键判断标准
3. 必要约束 & 质量检查点
4. LLM 自主执行路径

## 使用方法(Usage)
- 基本用法
- 在 Skill 中调用

## 测试流程(Test Workflow)
- Phase 1: ...
- Phase 2: ...

## 常见问题排查(Troubleshooting)

## 验收标准(Acceptance Criteria)

## 输出格式(Output Format)

## 相关文件(Related Files)

Skill 最佳实践

1. 保持专注(Single Responsibility)

每个 Skill 只解决一类问题。

好例子

  • template-testing - 专门测试模板可用性
  • openspec-new-change - 专门创建 OpenSpec 变更

坏例子

  • do-everything - 试图处理所有任务

2. 明确边界(Clear Boundaries)

清楚定义什么可以做、什么不可以做。

✅ 可以:运行测试、读取日志、分析结果
❌ 不可以:自动修改代码、跳过测试、忽略警告

3. 量化标准(Quantifiable Criteria)

避免模糊描述,使用可测量的标准。

模糊:"快速启动服务器" 清晰:"60 秒内响应 HTTP 200"

4. 提供示例(Provide Examples)

包含多个实际使用场景,帮助 LLM 理解如何应用 Skill。

5. 小模型友好(Small-Model Friendly)

  • 使用清晰的结构和标题
  • 避免冗长的段落
  • 多用表格、列表、代码块
  • 提供决策树而非开放式指令

6. 持续迭代(Iterate)

  • 收集实际使用中的反馈
  • 记录新的失败模式和解决方案
  • 定期更新 SKILL.md 和 assets

Skill 管理策略

注意:当项目中有几十甚至几百个 Skills 时,如何有效管理是一个重要课题。本节内容将在后续完善。

待讨论话题

  1. 分类体系:如何对 Skills 进行分类和标签化?
  2. 命名规范:如何确保 Skill 名称的一致性和可发现性?
  3. 版本控制:如何管理 Skill 的版本和兼容性?
  4. 依赖关系:如何处理 Skills 之间的依赖和组合?
  5. 性能优化:如何在大量 Skills 中快速检索和加载?
  6. 权限管理:如何控制不同用户对 Skills 的访问和修改权限?
  7. 质量评估:如何评估 Skill 的有效性和使用情况?
  8. 生命周期管理:如何归档废弃的 Skills?

欢迎贡献你的想法和经验!


项目中的 Skills

以下是 AgentDock 项目中已创建的 Skills:

1. Template Testing Skill

位置.lingma/skills/template-testing/

功能:在合并模板变更到 main 分支之前,通过自动化测试验证模板的可用性和质量。

核心能力

  • 运行 ESLint、TypeScript、Build 检查
  • 启动开发服务器并验证 HTTP 端点
  • 检查 Layer 2 架构约束和安全防护
  • 生成结构化测试报告和合并建议

使用方法

# 完整 E2E 测试(推荐)
./scripts/e2e-template-test-v2.sh

# 快速验证
./scripts/validate-template.sh

详细文档Template Testing Skill


创建你自己的 Skill

想创建一个新 Skill?遵循以下步骤:

  1. 定义核心思想:目标、重点、边界
  2. 设计原则:抽象任务模型、判断标准、约束条件
  3. 创建文件结构:SKILL.md、assets、examples
  4. 编写 SKILL.md:按照模板填充内容
  5. 测试和优化:在实际使用中迭代改进

参考 Template Testing Skill 作为示例。


延伸阅读

On this page