search-first
affaan-m/everything-claude-code
Search for existing tools and libraries before writing custom code.
What is search-first?
A research-before-coding workflow that systematizes checking for existing solutions—packages, MCPs, skills, and patterns—before implementing custom code. Invokes a researcher agent to search npm/PyPI, MCP servers, GitHub, and local resources in parallel, then guides a decision to adopt, extend, or build.
- Runs parallel searches across npm/PyPI, MCP servers, GitHub, and local skills before coding
- Evaluates candidates by functionality, maintenance status, community, docs, license, and dependencies
- Provides a decision matrix to adopt existing solutions, extend them with thin wrappers, compose multiple packages, or build informed custom code
- Includes tool availability preflight to report honestly when search channels are unavailable
- Offers quick inline mode for simple checks and full agent mode for non-trivial research
How to install search-first
npx skills add https://github.com/affaan-m/everything-claude-code --skill search-firstHow to use search-first
- 1.Check tool availability: verify npm/PyPI, GitHub CLI, MCP config, and local skills are accessible; report any missing channels honestly
- 2.Define the need: describe what functionality is required and identify language/framework constraints
- 3.Run parallel searches: use researcher agent or quick mode to search npm/PyPI, MCP servers, GitHub, and local resources
- 4.Evaluate candidates: score each by functionality match, maintenance, community, docs, license, and dependency footprint
- 5.Decide: adopt as-is if exact match and well-maintained; extend with a thin wrapper if partial match; compose multiple small packages if needed; build custom only if nothing suitable exists
- 6.Implement: install the chosen package, configure MCP if applicable, or write minimal custom code informed by research
Use cases
- Starting a new feature that likely has existing solutions (e.g., dead link checking, HTTP client with retries)
- Adding a dependency or integration and wanting to avoid reinventing the wheel
- Creating a new utility or helper function—search first to see if a package already exists
- Validating project config files or adding development tooling (linting, formatting, testing)
- Discovering MCP servers or Claude Code skills that provide needed capabilities
- Developers building features who want to minimize custom code and leverage battle-tested libraries
- Teams adopting a research-first culture to reduce technical debt and dependency bloat
- Agents (planner, architect, iterative-retrieval) that need to identify available tools before planning or implementation
search-first FAQ
Use it when starting a new feature, adding a dependency, or before writing a utility or helper function. Trigger it whenever you're about to write code that might already exist as a maintained package or MCP server.
Report it honestly. For example, if GitHub CLI is not authenticated, state that only public web search or local git history was inspected. Do not claim registry coverage if you couldn't check it.
Quick Mode is a mental checklist you run inline: check the repo, npm/PyPI, MCPs, skills, and GitHub. Full Mode launches a researcher agent for non-trivial functionality to conduct a structured, parallel search and return a comparison with recommendation.
Use the decision matrix: adopt if exact match and well-maintained (MIT/Apache); extend if partial match with good foundation; compose if multiple weak matches exist; build only if nothing suitable is found, but inform your implementation with research insights.
Yes. Pair it with iterative-retrieval for progressive discovery across cycles, or integrate with planner and architect agents so they consult research before Phase 1 and technology decisions.
Full instructions (SKILL.md)
Source of truth, from affaan-m/everything-claude-code.
name: search-first description: Research-before-coding workflow. Search for existing tools, libraries, and patterns before writing custom code. Invokes the researcher agent. metadata: origin: ECC
/search-first — Research Before You Code
Systematizes the "search for existing solutions before implementing" workflow.
Trigger
Use this skill when:
- Starting a new feature that likely has existing solutions
- Adding a dependency or integration
- The user asks "add X functionality" and you're about to write code
- Before creating a new utility, helper, or abstraction
Workflow
┌─────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────┘
Decision Matrix
| 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 |
How to Use
Step 0: Tool Availability Preflight
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 |
Quick Mode (inline)
Before writing a utility or adding functionality, mentally run through:
- Does this already exist in the repo? →
rgthrough relevant modules/tests first - Is this a common problem? → Search npm/PyPI
- Is there an MCP for this? → Check
~/.claude/settings.jsonand search - Is there a skill for this? → Check
~/.claude/skills/ - Is there a GitHub implementation/template? → Run GitHub code search for maintained OSS before writing net-new code
Full Mode (agent)
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.
Search Shortcuts by Category
Development Tooling
- Linting →
eslint,ruff,textlint,markdownlint - Formatting →
prettier,black,gofmt - Testing →
jest,pytest,go test - Pre-commit →
husky,lint-staged,pre-commit
AI/LLM Integration
- Claude SDK → Context7 for latest docs
- Prompt management → Check MCP servers
- Document processing →
unstructured,pdfplumber,mammoth
Data & APIs
- HTTP clients →
httpx(Python),ky/undici(Node) - Validation →
zod(TS),pydantic(Python) - Database → Check for MCP servers first
Content & Publishing
- Markdown processing →
remark,unified,markdown-it - Image optimization →
sharp,imagemin
Integration Points
With planner agent
The planner should invoke researcher before Phase 1 (Architecture Review):
- Researcher identifies available tools
- Planner incorporates them into the implementation plan
- Avoids "reinventing the wheel" in the plan
With architect agent
The architect should consult researcher for:
- Technology stack decisions
- Integration pattern discovery
- Existing reference architectures
With iterative-retrieval skill
Combine for progressive discovery:
- Cycle 1: Broad search (npm, PyPI, MCP)
- Cycle 2: Evaluate top candidates in detail
- Cycle 3: Test compatibility with project constraints
Examples
Example 1: "Add dead link checking"
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
Example 2: "Add HTTP client wrapper"
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
Example 3: "Add config file linter"
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
Anti-Patterns
- Jumping to code: Writing a utility without checking if one exists
- Ignoring MCP: Not checking if an MCP server already provides the capability
- Silent skipping: Reporting "nothing found" when a search channel was unavailable
- Over-customizing: Wrapping a library so heavily it loses its benefits
- Dependency bloat: Installing a massive package for one small feature
Related skills
More from affaan-m/everything-claude-code and the wider catalog.
security-review
Security checklist and patterns for authentication, input validation, secrets, and sensitive features.
golang-patterns
Idiomatic Go patterns, best practices, and conventions for building robust, efficient, and maintainable applications.
coding-standards
Baseline coding conventions for naming, readability, immutability, and quality across projects.
frontend-patterns
React and Next.js patterns for components, state management, performance, and modern frontend practices.
backend-patterns
REST/GraphQL API design, database optimization, and server-side patterns for Node.js, Express, and Next.js.
golang-testing
Go testing patterns: table-driven tests, subtests, benchmarks, fuzzing, and TDD methodology.