视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
analyze-codebase-workflow【文档与办公】Analizar un codebase arbitrario para auto-detectar flujos de trabajo, pipelines de datos y dependencias de archivos usando el motor put_auto() de putior. Produce un plan de anotación que mapea los patrones de E/S detectados a archivos fuente en más de 30 lenguajes soportados con 902 patrones de auto-detección. Úsalo al incorporarse a un codebase desc…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
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.
annotate-source-filesIdentifica los archivos fuente y sus lenguajes para entender qué puede analizar putior.
library(putior)
# List all supported languages and their extensions
list_supported_languages()
list_supported_languages(detection_only = TRUE) # Only languages with auto-detection
# Get supported extensions
exts <- get_supported_extensions()
Usa el listado de archivos para entender la composición del repositorio:
# Count files by extension in the target directory
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.
Para cada lenguaje detectado, verifica la disponibilidad de patrones de auto-detección.
# Check which languages have auto-detection patterns (18 languages, 902 patterns)
detection_langs <- list_supported_languages(detection_only = TRUE)
cat("Languages with auto-detection:\n")
print(detection_langs)
# Get pattern counts for specific languages found in the repo
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.
Ejecuta put_auto() en el directorio objetivo para descubrir elementos del flujo de trabajo.
# Full auto-detection
workflow <- put_auto("./src/",
detect_inputs = TRUE,
detect_outputs = TRUE,
detect_dependencies = TRUE
)
# Exclude build scripts and test helpers from scanning
workflow <- put_auto("./src/",
detect_inputs = TRUE,
detect_outputs = TRUE,
detect_dependencies = TRUE,
exclude = c("build-", "test_helper")
)
# View detected workflow nodes
print(workflow)
# Check node count
cat(sprintf("Detected %d workflow nodes\n", nrow(workflow)))
Para repositorios grandes, analiza subdirectorios de forma incremental:
# Analyze specific subdirectories
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.
Visualiza el flujo de trabajo auto-detectado para evaluar la cobertura e identificar brechas.
# Generate diagram from auto-detected workflow
cat(put_diagram(workflow, theme = "github"))
# With source file info for traceability
cat(put_diagram(workflow, show_source_info = TRUE))
# Save to file for review
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.
Genera un plan estructurado que documente qué se encontró y qué necesita anotación manual.
# Generate annotation suggestions
put_generate("./src/", style = "single")
# For multiline style (more readable for complex workflows)
put_generate("./src/", style = "multiline")
# Copy suggestions to clipboard for easy pasting
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.
put_auto() se ejecuta sin errores en el directorio objetivoput_diagram() produce código Mermaid válido del flujo de trabajo auto-detectadoput_generate() produce sugerencias de anotación para archivos con patrones detectadosput_auto(".") en la raíz de un repositorio puede incluir node_modules/, .git/, venv/, etc. Apunta a directorios fuente específicos.detect_dependencies = TRUE captura llamadas source(), import, require() que vinculan scripts entre sí. Deshabilitarlo pierde las conexiones entre archivos..R vs .r, .jsx vs .js) pueden no detectarse. Usa get_comment_prefix() para verificar si una extensión es reconocida. Ten en cuenta que los archivos sin extensión como Dockerfile y Makefile se soportan mediante coincidencia exacta del nombre de archivo.install-putior — requisito previo: putior debe estar instalado primeroannotate-source-files — siguiente paso: añadir anotaciones manuales basadas en el plangenerate-workflow-diagram — generar el diagrama final después de que la anotación esté completaconfigure-putior-mcp — usar herramientas MCP para sesiones de análisis interactivas