SuperAPI AI 工具集

search-first

编程与开发

查看项目

更新于 10-15 10:36

技能介绍

用途

search-first(/search-first)是一个围绕「Research Before You Code(先研究再写代码)」的工作流技能,用于把「先搜索已有解决方案,再动手实现」这一做法系统化。

触发场景

资料列出以下情形应使用该技能:

  • 开始一个新功能,而该功能很可能已有现成方案
  • 新增依赖或集成
  • 用户提出「增加 X 功能」,而你正准备写代码
  • 在创建新的工具类、辅助函数或抽象层之前

工作流

流程分为六步(编号从 0 开始):

  1. 工具可用性预检(TOOL AVAILABILITY PREFLIGHT):在依赖各搜索渠道之前先检查其是否可用;如实报告被跳过的渠道。
  2. 需求分析(NEED ANALYSIS):明确需要什么功能,识别语言/框架约束。
  3. 并行搜索(PARALLEL SEARCH,由 researcher 智能体执行):并行搜索 npm / PyPI、MCP / Skills、GitHub / Web。
  4. 评估(EVALUATE):对候选方案打分,维度包括功能、维护状况、社区、文档、许可证、依赖。
  5. 决策(DECIDE):三选一——按原样采用(Adopt as-is)、扩展/包装(Extend/Wrap)、自建(Build Custom)。
  6. 实施(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 步被明确标注为智能体指引而非可执行设置脚本。