Catalog
affaan-m/search-first

affaan-m

search-first

Research-before-coding workflow: search npm/PyPI, MCP servers, skills, and GitHub for existing tools before writing custom code, then adopt, extend, or build. Launches the researcher agent for non-trivial needs. Use when starting a feature, adding a dependency or integration, or about to write a utility that may already exist.

NewUpdated Sep 27, 2026

/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:

  1. Does this already exist in the repo? → rg through relevant modules/tests first
  2. Is this a common problem? → Search npm/PyPI
  3. Is there an MCP for this? → Check ~/.claude/settings.json and search
  4. Is there a skill for this? → Check ~/.claude/skills/
  5. 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

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
Files1
1 files · 1.0 KB

Select a file to preview

Overall Score

82/100

Grade

B

Good

Grades are signals, not a certification. Always review a skill yourself before use.

Safety

88

Quality

80

Clarity

85

Completeness

76

Summary

This skill teaches an AI agent a systematic "research before coding" workflow: search npm/PyPI, MCP servers, Claude Code skills, and GitHub for existing solutions before writing custom code. It provides decision logic (adopt, extend, compose, or build) and includes both quick inline checks and a full researcher agent pattern for complex needs.

Detected Capabilities

Tool availability checking (rg, npm, python, gh)Package registry search (npm, PyPI)GitHub CLI queriesLocal filesystem inspection (skills directories, MCP config)Research agent invocation with structured promptsComparison and evaluation frameworksDecision logic implementation

Trigger Keywords

Phrases that agents use to match this skill to user intent.

search for existing toolsresearch before codingavoid reinventing wheelchoose adopt extend buildfind npm packagediscover mcp serverlibrary evaluationdependency decision

Risk Signals

INFO

Local filesystem inspection (~/.claude/skills, ~/.claude/settings.json, ~/.codex/skills)

Step 0: Tool Availability Preflight section
INFO

No file writes, no package installation execution, no shell command execution outside safety boundary

Full Mode (agent) section and Step 0
INFO

Research agent invocation using unspecified agent/subagent tool names ('use the current agent/subagent tool name exposed by the active harness')

Full Mode (agent) section

Use Cases

  • Starting a new feature and validating solution availability
  • Adding a dependency or integration with confidence it's the best choice
  • Avoiding duplicate implementation of common utilities
  • Discovering MCP servers and skills that provide needed capabilities
  • Making informed build-vs-buy decisions for project components
  • Integrating research findings into planner and architect agent workflows

Quality Notes

  • Well-structured workflow with clear visual workflow diagram and decision matrix
  • Practical step-by-step guidance with both quick inline mode and full agent mode
  • Concrete examples (dead link checking, HTTP client wrapper, config linter) demonstrate decision logic
  • Clear trigger conditions that help agents know when to apply the skill
  • Honest documentation of tool availability fallbacks (e.g., 'if missing, use web/docs search instead')
  • Search shortcuts by category (development tooling, AI/LLM, data/APIs, content) provide practical reference
  • Anti-patterns section warns against common mistakes (jumping to code, ignoring MCP, silent skipping)
  • Integration points with planner and architect agents show how this fits into larger agent workflows
  • Limitation: lacks explicit error handling guidance if searches timeout or if multiple good options exist with no clear winner
  • Could benefit from guidance on how to handle opinionated tool selection (e.g., when community is split between two equally-valid solutions)
  • Doesn't explicitly address license compatibility checking beyond mentioning MIT/Apache in the decision matrix
Model: claude-haiku-4-5-20251001Analyzed: Sep 27, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Version History

  1. v2.0

    Contract changed: description

    ✦ AIActivates on broader research scenarios: npm/PyPI, MCP servers, skills, GitHub searches added to scope; clarifies when agent should trigger.

    triggering2026-09-27

    LATEST
  2. v1.2

    Content updated

    ✦ AIAdds preflight step to check search channel availability and report skipped channels honestly; changes Task to Agent API reference.

    2026-07-14

    View This Version
  3. v1.1

    Content updated

    ✦ AIAdds LICENSE file.

    2026-04-20

    View This Version
  4. v1.0

    Seeded from github.com/affaan-m/everything-claude-code

    2026-03-16

    View This VersionInitial version

Use affaan-m/search-first in your dev environment

Command Palette

Search for a command to run...