Objetivo de la herramienta CLI

RepositoryContextPackager nace para empaquetar datos de un repositorio siguiendo instrucciones y entregar a los modelos LLM información correctamente formateada para resolver problemas de código de forma sencilla. Al trabajar con ChatGPT y otros LLM en problemas de programación me cansé de copiar y pegar archivos uno por uno. En cambio, si proporcionamos datos específicos relacionados con dependencias y la estructura del proyecto, los modelos comprenden mejor el contexto y pueden guiarnos con precisión.

Problema y motivación

Dar al modelo solo la porción relevante del proyecto evita abrumarse con información total y nos permite centrarnos en las partes que importan, extraer conocimiento específico y seguir haciendo crecer el proyecto. Además evita perder contexto cuando pedimos ayuda a un LLM.

Mi solución

Desarrollé un programa en C++ que se ejecuta con un solo comando, analiza el proyecto y genera un documento de contexto completo que incluye ruta local, historial de git, árbol de directorios, todos los archivos fuente con sus extensiones y estadísticas generales. Permite incluir o excluir carpetas y ficheros según preferencias. No más selección manual de archivos ni pérdida de contexto al consultar a los modelos.

Qué aprendí y beneficios técnicos

El desarrollo me expuso profundamente a lectura y escritura de ficheros, bibliotecas y características de C++17, y a la necesidad de usar recursividad para representar árboles de directorios. std::filesystem fue esencial para recorrer directorios recursivamente. Por primera vez configuré un proyecto con CMake e integré librerías externas usando vcpkg, lo que me obligó a salir de la zona de confort.

Primer reto: obtener información de git

La idea inicial fue ejecutar comandos git y parsear su salida, pero eso falla si git no está instalado o no está en la ruta. La solución fue integrar libgit2 a través de vcpkg para leer la información del repositorio de forma programática. Al profundizar en git repasé conceptos de código en estilo C y punteros incluso trabajando en C++. Aprendí cómo git genera los identificadores de commit: git toma todo el contenido relevante del commit, autor, fecha y calcula una función hash SHA-1 que produce datos binarios que se convierten en la cadena de identificación del commit.

Segundo reto: redirigir la salida estándar

En muchos momentos confié demasiado en usar std::cout. Llegó un punto en que necesitaba escribir la salida a un fichero sin reescribir todo el código. Aprendí a capturar y redirigir std::cout sustituyendo su streambuf por un ostringstream, ejecutar la función que genera la salida y luego restaurar el buffer original para volcar el contenido capturado al fichero deseado. Esto evitó duplicar lógicas y mantuvo limpio el diseño.

Detalles de lenguaje

Detecté ventajas de usar constexpr junto con estructuras conocidas en tiempo de compilación. Intenté usar constexpr con std::array de std::string y apareció un problema: std::string implica asignación dinámica y no puede ser constante en tiempo de compilación. La alternativa correcta fue usar std::string_view para representar cadenas inmutables conocidas en compilación, lo que resulta más eficiente y seguro en este caso.

Recursos y mejoras personales

El proyecto mejoró mi capacidad para pensar en casos borde, manejo de errores y diseño antes de escribir código espagueti. También me familiaricé con conceptos como streambufs y técnicas de integración entre proyectos, además de fortalecer el uso de CMake, vcpkg y bibliotecas modernas de C++.

Sobre Q2BSTUDIO

En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones personalizadas, inteligencia artificial, ciberseguridad y servicios cloud. Ofrecemos desde software a medida hasta despliegues en plataformas cloud como AWS y Azure, así como servicios de inteligencia de negocio y visualización con power bi. Si buscas desarrollar aplicaciones a medida con un enfoque profesional y escalable conoce nuestros servicios de desarrollo de aplicaciones y software a medida y descubre cómo la inteligencia artificial para empresas puede potenciar tus procesos con agentes IA y automatizaciones.

Palabras clave

Este artículo toca conceptos relacionados con aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi con el fin de mejorar posicionamiento y ofrecer valor práctico.

Conclusión

Una CLI bien diseñada que empaqueta el contexto de un repositorio facilita la colaboración con modelos LLM, acelera la resolución de problemas y permite a los equipos centrarse en lo que realmente importa. Si te interesa aplicar soluciones similares en tu empresa o necesitas asesoramiento en software a medida, cloud, seguridad o inteligencia de negocio, en Q2BSTUDIO podemos ayudarte a llevarlo a producción.