mcpField
D
discovery

discovery

github.com/avelikiy开发11153 次安装今天更新
代码仓库

关于 discovery

discovery 是一项开发技能,用于在决策前找出缺失背景。它引导 Agent 检查七个方面,包括依赖关系、规模、预算、故障影响、既有工作和决策者。

主要功能

  1. 01覆盖七个背景维度
  2. 02检查依赖关系与规模
  3. 03梳理约束与预算
  4. 04评估故障影响
  5. 05查找既有工作
  6. 06列出可跳过的情况

适用场景

  1. 01准备技术决策报告
  2. 02变更前检查依赖关系
  3. 03找出规模或预算方面的未决问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/avelikiy/great_cto --skill discovery

安装后在 Claude Code 中输入/discovery确认已加载。

详细介绍

探索——先揭示隐藏的约束

导致 Agent 输出不佳的最大原因是缺少上下文。在敲定决定之前,先列出你尚不了解的内容并加以说明。

探索的 7 个维度

对于任何非平凡请求,都要逐一检查以下维度,并将发现记录在报告的“Context”部分:

1. 谁依赖这项内容?
  • 还有哪些服务/团队会使用你要修改的内容?
  • 是否有公开用户(开放 API、OSS 用户)?
  • 如果破坏兼容性,是否有弃用方案?

在仓库以及你有权访问的任何同级仓库中搜索:grep -rE "import.*<your-module>|require.*<your-module>"。

2. 当前规模如何,6 个月后又会怎样?
  • 当前流量:每秒请求数、每秒查询数、MB/天、日活用户数
  • 存储:主表中的行数、磁盘占用
  • 成本:每月 LLM 支出、基础设施支出
  • 6 个月预测:线性?指数级?未知?

如果未知,请写明:“规模未知——继续之前请向用户确认。”

3. 哪些内容绝对不能变?
  • 现有 API 契约(向后兼容期限)
  • 报表/BI 所引用的数据库架构列
  • 其他工具使用的文件格式
  • 法规承诺(审计日志保留期限、SLA RPO/RTO)
4. 预算是多少?
  • 每月成本上限(LLM + 基础设施)
  • 人力:1 人任务还是跨团队工作
  • 时间安排:“必须在 X 前发布”还是“最好在 Y 前完成”

如果未说明,默认采用“小型项目规模、1 个工程师周、每月预算 <$200”。在报告中说明此默认值,以便用户纠正。

5. 哪种故障模式最重要?

询问:“如果此功能在凌晨 3 点出故障,会触发什么告警?”

  • 数据丢失 → 严重
  • 给用户错误答案 → 高
  • 响应缓慢 → 中
  • 糟糕的用户体验(外观问题)→ 低

故障模式决定投入程度(例如,是否需要金丝雀发布?断路器?还是只需功能开关?)。

6. 已经尝试过什么?
  • 搜索 Beads:bd search "<keyword>"——之前尝试过这件事吗?
  • 搜索文档/决策记录:此主题是否有已被取代的 ADR?
  • 搜索 lessons.md:过去是否有关于这种模式的经验教训?

如果已有相关工作,就在此基础上继续。不要重复劳动。

7. 谁来决定?
  • 是否需要 CTO 批准(gate:plan、gate:ship)?
  • 是否需要合规审查人员(金融科技领域的 PCI、医疗领域的 HIPAA)?
  • 是否需要 RFC(涉及多个团队的决策)?

输出

在报告开头添加探索部分:

## Context

- **Consumers:** <list, or "unknown — TBD with user">
- **Scale:** <today, 6mo projection>
- **Frozen contracts:** <list, or "none identified">
- **Budget:** <cost + time + people>
- **Failure-mode tier:** Critical | High | Medium | Low
- **Prior work:** <links to ADRs/lessons, or "none found">
- **Decision-makers:** <gate or RFC required>

何时跳过

  • nano project_size——探索属于额外开销。跳过并记录:“nano——根据技能规则跳过探索。”
  • 纯粹提取工具函数且不改变行为——跳过。
  • 用户口头提出且复现步骤明确的 Bug 修复——跳过。

常见陷阱

  • 不要假设。 如果你写“我假设用户想要 X”,就应将这一假设作为问题写入 Context,而不是当作事实。
  • 不要把工作推给用户。 探索是你的职责。尽可能通过 Glob/Grep/git 找到答案。只有代码无法提供的信息才向用户询问。

评论

支持 Markdown