/search-first — Investigar Antes de Codificar
Sistematiza el flujo de trabajo de "buscar soluciones existentes antes de implementar".
Disparador
Usa este skill cuando:
- Inicies una nueva funcionalidad que probablemente tenga soluciones existentes
- Estés agregando una dependencia o integración
- El usuario pida "agregar 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 │
│ Verifica canales de búsqueda antes de │
│ confiar en ellos; reporta canales │
│ omitidos de manera honesta │
├─────────────────────────────────────────────┤
│ 1. ANÁLISIS DE NECESIDADES │
│ Define qué funcionalidad se necesita │
│ Identifica restricciones de lenguaje/ │
│ framework │
├─────────────────────────────────────────────┤
│ 2. BÚSQUEDA PARALELA (agente investigador) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ npm / │ │ MCP / │ │ GitHub / │ │
│ │ PyPI │ │ Skills │ │ Web │ │
│ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────┤
│ 3. EVALUAR │
│ Puntúa candidatos (funcionalidad, │
│ mantenimiento, comunidad, docs, │
│ licencia, dependencias) │
├─────────────────────────────────────────────┤
│ 4. DECIDIR │
│ ┌─────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Adoptar│ │ Extender│ │Construir │ │
│ │ tal cual│ │ /Envolver│ │Personal.│ │
│ └─────────┘ └──────────┘ └─────────┘ │
├─────────────────────────────────────────────┤
│ 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 envoltorio delgado |
| Múltiples coincidencias débiles | Componer — combinar 2-3 paquetes pequeños |
| No se encuentra nada adecuado | Construir — escribir personalizado, pero informado por la investigación |
Cómo Usar
Paso 0: Verificación Previa de Herramientas
Esto es orientación para el agente, no un script de configuración ejecutable. Verifica solo los canales que sean relevantes para la tarea y el proyecto que tienes delante.
| Canal | Verificar | Si falta |
|---|---|---|
| Búsqueda en repositorio | rg --files y consultas rg dirigidas | Indicar que solo se inspeccionaron archivos visibles |
| Registro de paquetes | npm --version, python -m pip --version, o el gestor de paquetes del proyecto | Usar búsqueda web/docs y evitar afirmar cobertura del registro |
| CLI de GitHub | gh auth status | Usar solo web pública o historial de git local |
| Herramientas MCP/docs | Lista de herramientas disponibles o configuración MCP local | Recurrir a documentación oficial/búsqueda web |
| Directorio de skills | ls ~/.claude/skills ~/.codex/skills donde aplique | Decir que no había catálogo local de skills disponible |
Modo Rápido (en línea)
Antes de escribir una utilidad o agregar 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? → Verificar
~/.claude/settings.jsony buscar - ¿Hay un skill para esto? → Verificar
~/.claude/skills/ - ¿Hay una implementación/plantilla en GitHub? → Ejecutar búsqueda de código en GitHub para OSS mantenido antes de escribir código nuevo desde cero
Modo Completo (agente)
Para funcionalidades no triviales, lanza el agente investigador:
Agent(subagent_type="general-purpose", prompt="
Investigar herramientas existentes para: [DESCRIPCIÓN]
Lenguaje/framework: [LENGUAJE]
Restricciones: [CUALQUIERA]
Buscar: npm/PyPI, servidores MCP, skills de Claude Code, GitHub
Devolver: Comparación estructurada con recomendación
")
La documentación anterior de Claude Code puede llamar a esto Task(...); usa el nombre de herramienta actual de agente/subagente expuesto por el entorno 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 docs más recientes
- Gestión de prompts → Verificar 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 → Verificar primero 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 herramientas disponibles
- El planificador las incorpora en el 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 descubrimiento progresivo:
- Ciclo 1: Búsqueda amplia (npm, PyPI, MCP)
- Ciclo 2: Evaluar candidatos principales en detalle
- Ciclo 3: Probar compatibilidad con restricciones del proyecto
Ejemplos
Ejemplo 1: "Agregar verificación de enlaces rotos"
Necesidad: Verificar archivos markdown en busca de enlaces rotos
Búsqueda: npm "markdown dead link checker"
Encontrado: textlint-rule-no-dead-link (puntaje: 9/10)
Acción: ADOPTAR — npm install textlint-rule-no-dead-link
Resultado: Cero código personalizado, solución probada en batalla
Ejemplo 2: "Agregar envoltorio de cliente HTTP"
Necesidad: Cliente HTTP resistente con reintentos y manejo 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: "Agregar 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 (puntaje: 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 verificar si un servidor MCP ya proporciona la capacidad
- Omitir en silencio: Reportar "no se encontró nada" cuando un canal de búsqueda no estaba disponible
- Sobrepersonalizar: Envolver una biblioteca tan intensamente que pierde sus beneficios
- Inflar dependencias: Instalar un paquete enorme para una funcionalidad pequeña