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.mdsource 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:
or web searchpip index versions {package} - crates.io:
cargo search {keywords} - Go:
searchpkg.go.dev
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