search-first — скилл для Claude: поиск готовых решений до кода
Скилл заставляет агента искать готовые пакеты, MCP-серверы и скиллы до того, как он начнёт писать свой код.
npx skills add affaan-m/ECC --skill search-first -a claude-codeЧто делает search-first
search-first описывает порядок работы: сначала анализ задачи, потом параллельный поиск по npm и PyPI, каталогам MCP-серверов, скиллов и GitHub. Найденные варианты оценивают по функциональности, поддержке, документации, лицензии и зависимостям. Дальше решение: взять как есть, обернуть тонким слоем, собрать из нескольких мелких пакетов или всё-таки писать своё.
Для нетривиальных задач скилл запускает субагента-исследователя и просит вернуть структурированное сравнение с рекомендацией. Есть режим быстрой проверки прямо в диалоге: поискать по репозиторию через rg, проверить npm или PyPI, заглянуть в ~/.claude/settings.json и ~/.claude/skills/. Перед этим идёт предполётная проверка каналов — если gh не авторизован или реестр недоступен, скилл скажет, что канал пропущен, вместо тихого «ничего не найдено».
Ставить стоит, если вы часто ловите себя на мысли, что пишете очередной хелпер. В проекте с жёсткими ограничениями по зависимостям польза меньше: поиск всё равно закончится решением писать своё.
Какие задачи решает
- найти готовый пакет вместо написания своего хелпера
- проверить, нет ли MCP-сервера под нужную задачу
- сравнить кандидатов по поддержке и лицензии
- подобрать библиотеку под ограничения проекта
- решить, брать пакет как есть или писать обёртку
Примеры запросов агенту
- Добавь проверку битых ссылок в markdown — сначала поищи готовое решение
- Нужен HTTP-клиент с ретраями, посмотри npm и PyPI перед тем как писать
- Запусти researcher и сравни варианты для валидации конфигов
Как установить search-first
1Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill search-first -a claude-code2Вручную: положить файлы
~/.claude/skills/search-first/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/search-first/
1Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill search-first -a codex2Вручную: положить файлы
.agents/skills/search-first/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill search-first -a cursor2Вручную: положить файлы
.cursor/skills/search-first/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install affaan-m/ECC search-first2Вручную: положить файлы
.github/skills/search-first/SKILL.md1Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill search-first -a gemini-cli2Командой платформы
gemini skills install https://github.com/affaan-m/ECC --path skills/search-firstВручную: положить файлы
.devin/skills/search-first/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add affaan-m/ECC --skill search-first -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора146
Весь набор →Похожие
Вопросы о search-first
Как установить search-first в Claude?
Выполните npx skills add affaan-m/ECC --skill search-first -a claude-code. Файл скилла появится по пути ~/.claude/skills/search-first/SKILL.md.
Что делает search-first?
Прогоняет поиск по npm, PyPI, MCP-серверам, скиллам и GitHub перед написанием кода, оценивает найденное и предлагает взять, расширить или собрать своё.
Что нужно для работы скилла?
Ничего обязательного. Если gh не авторизован или реестр пакетов недоступен, скилл сообщит, какие каналы поиска пропущены.
Исходный текст
SKILL.md · MIT
--- 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: 0. Does this already exist in the repo? → `rg` through relevant modules/tests first 1. Is this a common problem? → Search npm/PyPI 2. Is there an MCP for this? → Check `~/.claude/settings.json` and search 3. 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: ``` 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
© affaan-m · MIT · affaan-m/ECC