Skills affaan-m ecc

search-first

Use it when:
You're about to add a feature, dependency, integration or utility that may already exist.
It does:
Checks which search channels it has, defines the need, searches registries, MCP servers, skills and GitHub, and scores the candidates.
You get:
A decision, adopt as is, extend with a thin wrapper, combine 2-3 small packages or build custom, then the install or minimal code.
Runs:
Inline as a quick five-question check, or for non-trivial needs as a subagent that returns a structured comparison.
Unlike deep-research:
That one, from the same repo, writes cited reports on any topic; this one only looks for code to reuse before writing it.

TL;DR

A research-before-coding habit from ECC, written as steps. The agent first checks which search channels it actually has, ripgrep, a package manager, gh, MCP or docs tools, a local skills folder, and says which it had to skip instead of reporting nothing found. It then defines the functionality and constraints, searches npm or PyPI, MCP servers, skills and GitHub, and scores candidates on functionality, maintenance, community, docs, license and dependencies. A decision matrix picks the outcome: adopt an exact, well-maintained, MIT or Apache match; extend a partial one with a thin wrapper; combine two or three small packages; or build custom code informed by what it found. For non-trivial needs it hands the search to a general-purpose subagent that returns a comparison with a recommendation. It lists usual candidates by category, such as linters, formatters, HTTP clients, validators and Markdown processors, and warns against wrapping a library until it loses its benefits or installing a large package for one small feature. Three worked examples each end in adopting an existing package.

Summarizes the skill at d2ef268.

npx skills add https://github.com/affaan-m/ecc --skill search-first
Total Downloads
5,900 on skills.sh, Nov 9, 2026
Repo stars
299,776 affaan-m/ecc
First seen
May 19, 2026 on skills.sh
Weekly Downloads
504
+86% over the 8 weeks to Nov 9
Weekly values
Week toInstalls
Sep 21271
Sep 28180
Oct 5167
Oct 12258
Oct 19447
Oct 26461
Nov 2655
Nov 9504
Category

Test-first work, implementation from specs, git hygiene and scope control.

Everything for building software: planning, coding, debugging, design, frameworks, cloud, agents and skills.

Type

A multi-step process the agent follows: interview, debug, run a TDD loop, review.

Effect

Its own steps create or change files, git state or local tools.

Needs

Relies on the agent being able to spawn subagents.

Publisher

Everyone else. Unverified vendor claims default to community.

Topics

SKILL.md

From affaan-m/ecc at d2ef268. Checked daily, last changed Nov 6, 2026.

Frontmatter
name: search-first
description: "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."
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:

  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

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