[{"data":1,"prerenderedAt":29},["ShallowReactive",2],{"article-data-curso-gcp-google-adk-17":3},{"content":4,"date":5,"image":6,"sideArticles":7},"\u003C!DOCTYPE html>\r\n\u003Chtml lang=\"es\">\r\n\r\n\u003Chead>\r\n    \u003Cmeta charset=\"UTF-8\">\r\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    \u003Cmeta name=\"description\"\r\n        content=\"Laboratorio 17: Domina el scaffolding industrial con agents-cli. Aprende a gestionar proyectos reproducibles usando pyproject.toml y archivos lock para producción.\">\r\n    \u003Cmeta name=\"keywords\"\r\n        content=\"Scaffolding, pyproject.toml, uv.lock, agents-cli, Reproducibilidad, Gestión de dependencias, Python, Ingeniería de Software, IA\">\r\n    \u003Cmeta name=\"author\" content=\"Eduardo Martínez Agrelo\">\r\n    \u003Ctitle>Scaffolding y Gestión de Paquetes | Curso Agentes IA\u003C/title>\r\n    \u003Cstyle>\r\n        body {\r\n            font-family: sans-serif;\r\n            line-height: 1.6;\r\n        }\r\n\r\n        h1,\r\n        h2,\r\n        h3 {\r\n            color: #333;\r\n        }\r\n\r\n        ul {\r\n            list-style-type: disc;\r\n            margin-left: 20px;\r\n        }\r\n\r\n        code {\r\n            background-color: #f4f4f4;\r\n            padding: 2px 5px;\r\n            border-radius: 3px;\r\n            font-family: monospace;\r\n        }\r\n    \u003C/style>\r\n\u003C/head>\r\n\r\n\u003Cbody>\r\n    \u003Ch1>Scaffolding y Gestión de Paquetes Reproducibles\u003C/h1>\r\n\r\n    \u003Cp>\u003Cstrong>Autor:\u003C/strong> \u003Ca href=\"https://www.youtube.com/@EduardoMartinezAgrelo\" target=\"_blank\">Eduardo Martínez\r\n            Agrelo\u003C/a>\u003C/p>\r\n\r\n    \u003Cp>En el desarrollo de software profesional, no creamos carpetas y archivos de forma manual cada vez que iniciamos\r\n        un proyecto. Para escalar, necesitamos una estructura predecible y estandarizada. En este laboratorio\r\n        utilizaremos el comando \u003Ccode>create\u003C/code> de \u003Cstrong>agents-cli\u003C/strong> para generar un \"Scaffolding\"\r\n        (andamiaje) industrial que separa la lógica, las pruebas y la infraestructura siguiendo las mejores prácticas de\r\n        Google.\u003C/p>\r\n\r\n    \u003Ch2>¿Qué es el Scaffolding Industrial?\u003C/h2>\r\n\r\n    \u003Cp>El scaffolding es la creación automática del esqueleto de una aplicación. Al usar el flag\r\n        \u003Ccode>--prototype\u003C/code>, la CLI nos entrega una arquitectura lista para el mundo real:\r\n    \u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Carpeta app/:\u003C/strong> El contenedor exclusivo para la lógica de vuestro agente y sus herramientas.\r\n        \u003C/li>\r\n        \u003Cli>\u003Cstrong>Carpeta tests/:\u003C/strong> El espacio reservado para los Evals y pruebas unitarias que garantizan la\r\n            calidad.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Infraestructura como Código:\u003C/strong> Archivos preconfigurados para que el despliegue en la nube sea\r\n            una tarea administrativa y no un reto técnico.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>El Manifiesto del Proyecto: pyproject.toml\u003C/h2>\r\n\r\n    \u003Cp>Hemos dejado atrás el antiguo archivo \u003Ccode>requirements.txt\u003C/code>. El estándar moderno en Python es el\r\n        \u003Cstrong>pyproject.toml\u003C/strong>, un archivo centralizado que define la identidad de vuestro agente:\r\n    \u003C/p>\r\n    \u003Cp>\u003Ccode>[project.dependencies] -> Lista de librerías validadas\u003C/code>\u003C/p>\r\n    \u003Cp>Este manifiesto no solo gestiona qué librerías necesita vuestro agente para \"pensar\", sino que configura las\r\n        herramientas de desarrollo, las versiones mínimas de Python y los metadatos necesarios para que Google Cloud\r\n        Build sepa cómo empaquetar vuestra aplicación de forma eficiente.\u003C/p>\r\n\r\n    \u003Ch2>Inmutabilidad con uv.lock\u003C/h2>\r\n\r\n    \u003Cp>Uno de los mayores problemas en producción es el \"en mi máquina funciona\". Para solucionarlo, introducimos el\r\n        concepto de \u003Cstrong>Reproducibilidad\u003C/strong> mediante archivos lock:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Determinismo:\u003C/strong> El archivo \u003Ccode>uv.lock\u003C/code> contiene los hashes y versiones exactas de\r\n            cada sub-dependencia.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Estabilidad:\u003C/strong> Garantiza que el entorno virtual que tenéis en vuestro portátil sea una copia\r\n            exacta del que se ejecutará en los servidores de Google, evitando errores inesperados por actualizaciones de\r\n            librerías de terceros.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Implementación práctica\u003C/h2>\r\n\r\n    \u003Cp>En este laboratorio, generaremos nuestro primer \"Agente Profesional\" mediante la CLI. Exploraremos la anatomía de\r\n        la estructura generada y aprenderemos a usar el comando \u003Ccode>uv add\u003C/code> para gestionar dependencias de forma\r\n        técnica. Sincronizaremos el entorno virtual con \u003Ccode>agents-cli install\u003C/code> y observaremos cómo el archivo\r\n        \u003Ccode>pyproject.toml\u003C/code> se convierte en el contrato de inmutabilidad de nuestro software, preparando vuestro\r\n        repositorio de GitHub para un flujo de trabajo colaborativo de alto nivel.\r\n    \u003C/p>\r\n\r\n    \u003Ch2>Conclusión: La base de la ingeniería de software\u003C/h2>\r\n    \u003Cp>Has aprendido que el orden y la reproducibilidad son tan importantes como el código mismo. Ya tienes un proyecto\r\n        con estructura de nivel senior. Con los cimientos construidos, el siguiente paso es personalizar el agente y\r\n        conectarlo de forma segura con el ecosistema de datos de Google Cloud.\u003C/p>\r\n\u003C/body>\r\n\r\n\u003C/html>","May 12, 2026","https://storage.googleapis.com/mp-blog/images/curso-gcp-google-adk-17.jpg",[8,14,19,24],{"id":9,"title":10,"description":11,"image":12,"date":13},"curso-gcp-apache-spark-01","Spark: Infraestructura como Código con Terraform | Curso Spark, Scala y Terraform","Aprende a desplegar clústeres de Big Data profesionalmente. Domina Terraform para crear infraestructura como código (IaC) en Google Cloud y automatiza tu entorno de Dataproc para Spark.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-01.jpg","March 12, 2026",{"id":15,"title":16,"description":17,"image":18,"date":13},"curso-gcp-apache-spark-02","Spark: Ingesta (Raw to Bronze) y Formatos Columnares | Curso Spark, Scala y Terraform","Domina la ingesta de datos con Spark. Aprende a convertir JSONs pesados en formato Parquet, optimiza tu almacenamiento en un 85% y domina los esquemas estrictos con Scala.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-02.jpg",{"id":20,"title":21,"description":22,"image":23,"date":13},"curso-gcp-apache-spark-03","Spark: Limpieza y Calidad (Bronze to Silver) | Curso Spark, Scala y Terraform","Domina la limpieza de datos en Spark. Aprende a usar Scala para implementar la capa Silver (Plata) de tu arquitectura Medallón, utilizando Case Classes para mayor seguridad.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-03.jpg",{"id":25,"title":26,"description":27,"image":28,"date":13},"curso-gcp-apache-spark-04","Spark: Analítica Avanzada (Silver to Gold) | Curso Spark, Scala y Terraform","Domina el Análisis Avanzado con Spark. Aprende a calcular métricas de negocio con Window Functions y a extraer el Top 3 de canciones por país y día para tu capa Gold.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-04.jpg",1778604634337]