Agent-almanac analyze-codebase-workflow
git clone https://github.com/pjt222/agent-almanac
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/es/skills/analyze-codebase-workflow" ~/.claude/skills/pjt222-agent-almanac-analyze-codebase-workflow-53ea41 && rm -rf "$T"
i18n/es/skills/analyze-codebase-workflow/SKILL.mdAnalyze Codebase Workflow
Examinar un repositorio arbitrario para auto-detectar flujos de datos, E/S de archivos y dependencias entre scripts, y luego producir un plan de anotación estructurado para refinamiento manual.
Cuándo Usar
- Al incorporarse a un codebase desconocido y necesitar entender el flujo de datos
- Al iniciar la integración de putior en un proyecto que no tiene anotaciones PUT aún
- Al auditar el pipeline de datos de un proyecto existente antes de documentarlo
- Al preparar un plan de anotación antes de ejecutar
annotate-source-files
Entradas
- Requerido: Ruta al repositorio o directorio fuente a analizar
- Opcional: Subdirectorios específicos en los que centrarse (predeterminado: todo el repositorio)
- Opcional: Lenguajes a incluir o excluir (predeterminado: todos los detectados)
- Opcional: Alcance de detección: solo entradas, solo salidas, o ambas (predeterminado: ambas + dependencias)
Procedimiento
Paso 1: Examinar la Estructura del Repositorio
Identifica los archivos fuente y sus lenguajes para entender qué puede analizar putior.
library(putior) # Listar todos los lenguajes soportados y sus extensiones list_supported_languages() list_supported_languages(detection_only = TRUE) # Solo lenguajes con auto-detección # Obtener extensiones soportadas exts <- get_supported_extensions()
Usa el listado de archivos para entender la composición del repositorio:
# Contar archivos por extensión en el directorio objetivo find /path/to/repo -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn | head -20
Esperado: Una lista de extensiones de archivos presentes en el repositorio, con conteos. Mapea estos contra
get_supported_extensions() para conocer la cobertura.
En caso de fallo: Si el repositorio no tiene archivos que coincidan con las extensiones soportadas, putior no puede auto-detectar flujos de trabajo. Considera si el lenguaje es soportado pero los archivos usan extensiones no estándar.
Paso 2: Verificar la Cobertura de Detección por Lenguaje
Para cada lenguaje detectado, verifica la disponibilidad de patrones de auto-detección.
# Verificar qué lenguajes tienen patrones de auto-detección (18 lenguajes, 902 patrones) detection_langs <- list_supported_languages(detection_only = TRUE) cat("Languages with auto-detection:\n") print(detection_langs) # Obtener conteos de patrones para lenguajes específicos encontrados en el repositorio for (lang in c("r", "python", "javascript", "sql", "dockerfile", "makefile")) { patterns <- get_detection_patterns(lang) cat(sprintf("%s: %d input, %d output, %d dependency patterns\n", lang, length(patterns$input), length(patterns$output), length(patterns$dependency) )) }
Esperado: Conteos de patrones impresos para cada lenguaje. R tiene 124 patrones, Python 159, JavaScript 71, etc.
En caso de fallo: Si un lenguaje no devuelve patrones, soporta anotaciones manuales pero no auto-detección. Planifica anotar esos archivos manualmente.
Paso 3: Ejecutar la Auto-Detección
Ejecuta
put_auto() en el directorio objetivo para descubrir elementos del flujo de trabajo.
# Auto-detección completa workflow <- put_auto("./src/", detect_inputs = TRUE, detect_outputs = TRUE, detect_dependencies = TRUE ) # Excluir scripts de compilación y ayudantes de prueba del escaneo workflow <- put_auto("./src/", detect_inputs = TRUE, detect_outputs = TRUE, detect_dependencies = TRUE, exclude = c("build-", "test_helper") ) # Ver los nodos del flujo de trabajo detectados print(workflow) # Verificar el conteo de nodos cat(sprintf("Detected %d workflow nodes\n", nrow(workflow)))
Para repositorios grandes, analiza subdirectorios de forma incremental:
# Analizar subdirectorios específicos etl_workflow <- put_auto("./src/etl/") api_workflow <- put_auto("./src/api/")
Esperado: Un data frame con columnas que incluyen
id, label, input, output, source_file. Cada fila representa un paso del flujo de trabajo detectado.
En caso de fallo: Si el resultado está vacío, los archivos fuente pueden no contener patrones de E/S reconocibles. Intenta habilitar el registro de depuración:
workflow <- put_auto("./src/", log_level = "DEBUG") para ver qué archivos se escanean y qué patrones coinciden.
Paso 4: Generar el Diagrama Inicial
Visualiza el flujo de trabajo auto-detectado para evaluar la cobertura e identificar brechas.
# Generar diagrama del flujo de trabajo auto-detectado cat(put_diagram(workflow, theme = "github")) # Con información del archivo fuente para trazabilidad cat(put_diagram(workflow, show_source_info = TRUE)) # Guardar en archivo para revisión writeLines(put_diagram(workflow, theme = "github"), "workflow-auto.md")
Esperado: Un diagrama de flujo Mermaid que muestra los nodos detectados conectados por aristas de flujo de datos. Los nodos deben estar etiquetados con nombres significativos de funciones/archivos.
En caso de fallo: Si el diagrama muestra nodos desconectados, la auto-detección encontró patrones de E/S pero no pudo inferir las conexiones. Esto es normal — las conexiones se derivan de hacer coincidir los nombres de archivos de salida con los nombres de archivos de entrada. El plan de anotación (siguiente paso) abordará las brechas.
Paso 5: Producir el Plan de Anotación
Genera un plan estructurado que documente qué se encontró y qué necesita anotación manual.
# Generar sugerencias de anotación put_generate("./src/", style = "single") # Para estilo multilínea (más legible para flujos de trabajo complejos) put_generate("./src/", style = "multiline") # Copiar sugerencias al portapapeles para fácil pegado put_generate("./src/", output = "clipboard")
Documenta el plan con evaluación de cobertura:
## Annotation Plan ### Auto-Detected (no manual work needed) - `src/etl/extract.R` — 3 inputs, 2 outputs detected - `src/etl/transform.py` — 1 input, 1 output detected ### Needs Manual Annotation - `src/api/handler.js` — Language supported but no I/O patterns matched - `src/config/setup.sh` — Only 12 shell patterns; complex logic missed ### Not Supported - `src/legacy/process.f90` — Fortran not in detection languages ### Recommended Connections - extract.R output `data.csv` → transform.py input `data.csv` (auto-linked) - transform.py output `clean.parquet` → load.R input (needs annotation)
Esperado: Un plan claro que separa los archivos auto-detectados de los que necesitan anotación manual, con recomendaciones específicas para cada archivo.
En caso de fallo: Si
put_generate() no produce salida, asegúrate de que la ruta del directorio sea correcta y contenga archivos fuente en lenguajes soportados.
Validación
-
se ejecuta sin errores en el directorio objetivoput_auto() - El flujo de trabajo detectado tiene al menos un nodo (a menos que el repositorio no tenga E/S reconocible)
-
produce código Mermaid válido del flujo de trabajo auto-detectadoput_diagram() -
produce sugerencias de anotación para archivos con patrones detectadosput_generate() - Documento del plan de anotación creado con evaluación de cobertura
Errores Comunes
- Escaneo demasiado amplio: Ejecutar
en la raíz de un repositorio puede incluirput_auto(".")
,node_modules/
,.git/
, etc. Apunta a directorios fuente específicos.venv/ - Esperar cobertura completa: La auto-detección encuentra E/S de archivos y llamadas a bibliotecas, no lógica de negocio. Una tasa de cobertura del 40-60% es típica; el resto necesita anotación manual.
- Ignorar dependencias: El flag
captura llamadasdetect_dependencies = TRUE
,source()
,import
que vinculan scripts entre sí. Deshabilitarlo pierde las conexiones entre archivos.require() - Incompatibilidad de lenguaje: Los archivos con extensiones no estándar (p.ej.,
vs.R
,.r
vs.jsx
) pueden no detectarse. Usa.js
para verificar si una extensión es reconocida. Ten en cuenta que los archivos sin extensión comoget_comment_prefix()
yDockerfile
se soportan mediante coincidencia exacta del nombre de archivo.Makefile - Repositorios grandes: Para repositorios con más de 100 archivos fuente, analiza por módulo/directorio para mantener los diagramas legibles.
Habilidades Relacionadas
— requisito previo: putior debe estar instalado primeroinstall-putior
— siguiente paso: añadir anotaciones manuales basadas en el planannotate-source-files
— generar el diagrama final después de que la anotación esté completagenerate-workflow-diagram
— usar herramientas MCP para sesiones de análisis interactivasconfigure-putior-mcp