with one click
search-first
// Research-before-coding workflow. Search for existing tools, libraries, and patterns before writing custom code. Invokes the researcher agent.
// Research-before-coding workflow. Search for existing tools, libraries, and patterns before writing custom code. Invokes the researcher agent.
| name | search-first |
| description | Research-before-coding workflow. Search for existing tools, libraries, and patterns before writing custom code. Invokes the researcher agent. |
| origin | ECC |
Systematizes the "search for existing solutions before implementing" workflow.
Use this skill when:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā 0. TOOL AVAILABILITY PREFLIGHT ā
ā Check search channels before relying on ā
ā them; report skipped channels honestly ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā 1. NEED ANALYSIS ā
ā Define what functionality is needed ā
ā Identify language/framework constraints ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā 2. PARALLEL SEARCH (researcher agent) ā
ā āāāāāāāāāāāā āāāāāāāāāāāā āāāāāāāāāāāā ā
ā ā npm / ā ā MCP / ā ā GitHub / ā ā
ā ā PyPI ā ā Skills ā ā Web ā ā
ā āāāāāāāāāāāā āāāāāāāāāāāā āāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā 3. EVALUATE ā
ā Score candidates (functionality, maint, ā
ā community, docs, license, deps) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā 4. DECIDE ā
ā āāāāāāāāāāā āāāāāāāāāāāā āāāāāāāāāāā ā
ā ā Adopt ā ā Extend ā ā Build ā ā
ā ā as-is ā ā /Wrap ā ā Custom ā ā
ā āāāāāāāāāāā āāāāāāāāāāāā āāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā 5. IMPLEMENT ā
ā Install package / Configure MCP / ā
ā Write minimal custom code ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
| Signal | Action |
|---|---|
| Exact match, well-maintained, MIT/Apache | Adopt ā install and use directly |
| Partial match, good foundation | Extend ā install + write thin wrapper |
| Multiple weak matches | Compose ā combine 2-3 small packages |
| Nothing suitable found | Build ā write custom, but informed by research |
This is agent guidance, not an executable setup script. Check only the channels that are relevant to the task and project in front of you.
| Channel | Check | If missing |
|---|---|---|
| Repository search | rg --files and targeted rg queries | State that only visible files were inspected |
| Package registry | npm --version, python -m pip --version, or project package manager | Use web/docs search and avoid claiming registry coverage |
| GitHub CLI | gh auth status | Use public web or local git history only |
| MCP/docs tools | Available tool list or local MCP config | Fall back to official docs/web search |
| Skills directory | ls ~/.claude/skills ~/.codex/skills where applicable | Say no local skill catalog was available |
Before writing a utility or adding functionality, mentally run through:
rg through relevant modules/tests first~/.claude/settings.json and search~/.claude/skills/For non-trivial functionality, launch the researcher agent:
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
")
Older Claude Code docs may call this Task(...); use the current agent/subagent
tool name exposed by the active harness.
eslint, ruff, textlint, markdownlintprettier, black, gofmtjest, pytest, go testhusky, lint-staged, pre-commitunstructured, pdfplumber, mammothhttpx (Python), ky/undici (Node)zod (TS), pydantic (Python)remark, unified, markdown-itsharp, imageminThe planner should invoke researcher before Phase 1 (Architecture Review):
The architect should consult researcher for:
Combine for progressive discovery:
Need: Check markdown files for broken links
Search: npm "markdown dead link checker"
Found: textlint-rule-no-dead-link (score: 9/10)
Action: ADOPT ā npm install textlint-rule-no-dead-link
Result: Zero custom code, battle-tested solution
Need: Resilient HTTP client with retries and timeout handling
Search: npm "http client retry", PyPI "httpx retry"
Found: got (Node) with retry plugin, httpx (Python) with built-in retry
Action: ADOPT ā use got/httpx directly with retry config
Result: Zero custom code, production-proven libraries
Need: Validate project config files against a schema
Search: npm "config linter schema", "json schema validator cli"
Found: ajv-cli (score: 8/10)
Action: ADOPT + EXTEND ā install ajv-cli, write project-specific schema
Result: 1 package + 1 schema file, no custom validation logic