用途
search-first(/search-first)是一个围绕「Research Before You Code(先研究再写代码)」的工作流技能,用于把「先搜索已有解决方案,再动手实现」这一做法系统化。
触发场景
资料列出以下情形应使用该技能:
- 开始一个新功能,而该功能很可能已有现成方案
- 新增依赖或集成
- 用户提出「增加 X 功能」,而你正准备写代码
- 在创建新的工具类、辅助函数或抽象层之前
工作流
流程分为六步(编号从 0 开始):
- 工具可用性预检(TOOL AVAILABILITY PREFLIGHT):在依赖各搜索渠道之前先检查其是否可用;如实报告被跳过的渠道。
- 需求分析(NEED ANALYSIS):明确需要什么功能,识别语言/框架约束。
- 并行搜索(PARALLEL SEARCH,由 researcher 智能体执行):并行搜索 npm / PyPI、MCP / Skills、GitHub / Web。
- 评估(EVALUATE):对候选方案打分,维度包括功能、维护状况、社区、文档、许可证、依赖。
- 决策(DECIDE):三选一——按原样采用(Adopt as-is)、扩展/包装(Extend/Wrap)、自建(Build Custom)。
- 实施(IMPLEMENT):安装包、配置 MCP,或编写最小化自定义代码。
决策矩阵
- 精确匹配、维护良好、MIT/Apache 许可 → 采用(Adopt),直接安装并使用
- 部分匹配、基础良好 → 扩展(Extend),安装并编写轻量包装层
- 多个弱匹配 → 组合(Compose),组合 2–3 个小包
- 未找到合适方案 → 自建(Build),但基于调研结果来写
使用方式
第 0 步:工具可用性预检
资料明确说明这是智能体指引(agent guidance),不是可执行安装脚本;只需检查与当前任务和项目相关的渠道。
各渠道检查项与缺失时的处理:
- 仓库搜索:使用
rg --files与针对性的 rg 查询;若缺失,说明只检查了可见文件。 - 包仓库:检查
npm --version、python -m pip --version或项目包管理器;若缺失,改用网页/文档搜索,且不要声称覆盖了包仓库。 - GitHub CLI:
gh auth status;若缺失,仅使用公开网页或本地 git 历史。 - MCP/文档工具:查看可用工具列表或本地 MCP 配置;若缺失,回退到官方文档/网页搜索。
- Skills 目录:在适用时执行
ls ~/.claude/skills ~/.codex/skills;若缺失,说明没有可用的本地技能目录。
快速模式(内联)
在编写工具或增加功能前,在心里快速过一遍:
- 仓库中是否已存在?→ 先用 rg 搜索相关模块/测试。
- 是否是常见问题?→ 搜索 npm/PyPI。
- 是否有对应的 MCP?→ 检查 ~/.claude/settings.json 并搜索。
- 是否有对应的 skill?→ 检查 ~/.claude/skills/。
- 是否有 GitHub 实现/模板?→ 在编写全新代码前,运行 GitHub 代码搜索查找有维护的开源实现。
完整模式(智能体)
对于非平凡(non-trivial)的功能,启动 researcher 智能体,提示词形式为:
Agent(subagent_type="general-purpose", prompt="
Research existing tools for: [DESCRIPTION]
Language/framework: [LANG]
Constraints: [ANY]
Search: npm/PyPI, MCP servers, Claude Code skills, GitHub
Return: Structured comparison with recommendation
")
资料提示:较旧的 Claude Code 文档可能称其为 Task(...);应使用当前 harness 暴露的 agent/subagent 工具名。
分类搜索捷径
- 开发工具链:Linting → eslint、ruff、textlint、markdownlint;Formatting → prettier、black、gofmt;Testing → jest、pytest、go test;Pre-commit → husky、lint-staged、pre-commit。
- AI/LLM 集成:Claude SDK → 通过 Context7 查最新文档;Prompt 管理 → 检查 MCP servers;文档处理 → unstructured、pdfplumber、mammoth。
- 数据与 API:HTTP 客户端 → httpx(Python)、ky/undici(Node);校验 → zod(TS)、pydantic(Python);数据库 → 先检查是否有 MCP servers。
- 内容与发布:Markdown 处理 → remark、unified、markdown-it;图片优化 → sharp、imagemin。
与其他组件的集成
- 与 planner 智能体:planner 应在 Phase 1(Architecture Review)之前调用 researcher——researcher 找出可用工具,planner 将其纳入实施计划,避免在计划中「重复造轮子」。
- 与 architect 智能体:architect 应在技术栈决策、集成模式发现、现有参考架构方面咨询 researcher。
- 与 iterative-retrieval 技能:结合以实现渐进式发现——第 1 轮广泛搜索(npm、PyPI、MCP),第 2 轮详细评估头部候选,第 3 轮测试与项目约束的兼容性。
示例
- 示例 1「增加死链检查」:需求为检查 markdown 文件中的失效链接;搜索 npm "markdown dead link checker";找到 textlint-rule-no-dead-link(评分 9/10);动作:采用——
npm install textlint-rule-no-dead-link;结果:零自定义代码,经充分验证的方案。 - 示例 2「增加 HTTP 客户端包装」:需求为带重试与超时处理的健壮 HTTP 客户端;搜索 npm "http client retry"、PyPI "httpx retry";找到 Node 的 got(带 retry 插件)、Python 的 httpx(内置重试);动作:采用——直接使用 got/httpx 并配置重试;结果:零自定义代码,生产验证过的库。
- 示例 3「增加配置文件 linter」:需求为按 schema 校验项目配置文件;搜索 npm "config linter schema"、"json schema validator cli";找到 ajv-cli(评分 8/10);动作:采用 + 扩展——安装 ajv-cli,编写项目专用 schema;结果:1 个包 + 1 个 schema 文件,无自定义校验逻辑。
反模式
资料列出的反模式包括:直接跳到编码(未检查是否已存在就编写工具);忽视 MCP(未检查 MCP server 是否已提供该能力);静默跳过(在某个搜索渠道不可用时却报告「什么都没找到」);过度定制(把库包装得过重,以致失去其价值);依赖膨胀(为一个小功能安装庞大的包)。
限制
资料未提供关于安装命令、收费、价格或平台支持范围的信息,除上述内容外暂未提供其他限制说明。第 0 步被明确标注为智能体指引而非可执行设置脚本。