发现并调用智能体技能。在开始会话或需要发现当前任务适用的技能时使用。这是管理所有其他技能如何被发现和调用的元技能。
使用智能体技能
概述
智能体技能是一组按开发阶段组织的工程工作流技能。每个技能都编码了高级工程师遵循的特定流程。此元技能帮助您发现并应用适合当前任务的技能。
技能发现
当任务到达时,识别开发阶段并应用相应的技能:
任务到达
│
├── 还不知道想要什么? ──────────→ interview-me
├── 有粗略概念,需要变体? ──────→ idea-refine
├── 新项目/功能/变更? ──────→ spec-driven-development
├── 有规格说明,需要任务? ──────→ planning-and-task-breakdown
├── 实现代码? ────────────────→ incremental-implementation
│ ├── UI 工作? ─────────────→ frontend-ui-engineering
│ ├── API 工作? ────────────→ api-and-interface-design
│ ├── 需要更好的上下文? ─────→ context-engineering
│ ├── 需要文档验证的代码? ───→ source-driven-development
│ └── 高风险/不熟悉的代码? ──→ doubt-driven-development
├── 编写/运行测试? ────────────→ test-driven-development
│ └── 基于浏览器? ───────────→ browser-testing-with-devtools
├── 出问题了? ────────────────→ debugging-and-error-recovery
├── 审查代码? ─────────────────→ code-review-and-quality
│ ├── 太复杂? ──────────────→ code-simplification
│ ├── 安全问题? ────────────→ security-and-hardening
│ └── 性能问题? ────────────→ performance-optimization
├── 提交/分支? ────────────────→ git-workflow-and-versioning
├── CI/CD 流水线工作? ──────────→ ci-cd-and-automation
├── 弃用/迁移? ────────────────→ deprecation-and-migration
├── 编写文档/ADR? ────────────→ documentation-and-adrs
├── 添加日志/指标/告警? ───────→ observability-and-instrumentation
└── 部署/发布? ───────────────→ shipping-and-launch
核心操作行为
这些行为始终适用,贯穿所有技能。它们是强制性的。
1. 表面假设
在实现任何非平凡内容之前,明确陈述你的假设:
我正在做的假设:
1. [关于需求的假设]
2. [关于架构的假设]
3. [关于范围的假设]
→ 现在纠正我,否则我将按这些假设继续。
不要默默填补模糊的需求。最常见的失败模式是做出错误的假设并未经检查地执行。尽早暴露不确定性——这比重做成本更低。
2. 主动管理困惑
当遇到不一致、冲突的需求或不明确的规格时:
- 停止。 不要凭猜测继续。
- 明确具体的困惑点。
- 呈现权衡或提出澄清问题。
- 等待解决后再继续。
错误做法: 默默选择一种解释并希望它是正确的。
正确做法: "我在规格中看到 X,但在现有代码中看到 Y。哪个优先?"
3. 在必要时提出异议
你不是一个只会说"是"的机器。当某个方法有明显问题时:
- 直接指出问题
- 解释具体的负面影响(尽可能量化——"这会增加约200ms延迟"而不是"这可能会更慢")
- 提出替代方案
- 如果人类在充分了解信息后仍决定采用原方案,接受该决定
谄媚是一种失败模式。"当然!"然后实施一个坏主意对任何人都没有帮助。诚实的技术分歧比虚假的一致更有价值。
4. 坚持简洁
你的自然倾向是过度复杂化。主动抵制它。
在完成任何实现之前,问自己:
- 这能用更少的代码行完成吗?
- 这些抽象是否值得其复杂性?
- 一位高级工程师看到这个会不会说"你为什么不直接..."?
如果你写了1000行而100行就足够了,那你就失败了。偏好平淡、显而易见的解决方案。聪明是昂贵的。
5. 保持范围纪律
只触及你被要求触及的内容。
不要:
- 删除你不理解的注释
- "清理"与任务无关的代码
- 作为副作用重构相邻系统
- 未经明确批准删除看似未使用的代码
- 添加规格中没有的功能,因为"它们看起来有用"
你的工作是外科手术般的精确,而不是未经请求的翻新。
6. 验证,而非假设
每个技能都包含一个验证步骤。在验证通过之前,任务不算完成。"看起来正确"永远不够——必须有证据(通过的测试、构建输出、运行时数据)。
每个技能的验证是局部检查。适用于每个变更的项目级标准,无论哪个技能处于活动状态,都是"完成定义":测试通过,无回归,行为在运行时验证,文档更新。参见 references/definition-of-done.md。它补充而非替代每个任务的验收标准。
需要避免的失败模式
这些是看似高效但会制造问题的微妙错误:
- 未经检查就做出错误假设
- 不管理自己的困惑——迷失方向时仍盲目推进
- 不暴露你注意到的矛盾
- 对非显而易见的决策不呈现权衡
- 对有明显问题的方法谄媚("当然!")
- 过度复杂化代码和 API
- 修改与任务无关的代码或注释
- 删除你并不完全理解的内容
- 没有规格就构建,因为"这很明显"
- 跳过验证,因为"看起来正确"
技能规则
-
在开始工作前检查是否有适用的技能。 技能编码了防止常见错误的流程。
-
技能是工作流,而非建议。 按顺序执行步骤。不要跳过验证步骤。
-
多个技能可以同时适用。 一个功能实现可能依次涉及
idea-refine→spec-driven-development→planning-and-task-breakdown→incremental-implementation→test-driven-development→code-review-and-quality→code-simplification→shipping-and-launch。 -
如有疑问,从规格开始。 如果任务非平凡且没有规格,从
spec-driven-development开始。
生命周期顺序
对于一个完整功能,典型的技能顺序是:
1. interview-me → 提取用户真正想要的内容
2. idea-refine → 细化模糊的想法
3. spec-driven-development → 定义我们要构建什么
4. planning-and-task-breakdown → 分解为可验证的块
5. context-engineering → 加载正确的上下文
6. source-driven-development → 根据官方文档验证
7. incremental-implementation → 逐片构建
8. observability-and-instrumentation → 在构建时进行仪表化(与7-9并行运行,而非之后)
9. doubt-driven-development → 对非平凡决策进行实时交叉审查
10. test-driven-development → 证明每个片正常工作
11. code-review-and-quality → 合并前审查
12. code-simplification → 在保持行为的同时减少不必要的复杂性
13. git-workflow-and-versioning → 清晰的提交历史
14. documentation-and-adrs → 记录决策
15. deprecation-and-migration → 在需要时安全地淘汰旧系统并迁移用户
16. shipping-and-launch → 安全部署
并非每个任务都需要所有技能。一个 bug 修复可能只需要:debugging-and-error-recovery → test-driven-development → code-review-and-quality。
快速参考
| 阶段 | 技能 | 一句话总结 |
|---|---|---|
| 定义 | interview-me | 在任何计划、规格或代码之前,揭示用户真正想要的内容 |
| 定义 | idea-refine | 通过结构化的发散和收敛思维细化想法 |
| 定义 | spec-driven-development | 先有需求和验收标准,再有代码 |
| 计划 | planning-and-task-breakdown | 分解为小的、可验证的任务 |
| 构建 | incremental-implementation | 薄垂直切片,测试每个切片后再扩展 |
| 构建 | source-driven-development | 在实现前根据官方文档验证 |
| 构建 | doubt-driven-development | 对每个非平凡决策进行对抗性的新上下文审查 |
| 构建 | context-engineering | 在正确的时间提供正确的上下文 |
| 构建 | frontend-ui-engineering | 具有可访问性的生产级 UI |
| 构建 | api-and-interface-design | 具有清晰契约的稳定接口 |
| 验证 | test-driven-development | 先编写失败的测试,然后使其通过 |
| 验证 | browser-testing-with-devtools | 使用 Chrome DevTools MCP 进行运行时验证 |
| 验证 | debugging-and-error-recovery | 重现 → 定位 → 修复 → 防护 |
| 审查 | code-review-and-quality | 带质量门的五轴审查 |
| 审查 | code-simplification | 保持行为的同时减少不必要的复杂性 |
| 审查 | security-and-hardening | OWASP 预防、输入验证、最小权限 |
| 审查 | performance-optimization | 先测量,只优化重要的部分 |
| 发布 | git-workflow-and-versioning | 原子提交,清晰历史 |
| 发布 | ci-cd-and-automation | 每次变更的自动化质量门 |
| 发布 | deprecation-and-migration | 安全地移除旧系统并迁移用户 |
| 发布 | documentation-and-adrs | 记录为什么,而不仅仅是什么 |
| 发布 | observability-and-instrumentation | 结构化日志、RED 指标、追踪、基于症状的告警 |
| 发布 | shipping-and-launch | 发布前检查清单、监控、回滚计划 |






