El Empaquetador de Repos: Mi CLI OSD600 para Aprender Más Rápido

Quiero compartir mi experiencia desarrollando OSD600 - Release 0.1, una herramienta de línea de comandos que analiza repositorios Git locales y genera un único archivo de texto bien estructurado con el contenido del repositorio optimizado para consultarlo con modelos de lenguaje grande. La idea es sencilla pero potente: en lugar de copiar y pegar unos pocos ficheros y perder contexto importante como la disposición del proyecto, dependencias o información de commits, la herramienta empaqueta estructura, metadatos y código en un formato amigable para prompts que hace mucho más eficaz preguntar a una IA sobre un repositorio.
Visión general de la solución: el programa está escrito en C++ y diseñado en módulos pequeños y enfocados para facilitar pruebas y extensiones. CLI y Config lee las opciones de la línea de comandos como -h/--help, -v/--version, -o/--output, -i/--include y las guarda en un objeto Config que usan el resto de componentes. RepositoryScanner recorre las carpetas indicadas usando std::filesystem y recursive_directory_iterator con skip_permission_denied, aplica el filtro --include como por ejemplo *.cpp,*.h y devuelve la lista de archivos a incluir junto con los que ha tenido que saltarse. FileReader abre cada archivo, lee el texto, cuenta líneas y, si un archivo es muy grande, lo trunca por defecto a 16 KB para que la salida no crezca en exceso. GitInfoCollector busca la raíz del repositorio subiendo por el árbol hasta encontrar .git y ejecuta git para obtener el SHA del commit actual, la rama, el autor y la fecha; esto funciona tanto en Windows como en Unix. OutputFormatter ensambla el texto final incluyendo ruta absoluta, información de git, un árbol de directorios, el contenido de cada archivo en bloques acotados y un breve resumen; por defecto imprime en stdout o escribe en un fichero con -o.
Desafíos y soluciones: recorrer carpetas me generó dudas al principio sobre cómo navegar de forma fiable los directorios. La solución fue usar std::filesystem con recursive_directory_iterator y saltar permisos denegados; además el scanner ahora ignora artefactos de build y solo incluye ficheros que cumplen los filtros --include. La parte de llamar a git fue confusa al principio porque mis redirecciones estilo Linux fallaban en Windows. Lo resolví ejecutando git desde la raíz del repo con un pequeño helper RAII ScopedChdir que cambia temporalmente el directorio de trabajo y usando el dispositivo nulo correcto para cada SO NUL en Windows y /dev/null en Unix. Capturo la salida de git con popen o _popen para parsear commit, branch, autor y fecha de forma fiable. Otro problema fue que Visual Studio ejecuta programas desde la carpeta de build por defecto y eso confundía al scanner porque la carpeta de build no siempre contiene el código fuente; pasar a VSCode simplificó mucho el flujo de trabajo.
Mi experiencia personal: al principio sentía verdadero pánico porque la asignación dejaba muchas decisiones de diseño abiertas y el plazo de dos semanas parecía poco. Pasé casi todo mi tiempo libre la primera semana trabajando a un ritmo intenso porque temía no llegar. Paradójicamente ese sprint nervioso funcionó y completé alrededor del 90 por ciento de la funcionalidad en esa primera semana. Mirando atrás la lección es clara: la preocupación era peor que el trabajo en sí.
Aspectos destacables: la colaboración fue un punto clave de esta entrega. Estoy acostumbrado a trabajar solo en tareas, así que coordinar y compartir ideas con compañeros fue nuevo y muy valioso. Hablar con otros y comparar enfoques hizo el proyecto menos intimidante; varios compañeros intercambiamos ideas por Teams e incluso nos reunimos en persona. Eso mejoró mi confianza para pedir ayuda cuando me atasco; ya no me resulta incómodo enviar un mensaje rápido. Además me encanta que esta herramienta sea útil más allá del curso. Por ejemplo en mi asignatura de Java recibo ejemplos largos en clase que luego son difíciles de revisar; uso la CLI para empaquetar el código y alimentar ese paquete a un modelo de lenguaje para hacer preguntas y así ahorrar tiempo y comprender mejor la estructura y las dependencias.
Sobre Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software que ofrece soluciones integrales y servicios orientados a empresas que necesitan aplicaciones reales para sus procesos. Nos especializamos en aplicaciones a medida y software a medida, además de ofrecer ciberseguridad y pentesting, servicios cloud aws y azure, servicios inteligencia de negocio y soluciones de ia para empresas. Si buscas potenciar proyectos con inteligencia artificial contamos con experiencia en el diseño e implementación de agentes IA y soluciones a medida; puedes conocer nuestros servicios de inteligencia artificial o explorar cómo abordamos el desarrollo de aplicaciones a medida. También trabajamos con herramientas de análisis como power bi y ofrecemos servicios de servicios inteligencia de negocio para convertir datos en decisiones accionables.
Si te interesa una solución que mejore la productividad al revisar código o integrar modelos de lenguaje en flujos de trabajo de desarrollo, podemos ayudar con integraciones personalizadas, automatización y consultoría en seguridad y cloud. En Q2BSTUDIO combinamos experiencia en software a medida, inteligencia artificial, ciberseguridad y servicios cloud aws y azure para ofrecer proyectos robustos y escalables adaptados a tus necesidades.
Comentarios