# SIMCO: BUSCAR Y EXPLORAR **Versión:** 1.0.0 **Fecha:** 2025-12-08 **Aplica a:** TODO agente que necesite localizar archivos, código o información **Prioridad:** RECOMENDADA --- ## RESUMEN EJECUTIVO > **Antes de crear, BUSCA. Antes de preguntar, EXPLORA.** > Este documento proporciona estrategias eficientes para encontrar información en el workspace. --- ## ESTRATEGIAS DE BÚSQUEDA ### 0. Búsqueda en Catálogo de Funcionalidades (PRIMERO) **ANTES de buscar en código del proyecto, verificar si existe funcionalidad probada en @CATALOG:** ```bash # Buscar en catálogo de funcionalidades reutilizables grep -i "{funcionalidad}" @CATALOG_INDEX # Funcionalidades catalogadas: # - auth, session, rate-limiting, notifications # - multi-tenancy, feature-flags, websocket, payments # Si encuentra en catálogo → Usar @REUTILIZAR # Si NO encuentra → Continuar con búsqueda normal ``` **Alias del catálogo:** ```bash @CATALOG → core/catalog/ @CATALOG_INDEX → core/catalog/CATALOG-INDEX.yml @CATALOG_AUTH → core/catalog/auth/ @CATALOG_SESSION → core/catalog/session-management/ # ... ver @ALIASES para lista completa ``` --- ### 1. Búsqueda por Alias (Más Rápida) Usar los alias definidos en @ALIASES para navegación directa: ```bash # Alias de ubicaciones frecuentes @CATALOG → core/catalog/ (funcionalidades reutilizables) @INVENTORY → orchestration/inventarios/MASTER_INVENTORY.yml @DDL → {DB_DDL_PATH}/schemas/ @BACKEND → {BACKEND_SRC}/modules/ @FRONTEND → {FRONTEND_SRC}/apps/ @DOCS → docs/ @GUIAS → docs/95-guias-desarrollo/ ``` ### 2. Búsqueda en Inventarios (Anti-Duplicación) **Para verificar si algo existe:** ```bash # Buscar en inventario maestro grep -i "{nombre}" @INVENTORY # Buscar tabla específica grep -A 5 "name: {tabla}" @INV_DB # Buscar entity específica grep -A 5 "name: {Entity}" @INV_BE # Buscar componente específico grep -A 5 "name: {Componente}" @INV_FE ``` ### 3. Búsqueda en Código **Buscar definiciones:** ```bash # Buscar clase/tipo grep -rn "class {Nombre}" apps/ grep -rn "interface {Nombre}" apps/ grep -rn "type {Nombre}" apps/ # Buscar función/método grep -rn "function {nombre}" apps/ grep -rn "{nombre}(" apps/ # Buscar tabla SQL grep -rn "CREATE TABLE.*{nombre}" @DDL_ROOT # Buscar importaciones grep -rn "import.*{Nombre}" apps/ ``` **Buscar archivos:** ```bash # Por nombre exacto find apps/ -name "{nombre}.ts" find apps/ -name "{nombre}.tsx" find apps/ -name "{nombre}.sql" # Por patrón find apps/ -name "*{patron}*" find apps/ -name "*.entity.ts" find apps/ -name "*.service.ts" # Por tipo find apps/ -type f -name "*.md" find apps/ -type d -name "{directorio}" ``` ### 4. Búsqueda en Documentación **Buscar en docs/:** ```bash # Buscar término en documentación grep -rn "{término}" docs/ # Buscar en guías de desarrollo grep -rn "{término}" @GUIAS # Buscar ADRs relacionados grep -rn "{término}" @ADR # Buscar especificaciones grep -rn "{término}" docs/*/especificaciones/ ``` **Buscar en orchestration/:** ```bash # Buscar en directivas grep -rn "{término}" @DIRECTIVAS # Buscar en trazas grep -rn "{término}" orchestration/trazas/ # Buscar en prompts grep -rn "{término}" @PROMPTS ``` --- ## CASOS DE USO COMUNES ### Caso 1: ¿Existe esta tabla? ```bash # Paso 1: Buscar en inventario grep -i "{nombre_tabla}" @INVENTORY # Paso 2: Buscar DDL find @DDL_ROOT -name "*{nombre}*.sql" grep -rn "CREATE TABLE.*{nombre}" @DDL_ROOT # Paso 3: Buscar entity relacionada grep -rn "name: '{nombre}'" @BACKEND ``` ### Caso 2: ¿Existe este componente? ```bash # Paso 1: Buscar en inventario grep -i "{NombreComponente}" @INV_FE # Paso 2: Buscar archivo find @FRONTEND_ROOT -name "*{Nombre}*" # Paso 3: Buscar importaciones grep -rn "import.*{Nombre}" @FRONTEND_ROOT ``` ### Caso 3: ¿Dónde se usa esta función/método? ```bash # Buscar invocaciones grep -rn "{nombreFuncion}(" apps/ # Buscar importaciones grep -rn "import.*{nombreFuncion}" apps/ # Ver contexto (5 líneas antes y después) grep -rn -B 5 -A 5 "{nombreFuncion}" apps/ ``` ### Caso 4: ¿Qué endpoints tiene este módulo? ```bash # Buscar en inventario grep -A 20 "module: {modulo}" @INV_BE | grep -A 5 "endpoints" # Buscar en controllers grep -rn "@Get\|@Post\|@Put\|@Delete" @BACKEND/{modulo}/controllers/ # Buscar decoradores de ruta grep -rn "@Controller" @BACKEND/{modulo}/ ``` ### Caso 5: ¿Qué decisiones arquitectónicas hay sobre X? ```bash # Buscar en ADRs grep -rn "{término}" @ADR # Listar ADRs ls -la @ADR # Buscar en documentación transversal grep -rn "{término}" @DOCS_TRANSVERSAL ``` ### Caso 6: ¿Hay directivas sobre X? ```bash # Buscar en directivas grep -rn "{término}" @DIRECTIVAS # Buscar en SIMCO grep -rn "{término}" @SIMCO # Buscar en principios grep -rn "{término}" @PRINCIPIOS ``` --- ## BÚSQUEDA CROSS-PROJECT ### Navegar a Otro Proyecto ```bash # Usando proyectos conocidos de @ALIASES cd ~/workspace/projects/{proyecto} # Verificar estructura ls -la ls -la docs/ ls -la orchestration/ ``` ### Buscar Patrones en Múltiples Proyectos ```bash # Buscar en todos los proyectos grep -rn "{patrón}" ~/workspace/projects/ # Buscar archivos similares find ~/workspace/projects/ -name "{nombre}*" # Comparar implementaciones diff -r proyecto1/apps/backend/src/modules/{modulo} \ proyecto2/apps/backend/src/modules/{modulo} ``` ### Referenciar Implementación de Otro Proyecto ```markdown ## Referencia Cross-Project Se tomó como referencia la implementación de `{módulo}` en proyecto `{proyecto}`: **Ruta:** `~/workspace/projects/{proyecto}/apps/{capa}/...` **Adaptaciones realizadas:** - {cambio 1} - {cambio 2} ``` --- ## HERRAMIENTAS DE BÚSQUEDA ### grep (búsqueda de contenido) ```bash # Básico grep "{patrón}" {archivo} # Recursivo grep -r "{patrón}" {directorio} # Con número de línea grep -rn "{patrón}" {directorio} # Case insensitive grep -ri "{patrón}" {directorio} # Con contexto (líneas antes/después) grep -rn -B 3 -A 3 "{patrón}" {directorio} # Solo nombres de archivos grep -rl "{patrón}" {directorio} # Excluir directorios grep -rn --exclude-dir={node_modules,.git} "{patrón}" . # Regex extendido grep -rE "{regex}" {directorio} ``` ### find (búsqueda de archivos) ```bash # Por nombre find {directorio} -name "{nombre}" # Por patrón find {directorio} -name "*{patrón}*" # Por tipo (archivo/directorio) find {directorio} -type f -name "*.ts" find {directorio} -type d -name "{nombre}" # Modificados recientemente find {directorio} -mtime -1 # últimas 24h find {directorio} -mmin -60 # últimos 60min # Excluir directorios find {directorio} -name "*.ts" -not -path "*/node_modules/*" ``` ### Combinaciones Útiles ```bash # Encontrar archivos y buscar contenido find apps/ -name "*.ts" -exec grep -l "{patrón}" {} \; # Contar ocurrencias por archivo grep -rc "{patrón}" apps/ | grep -v ":0$" # Buscar y abrir en editor (si disponible) grep -rl "{patrón}" apps/ | xargs code # Buscar TODO/FIXME pendientes grep -rn "TODO\|FIXME" apps/ ``` --- ## ÍNDICES Y MAPAS ### Archivos _MAP.md Los directorios con múltiples archivos tienen un `_MAP.md` de navegación: ```bash # Encontrar todos los mapas find . -name "_MAP.md" # Leer mapa de directivas cat @DIRECTIVAS/_MAP.md # Leer mapa de agentes cat @PROMPTS/_MAP.md ``` ### Estructura de Navegación ``` orchestration/ ├── _MAP.md # Índice general de orchestration ├── directivas/ │ └── _MAP.md # Índice de directivas ├── agents/ │ └── _MAP.md # Índice de agentes └── templates/ └── _MAP.md # Índice de templates docs/ ├── README.md # Índice maestro de docs ├── 00-vision-general/ │ └── _MAP.md └── ... ``` --- ## OPTIMIZACIÓN DE BÚSQUEDAS ### Orden Recomendado 1. **Primero:** Buscar en inventarios (@INVENTORY) 2. **Segundo:** Buscar en índices (_MAP.md) 3. **Tercero:** Buscar en código (grep/find) 4. **Cuarto:** Buscar en documentación (docs/) ### Evitar Búsquedas Innecesarias ```bash # Excluir siempre --exclude-dir=node_modules --exclude-dir=dist --exclude-dir=build --exclude-dir=.git --exclude-dir=coverage # Comando optimizado grep -rn --exclude-dir={node_modules,dist,build,.git,coverage} "{patrón}" . ``` ### Cache Mental Mantener presente: - Estructura de `docs/` (por fases) - Estructura de `orchestration/` (inventarios, trazas, directivas) - Estructura de `apps/` (database, backend, frontend) - Aliases más usados (@INVENTORY, @DDL, @BACKEND, @FRONTEND) --- ## REFERENCIAS - **Aliases:** @ALIASES - **Crear archivos:** @CREAR (SIMCO-CREAR.md) - **Documentar:** @DOCUMENTAR (SIMCO-DOCUMENTAR.md) --- **Versión:** 1.0.0 | **Sistema:** SIMCO | **Mantenido por:** Tech Lead