Pm-pilot search-first

Research existing solutions before writing custom code

install
source · Clone the upstream repo
git clone https://github.com/mshadmanrahman/pm-pilot
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/mshadmanrahman/pm-pilot "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/dev/search-first" ~/.claude/skills/mshadmanrahman-pm-pilot-search-first && rm -rf "$T"
manifest: skills/dev/search-first/SKILL.md
source content

Search First

Mandatory research before writing any new code. Reuse beats reinvention.

When to Use

  • Before implementing any new feature
  • Before writing a utility function
  • Before adding a new dependency
  • Before building infrastructure (CI, deploy, tooling)

Procedure

Step 1: GitHub Code Search

# Search for existing implementations
gh search repos "{feature keywords}" --limit 5
gh search code "{function signature or pattern}" --limit 10

Look for:

  • Battle-tested implementations with stars and activity
  • Patterns that solve 80%+ of the problem
  • Forkable/portable code with compatible licenses

Step 2: Package Registry Search

Check the relevant registry:

  • npm:
    npm search {keywords}
  • PyPI:
    pip index versions {package}
    or web search
  • crates.io:
    cargo search {keywords}
  • Go:
    pkg.go.dev
    search

Evaluate packages on:

  • Download count and trend
  • Last publish date (stale = risk)
  • Dependency count (fewer = better)
  • License compatibility

Step 3: Library Documentation

  • Read official docs for candidate libraries
  • Check API matches the use case
  • Verify version compatibility with project

Step 4: Decision

Output one of:

REUSE: {package/repo} - {why it fits}
ADAPT: {package/repo} - {what needs modification}
BUILD: No suitable existing solution - {why}

Output Format

Search: {what was needed}

GitHub: 3 repos found, 1 strong match
  - github.com/user/repo (2.1k stars, MIT, active)

Registry: 2 packages evaluated
  - package-name (50k weekly downloads, v3.2.1)

Decision: REUSE package-name
Rationale: Covers all requirements, well-maintained, MIT license
Install: npm install package-name

Rules

  • NEVER skip this step for non-trivial implementations
  • Spending 5 minutes searching saves hours of coding
  • A 90% solution from a library beats a 100% custom solution
  • If BUILD is the decision, document why alternatives were rejected
  • For trivial utilities (< 10 lines), skip registry search
  • Always check license compatibility before adopting