/search-first — Investiga Antes de Codificar
Sistematiza el flujo de trabajo "buscar soluciones existentes antes de implementar".
Disparador
Usa este skill cuando:
- Inicias una nueva funcionalidad que probablemente tenga soluciones existentes
- Añades una dependencia o integración
- El usuario pide "añadir funcionalidad X" y estás a punto de escribir código
- Antes de crear una nueva utilidad, helper o abstracción
Flujo de trabajo
┌─────────────────────────────────────────────┐
│ 0. VERIFICACIÓN PREVIA DE HERRAMIENTAS │
│ Comprueba los canales de búsqueda antes │
│ de confiar en ellos; reporta canales │
│ omitidos con honestidad │
├─────────────────────────────────────────────┤
│ 1. ANÁLISIS DE NECESIDADES │
│ Define qué funcionalidad se necesita │
│ Identifica restricciones de idioma/fw │
├─────────────────────────────────────────────┤
│ 2. BÚSQUEDA EN PARALELO (agente invest.) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ npm / │ │ MCP / │ │ GitHub / │ │
│ │ PyPI │ │ Skills │ │ Web │ │
│ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────┤
│ 3. EVALUACIÓN │
│ Puntúa candidatos (funcionalidad, manto,│
│ comunidad, docs, licencia, deps) │
├─────────────────────────────────────────────┤
│ 4. DECISIÓN │
│ ┌─────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Adoptar│ │ Extender│ │ Crear │ │
│ │ tal cual│ │ /Envolver│ │ a medida│ │
│ └─────────┘ └──────────┘ └─────────┘ │
├─────────────────────────────────────────────┤
│ 5. IMPLEMENTAR │
│ Instalar paquete / Configurar MCP / │
│ Escribir código personalizado mínimo │
└─────────────────────────────────────────────┘
Matriz de decisión
| Señal | Acción |
|---|---|
| Coincidencia exacta, bien mantenido, MIT/Apache | Adoptar — instalar y usar directamente |
| Coincidencia parcial, buena base | Extender — instalar + escribir envoltura fina |
| Varias coincidencias débiles | Componer — combinar 2-3 paquetes pequeños |
| No se encuentra nada adecuado | Crear — escribir a medida, pero informado por la investigación |
Cómo usar
Paso 0: Verificación previa de herramientas
Esto es guía para el agente, no un script de configuración ejecutable. Revisa solo los canales que sean relevantes para la tarea y el proyecto que tienes delante.
| Canal | Verificación | Si falta |
|---|---|---|
| Búsqueda en repositorio | rg --files y consultas rg específicas | Indica que solo se inspeccionaron archivos visibles |
| Registro de paquetes | npm --version, python -m pip --version, o gestor de paquetes del proyecto | Usa búsqueda web/docs y evita afirmar cobertura del registro |
| GitHub CLI | gh auth status | Usa solo web pública o historial git local |
| Herramientas MCP/docs | Lista de herramientas disponibles o config MCP local | Recurre a documentación/búsqueda web oficial |
| Directorio de skills | ls ~/.claude/skills ~/.codex/skills donde aplique | Indica que no había catálogo local de skills |
Modo rápido (en línea)
Antes de escribir una utilidad o añadir funcionalidad, recorre mentalmente:
- ¿Ya existe esto en el repositorio? →
rga través de módulos/pruebas relevantes primero - ¿Es un problema común? → Buscar en npm/PyPI
- ¿Hay un MCP para esto? → Revisar
~/.claude/settings.jsony buscar - ¿Hay un skill para esto? → Revisar
~/.claude/skills/ - ¿Hay una implementación/plantilla en GitHub? → Ejecutar búsqueda de código GitHub para OSS mantenido antes de escribir código nuevo
Modo completo (agente)
Para funcionalidades no triviales, lanza el agente investigador:
Agent(subagent_type="general-purpose", prompt="
Investiga herramientas existentes para: [DESCRIPCIÓN]
Idioma/framework: [LENGUAJE]
Restricciones: [CUALQUIERA]
Buscar: npm/PyPI, servidores MCP, skills de Claude Code, GitHub
Devolver: Comparación estructurada con recomendación
")
La documentación antigua de Claude Code puede llamar a esto Task(...); usa el nombre actual
de la herramienta agent/subagent expuesto por el harness activo.
Atajos de búsqueda por categoría
Herramientas de desarrollo
- Linting →
eslint,ruff,textlint,markdownlint - Formateo →
prettier,black,gofmt - Pruebas →
jest,pytest,go test - Pre-commit →
husky,lint-staged,pre-commit
Integración AI/LLM
- SDK de Claude → Context7 para la documentación más reciente
- Gestión de prompts → Revisar servidores MCP
- Procesamiento de documentos →
unstructured,pdfplumber,mammoth
Datos y APIs
- Clientes HTTP →
httpx(Python),ky/undici(Node) - Validación →
zod(TS),pydantic(Python) - Base de datos → Revisar primero los servidores MCP
Contenido y publicación
- Procesamiento de Markdown →
remark,unified,markdown-it - Optimización de imágenes →
sharp,imagemin
Puntos de integración
Con el agente planificador
El planificador debe invocar al investigador antes de la Fase 1 (Revisión de arquitectura):
- El investigador identifica las herramientas disponibles
- El planificador las incorpora al plan de implementación
- Evita "reinventar la rueda" en el plan
Con el agente arquitecto
El arquitecto debe consultar al investigador para:
- Decisiones sobre la pila tecnológica
- Descubrimiento de patrones de integración
- Arquitecturas de referencia existentes
Con el skill de recuperación iterativa
Combínalo para un descubrimiento progresivo:
- Ciclo 1: Búsqueda amplia (npm, PyPI, MCP)
- Ciclo 2: Evaluar los mejores candidatos en detalle
- Ciclo 3: Probar compatibilidad con restricciones del proyecto
Ejemplos
Ejemplo 1: "Añadir verificación de enlaces rotos"
Necesidad: Verificar enlaces rotos en archivos markdown
Búsqueda: npm "markdown dead link checker"
Encontrado: textlint-rule-no-dead-link (puntuación: 9/10)
Acción: ADOPTAR — npm install textlint-rule-no-dead-link
Resultado: Cero código personalizado, solución probada en batalla
Ejemplo 2: "Añadir envoltura de cliente HTTP"
Necesidad: Cliente HTTP resiliente con reintentos y control de tiempo de espera
Búsqueda: npm "http client retry", PyPI "httpx retry"
Encontrado: got (Node) con plugin de reintentos, httpx (Python) con reintentos integrados
Acción: ADOPTAR — usar got/httpx directamente con configuración de reintentos
Resultado: Cero código personalizado, bibliotecas probadas en producción
Ejemplo 3: "Añadir linter de archivos de configuración"
Necesidad: Validar archivos de configuración del proyecto contra un esquema
Búsqueda: npm "config linter schema", "json schema validator cli"
Encontrado: ajv-cli (puntuación: 8/10)
Acción: ADOPTAR + EXTENDER — instalar ajv-cli, escribir esquema específico del proyecto
Resultado: 1 paquete + 1 archivo de esquema, sin lógica de validación personalizada
Anti-patrones
- Saltar al código: Escribir una utilidad sin verificar si ya existe una
- Ignorar MCP: No revisar si un servidor MCP ya proporciona la capacidad
- Omitir silenciosamente: Reportar "no se encontró nada" cuando un canal de búsqueda no estaba disponible
- Sobrepersonalizar: Envolver una biblioteca tan pesadamente que pierde sus beneficios
- Hinchazón de dependencias: Instalar un paquete enorme para una funcionalidad pequeña