search-first
在写新功能、修 bug、加依赖或抽象前,先搜索代码库、测试、外部实现和 references,再决定是 adopt、adapt 还是 build。
SKILL.mdpackages/search-first/skills/search-first/SKILL.md
GitHubSearch First
把“先研究再写代码”变成固定动作。这个 skill 面向 coding 任务:新功能、bugfix、依赖接入、工具选型、抽象提炼。目标不是拖慢开发,而是减少闭门造车和重复犯错。
何时使用
- 准备实现一个新功能
- 准备修一个复杂 bug,但还没确认根因或已有模式
- 准备引入新依赖、SDK、库或集成
- 准备写新的 helper、wrapper、基础设施抽象
- 准备重构,但不确定代码库里是否已有可复用模式
不适用:
- 只是做极小的文字修正或机械改名
- 需求和现有实现路径已经完全明确,不存在方案选择
- 目标不是 coding,而是整理文档或做纯内容编写
产物
每次使用本 skill,默认产出以下最小集合:
- 研究记录
- 若当前任务已有自己的记录文件,回写研究结论
- 若没有既定记录位置,默认写入
.research/research-note.md
- 候选实现清单
- 本地代码路径
- 测试路径
- 外部候选来源,如包、文档、
references/repos/中的实现
- 决策结论
adopt:直接采用现成方案adapt:复用骨架并做最小改造build:没有合适方案,再自己实现
默认要求:
- 研究结论必须带路径、包名或来源证据
- 先搜本地实现和测试,再看外部来源
- 只有研究完成后,才进入实现、测试先行或后续质量阶段
- 没有任务容器时,研究结果也应落在
.research/research-note.md,而不是只写在回复里
工作流
- 定义要解决的问题
- 明确目标行为、语言/框架、约束和非目标
- 先搜本地代码库
- 查已有实现、相似模块、公共工具和调用点
- 查测试,确认现有行为和边界条件
- 再搜外部来源
- 查包管理生态、官方文档、
references/repos/中的相近 harness 模式 - 如果是常见问题,默认假设外部已有成熟解法
- 查包管理生态、官方文档、
- 缩小候选集
- 对候选方案做功能、维护成本、依赖重量、适配难度比较
- 不做整仓通读,只展开少量高相关候选
- 形成实现决策
adopt:现成方案已足够adapt:现成方案有骨架价值,但要裁掉无关复杂度build:现成方案不足,才自己写
- 回写研究结论
- 记录候选项、取舍理由和下一步建议
- 再进入实现、测试、验证或评审阶段
决策约束
- 默认先搜本地代码和测试,再搜外部
- 对常见工程问题,默认先怀疑“已有方案存在”,而不是直接手写
- 外部模式只能借其核心方法,不要把整套 harness、插件、hooks 一起搬进来
- 若外部方案太重,优先
adapt最小骨架,而不是照抄
模板
需要研究清单和 research-note.md 模板时,读取 references/research-checklist.md。