search-first

search-first

热门

研究优先的编码工作流。在编写自定义代码之前,先搜索现有的工具、库和模式。调用研究员智能体。

23万Star
3.5万Fork
更新于 2026/7/14
SKILL.md
readonly只读
name
search-first
description

研究优先的编码工作流。在编写自定义代码之前,先搜索现有的工具、库和模式。调用研究员智能体。

/search-first — 先研究再编码

系统化“在实现之前搜索现有解决方案”的工作流。

触发条件

在以下情况下使用此技能:

  • 开始一个很可能已有现成解决方案的新功能
  • 添加依赖或集成
  • 用户要求“添加X功能”,而你正准备编写代码
  • 在创建新的工具函数、辅助函数或抽象之前

工作流

┌─────────────────────────────────────────────┐
│  0. 工具可用性预检                           │
│     在依赖搜索渠道前检查其可用性;            │
│     如实报告跳过的渠道                       │
├─────────────────────────────────────────────┤
│  1. 需求分析                                 │
│     定义所需功能                             │
│     识别语言/框架约束                        │
├─────────────────────────────────────────────┤
│  2. 并行搜索(研究员智能体)                  │
│     ┌──────────┐ ┌──────────┐ ┌──────────┐  │
│     │  npm /   │ │  MCP /   │ │  GitHub / │  │
│     │  PyPI    │ │  技能    │ │  网页     │  │
│     └──────────┘ └──────────┘ └──────────┘  │
├─────────────────────────────────────────────┤
│  3. 评估                                     │
│     对候选方案评分(功能、维护、社区、         │
│     文档、许可证、依赖)                     │
├─────────────────────────────────────────────┤
│  4. 决策                                     │
│     ┌─────────┐  ┌──────────┐  ┌─────────┐  │
│     │  直接   │  │  扩展    │  │  自建   │  │
│     │  采用   │  │  /封装   │  │  定制   │  │
│     └─────────┘  └──────────┘  └─────────┘  │
├─────────────────────────────────────────────┤
│  5. 实现                                     │
│     安装包 / 配置 MCP /                      │
│     编写最少量的自定义代码                   │
└─────────────────────────────────────────────┘

决策矩阵

信号 行动
完全匹配,维护良好,MIT/Apache 许可证 采用 — 直接安装使用
部分匹配,基础良好 扩展 — 安装并编写薄封装层
多个弱匹配 组合 — 结合2-3个小包
未找到合适的 自建 — 编写自定义代码,但参考研究成果

如何使用

第0步:工具可用性预检

这是智能体指导,不是可执行的设置脚本。只检查与当前任务和项目相关的渠道。

渠道 检查方法 如果缺失
仓库搜索 rg --files 和针对性的 rg 查询 声明仅检查了可见文件
包注册表 npm --versionpython -m pip --version 或项目包管理器 使用网页/文档搜索,避免声称注册表覆盖
GitHub CLI gh auth status 仅使用公共网页或本地 git 历史
MCP/文档工具 可用工具列表或本地 MCP 配置 回退到官方文档/网页搜索
技能目录 在适用时使用 ls ~/.claude/skills ~/.codex/skills 说明没有可用的本地技能目录

快速模式(内联)

在编写工具函数或添加功能之前,在脑海中快速过一遍:

  1. 仓库中是否已存在?→ 先用 rg 搜索相关模块/测试
  2. 这是常见问题吗?→ 搜索 npm/PyPI
  3. 是否有对应的 MCP?→ 检查 ~/.claude/settings.json 并搜索
  4. 是否有对应的技能?→ 检查 ~/.claude/skills/
  5. 是否有 GitHub 实现/模板?→ 在编写全新代码前,运行 GitHub 代码搜索以查找维护良好的开源项目

完整模式(智能体)

对于非平凡功能,启动研究员智能体:

Agent(subagent_type="general-purpose", prompt="
  研究现有工具:[描述]
  语言/框架:[语言]
  约束:[任何]

  搜索:npm/PyPI、MCP 服务器、Claude Code 技能、GitHub
  返回:结构化比较并附推荐
")

较旧的 Claude Code 文档可能称之为 Task(...);请使用当前活动框架暴露的智能体/子智能体工具名称。

按类别分类的搜索快捷方式

开发工具

  • 代码检查 → eslintrufftextlintmarkdownlint
  • 格式化 → prettierblackgofmt
  • 测试 → jestpytestgo test
  • 预提交 → huskylint-stagedpre-commit

AI/LLM 集成

  • Claude SDK → Context7 获取最新文档
  • 提示管理 → 检查 MCP 服务器
  • 文档处理 → unstructuredpdfplumbermammoth

数据与 API

  • HTTP 客户端 → httpx (Python)、ky/undici (Node)
  • 验证 → zod (TS)、pydantic (Python)
  • 数据库 → 首先检查 MCP 服务器

内容与发布

  • Markdown 处理 → remarkunifiedmarkdown-it
  • 图片优化 → sharpimagemin

集成点

与规划智能体

规划智能体应在第一阶段(架构审查)之前调用研究员:

  • 研究员识别可用工具
  • 规划智能体将其纳入实现计划
  • 避免在计划中“重复造轮子”

与架构智能体

架构智能体应咨询研究员以获取:

  • 技术栈决策
  • 集成模式发现
  • 现有参考架构

与迭代检索技能

结合使用以实现渐进式发现:

  • 第一轮:广泛搜索(npm、PyPI、MCP)
  • 第二轮:详细评估最佳候选
  • 第三轮:测试与项目约束的兼容性

示例

示例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"
找到:got (Node) 带重试插件、httpx (Python) 内置重试
行动:采用 — 直接使用 got/httpx 并配置重试
结果:零自定义代码,生产级库

示例3:“添加配置文件检查器”

需求:根据模式验证项目配置文件
搜索:npm "config linter schema"、"json schema validator cli"
找到:ajv-cli(评分:8/10)
行动:采用 + 扩展 — 安装 ajv-cli,编写项目特定模式
结果:1个包 + 1个模式文件,无自定义验证逻辑

反模式

  • 直接写代码:在未检查是否存在现成方案的情况下编写工具函数
  • 忽略 MCP:未检查 MCP 服务器是否已提供该能力
  • 静默跳过:当搜索渠道不可用时报告“未找到”
  • 过度定制:过度封装库,使其失去优势
  • 依赖膨胀:为一个小功能安装一个庞大的包