
关于
先研究再编码的工作流。在编写自定义代码之前搜索现有工具、库和模式。调用研究代理。
name: search-first description: 先研究再编码的工作流。在编写自定义代码之前搜索现有工具、库和模式。调用研究员代理。 origin: ECC
/search-first——编码前先研究
系统化"在实现之前搜索现有解决方案"的工作流。
触发条件
在以下情况使用此技能:
- 开始一个可能已有现成解决方案的新功能
- 添加依赖或集成
- 用户要求"添加 X 功能"而你即将编写代码
- 在创建新的工具函数、辅助函数或抽象之前
工作流
┌─────────────────────────────────────────────┐
│ 0. 工具可用性预检 │
│ 在依赖搜索渠道之前检查其可用性; │
│ 诚实报告跳过的渠道 │
├─────────────────────────────────────────────┤
│ 1. 需求分析 │
│ 定义需要什么功能 │
│ 识别语言/框架约束 │
├─────────────────────────────────────────────┤
│ 2. 并行搜索(研究员代理) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ npm / │ │ MCP / │ │ GitHub / │ │
│ │ PyPI │ │ Skills │ │ Web │ │
│ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────┤
│ 3. 评估 │
│ 对候选方案评分(功能性、维护性、 │
│ 社区、文档、许可证、依赖) │
├─────────────────────────────────────────────┤
│ 4. 决策 │
│ ┌─────────┐ ┌──────────┐ ┌─────────┐ │
│ │ 直接 │ │ 扩展 │ │ 自建 │ │
│ │ 采用 │ │ /封装 │ │ 定制 │ │
│ └─────────┘ └──────────┘ └─────────┘ │
├─────────────────────────────────────────────┤
│ 5. 实现 │
│ 安装包 / 配置 MCP / │
│ 编写最少的自定义代码 │
└─────────────────────────────────────────────┘
决策矩阵
| 信号 | 行动 | |--------|--------| | 完全匹配,维护良好,MIT/Apache 许可 | 采用——直接安装使用 | | 部分匹配,基础良好 | 扩展——安装 + 编写薄封装层 | | 多个弱匹配 | 组合——结合 2-3 个小包 | | 没有找到合适的 | 自建——编写自定义代码,但基于研究结果 |
使用方法
步骤 0:工具可用性预检
这是代理指导,不是可执行的设置脚本。只检查与当前任务和项目相关的渠道。
| 渠道 | 检查方式 | 如果不可用 |
|---------|-------|------------|
| 仓库搜索 | rg --files 和针对性 rg 查询 | 说明只检查了可见文件 |
| 包注册表 | npm --version、python -m pip --version 或项目包管理器 | 使用网页/文档搜索,避免声称覆盖了注册表 |
| GitHub CLI | gh auth status | 仅使用公开网页或本地 git 历史 |
| MCP/文档工具 | 可用工具列表或本地 MCP 配置 | 回退到官方文档/网页搜索 |
| 技能目录 | ls ~/.claude/skills ~/.codex/skills(如适用) | 说明没有本地技能目录可用 |
快速模式(内联)
在编写工具函数或添加功能之前,心理上快速过一遍:
- 这在仓库中已经存在吗?→ 先用
rg搜索相关模块/测试 - 这是常见问题吗?→ 搜索 npm/PyPI
- 有对应的 MCP 吗?→ 检查
~/.claude/settings.json并搜索 - 有对应的技能吗?→ 检查
~/.claude/skills/ - 有 GitHub 实现/模板吗?→ 在编写全新代码之前运行 GitHub 代码搜索查找维护中的开源项目
完整模式(代理)
对于非简单功能,启动研究员代理:
Agent(subagent_type="general-purpose", prompt="
研究以下需求的现有工具:[描述]
语言/框架:[语言]
约束条件:[任何]
搜索范围:npm/PyPI、MCP 服务器、Claude Code 技能、GitHub
返回:结构化对比和推荐
")
旧版 Claude Code 文档可能称之为 Task(...);请使用当前活跃环境暴露的代理/子代理工具名称。
按类别的搜索快捷方式
开发工具
- 代码检查 →
eslint、ruff、textlint、markdownlint - 格式化 →
prettier、black、gofmt - 测试 →
jest、pytest、go test - 预提交 →
husky、lint-staged、pre-commit
AI/LLM 集成
- Claude SDK → 使用 Context7 获取最新文档
- 提示词管理 → 检查 MCP 服务器
- 文档处理 →
unstructured、pdfplumber、mammoth
数据和 API
- HTTP 客户端 →
httpx(Python)、ky/undici(Node) - 验证 →
zod(TS)、pydantic(Python) - 数据库 → 先检查 MCP 服务器
内容和发布
- Markdown 处理 →
remark、unified、markdown-it - 图片优化 →
sharp、imagemin
集成点
与规划代理配合
规划代理应在第一阶段(架构审查)之前调用研究员:
- 研究员识别现有解决方案和模式
- 规划代理将发现纳入架构决策
- 避免重新发明已解决的问题
兼容工具
Claude CodeCursor
标签
通用
