search-first

在写新功能、修 bug、加依赖或抽象前,先搜索代码库、测试、外部实现和 references,再决定是 adopt、adapt 还是 build。

SKILL.md

GitHub

Search First

把“先研究再写代码”变成固定动作。这个 skill 面向 coding 任务:新功能、bugfix、依赖接入、工具选型、抽象提炼。目标不是拖慢开发,而是减少闭门造车和重复犯错。

何时使用

  • 准备实现一个新功能
  • 准备修一个复杂 bug,但还没确认根因或已有模式
  • 准备引入新依赖、SDK、库或集成
  • 准备写新的 helper、wrapper、基础设施抽象
  • 准备重构,但不确定代码库里是否已有可复用模式

不适用:

  • 只是做极小的文字修正或机械改名
  • 需求和现有实现路径已经完全明确,不存在方案选择
  • 目标不是 coding,而是整理文档或做纯内容编写

产物

每次使用本 skill,默认产出以下最小集合:

  1. 研究记录
    • 若当前任务已有自己的记录文件,回写研究结论
    • 若没有既定记录位置,默认写入 .research/research-note.md
  2. 候选实现清单
    • 本地代码路径
    • 测试路径
    • 外部候选来源,如包、文档、references/repos/ 中的实现
  3. 决策结论
    • adopt:直接采用现成方案
    • adapt:复用骨架并做最小改造
    • build:没有合适方案,再自己实现

默认要求:

  • 研究结论必须带路径、包名或来源证据
  • 先搜本地实现和测试,再看外部来源
  • 只有研究完成后,才进入实现、测试先行或后续质量阶段
  • 没有任务容器时,研究结果也应落在 .research/research-note.md,而不是只写在回复里

工作流

  1. 定义要解决的问题
    • 明确目标行为、语言/框架、约束和非目标
  2. 先搜本地代码库
    • 查已有实现、相似模块、公共工具和调用点
    • 查测试,确认现有行为和边界条件
  3. 再搜外部来源
    • 查包管理生态、官方文档、references/repos/ 中的相近 harness 模式
    • 如果是常见问题,默认假设外部已有成熟解法
  4. 缩小候选集
    • 对候选方案做功能、维护成本、依赖重量、适配难度比较
    • 不做整仓通读,只展开少量高相关候选
  5. 形成实现决策
    • adopt:现成方案已足够
    • adapt:现成方案有骨架价值,但要裁掉无关复杂度
    • build:现成方案不足,才自己写
  6. 回写研究结论
    • 记录候选项、取舍理由和下一步建议
    • 再进入实现、测试、验证或评审阶段

决策约束

  • 默认先搜本地代码和测试,再搜外部
  • 对常见工程问题,默认先怀疑“已有方案存在”,而不是直接手写
  • 外部模式只能借其核心方法,不要把整套 harness、插件、hooks 一起搬进来
  • 若外部方案太重,优先 adapt 最小骨架,而不是照抄

模板

需要研究清单和 research-note.md 模板时,读取 references/research-checklist.md。