explore-codebase

$npx mdskill add 686f6c61/alfred-dev/explore-codebase

Map project structure and context before modifying code.

  • Prevents bugs by revealing patterns and critical points.
  • Reads directories, configs, and documentation without changes.
  • Prioritizes entry points, dependencies, and test locations.
  • Outputs structured findings to guide subsequent modifications.

SKILL.md

.github/skills/explore-codebaseView on GitHub ↗
---
name: explore-codebase
description: "Usar antes de modificar código existente para entender el contexto. Activar cuando el usuario quiera entender el código, saber cómo funciona esto, explorar un repositorio, prepararse antes de modificar, analizar la estructura del proyecto o familiarizarse con una base de código nueva."
---

# Explorar base de código

## Resumen

Este skill se ejecuta antes de tocar cualquier línea de código existente. Su propósito es entender el contexto: cómo está organizado el proyecto, qué patrones sigue, qué convenciones usa y dónde están los puntos críticos. Modificar código sin entender su contexto es la receta para introducir bugs y romper convenciones.

La exploración no modifica nada. Solo lee, analiza y documenta hallazgos que servirán de guía para los cambios posteriores.

## Proceso

1. **Mapear la estructura del proyecto.** Revisar el árbol de directorios para entender la organización general. Identificar:

   - Punto de entrada de la aplicación (main, index, app).
   - Estructura de capas o módulos (src/, lib/, services/, etc.).
   - Ubicación de tests (tests/, __tests__/, *.test.*, *.spec.*).
   - Configuración (package.json, tsconfig, Cargo.toml, pyproject.toml, etc.).
   - Documentación existente (docs/, README, CONTRIBUTING).

2. **Leer la configuración del proyecto.** Los ficheros de configuración revelan decisiones importantes:

   - Dependencias y sus versiones.
   - Scripts disponibles (build, test, lint, format).
   - Configuración de linter y formatter (estilo de código).
   - Configuración de TypeScript, Babel u otros transpiladores.

3. **Identificar patrones y convenciones.** Leer 3-5 ficheros representativos del código para detectar:

   - Estilo de nomenclatura (camelCase, snake_case, PascalCase).
   - Patrón de arquitectura (MVC, hexagonal, clean architecture, etc.).
   - Patrón de manejo de errores (excepciones, Result types, códigos de error).
   - Patrón de inyección de dependencias.
   - Formato de imports y exports.

4. **Revisar los tests existentes.** Los tests son la mejor documentación del comportamiento esperado:

   - Framework de testing utilizado.
   - Estilo de los tests (AAA, Given/When/Then, BDD).
   - Cobertura: qué áreas tienen tests y cuáles no.
   - Fixtures, mocks y utilidades de test.

5. **Mapear dependencias del área a modificar.** Para el módulo o fichero concreto que se va a cambiar:

   - Qué otros módulos lo importan (dependientes).
   - Qué módulos importa él (dependencias).
   - Interfaces públicas que no se pueden romper sin afectar a dependientes.

6. **Documentar hallazgos.** Resumir en un comentario o mensaje al usuario:

   - Patrones detectados que hay que seguir.
   - Riesgos identificados (áreas sin tests, acoplamiento fuerte).
   - Convenciones de naming y formato a respetar.
   - Cualquier "trampa" o peculiaridad del código.

## Qué NO hacer

- **No proponer cambios sin haber leído el código existente.** Modificar código que no se entiende es la forma más rápida de introducir bugs y romper convenciones establecidas.
- **No asumir que sabes cómo funciona algo sin verificarlo.** Incluso si el nombre de una función parece obvio, leer la implementación y los tests. El código heredado está lleno de sorpresas.

## Criterios de éxito

- Se ha revisado la estructura general del proyecto.
- Se han identificado patrones y convenciones existentes.
- Se han leído los tests relacionados con el área a modificar.
- Se han mapeado las dependencias del módulo objetivo.
- No se ha modificado ningún fichero durante la exploración.
- Los hallazgos están documentados antes de empezar a hacer cambios.

More from 686f6c61/alfred-dev

SkillDescription
acceptance-criteriaGenerar criterios de aceptación en formato Given/When/Then. Activar cuando el usuario quiera definir criterios de aceptacion, usar formato Given When Then, escribir en Gherkin, saber como determinar que algo esta terminado o establecer una definicion de hecho.
architecture-docsUsar para documentar la arquitectura del sistema. Activar ante: documentar arquitectura, diagrama del sistema, como funciona el proyecto, vision general tecnica
bundle-sizeAnalizar y reducir el tamaño de bundles frontend. Activar cuando el bundle sea grande, se quiera reducir tamaño, aplicar tree shaking, configurar lazy loading, usar webpack analyzer o analizar el peso de la aplicacion.
choose-stackUsar para evaluar y elegir tecnologías con matriz de decisión ponderada. Activar cuando el usuario quiera elegir tecnología, comparar frameworks, decidir entre alternativas técnicas, construir una matriz de decisión, evaluar stack, seleccionar base de datos, elegir lenguaje o comparar herramientas.
ci-cd-pipelineConfigurar pipeline CI/CD adaptado al proyecto. Activar cuando el usuario quiera configurar CI, crear GitHub Actions, configurar GitLab CI, montar un pipeline de despliegue, automatizar tests o implementar integracion continua.
code-review-responseUsar al recibir feedback de code review para responder técnicamente. Activar cuando el usuario quiera responder a comentarios de PR, gestionar feedback de code review, resolver comentarios de un revisor, o cuando el revisor pide cambios en el código.
compliance-checkUsar para verificar cumplimiento RGPD, NIS2 y CRA. También: verificar RGPD, cumplimiento normativo, NIS2, CRA, Cyber Resilience Act, protección de datos, regulación europea.
copy-reviewRevisar textos publicos: claridad, tono, ortografia y CTAs. Activar ante: revisar textos, mejorar copy, tono de comunicacion, textos de la web, landing page copy
dependency-strategyEstrategia integral de gestion de dependencias: inventario, evaluacion de riesgo, politica de actualizaciones y documentacion. Usar para auditar el estado global de las dependencias del proyecto.
dependency-updateRevisar dependencias desactualizadas, con CVEs o end-of-life, y proponer actualizaciones seguras. También: actualizar paquetes, actualizar dependencias, Dependabot, Renovate, versión desactualizada, breaking changes.