RepoGPT: Análisis y Sumarización Inteligente de Repositorios de Código
Una herramienta CLI para analizar repositorios de software y generar sumarios detallados en Markdown o JSON.
RepoGPT: Análisis y Sumarización Inteligente de Repositorios de Código #
{/* Opcional: Un logo para RepoGPT o un diagrama simplificado de su flujo de trabajo. <img src="/ruta/a/repogpt_logo_o_diagrama.png" alt="RepoGPT: Analizando la estructura de un repositorio" style={{ maxWidth: '400px', margin: '1em 0' }} loading="lazy" /> */}
Objetivo Principal del Repositorio: RepoGPT es una herramienta de línea de comandos (CLI) que analiza exhaustivamente repositorios de software, extrayendo información estructural, metadatos y tareas pendientes. Genera sumarios detallados en Markdown o JSON, ideales para ser ingeridos por Modelos de Lenguaje Grandes (LLMs), para revisiones de código, o para entender rápidamente la arquitectura de un proyecto.
Motivación / ¿Por qué esta herramienta?:
Comprender la estructura y el contenido de un repositorio puede ser una tarea ardua. Inspirado por herramientas como gpt-repository-loader, RepoGPT busca:
- Automatizar la "lectura" de repositorios para LLMs, permitiéndoles tener un contexto más completo del código.
- Facilitar la revisión humana al proporcionar resúmenes estructurados y bien organizados.
- Ofrecer una visión general rápida de la salud y composición de un proyecto (dependencias, tareas pendientes, métricas de código).
- Proporcionar una herramienta configurable y extensible para el análisis de código.
Tecnologías y Herramientas Clave (Stack):
- Lenguaje Principal: Python (3.8+).
- Parsing de Código:
- Python: Módulo
astnativo. - JavaScript/TypeScript:
pyjsparser(opcional). - YAML:
PyYAML(opcional). - Otros: Parsers específicos para Markdown, HTML, Dockerfiles y un parser genérico para archivos de texto.
- Python: Módulo
- Extracción de Metadatos:
- Integración con
gitCLI para información del repositorio. - Análisis de archivos de dependencias (
requirements.txt,package.json,pyproject.toml, etc.).
- Integración con
- Procesamiento y Reportes:
- Generación de Markdown con resaltado de sintaxis.
- Salida JSON estructurada.
- Eficiencia: Procesamiento concurrente de archivos.
- Manejo de Exclusiones: Integración con
gitignore-parserpara respetar las reglas de.gitignore.
Características Destacadas / ¿Qué puedes encontrar aquí?:
- Análisis Estructural Detallado: Extrae jerárquicamente clases, métodos, funciones, imports, decoradores y docstrings.
- Amplio Soporte de Lenguajes: Especializado en Python, JS/TS, Markdown, YAML, HTML, Dockerfiles, con análisis básico para otros.
- Recopilación Exhaustiva de Metadatos: Información de Git, dependencias del proyecto, y métricas de código (líneas, tamaño, tipos de archivo).
- Identificación de Tareas: Agrega comentarios
TODOyFIXMEde todo el código base. - Reportes Configurables:
- Markdown: Salida por defecto, con flags (
--summary,--dependencies, etc.) para controlar el nivel de detalle. - JSON: Vuelco completo de todos los datos extraídos para procesamiento posterior (ej. con
jq).
- Markdown: Salida por defecto, con flags (
- Optimización: Usa concurrencia para analizar archivos en paralelo.
- Flexibilidad: Permite especificar subdirectorios de inicio, tamaño máximo de archivo y seleccionar extractores específicos.
- Instalación como Módulo: Fácil de instalar y usar como comando CLI (
repogpt).
¿Cómo Empezar / Uso Básico:
- Clona el repositorio e instálalo (modo editable recomendado):
pip install -e .(considera los extras como.[js,yaml,gitignore]). - Navega al directorio del proyecto que quieres analizar.
- Ejecuta el comando:
repogpt(para salida Markdown a consola).repogpt -o mi_reporte.md(para guardar en archivo).repogpt -f json -o mi_reporte.json(para salida JSON).repogpt --summary --dependencies --tasks -o reporte_detallado.md(para un reporte Markdown más completo).
Aprendizajes y Contribuciones:
- Una herramienta poderosa para automatizar la documentación y el análisis contextual de código, crucial para la interacción con LLMs.
- Demuestra cómo construir una CLI robusta en Python con parsing de argumentos, procesamiento modular y diferentes formatos de salida.
- Aplicación práctica de técnicas de parsing de código y extracción de metadatos para múltiples lenguajes y formatos.
- Un proyecto útil para desarrolladores, arquitectos de software, y cualquiera que trabaje con LLMs sobre bases de código.
Estado Actual: Funcional y con un conjunto de características sólido. Abierto a contribuciones y mejoras.
Enlaces:
Repositorios relacionados
Prompt Arena: Tu Banco de Pruebas para Ingeniería de Prompts de Código
Herramienta interactiva para comparar y rankear la efectividad de diferentes prompts de ingeniería en la generación de código mediante LLMs.
Módulo Catastro: Interfaz Simplificada para Datos del Catastro Español
Librería de Python que facilita el acceso y manipulación de datos públicos del Catastro Español, devolviendo información en DataFrames de Pandas.