Claude Agent Skill · by Affaan M

Search First

Install Search First skill for Claude Code from affaan-m/everything-claude-code.

Install
Terminal · npx
$npx skills add https://github.com/affaan-m/everything-claude-code --skill search-first
Works with Paperclip

How Search First fits into a Paperclip company.

Search First drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.

S
SaaS FactoryPaired

Pre-configured AI company — 18 agents, 18 skills, one-time purchase.

$27$59
Explore pack
Source file
SKILL.md161 lines
Expand
---name: search-firstdescription: Research-before-coding workflow. Search for existing tools, libraries, and patterns before writing custom code. Invokes the researcher agent.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 ```┌─────────────────────────────────────────────┐│  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 ### Quick Mode (inline) Before writing a utility or adding functionality, mentally run through: 0. Does this already exist in the repo? → `rg` through relevant modules/tests first1. Is this a common problem? → Search npm/PyPI2. Is there an MCP for this? → Check `~/.claude/settings.json` and search3. Is there a skill for this? → Check `~/.claude/skills/`4. 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: ```Task(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")``` ## 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`/`got` (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 agentThe 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 agentThe architect should consult researcher for:- Technology stack decisions- Integration pattern discovery- Existing reference architectures ### With iterative-retrieval skillCombine 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 linksSearch: npm "markdown dead link checker"Found: textlint-rule-no-dead-link (score: 9/10)Action: ADOPT — npm install textlint-rule-no-dead-linkResult: Zero custom code, battle-tested solution``` ### Example 2: "Add HTTP client wrapper"```Need: Resilient HTTP client with retries and timeout handlingSearch: npm "http client retry", PyPI "httpx retry"Found: got (Node) with retry plugin, httpx (Python) with built-in retryAction: ADOPT — use got/httpx directly with retry configResult: Zero custom code, production-proven libraries``` ### Example 3: "Add config file linter"```Need: Validate project config files against a schemaSearch: npm "config linter schema", "json schema validator cli"Found: ajv-cli (score: 8/10)Action: ADOPT + EXTEND — install ajv-cli, write project-specific schemaResult: 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- **Over-customizing**: Wrapping a library so heavily it loses its benefits- **Dependency bloat**: Installing a massive package for one small feature