agentleFS
sidiangongyuansidiangongyuan/codex-skills-library/skills/search-first/SKILL.md

search-first

Skill11 starsChanged 4 months agoMITView on GitHub

Use before writing custom code or a research workflow when a maintained library, tool, skill, or proven pattern may already exist. Start with local reuse and targeted evidence; broaden to external research for new dependencies, new mechanisms, or uncertain external facts.

42 other projects use a version of this, 25 of them edited.

Adopted by

Most recently taken up by

Used with

Projects with it also use continuous-agent-loop, agent-harness-construction and 9 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • junimnjwSkill

    continuous-agent-loop

    Patterns for continuous autonomous agent loops with quality gates, evals, and recovery controls.

    Also in 4 projects that use this

  • junimnjwSkill

    agent-harness-construction

    Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates.

    Also in 4 projects that use this

  • loulanyueSkill

    safety-guard

    Also in 3 projects that use this

  • loulanyueSkill

    rules-distill

    Scan skills to extract cross-cutting principles and distill them into rules — append, revise, or create new rule files

    Also in 3 projects that use this

  • dcs-soniSkill

    codebase-onboarding

    Help developers understand unfamiliar codebases quickly. Use when

    Also in 3 projects that use this

  • MicrosoftSkill

    error-handling

    统一错误处理系统。在添加 API 端点、修改错误处理、添加前端 API 调用、编写错误相关测试时使用。

    Also in 3 projects that use this

  • +2 more from junimnjw

The file

We split this skill into the rules it gives an agent

12 rules. 4 are common, 5 are distinctive, and 3 are very specific to this project.

  • 4

    Common

    Most of the 36 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Common:

    Use this skill when:

    line 13
  2. Common:

    Before creating a new utility, helper, or abstraction

    line 17
  3. Distinctive:

    Start with the repository and approved local catalog.

    line 67
  4. Very specific:

    When the task needs research grounding, method positioning, related work, citation support, or top-venue precedent, use $research-evidence …

    line 102
  5. Very specific:

    Use the evidence result to decide Adopt, Extend, Compose, or Build only when the Research Gate calls for external evidence.

    line 109
  6. Distinctive:

    Do not claim literature coverage when the research-evidence tool or source channel was unavailable.

    line 111
  7. Common:

    Before writing a utility or adding functionality, mentally run through:

    line 116
  8. Distinctive:

    Do not launch the full researcher workflow for routine fixes, result fills, or known local reuse.

    line 134
  9. Distinctive:

    Use the current agent or subagent tool exposed by the active harness.

    line 149
  10. Very specific:

    Document processing → unstructured, pdfplumber, mammoth

    line 163
  11. Distinctive:

    When broader research is warranted, combine for progressive discovery:

    line 190
  12. Common:

    Ignoring MCP: Not checking if an MCP server already provides the capability

    line 230

“Common” is measured: kept by at least 6 in 10 of the 36 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/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. NEED + LOCAL REUSE GATE                 │
│     Inspect approved local implementations  │
│     and results before external searching    │
├─────────────────────────────────────────────┤
│  1. RESEARCH DECISION                       │
│     Decide whether reuse, targeted lookup,   │
│     or broader research is actually needed   │
├─────────────────────────────────────────────┤
│  2. TARGETED SEARCH (only when warranted)   │
│     ┌──────────┐ ┌──────────┐ ┌──────────┐  │
│     │ Registry │ │  Tools / │ │  GitHub / │  │
│     │  / docs  │ │  skills  │ │  evidence │  │
│     └──────────┘ └──────────┘ └──────────┘  │
├─────────────────────────────────────────────┤
│  3. EVALUATE                                │
│     Score candidates (functionality, maint, │
│     community, docs, license, deps)         │
├─────────────────────────────────────────────┤
│  4. DECIDE                                  │
│     ┌─────────┐  ┌──────────┐  ┌─────────┐  │
│     │  Adopt  │  │  Extend  │  │  Build   │  │
│     │ as-is   │  │  /Wrap   │  │  Custom  │  │
│     └─────────┘  └──────────┘  └─────────┘  │
├─────────────────────────────────────────────┤
│  5. IMPLEMENT                               │
│     Reuse approved solution or write the    │
│     smallest justified custom code           │
└─────────────────────────────────────────────┘

Decision Matrix

SignalAction
Approved local implementation or resultReuse or repair — no broad fresh search required
Specific local gap or uncertaintyTargeted lookup — search only for that issue
New dependency, new mechanism, or uncertain external factResearch — compare evidence before deciding
Exact match, well-maintained, MIT/ApacheAdopt — use directly when available or within authorized implementation scope
Partial match, good foundationExtend — add a thin wrapper within authorized implementation scope
Multiple weak matchesCompose — combine 2-3 small packages
Nothing suitable foundBuild — write custom, but informed by research

Research Gate

Start with the repository and approved local catalog. Inspect existing modules, tests, lockfiles, configured tools or skills, prior results, and known patterns before searching externally. If an approved implementation or result already meets the need, reuse it. For a known defect or result gap, repair or fill it and use a targeted lookup only when a specific external fact or compatibility question remains; do not force a broad external search or launch the full researcher workflow for every fix.

Broader research is warranted when selecting a new dependency, introducing a new mechanism or architecture, or relying on external facts that may be uncertain or changed. Delegate only a bounded, independent search that would materially improve the decision. For search-only or advisory work, do not turn a recommendation into an automatic package install, configuration change, publication, message, or other external mutation. For an implementation request, ordinary project-scoped dependency installation and configuration are allowed within the existing task authority and budget; ask before global or system changes, new external effects, or scope or cost expansion.

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.

ChannelCheckIf missing
Repository searchrg --files and targeted rg queriesState that only visible files were inspected
Package registrynpm --version, python -m pip --version, or project package managerUse web/docs search and avoid claiming registry coverage
GitHub CLIgh auth statusUse public web or local git history only
MCP/docs toolsAvailable tool list or local MCP configFall back to official docs/web search
Skill catalogInspect the active harness's available skills or configured skill rootSay no local skill catalog was available

Academic Literature Path

When the task needs research grounding, method positioning, related work, citation support, or top-venue precedent, use $research-evidence instead of ad hoc web search. Prefer CVPR, ICCV, ECCV, ICLR, NeurIPS/NIPS, and ICML for CV/ML work; include CoRL, ICRA, IROS, AAAI, IJCAI, T-ITS, and RA-L only when the user topic justifies autonomous-driving, robotics, or collaborative perception coverage.

Use the evidence result to decide Adopt, Extend, Compose, or Build only when the Research Gate calls for external evidence. Do not claim literature coverage when the research-evidence tool or source channel was unavailable.

Quick Mode (inline)

Before writing a utility or adding functionality, mentally run through:

  1. Is there an approved implementation or result locally? → Inspect relevant modules, tests, configs, and outputs first; reuse or repair it.
  2. Is there a specific gap or uncertainty? → Run a targeted lookup only if it would change the decision.
  3. Is a new dependency or mechanism, or an uncertain external fact involved? → Research the relevant registries, docs, or evidence.
  4. Is there an MCP or connected tool for this? → Inspect the active tool list and relevant configuration when research is warranted.
  5. Is there a skill for this? → Inspect the active harness's skill catalog.
  6. Is there a GitHub implementation/template? → Search maintained OSS when the Research Gate calls for it before writing net-new code.

Full Mode (agent)

For non-trivial functionality that passes the Research Gate, launch the researcher agent only when a bounded, independent search would materially help. Do not launch the full researcher workflow for routine fixes, result fills, or known local reuse.

Agent(subagent_type="general-purpose", prompt="
  Research existing tools for: [DESCRIPTION]
  Language/framework: [LANG]
  Constraints: [ANY]

  Search: relevant package registries, connected tools, agent skills/catalog,
  GitHub, official docs, or academic evidence
  Return: A bounded comparison with recommendation and evidence gaps
")

Use the current agent or subagent tool exposed by the active harness. If no delegation tool is available, run the same bounded search channels directly.

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

  • Provider SDKs → official documentation or the configured documentation tool
  • 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) when the Research Gate calls for external research:

  • 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, when warranted, for:

  • Technology stack decisions
  • Integration pattern discovery
  • Existing reference architectures

With iterative-retrieval skill

When broader research is warranted, 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 — recommend textlint-rule-no-dead-link; install it within an
authorized project implementation
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 — recommend got/httpx directly with retry config; apply it within
an authorized project implementation
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 — recommend ajv-cli; use it within an authorized project
implementation, then write a 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
  • Forced discovery: Running broad external search or the full researcher for a routine local fix or result fill
  • Unbounded delegation: Sending vague research tasks without an independent, decision-relevant deliverable
  • Unauthorized mutation: Installing, configuring, publishing, or sending anything merely because a recommendation was made

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.