Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Research-before-coding workflow. Search for existing tools, libraries, and patterns before writing custom code. Systematizes the "search for existing solutions before implementing" approach. Use when starting new features or adding functionality.
.claude/skills/affaan-m-search-first/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 213% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 46% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 49% | 0% |
系统化“在实现之前先寻找现有解决方案”的工作流程。
在以下情况使用此技能:
┌─────────────────────────────────────────────┐
│ 1. 需求分析 │
│ 确定所需功能 │
│ 识别语言/框架限制 │
├─────────────────────────────────────────────┤
│ 2. 并行搜索(研究员代理) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ npm / │ │ MCP / │ │ GitHub / │ │
│ │ PyPI │ │ 技能 │ │ 网络 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────┤
│ 3. 评估 │
│ 对候选方案进行评分(功能、维护、 │
│ 社区、文档、许可证、依赖) │
├─────────────────────────────────────────────┤
│ 4. 决策 │
│ ┌─────────┐ ┌──────────┐ ┌─────────┐ │
│ │ 采用 │ │ 扩展 │ │ 构建 │ │
│ │ 原样 │ │ /包装 │ │ 定制 │ │
│ └─────────┘ └──────────┘ └─────────┘ │
├─────────────────────────────────────────────┤
│ 5. 实施 │
│ 安装包 / 配置 MCP / │
│ 编写最小化自定义代码 │
└─────────────────────────────────────────────┘| 信号 | 行动 | |--------|--------| | 完全匹配,维护良好,MIT/Apache 许可证 | 采纳 — 直接安装并使用 | | 部分匹配,基础良好 | 扩展 — 安装 + 编写薄封装层 | | 多个弱匹配 | 组合 — 组合 2-3 个小包 | | 未找到合适的 | 构建 — 编写自定义代码,但需基于研究 |
在编写实用程序或添加功能之前,在脑中过一遍:
rg~/.claude/settings.json 并进行搜索~/.claude/skills/对于非平凡的功能,启动研究员代理:
任务(子代理类型="通用型",提示="
研究现有工具用于:[描述]
语言/框架:[语言]
约束:[任何]
搜索:npm/PyPI、MCP 服务器、Claude Code 技能、GitHub
返回:结构化对比与推荐
")eslint, ruff, textlint, markdownlintprettier, black, gofmtjest, pytest, go testhusky, lint-staged, pre-commitunstructured, pdfplumber, mammothhttpx (Python), ky/got (Node)zod (TS), pydantic (Python)remark, unified, markdown-itsharp, imagemin规划器应在阶段 1(架构评审)之前调用研究员:
架构师应向研究员咨询:
结合进行渐进式发现:
需求:检查 Markdown 文件中的失效链接
搜索:npm "markdown dead link checker"
发现:textlint-rule-no-dead-link(评分:9/10)
行动:采纳 — npm install textlint-rule-no-dead-link
结果:无需自定义代码,经过实战检验的解决方案需求:具备重试和超时处理能力的弹性 HTTP 客户端
搜索:npm "http client retry"、PyPI "httpx retry"
发现:got(Node)带重试插件、httpx(Python)带内置重试功能
行动:采用——直接使用 got/httpx 并配置重试
结果:零定制代码,生产验证的库需求:根据模式验证项目配置文件
搜索:npm "config linter schema"、"json schema validator cli"
发现:ajv-cli(评分:8/10)
操作:采用 + 扩展 —— 安装 ajv-cli,编写项目特定的模式
结果:1 个包 + 1 个模式文件,无需自定义验证逻辑| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 8,009 | 4,959 | -38% | 1 | 1 | 0% | 1,589 | 2,316 | +46% | 0 | 0 | — |
case-02 | pass→pass | 10,529 | 7,242 | -31% | 1 | 1 | 0% | 1,837 | 2,744 | +49% | 0 | 0 | — |
case-03 | pass→pass | 6,491 | 5,012 | -23% | 1 | 1 | 0% | 1,252 | 2,494 | +99% | 0 | 0 | — |
case-04 | fail→fail | 11,629 | 12,556 | +8% | 1 | 1 | 0% | 1,966 | 3,626 | +84% | 0 | 0 | — |
case-05 | pass→pass | 13,513 | 13,237 | -2% | 1 | 1 | 0% | 2,648 | 4,009 | +51% | 0 | 0 | — |
case-06 | pass→pass | 9,739 | 10,138 | +4% | 1 | 1 | 0% | 1,877 | 3,450 | +84% | 0 | 0 | — |
case-07 | pass→pass | 12,829 | 8,439 | -34% | 1 | 1 | 0% | 2,294 | 3,012 | +31% | 0 | 0 | — |
case-08 | pass→pass | 10,457 | 8,156 | -22% | 1 | 1 | 0% | 2,001 | 2,892 | +45% | 0 | 0 | — |
case-09 | pass→pass | 10,801 | 8,865 | -18% | 1 | 1 | 0% | 2,114 | 3,088 | +46% | 0 | 0 | — |
case-10 | pass→pass | 12,739 | 9,708 | -24% | 1 | 1 | 0% | 2,322 | 3,203 | +38% | 0 | 0 | — |
case-11 | pass→pass | 8,418 | 7,950 | -6% | 1 | 1 | 0% | 1,715 | 2,880 | +68% | 0 | 0 | — |
case-12 | pass→pass | 8,133 | 7,355 | -10% | 1 | 1 | 0% | 1,537 | 2,896 | +88% | 0 | 0 | — |
case-13 | pass→pass | 8,088 | 6,350 | -21% | 1 | 1 | 0% | 1,534 | 2,676 | +74% | 0 | 0 | — |
case-14 | pass→pass | 7,126 | 2,622 | -63% | 1 | 1 | 0% | 1,277 | 1,862 | +46% | 0 | 0 | — |
case-15 | pass→pass | 10,454 | 5,517 | -47% | 1 | 1 | 0% | 1,755 | 2,498 | +42% | 0 | 0 | — |
case-16 | pass→pass | 7,703 | 4,672 | -39% | 1 | 1 | 0% | 1,355 | 2,246 | +66% | 0 | 0 | — |
case-17 | fail→fail | 4,022 | 2,601 | -35% | 1 | 1 | 0% | 701 | 1,885 | +169% | 0 | 0 | — |
case-18 | fail→pass | 10,915 | 5,310 | -51% | 1 | 1 | 0% | 1,836 | 2,360 | +29% | 0 | 0 | — |
case-19 | fail→pass | 9,376 | 2,511 | -73% | 1 | 1 | 0% | 1,620 | 1,823 | +13% | 0 | 0 | — |
case-20 | pass→pass | 10,670 | 3,142 | -71% | 1 | 1 | 0% | 1,863 | 2,060 | +11% | 0 | 0 | — |
case-21 | pass→pass | 11,884 | 9,014 | -24% | 1 | 1 | 0% | 2,178 | 3,020 | +39% | 0 | 0 | — |
case-22 | fail→pass | 4,371 | 4,242 | -3% | 1 | 1 | 0% | 703 | 2,202 | +213% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.