00:00Gente, bienvenidos al día 2 del curso de desarrollo con IA, El Nuevo Programador
00:05Por favor, primero dejanle un like si les gustó el primer día
00:08Si no estuvieron en el día uno, no se preocupen, porque todo queda grabado
00:13Y prepárense para lo que les voy a enseñar hoy, porque si les gustó ayer, por favor, también díganme en los comentarios qué fue lo que más les gustó
00:20Y una cosa más, estamos a punto de llegar al millón de suscriptores en el canal
00:26Perdón que aproveche, pero por favor, si no me siguen, síganme porque podemos lograr el hito de llegar en vivo al millón de suscriptores
00:35Así que de corazón, muchísimas gracias por venir al curso ayer y prepárense para todo lo que vamos a enseñar hoy
00:43Así que, ¡venga! Vamos a comenzar porque hay muchas cosas que contar y muchas cosas que aprender
00:47Lo primero, también recordaros el tema de los apuntes, por favor
00:51Los apuntes llegan al día siguiente de cada una de las clases
00:54Ya lo digo al principio para que nadie se confunda
00:58Es decir, hacemos la clase ahora, mañana os llegarán los apuntes, no os preocupéis, porque si estáis registrados, os acabarán llegando cada día también los apuntes de los días anteriores, por si os perdisteis alguno
01:08Si ya estáis registrados, no tenéis que hacer absolutamente nada
01:10Si no os han llegado los del día anterior, revisad la carpeta de spam o la sección de promociones, volved a registraros o cualquier cosa si creéis que no os ha llegado, porque..
01:20Todo el mundo le está llegando realmente, y si no te llega es por alguno de estos casos
01:24Venga, vamos a ello
01:26En la clase anterior, vamos a recordar muy rápido, empezamos entendiendo esto que veis por aquí, el diagrama, que creo que la verdad es que lo estáis agradeciendo y me estáis dando buen feedback, y es porque queda muy visual
01:39Realmente somos ese programador que está comenzando a dar sus primeros pasos, que entiende los fundamentos de la programación o que está empezando a estudiar programación
01:47Y aquí es donde tenemos que empezar a sumar capas para convertirnos en lo que yo llamo el nuevo programador
01:53Ese programador que ha aparecido con un montón de herramientas y nuevos paradigmas asistidos por inteligencia artificial
02:01Y nosotros tenemos que ir ampliándolos, añadiéndolos a nuestro perfil
02:03Ayer, en la primera clase, dimos las dos primeras capas: una primera de fundamentos de inteligencia artificial, es decir, desarrollar con inteligencia artificial manteniendo nosotros el control y no ceder ese control a la herramienta
02:15Y después, por otro lado, también lo que yo llamé el harness, esa ingeniería de contexto, donde el valor precisamente del contexto es donde reside toda la capacidad de nuestros agentes
02:26Vamos a verlo muy rápido
02:29Mira, lo tengo por aquí en mi pantalla simplemente para refrescar la memoria
02:32Teníamos nuestro primero, nuestro pequeño proyecto que era simplemente una racha de un diario de
02:39Estudio donde nosotros íbamos añadiendo diferentes cosas y que vamos a seguir ampliando a lo largo de estos dos días que quedan de curso
02:45Sin más, ¿cómo lo habíamos conseguido? Con un primer prompt, nosotros generamos una primera aplicación con HTML, JavaScript, CSS, y ahí ya con el concepto de agente, entendiendo muy bien esos fundamentos, le añadimos ese Agents MD, es decir, el fichero que acaba representando muy bien cómo tiene que pensar siempre nuestro agente
03:06Y encima, para potenciarlo, le añadimos también la parte de memoria persistente para que vaya iterando y se vaya modificando a medida que nosotros vamos evolucionando nuestro proyecto
03:17Por supuesto, todo esto utilizando OpenCode, que mira, ya de paso
03:20Aprendemos aquí por primera vez un nuevo comando
03:22Acaba de salir entre la clase uno y la clase dos, una actualización
03:27Sin más, escribimos "update" y lo dejamos actualizando para que veáis lo fácil que también es, bueno, trabajar con comandos día tras día con OpenCode
03:36Sin más, ya vemos que se reinicia y tiene que acabar arrancando otra vez en el momento en que nosotros ponemos por aquí "OpenCode"
03:44Okay, así que vamos a dejarlo ya preparado
03:46Vemos que está acabando de actualizarse y ahora que ya lo tenemos listo, vamos a pasar a todo lo que vamos a aprender durante el día de hoy
03:55Un segundo, dime
03:56Felicidades
03:58Llegamos al millón
03:59[risas] Gracias
04:01Ostia, muchas gracias
04:03Mirad
04:06Gracias
04:09Mi, mi, mi, es un poco chapuza
04:10Gracias, YouTube, por..
04:12Ser tan rápidos
04:14[risas] Muchas gracias
04:14Uy, muchas gracias
04:16No me lo esperaba de verdad
04:18Eso ya lo dejamos por aquí
04:20Ah, la ponemos aquí
04:22[risas] Qué bueno
04:28Bueno, eh, vamos a seguir haciendo el curso, pero es un momento importante
04:30Son 8 años de trabajo
04:32Muchas gracias
04:35Muchas gracias
04:37Venga, va, vamos a ello, que ahora ya me despisto, ya cortamos el curso, se acabó
04:39Nada, nada, fuera bromas, fuera bromas
04:41Os contaba que ahora vamos a dar el siguiente paso
04:44¿Recordáis que teníamos este esquema donde yo estaba reflejando cada uno de los pasos que teníamos que dar para convertirnos en ese nuevo programador? ¿Qué vamos a ver en la clase de hoy? Pues si ayer entendimos cuál es el concepto de harness, es decir, ese arnés, Esos guardarraíles, ese contexto que nosotros le damos a la gente para que cada vez podamos delegar con más confianza, pues vamos a seguir subiendo el nivel
05:05Vamos a confiar el trabajo de los agentes, pero a un nivel superior, como estaba contando, con diferentes conceptos, como veis ahí los skills, los MCPs, que decirme en comentarios si os suenan esas palabrotas o esas diferentes herramientas que van apareciendo poco a poco, que inicialmente nos pueden parecer complejas, pero que hoy vais a acabar entendiendo
05:26Y después también os adelanto que ya tenemos también algo que se llama SEDD
05:30¿Qué es esto de SEDD? Es Spec Driven Development, la manera de desarrollar siguiendo la metodología que ya están..
05:37Utilizando las compañías, las empresas, de manera profesional
05:40¿Por qué? Porque nos vamos a basar en especificaciones
05:42Pero bueno, no os quiero adelantar aquí todo el rollo que vamos a ir viendo poquito a poco, porque de lo que se trata es de comenzar paso a paso e ir subiendo cada una de las capas
05:51Así que vamos a esa tercera capa, a esa parte de harness avanzado
05:54Vamos a ello
05:56¿Qué es eso del harnessado? Pues mira, igual que teníamos los agentes, donde le metimos el Agent Model, si recordáis, donde le metimos la memoria y eso, lo que hace es que cada vez nuestro agente sea más determinista, que es como os lo intentaba definir yo, es decir, que cada vez programe más como a nosotros nos gustaría programar
06:13Pues justamente vamos a..
06:15Vamos conociendo diferentes piezas que ya veréis lo útiles que van a ser y cómo nos van a permitir poco a poco ir delegando más trabajo
06:23La primera pieza de la que os quiero hablar aquí son los comandos personalizados
06:27Si os dais cuenta, yo poco a poco lo que estoy haciendo es lanzarle diferentes prompts
06:32Prompts que ayudan a que la gente cada vez se comporte más como a mí me gustaría pensar
06:38Pero es cierto que habitualmente lanzar prompts tras prompts, lo que nos hace es ver que es una tarea o que se acaba convirtiendo en una tarea bastante repetitiva, y para ello vamos a utilizar este nuevo framework que es cómo podríamos nosotros crear comandos que sean capaces de reproducir, pues en este caso, los diferentes prompts que..
06:59Nosotros queremos seguir lanzando
07:00Por eso tenemos este comando personalizado
07:03¿Qué es esto? Un prompt que nosotros vamos a poder reutilizar
07:06¿Y cómo lo podemos crear? Sencillo, fijaos
07:09Voy a abrir por aquí la documentación
07:11Recordatorio: ya sabéis que toda la documentación, los enlaces, los prompts que lancé hoy, cada uno de los archivos que vaya creando, todo eso está en los apuntes
07:19Así que disfrutad de la clase, yendo entendiendo, pero sabéis que podéis volver a verla y que tendréis, ya desde mañana, los apuntes en el correo para que podáis seguir cada uno de estos pasos
07:31Fijaos, vamos a ver qué nos indica la documentación de OpenAI sobre los comandos
07:37No hace falta..
07:39Que os pongáis a leerlo, porque os lo voy a resumir súper rápido
07:40Nos dice básicamente que si nosotros creamos este directorio, .opencode/commands, nosotros dentro podemos crear un fichero con el nombre del comando que nos dé a nosotros la gana y dentro meter la instrucción, el prompt que nosotros queremos acabar automatizando o que queremos acabar reflejando con ese comando
08:01Como siempre, la manera más fácil de verlo, pues sin más, es haciendo la práctica
08:05Fíjate, nos vamos aquí a nuestro proyecto
08:07Voy a cerrar todo esto y nos vamos a quedar simplemente en la raíz, y voy a crear, pues nada, una nueva carpeta
08:13¿Cómo es esa nueva carpeta? Decíamos que le llamábamos .opencode
08:15Habitualmente, cada uno de..
08:18Los agentes, que es cierto que no quiero que os quedéis únicamente con la forma en la que yo lo hago con OpenAI Codex
08:25Ya sabéis que hay gente que me habéis dicho por el chat que preferís utilizar Cloud Code, o que preferís utilizar Codex, o que preferís utilizar, en este caso, Cursor
08:36Cada uno de los conceptos, cada uno de los elementos de este curso, vosotros lo podéis acabar aplicando a cada una de las herramientas que queráis utilizar
08:44Ya lo dije al principio, lo más importante siempre son los fundamentos
08:48En el momento en que tú entiendes cómo darle capacidades especiales a un agente y cómo hacer a esa gente, vamos a llamarla así, más inteligente, después que utilices la herramienta A o que utilices la herramienta B, da..
08:55Exactamente igual
09:02Pero bueno, en este caso, leyendo la documentación, nos dice: "¿Tú quieres crear un comando personalizado?" Pues sin más, tienes que crear primero la carpeta OpenAI y dentro de la carpeta OpenAI la carpeta commands
09:09Así que sin más, yo hago esto
09:12¿Vale? ¿Cuál es el siguiente paso? Quiero crear un comando
09:17¿En qué momento tenemos que empezar a pensar en comandos? En el momento en que nosotros decimos, mira, ya me estoy cansando de empezar a repetir este prompt que tengo pegado en un bloc de notas y que ahora, cada vez que tengo que hacer algo, pues este prompt, bien, lo copio, lo pego
09:31Esto ya tiene que ser la primera señal para decir, ey, cuidado, que esto lo puedo automatizar y así me aseguro que siempre..
09:37Una tarea se realice de la manera en la que a mí me gustaría
09:41Os voy a poner un ejemplo
09:44Imagínate que nosotros lo que queremos hacer es añadir una nueva funcionalidad en nuestra aplicación
09:48Para añadir una nueva funcionalidad, nosotros siempre vamos a acabar estableciendo una estructura más o menos muy parecida para acabar creando esa nueva funcionalidad
09:57Imagínate que yo ahora le quiero pedir que nuestra aplicación, pues no lo sé, como la teníamos por aquí, ¿qué funcionalidad le podemos meter? Que muestre el total de minutos estudiados en esta semana
10:06Puede ser una nueva funcionalidad, pero yo también le puedo acabar pidiendo otra serie de cosas
10:13¿Por qué tengo que copiar y pegar siempre lo mismo? Vamos a..
10:18Acabar automatizándolo en un comando
10:20Fíjate, dentro de la carpeta commands, yo ahora voy a crear un fichero con el nombre del comando que quiero acabar creando, en este caso una feature, una nueva funcionalidad
10:28Así que pongo feature Markdown, que ya sabéis que es el formato en el que siempre creamos los archivos Markdown
10:36Y aquí lo podríamos ver directamente en la documentación, pero sin más os lo explico súper rápido
10:42El formato para crear un comando, uy, que he creado esto que estaba copiando aquí
10:48Todo esto lo vais a tener en los apuntes
10:49Fíjate, sin más, entre estas barras, nosotros lo que tenemos que acabar metiendo es primero la descripción del comando
10:56¿Cuál es la descripción del comando? Planifica una nueva
10:59Funcionalidad antes de tocar el código
11:01Y aquí le decimos que utilice el modo plan, algo muy importante que vimos ayer, ese plan que lo que hace es, venga, voy a razonar, voy a repensar qué es lo que tengo que hacer y, después, cuando tú estés de acuerdo con lo que ha planificado la gente, ya le das permiso para crearlo
11:16Fíjate que yo ahora aquí lo que le voy a decir es que siempre que yo quiera planificar una nueva tarea, digo, quiero añadir esta funcionalidad
11:24Y veis esto, el dólar arguments va a servir para que nosotros lancemos el comando, pero también no solo lancemos el comando con este prompt, sino que le podamos añadir también cuál es la funcionalidad que queremos que se implemente desde este comando
11:37Fíjate, antes de Escribir código, prepárame un plan, cómo lo vas a implementar, qué archivos vas a modificar, los casos límite
11:44Si lo recordáis, esto lo vimos en la primera clase
11:46¿Cómo va a tocar el agente y la memoria? Esto es justo lo que vimos en la primera clase, es el prompt que utilizamos y que habitualmente, si tú vas a empezar a desarrollar, vas a tener que seguir reutilizándolo
11:56Sin más, yo vengo por aquí y me creo este comando
12:01Fíjate ahora lo que va a ocurrir cuando yo venga a mi agente
12:03Vamos a hacer una cosa
12:07¿Cómo escribíamos los comandos? ¿Los recordáis? Pues yo utilizaba la barra
12:11¿Cómo le llamamos a este comando? Feature, esto es magia
12:14Si no os aparece un tip muy rápido, tenéis el comando restart o podéis hacer exit y después..
12:21Vamos a volver a entrar porque igual no se ha refrescado el contexto de Open Code
12:29Pero veis que en este caso yo tengo el feature y, si te fijas, por aquí la descripción es la que yo le he puesto en el fichero
12:37¿Por qué? Porque así ya vamos a ver rápidamente, ahora, que solo tenemos un comando, ¿no? Pero en el momento en que tengamos varios, nos vamos a acabar visualizando muy, muy rápido qué hace este comando
12:44Fíjate que lo acaba de añadir dentro de la serie de comandos que nosotros ya tenemos de manera nativa en Open Code
12:51¿Cómo lo selecciono? Sin más, pongo feature
12:53¿Y qué le puedo acabar diciendo aquí a esta feature? Pues, sin más, como acababa recibiendo un argumento, yo le digo: "Ey, feature, mostrar el total de minutos." Estudiados esta semana, esta semana, y voy a lanzar el comando
13:07¿Qué ha hecho? Ha cambiado directamente al modo planning porque nosotros se lo estábamos especificando, que era la gente que tenía que acabar utilizando
13:17Y ahora él comienza a lanzar el prompt, tiene en cuenta la feature que queremos añadir y nos empieza a sacar todo el resultado
13:27¿Cuál es el resultado? Nos muestra todo lo que le indicamos, qué archivos iba a tocar, cómo iba a acabar lanzando esa nueva creación de la feature
13:34¿De qué forma nos va a impactar? Si nosotros teníamos algunas dudas sobre cómo resolverlas, que si recordáis en la funcionalidad del día uno de este curso, yo le acababa diciendo: "Mira, resuélvelas tú porque yo os quiero seguir." Explicando cosas: pues vamos a hacer más de lo mismo
13:50Voy a decirle, mira, decide tú, por supuesto, por favor
13:56Esto lo estoy haciendo porque estamos en el curso en directo y os quiero explicar más cosas, pero ya sabéis que vuestra labor siempre es de revisión, siempre es de afinar este plan
14:07A cómo vosotros lo haríais, no dejando que la gente decida automáticamente todo, porque eso no tiene ningún sentido
14:14En este caso, como os quiero seguir explicando más cosas, le voy a decir: "Venga, decide tú cómo resolver las dudas, ¿okay?" Y ya con esto, él seguramente lo que nos va a acabar contando es cómo decide justamente resolver todo, y después ya será lo siguiente
14:31Mira, sigo en modo plan, así que no puedo editar archivos
14:36¿Recordáis que con Shift y Tabulador cambiamos al modo Build, al modo de construcción? Y ahora le digo, pues venga, dale y ponte a implementar esta nueva funcionalidad que era mostrar el total de minutos estudiados esta semana
14:46Se pone a construir
14:48Aquí vamos a poner en práctica otro comando muy rápidamente cuando acabe todo ese modo de construcción y después refrescaremos la aplicación para ver si ha añadido esta nueva funcionalidad
14:53Fijaos
14:59Vamos a dejarle aquí solo 10 segundos, que no creo que tarde mucho más
15:04De hecho, ya ha acabado y vamos a hacer una cosa
15:06Voy a utilizar el comando Bard
15:08¿Por qué? Porque el comando barra divide, si vosotros tenéis, estáis trabajando con Git, que sería lo lógico; en este caso, yo aún no..
15:17He arrancado Git, pero si queréis, la forma también más fácil es decirle: "Inicia Git"
15:21Y también podríamos tener ya un control de versiones listo y preparado
15:25Pues si vosotros empezáis a hacer commits en Git, en el momento que hagáis el `<div>`, acabaríais viendo las diferencias de cómo se va modificando cada uno de los archivos para que así vierais exactamente esa diferencia, ese comando que, sin más, recordar que se llama DIF
15:38Vamos a ver cómo ha modificado nuestra aplicación
15:43Vamos por aquí, la vamos a refrescar y aquí tenemos; esta semana llevamos 30, 60 minutos
15:48¿Qué son los 60 minutos? La suma de las dos tareas que, si recordáis, le metimos ayer
15:52Bueno, os la voy a decir: que estoy estudiando Python, y también le voy a..
15:57Contar que pues nada, 15 minutillos le he dedicado
15:59Vemos que ya esta semana nos dice 75 y que la racha hoy, que estamos en el día 2 del curso, ya ha cambiado a día 2
16:06Vemos cómo las funcionalidades se siguen añadiendo
16:10Así que ves cómo le hemos dado un pasito más a cómo tenemos que empezar a trabajar con el agente
16:15Hemos visto o hemos detectado algo que se puede automatizar, algo que se puede repetir
16:21Venga, creamos el comando personalizado
16:24¿Cuál es la siguiente herramienta que vamos ahora a aprender para darle una capacidad extra a la gente? Pues lo que se conoce como skills, como agent skills, que os lo explico muy rápido, cómo funciona una agent skill
16:38Básicamente, es lo mismo que un comando; prácticamente, la vamos a crear
16:41igual que un comando
16:44Fíjate cómo creamos el agent skills
16:46Lo que yo recomiendo siempre, en primer lugar, es intentar buscar documentación para entender más en profundidad el concepto
16:53Cuando en la primera clase, en el día 1, os hablé del concepto de legends.md, os acabé diciendo que esto es un estándar, que ya todas las compañías de inteligencia artificial y todos los agentes principales del mercado son capaces de soportar el paradigma de agents.md
17:12Pues, con las skills, con las habilidades, traducido así, también tenemos a un montón de compañías que ya son capaces
17:18Quien dice un montón de compañías, dice todas las que os estén pasando por la cabeza
17:22Prácticamente, a nivel de agentes, también son capaces de..
17:27Soportar cómo funcionan en este caso las habilidades
17:30El concepto es prácticamente lo mismo, no deja de ser un conjunto de instrucciones que podemos reutilizar, es decir, el mismo concepto que los comandos, pero que ahora van a tener una pequeña diferencia
17:42¿Cuál es la diferencia? Que vamos a poder llamar a la skill como un comando
17:47Utilizamos la barra y llamamos a nuestra skill, pero que, por otro lado, la propia skill el agente la va a conocer y el agente puede acabardecidiendo utilizar la skill sin que nosotros lo obliguemos a utilizarla
18:01¿Qué significa esto? Vamos a verlo con un ejemplo superrápido
18:03Ya que tenemos una aplicación que no deja de trabajar con fechas, que hace muchos cálculos de fechas, a mí me gustaría que
18:10Como nuestra aplicación va a seguir creciendo y va a seguir trabajando justamente con diferentes fechas, que siempre entienda muy bien cómo trabajar con ellas
18:20Así que vamos a definir una skill
18:23En este caso, ¿por qué una skill en vez de un comando? Porque el comando quiero que sea yo quien indique sí o sí cuándo hay que utilizarlo
18:31Por eso he creado el comando de la nueva función
18:33Pero la skill que le quiero dar es como un conocimiento, una habilidad para que el agente sea capaz de decir, "Ey, me han pedido trabajar con fechas
18:44¿Tengo alguna habilidad que me indique cómo trabajar con fechas?" Sí, pues ya la puedo utilizar yo sin que tú me tengas que hacer un comando, esa skill
18:52¿Cómo las acabamos implementando? Muy, muy simple
18:58Fíjate en la documentación
19:05Como esto ya es un estándar, no nos hace falta meterla dentro de Open Code, porque aquí serían como las instrucciones o las configuraciones propias de Open Code
19:11Pero igual que Legends, que es capaz de entenderlo cualquier agente en la raíz, lo que pasa con las skills es que también es capaz de entender que existe una skill simplemente si creamos la carpeta punto agents
19:21Así que voy a venir por aquí, le voy a llamar punto agents, y dentro de esta carpeta vamos a crear otra más que se llame skills
19:33Y aquí empezaremos a meter cada una de las skills
19:35¿Cómo cambia? Que para crear una skill realmente no tenemos que crear un fichero con el nombre de la skill, sino que tenemos que crear una carpeta con el nombre de la skill
19:40La skill
19:46Me voy a inventar una skill que sirva para trabajar con fechas, con fechas locales en este caso, y le voy a llamar local dates
19:51Y dentro de local dates, aquí sí que tendremos que crear el fichero de la instrucción, el fichero Markdown
19:58¿Qué nombre va a tener? Skill.md
20:03Todas las skills tienen este fichero, pero claro, quien le está definiendo el nombre realmente es el nombre que le vamos a dar a la carpeta
20:09Vengo por aquí, le digo skill.md
20:15Y ahora seguramente lo que tenemos que acabar pensando es qué pinta
20:17Esperar aquí, que yo creo, ah, que creo una carpeta, perdón
20:26Tengo que crear dentro de Agents locales por aquí un nuevo fichero, perdón, que aquí me he colado, que se llame skill.md, no una carpeta
20:33¿Qué vamos a..
20:35¿Meter aquí? Una skill
20:37Una skill es un prompt con un formato concreto
20:39¿Qué formato concreto en este caso? Fíjate, muy parecido al del comando
20:43Primero, el nombre que va a tener la skill, que aquí le decimos local date, y la descripción
20:51Úsala siempre que escribas, modifiques o revises código que trabaje con fechas, días, semanas o rachas en el diario de estudio
20:58Y aquí, sin más, pues yo le cuento una serie de instrucciones, en qué formato se guardan las fechas, cómo hay que trabajar, si tenemos alguno de estos códigos, que interactúe con ellos de una manera muy concreta
21:09Esto lo vais a tener en todos los apuntes para revisarlo y para no perder el tiempo ahora leyendo el prompt
21:13Pero, ¿qué va a pasar? Bueno, pues vamos otra vez a nuestro proyecto aquí en OpenAI
21:21¿Qué pasaba con el comando personalizado? Barra comando personalizado
21:24¿Cómo se llama esta skill? Barra local dates
21:26Uy, aquí no aparece nada que ponga local dates
21:30Uy, qué raro
21:32Vamos a hacer una cosa
21:35Vamos a irnos a otro comando que se llama skills
21:37¿Qué nos va a decir skills? Vamos a acabar viendo el listado de skills que ya existen en nuestro proyecto
21:44¿Cómo se llamaba nuestra skill local? Oh, tampoco aparece
21:48¿Qué tenemos que hacer? Venga, vamos a hacer un restart
21:55Se reinicia el servicio y ahora vamos otra vez a tener local dates, ¿no? ¿Cómo lo podemos hacer? Otra vez, barra skills
21:58Ahora tengo local dates
22:01Ahora sí que lo tengo
22:06Por eso os digo que, por..
22:10Por favor, no os preocupéis si en algún momento creáis una skill, un comando o algo parecido que vamos a estar haciendo durante el curso, porque a veces no es capaz de recargar ese contexto de manera automática
22:14Aquí ya lo estáis viendo
22:16Tenemos una skill que se llama local dates y, por supuesto, podría hacer la referencia
22:21Aquí os vais a encontrar dos formas de invocar una skill
22:24Habitualmente, una skill se invoca con la barra o con la arroba
22:29En este caso, y esto es importante, justo en la versión 2 de OpenCode hicieron este cambio
22:35Antes lo hacíamos con barra, ahora lo hacemos con arroba, porque la forma en la que entienden que es mejor diferenciarla, pues, la skill en este caso de lo que es un comando, ha sido..
22:44¿Cambiar ese identificador? ¿Qué os diría yo? Que no nos tenemos que centrar pensando que tenemos que llamar la skill
22:50Lo lógico no es esto
22:55Lo lógico no es que yo tenga que poner @ o barra y buscar la skill para llamarla
22:58La idea sería lo siguiente
23:01Fijaos
23:03Vamos a hacer esto
23:04Vengo por aquí
23:06Voy a copiar
23:07Mira, para que lo veamos mejor
23:09Voy a crear una nueva funcionalidad
23:12Imagínate
23:14Y le voy a decir, quiero mostrar cuántos días he estudiado este mes
23:17Es una nueva funcionalidad
23:19¿Cómo definíamos la nueva funcionalidad de manera estructurada? Pues utilizando el comando feature
23:22Y aquí, sin más, le digo, pues mira, quiero mostrar esto, ¿cuántos días he estudiado este mes? Lo voy a lanzar y junto con esto le puedo acabar
23:35Preguntando, ¿vas a utilizar alguna skill? Le voy a lanzar todo a ver qué nos cuenta
23:43Vemos que ya nos lanza el comando y, fíjate, es que esta es la maravilla de las skills
23:53Ya él solo, al ver que nosotros hablamos de fechas, al ver que la funcionalidad está de una forma u otra relacionada con fechas, con días, con semanas, ya nos empieza a decir: "No, no, ya tengo yo la habilidad, la habilidad de la skill que me has definido dentro del local dates." Para que veáis rápidamente la diferencia entre lo que implica un comando y una skill, que siempre entra dentro del contexto, siempre y cuando tenga en cuenta que lo que nosotros le vamos a poner aquí en la descripción de la skill tiene sentido con lo que nosotros le estamos diciendo
24:06Pidiendo a la gente
24:19Sin más, a mí me parece bien
24:32Resuélvelo como quieras, eh, implementa
24:34Vamos a dejarlo haciendo cosas
24:37Vamos a ver cómo va a acabar metiendo la nueva funcionalidad y así vamos añadiendo más cosas relacionadas con las skills
24:44¿Por qué? Porque tenemos la posibilidad, por un lado, de crear skills, pero por otro lado también tenemos la posibilidad de utilizar skills de terceros
24:53¿Qué significa esto? Igual que tú has añadido una skill para, vamos a llamarle, una tarea relacionada con tu aplicación, claro, esta skill es muy concreta, es una skill que a nosotros nos viene muy bien para nuestro diario de estudio, pero una skill puede ser más genérica, con lo cual ahora nosotros podemos empezar a..
25:15Utilizar las bondades de las skills que poco a poco va creando la comunidad
25:20Para ello, simplemente os quiero presentar esta página que se llama Skills
25:27Aquí vamos a encontrar diferentes skills que ha creado la comunidad, que han creado distintas empresas a nivel mundial, es decir, empresas como Microsoft, como Vercel, tienen sus propias skills y las comparten con la comunidad, y nosotros también podemos acabar utilizándolas
25:42Y fíjate aquí, skills con 3,000,000 de instalaciones, 1,000,000 de instalaciones, 900,000 instalaciones
25:50Así que, vamos a ver qué tan fácil es cómo podemos empezar a utilizar las skills
25:55¿Por qué os recomiendo esta página? Primero, porque es una página oficial, esto lo ha creado Vercel
26:00porque aquí tenéis la selección de prácticamente las skills más conocidas y mejor valoradas
26:06También, algo importante, en el momento que tú utilices una skill y sea de terceros, lee la skill, lee lo que hace, porque así también vas a entender si encaja con lo que tú estás buscando de la skill o si encaja con tu propio proyecto
26:18Y por otro lado, que el código que dice que tiene que hacer la gente que va a aplicar la skill no sea malicioso
26:24Eso también es muy importante
26:26Mira, creo que vamos a acabar utilizando esta en concreto
26:31Hay una que se llama frontend design
26:34Vamos a ver para qué sirve esta skill
26:36Pues, lo que nos dice esta skill es que le va a dar una habilidad para mejorar el diseño de nuestra aplicación y que así las..
26:44Las aplicaciones, pues, nos tienen esta pinta que en muchos casos vemos por defecto, que tienen todas las aplicaciones que están creadas con IA, que bueno, se hace de manera solvente, es bonita, está bien, pero como que se empiezan a aparecer bastante todas las aplicaciones
26:59A este diseño de interfaz, le vamos a ayudar a cargar una habilidad que sirva para acabar diseñando un poquito mejor nuestra app
27:09Ahora, yo quiero utilizar esta aplicación
27:11¿Cómo podríamos empezar a utilizar esta aplicación? Lo primero es que, como esto, sin más, es una skill, nosotros podríamos acabar accediendo a esta skill, copiarla, pegarla, meterla en un archivo y acabar desarrollando esta skill a mano
27:26Pero webs como Skillshare también..
27:31Nos permiten instalarlas de forma sencilla
27:33En el momento que nosotros tenemos las skills, fíjate, nos vamos por aquí a Skills
27:38Aquí tenéis la documentación oficial
27:41Dentro de la documentación oficial podéis leer cómo funciona, pero veis que sin más tenemos que, por un lado, meter este paquete que lo instalamos con npx
27:51Aquí me vendría a mí la terminal, me voy a abrir por aquí la terminal, no dentro de Visual Studio Code
27:56Me voy a abrir simplemente una terminal
27:58Voy a lanzar la instalación de este paquete, y ya con esto nos va a permitir comenzar a instalar skills de terceros con un asistente, con un wizard, que terminará aplicando esa skill en nuestro propio agente
28:14Aquí nos dice que, bueno, ¿qué quieres? ¿Seleccionar aquí alguna...? Habilidades, ya de las primeras que te..
28:18Bueno, yo te acabo de sugerir, pues mira, esta Deployment Tool para poder subir nuestro proyecto directamente a Verel, que te dé la gana
28:27Aquí tenemos hasta una skill para [resoplido], una guía de uso de desarrollo web
28:32Pues digo, bueno, imagínate que la quieres instalar por si ya quieres empezar a instalar skills directamente
28:38Y esto es lo gracioso, que en el momento en que nosotros seleccionamos una skill que queremos acabar instalando, nos dice que por defecto ya la va a meter en diferentes agentes
28:50Véis que el agenda/Skill es un estándar y que ese estándar ya afecta a diferentes apps, a diferentes agentes, donde, por ejemplo, en este caso, está OpenCode, que tú utilizas un agente que no está
29:02Aún soportado por el estándar, vienes por aquí y lo seleccionas porque ya ves que soporta absolutamente todos
29:08En este caso, cuando ya creo que está todo OK, le digo, "Ey, ¿de qué manera lo quieres acabar instalando? ¿A nivel global o a nivel de proyecto?" A nivel global aplicaría a cualquier proyecto, a cualquier agente a nivel de proyecto, pues sería lo que estamos haciendo hasta ahora
29:24Le digo que lo quiere instalar, y ahora nos vamos a Agents y a Skills, y vemos que tenemos aquí esta nueva Skill que ya hemos instalado, que ahora tú quieres instalar una Skill en concreto porque esta venía dentro del paquete por defecto
29:31Vamos a la web de Skills
29:38Me voy a volver al diseño del frontend, que era esa Skill que yo os dije que a mí, Bueno, creo que tiene sentido que instalemos
29:45Me copio el comando de la instalación, me voy aquí a mi terminal, le digo que la quiero lanzar
29:54A ver, se lanza el paquete
29:56Más de lo mismo, para quién la quiere instalar, como yo estoy utilizando Visual Studio Code y solo Visual Studio Code, para mí esto está bien
30:01Lo quiero instalar a nivel de proyecto RAS
30:10Aquí lo tenemos
30:19Sin más, tenemos frontend design, nuestra nueva skill para que entendamos que en este caso sí que tiene una licencia, porque es una de terceros; aún así, nos está diciendo que nos permite usarla de manera libre, pero que la skill realmente también es lo que nosotros creamos, incluyendo el nombre, la descripción, en este caso el campo de licencia y cómo tiene que funcionar la skill
30:28En el En el momento que hacemos esto, si nosotros nos volvemos a nuestra gente y ahora, para asegurarnos, voy a hacer por aquí el restart, lo que vamos a acabar teniendo ya es esta skill
30:38¿Cómo accedíamos a la skill? En el caso de OpenAI con la..
30:43¿Cómo se llamaba esta nueva skill? Pues vimos que se llamaba frontend design
30:47Aquí ya la tenemos cargada
30:49La podemos llamar a mano para que también veáis que la podemos invocar así
30:53Y digo, "Mira, con lo que sabes mejora el diseño." Listo, vamos a lanzar la skill
31:03En este caso, de manera explícita, en este caso le estoy diciendo, "Venga, utiliza esta skill sí o sí y empieza a trabajar con ella." Y ahora lo que va a hacer es, sin que nosotros le digamos nada más, con todo su conocimiento, con toda su..
31:19...habilidad, va a empezar a rehacer toda nuestra aplicación y vamos a acabar refrescando nuestra app para ver si de verdad esta skill de frontend es capaz de ayudarnos y mejorar nuestro diseño
31:30Le vamos a dar por aquí un minuto
31:32Vamos a ver cómo está cambiando todo el código
31:34Vemos que ha tomado ciertas decisiones, que ha añadido
31:39Es que veis que esto es una maravilla
31:41Fijaos
31:42Ha editado el memory
31:44¿Recordáis que en el momento en el que tenía algún tipo de aprendizaje o algo pendiente, o algún tipo de tarea que hacer y que recordar a futuro, cómo sabe que tiene que acabar tocando el memory? Está claro, porque también tiene los agents
31:59A los agents les decíamos, tienes que mantener el memory
32:01Aquí lo tenemos
32:03Se acaba de..
32:06Hacer todos los cambios ya utilizando cada una de las capas que poquito a poco le vamos añadiendo
32:08Ya ha metido todo esto, nos ha dejado hasta aquí una parte para revisar y ahora vengo aquí
32:16Vamos a ver por qué no le hemos dado ninguna indicación
32:18Oye, pues ya se ve de otra forma
32:21Nos ha metido el efecto ese de papel, nos ha cambiado aquí un poquito el diseño y ya parece un poco más bonito
32:27Por supuesto, no nos lo va a cambiar al 100% porque no tendría sentido que nos rompa la aplicación, pero ya veis cómo está diseñando con un poco más de gusto, únicamente con meterle una skill y decirle, "Mira, con lo que sabes, repásalo." ¿Qué va a hacer ahora nuestro agente? Cada vez que nosotros le pidamos diseñar, ya no solo es que vayamos a..
32:45utilizar el comando de feature y ya no solo es que él vaya a utilizar la skill que nosotros creamos para meterle las fechas, sino que ahora, por defecto, también va a utilizar estas skills de diseño para que veáis todo lo que podemos hacer con muy poco
32:59Sigamos añadiendo nuevas piezas del framework a nuestra gente
33:05Antes de nada, para que lo tengáis presente, aunque repito que lo vais a ver en los apuntes, os dejo por aquí un listado de skills que sí o sí, yo por lo menos, le echaría un ojo porque os pueden acabar ayudando
33:16Por supuesto, hay una skill, ¿para qué? Para encontrar mejores skills
33:21Hay una skill que nos acaba haciendo preguntas para mejorar todos los casos de uso antes de implementar
33:28La skill de Front Design, que esta, Habilidad, curiosamente, hasta la creó Anthropic, para que veáis que detrás de estas habilidades hay empresas muy famosas
33:37Aquí os dejo el listado
33:39También, lo que yo recomendaría es que reviséis un poquito las habilidades que hay por ahí, porque acabaréis descubriendo skills que os pueden ayudar en vuestro día a día y sobre todo en vuestro agente
33:50Pasemos al siguiente punto
34:01¿Qué vamos a añadir dentro de todas las capacidades de nuestra gente? ¿A qué suena dejarme en comentarios eso del MCP? ¿Qué es eso del Model Protocol? Bueno, pues el MCP básicamente es un protocolo también estandarizado, así que vámonos a la web oficial del Model Protocol
34:12Aquí la tenéis: modelprotocol.io
34:16¿ Qué vamos a encontrar en esta página? Pues también, como todas las empresas de inteligencia artificial se han puesto de acuerdo para definir esta herramienta, una herramienta que nos va a permitir proporcionar capacidades para conectarnos a servicios de terceros
34:32Os pongo un ejemplo muy fácil
34:34Imagínate que tú tienes una base de datos, una base de datos que está en un servidor o no está, digamos, dentro de tu código
34:41Pero, ¿qué tendríamos que decirle a la gente si queremos que adapte el código a nuestra base de datos? Tendrías que decirle cómo es tu base de datos, cuáles son las tablas, cuáles son los elementos que guardas dentro de cada una de estas tablas o lo que sea
34:55Pero si tú tienes un API que es capaz de..
34:59Conectarse a la base de datos, tú lo que estás haciendo es enchufando en el agente el conocimiento y la capacidad de que tu propio agente también conozca cómo funciona, en este caso, tu base de datos
35:11Con lo cual, tú no le tienes que dar información sobre la base de datos, porque él mismo ya, de manera proactiva, se va a poder conectar a la base de datos, buscar la información y adaptar cada uno del contenido que tenga que generar
35:23Lo mejor para verlo siempre es con un ejemplo
35:27¿Cómo podemos verlo? Bueno, lo que yo recomiendo, más de lo mismo, es volver a la parte de información de la documentación oficial de Open Code
35:34Por supuesto, OpenCode también nos va a hablar aquí de cómo tenemos que implementar un servidor MCP
35:39¿Cómo lo...? Tenemos que hacer? Muy, muy fácil, aunque aquí veáis toda la documentación, os lo explico yo de una forma también muy sencilla
35:49Lo primero que tenemos que hacer es acabar creando un archivo, un archivo que en este caso lo podemos colocar en la raíz y que, sin más, es un JSON que se llama opencode.json
36:01Creo por aquí un archivo, le llamo opencode.json
36:05Y dentro de este archivo, ¿qué tenemos que tener? Bueno, aquí nos va a indicar que necesitamos esta estructura, una estructura que, sin más, hace referencia a la configuración de Open Code y que dentro tenemos un MCP con un servidor y aquí dentro tenemos que acabar metiendo los datos del MCP
36:23Os voy a enseñar, por supuesto, hay infinidad de MCPs y esto es algo que tenéis que
36:29Tener en mente que este es un estándar abierto, que es reutilizable en todos los editores de código, que es muy seguro y que el ecosistema es creciente
36:37¿Por qué? Porque cada empresa que conozcáis, si tiene un servicio que podéis utilizar desde vuestra aplicación, que podéis acabar conectándoos a él de una forma u otra, ya están creando el MCP
36:48Yo os voy a enseñar uno bastante guay porque creo que el efecto os sorprenderá bastante
36:52Vamos a ver este MCP
36:56Se llama Chrome DevTools
37:00Yo creo que más o menos todo el mundo conoce Chrome, el explorador
37:02Las DevTools son las herramientas de desarrollo
37:05Imagínate lo guay que sería que tu propia aplicación fuera capaz de conectarse a Chrome para pedirle cosas
37:13Fijaos lo simple que es
37:15Podemos hacer
37:17Aquí vais a acabar encontrando cuál es la configuración del MCP
37:21Ya ves que no es muy compleja
37:26Sin más, lo único que voy a hacer es venirme por aquí, copiar la configuración y pegarla
37:30Vemos que tenemos ta ta ta Chrome DevTools, el local, cómo lanza un comando y puede empezar a conectarse a lo que a nosotros nos dé la gana
37:39En el momento en que ya tenemos configurado el MCP, es cierto que, dependiendo del MCP, quizás tienes que meterle un API, alguna clave, o alguna configuración diferente, pero las empresas ya no están dando cuál es la configuración del MCP, que en muchos casos, lo único que tenemos que hacer es conectarnos y listo
37:57Fíjate que ya he metido este
37:59Voy a volver a mi agente y vamos a ver el comando MCPs
38:03Vamos a ver qué MCPs tenemos
38:07Ey, ya tengo el comando que nos lleva al listado de MCPs
38:10Entre ese listado ya ha cargado ChromeDP Tools
38:13Algo importante, un MCP lo hemos añadido a nivel del proyecto y por defecto se va a cargar
38:22Es decir, el agente va a hacer lo mismo que con las skills
38:24Si tú le pides algo y existe un MCP que puede resolver la tarea, se va a acabar conectando a ese MCP de manera automática, sin que tú se lo digas
38:35Si no quieres que pase eso, en el listado con el comando barra MCPs, le puedes decir, como vemos aquí, que lo deshabilite porque ahora, justo en este momento, no quiero que funcione
38:43En mi caso, yo le voy a decir que se conecte para que esté listo
38:45Y le..
38:47Vamos a lanzar este prompt
38:49Mira, este prompt que quiero leer antes de copiarlo y pegarlo en Open Code, porque le vamos a decir esto, le vamos a pasar un listado y le vamos a decir: "Mira, utiliza Chrome DevTools más." Yo le estoy diciendo que utilice Chrome DevTools, no que utilice el MCP
39:09Él sabrá que tiene un MCP que puede conectarse a Chrome DevTools y lo utilizará de manera automática
39:15Estoy siendo demasiado explícito, pero si nosotros no le decimos que utilice Chrome DevTools, pero le damos estas instrucciones: abre index en Chrome, registra las sesiones, comprueba la racha, no sé qué
39:30Le estoy pidiendo cosas, fíjate, revisa la consola si hay errores, haz una captura en tamaño móvil
39:35Estos son..
39:38Habilidades que nosotros podríamos hacer desde Chrome, pero que nosotros le vamos a delegar toda a la gente, a ver si así es capaz de empezar a trabajar por su cuenta
39:48Todo gracias a este MCP que se conecta a las Depools
39:54Voy a lanzar este prompt, el que os acabo de enseñar, y vamos a ver si es capaz
39:59Fíjate, está buscando las Chrome DevTools, está ejecutando las Chrome DevTools
40:04Me voy a venir por aquí, que acabo de abrir automáticamente el explorador de Chrome
40:09Veis que está haciendo el resize automático y ahora vamos a ver más cosas
40:13Vemos que está lanzando diferentes comandos para cambiarlo de tamaño y no sé si le acabo pidiendo alguna cosita más
40:22¿Que tú quieres que haga una prueba añadiendo más cosas? Fíjate
40:26Esto, ¿quién se lo dijo? Esto es lo que yo tenía añadido antes, ¿no? Vámonos al prompt que diseñamos
40:38Usa Chrome DevTools, abre el index, registra tres sesiones
40:41Ha registrado tres sesiones, yo las he registrado, no las ha registrado el propio MCP
40:47Comprueba que la racha muestra tres y que la racha es correcta
40:49Revisa la consola si hay errores
40:51Haz una captura en 375 píxeles
40:53Todo esto automáticamente desde el propio MCP
40:58Y ahora vamos a ver el resultado de la ejecución
41:00¿Qué nos dice? Mira, vamos por aquí
41:03Racha actual, tres, ¿es correcto, sí? Mejor racha, sí
41:09Los minutos de esta semana están correctos con lo que yo añadí
41:11La consola, no hay errores ni avisos
41:13El móvil hizo la captura y hasta me ha guardado la captura en PNG
41:20He añadido en la memoria el resultado de la prueba porque sabe que tiene que utilizar la memoria y no ha encontrado ningún problema
41:26Eso sí, nos dice aquí que, bueno, que podría acabar utilizando algún tipo de representación para la racha
41:31Todo esto hemos lanzado pruebas sin tener que manipular directamente la web, pidiéndole el MCP
41:39Esto realmente tiene todo el potencial que tú le quieras dar
41:41He utilizado el MCP, en este caso de las Chrome DevTools, pero tú lo podrías acabar llevando hacia donde te dé la gana
41:48De hecho, ahora que ya sé que tengo este MCP, vamos a mejorar aún más el comportamiento de nuestra gente
41:56Vamos a nuestros agentes y vamos a añadirle una nueva capa que se llame..
42:04Verificación
42:12¿Por qué? Porque yo ahora vengo aquí dentro de la verificación y a mí me gustaría decirle, "Oye, no hay tests ni un linterna que teníamos algo antes, pero ahora ya hemos visto cómo que tenemos una especie de capacidad para hacer testing." Le voy a pegar esto
42:20No hay tests automáticos
42:23Digo, después de cada cambio, verifica con el MCP de Chrome DevTools todo lo que hemos modificado
42:28Eso está bastante guay
42:30Ahora que sabemos que tenemos un MCP que es capaz de manipular nuestra web, nosotros sin más le vamos a decir, "Ey, ponte a utilizarlo
42:35Empieza a trabajar con él de una forma muchísimo más fácil." Y con esto, MCPs infinitos
42:43Os voy a poner aquí algún ejemplo de algún MCP que está bastante chulo, que por un lado el..
42:48De Chrome, de Tools, ya lo hemos visto, pero aquí os dejo en una diapositiva lo que son los MCPs que para mí son los más esenciales
42:55En este caso, el de Context Seven, superfácil y, si queréis, hasta abro la web para que lo veáis muy, muy rápido, pero Context Seven es también una herramienta que siempre tiene la documentación actualizada de prácticamente todo lo que está relacionado con desarrollo
43:11Fíjate, documentación de Next.js, de Cloud Code, de Playwright, de Codex, de Rad, de Stripe, de Supabase, infinidad de documentaciones, y lo que suele pasar es que la gente está entrenada con una versión, pues, habitualmente anterior a la que tenemos publicada
43:32¿Por qué? Porque imagínate que nuestro agente, nuestro modelo, lo que sea… Pues se acabó de entrenar hace 3 meses
43:36Si Riat sacó una nueva versión ayer, nuestro agente no va a conocer cómo funciona Rat de la manera más actualizada
43:46¿Qué podríamos acabar haciendo nosotros? Oye, pues sin más, tú lo que tienes que acabar haciendo es meterle MCP y el MCP, en este caso de Context 7, lo que va a hacer es, "¿Me estás pidiendo que trabaje con Reat? Voy a buscar en mi MCP si tengo la documentación de RET y así ya voy a trabajar con la versión más actualizada." Y aquí os pongo otros ejemplos
44:06Hay, por supuesto, un MCP para conectarnos a GitHub
44:11Hay un MCP para conectarnos a Figma, a Supabase y un montón de lugares más, que ahí os dejo unas URLs que vais a tener en los apuntes para que así podáis consultar directorios de
44:22MCPs, al igual que hemos visto antes, los directorios de las skills por un lado, porque así también podéis utilizar estas herramientas sin tener que programarlas a mano y aprovechar justamente esas capacidades, ¿vale? Os he dado bastante la turra con esta nueva capa dentro del aprendizaje, dentro del harness de los agentes, pero ahora aquí, como suele decirse, aquí es donde se viene lo bueno
44:50¿Por qué? Porque vamos a empezar a programar ya de la forma más profesional y más procedimental que utilizan las aplicaciones
44:57Decidme por ahí en comentarios si habéis escuchado alguna vez el término SDD
45:01Básicamente, esto significa Spec Driven Development
45:03Básicamente significa
45:06Desarrollo asistido por especificaciones
45:09¿Qué significa esto? Pues bueno, ya estamos, sin bromas, en la capa cuatro, hemos visto cómo a la gente le hemos dado un montón de capacidades
45:18Nuestro agente ya es lo más determinista posible, ya es lo más, vamos a llamarle, inteligente posible
45:25¿Por qué? Porque es capaz de entender cada vez más cosas
45:27Ahora lo que nos falta es cómo somos capaces de crear los mejores desarrollos
45:32Y los mejores desarrollos siempre parten de una especificación, siempre parten de un análisis que nos va a ayudar a que nuestra funcionalidad no sea un simple prompt
45:42Hemos hecho ahora diferentes pruebas que eran nada, te paso un prompt y añade esta funcionalidad, pero en el desarrollo de software
45:49Realizar que ya van a ser profesionales, que no es esta pequeña aplicación que estoy haciendo yo con vosotros para ir más rápido
45:57Realmente, crear una nueva funcionalidad no es meter ahí un prompt cutre y que la gente se busque la vida
46:05No, es darle las mejores indicaciones posibles para que así nuestro agente pueda desarrollar de manera profesional, y eso lo vamos a conseguir con SDD
46:12Os cuento por aquí qué es la manera de desarrollar software que define esas especificaciones que debe hacer el sistema y que está basado en los requisitos, en los límites y en los criterios
46:24Y todo esto va a servir para guiar el resultado final
46:26Aquí hay algo que la gente que ya desarrolla software o que ya había desarrollado software antes de… La inteligencia artificial, igual ya la conocéis
46:34Existe el flujo de desarrollo clásico de software, por lo que llamábamos análisis, diseño, implementación, validación, y después despliegue y mantenimiento
46:43Y eso era como un bucle sin fin
46:45Cada vez que queríamos hacer un nuevo desarrollo o añadir una nueva funcionalidad, preguntábamos: ¿cómo es el flujo de desarrollo ahora con inteligencia artificial y desarrollo específico? Fíjate que es prácticamente lo mismo
46:56Lo he cambiado
46:58Mira, vuelvo para atrás, para adelante
47:00Esto que antes llamábamos análisis, ahora es la propia especificación
47:03Y lo que llamábamos planificación antes, ahora es el diseño, pero realmente significan lo mismo
47:08Lo mismo
47:13Y para ello es para lo que tenemos que entender el siguiente paso, que el SDD no hay una única forma de utilizarlo
47:18Tenemos lo que se llama taxonomía del Speech Driven Development, que son diferentes formas de entenderlo
47:21Aquí tampoco es que me quiera parar mucho, pero tenemos como diferentes interacciones
47:25Uno, el spec first
47:29¿Qué es esto? Que nosotros escribimos las especificaciones antes de programar, pero la especificación muere
47:33Yo especifico algo, se implementa y se acabó
47:38Esto es algo parecido a lo que estábamos haciendo ahora
47:39Yo lanzaba un prompt, con ese prompt se creaba la funcionalidad y se acabó el prompt
47:43Pero aquí es donde tienen que empezar a entrar las diferentes capas de evolución del..
47:49¿No tiene sentido que nosotros olvidemos la manera en la que hemos ido desarrollando poquito a poco nuestra app? Y aquí entra lo que llamamos el spec and control, que nosotros creamos esa especificación, pero nos va a acabar guiando el desarrollo
48:02Esa especificación se va a acabar actualizando también con las modificaciones que nosotros hagamos y siempre vamos a poder consultar el histórico de las features que vamos añadiendo
48:12Y por último, os pongo ahí el SPA source, que a mí no me gusta, pero realmente también existe como taxonomía, que lo único que tienes que hacer es crear el spec y nunca acabar tocando código
48:23La especificación es la fuente de verdad
48:25Yo creo que crearse los extremos, es… Decir, un prompt, y que se muera y desaparezca, no tiene sentido
48:32Crear una especificación y que yo solo me base en el texto, en el prompt tampoco tiene mucho sentido
48:36Donde yo creo que entra la verdadera capacidad y donde aportamos valor, porque por eso este es un curso que no se trata de aprender a hacer programando, sino de hacer ingeniería de software profesional, de acabar desarrollando cómo piden las empresas en la actualidad
48:50Para mí, lo que mejor encaja es el especificador Anchor
48:53El especificador Anchor también se basa en una metodología que os pongo aquí, ERS, que esto tiene muchísimos años, que no hace falta que le prestéis mucho atención a esto, pero os lo dejo reflejado porque cuando recibáis los apuntes me gustaría que lo, Leyeraís, pero simplemente es una manera que el sector del desarrollo lleva usando desde hace mucho tiempo
49:12De hecho, creo que lo inventaron en la fábrica de Rolls-Royce o algo así en los años 50, 60
49:16Es decir, lleva muchos años, pero básicamente es una forma de escribir requisitos para que no sean ambiguos, porque si de algo se trata es de que nosotros tenemos que aplicar el criterio, y nuestro criterio lo tenemos que reflejar en requisitos que sean muy claros para la gente, para que la gente no alucine, no se vuelva loca, ni desarrolle cosas que no tienen ningún sentido
49:35¿Cómo utilizamos el SDD? Sé que esto puede resultar un poquito abrumador si nunca habéis hecho SDD, si no entendéis muy bien lo que es el concepto
49:44Pero vamos a ir paso a paso y vais a acabar entendiendo perfectamente qué es esto del SED
49:50El SED son siete pasos, siete pasos que hoy voy a hacer en esta clase muy poquito a poco, despacio, pero que en el momento en que lo entendáis, y sobre todo en la clase de mañana, que es la que de verdad os va a acabar explotando la cabeza, vais a ver cómo acabar haciendo SED de forma muy simple y muy rápida
50:08Lo primero que tenemos que pensar es que, dentro de los conceptos de Desarrollo con IA, existe ese primer paso que es la Constitución
50:18¿Qué es esto de la Constitución? Pues básicamente, cómo tenemos que acabar indicando de manera general cuál es el fichero de conocimiento de nuestro agente
50:27Nosotros ya llevamos mucho camino recorrido, no hemos dejado, desde Que hemos comenzado el curso de darle información y contexto, recordar el tema de la ingeniería de contexto
50:37Le hemos integrado los agentes, la memoria, las habilidades, los comandos, el MCP
50:41Ya tenemos aquí una bestia realmente, pero ahora vamos a definir mucho mejor cómo vamos a sacarle esa capacidad a la gente, pero ya para funcionalidades más concretas
50:54¿Cómo tenemos que trabajar con SD de manera genérica? Aquí también hago un apunte muy, muy rápido
51:00Por supuesto, esta tecnología lo que han hecho las empresas, pues cada una la adapta de la manera que mejor le encaja
51:07Yo os voy a explicar SD desde los fundamentos
51:09¿Por qué? Porque igual alguien ahora puede estar pensando, "Ya, pero es que GitHub ha definido un framework que
51:15Se llama Spec Kit, que también se puede usar
51:20Por supuesto, cada persona puede darle el refinement que quiera, pero volvemos a lo mismo y siento repetirme: fundamentos
51:26Si yo entiendo los fundamentos del SD, luego tú, en el futuro, puedes usar un framework porque se adapta mejor a tu flujo de trabajo
51:32Fantástico
51:38Pero lo primero que tienes que entender es cómo funciona SED-ED paso a paso, y cómo vamos a entender que, ahora, gracias a la gente, vamos a partir de un punto y llegar a una implementación muchísimo más compleja
51:44Para ello, el primer paso que tenemos que dar precisamente es esa Constitución
51:51¿Qué es eso de la Constitución? Pues bueno, entendemos que nosotros..
51:53Tenemos nuestro proyecto
51:56En nuestro proyecto queremos acabar implementando SD
51:57¿Cómo vamos a acabar implementando SD? El primer paso, ya lo digo, es crear la constitución, la forma de empezar creando la constitución
52:08Vengo por aquí, vamos a crear un fichero que se va a llamar, sin más, lo podemos llamar docs
52:15Mira, todavía lo vamos a hacer mejor
52:18Tengo aquí unas diapositivas y así os puedo enseñar antes cómo va a quedar, para que lo visualicemos mucho mejor
52:27Nosotros tenemos nuestro proyecto
52:29Vamos a crear primero ese directorio que se llama doc y dentro le voy a crear un fichero que se llama Constitución
52:34Y en esa Constitución justo vamos a acabar reflejando cuál es la constitución principal del proyecto
52:41¿Con qué? Porque aquí Es donde deberíamos reflejar esos principios innegociables
52:45Esto en SDD lo vamos a hacer una única vez
52:47Voy a venir por aquí, voy a crear esa nueva carpeta, le voy a llamar "docs" y dentro de "docs" voy a acabar creando un fichero que se llama "Constitution.marnow"
53:02Y aquí dentro podríamos hacer diferentes cosas
53:05Lo hacemos con un prompt y después lo refinamos
53:09Yo también le podría acabar indicando cómo se tiene que acabar generando la constitución del proyecto
53:15Vengo por aquí, le digo: "Mira, vamos a crear la constitución del diario de estudio, que es nuestro proyecto"
53:20Es un proyecto que ya existe, el agente, el memory y el código, antes de proponer nada
53:24Es un proyecto educativo que debe poder mantener
53:28Alguien que empieza a programar
53:29Propónme documentos base con seis principios innegociables y cortos
53:33Por un lado, le podríamos decir a la gente que lo haga él mismo, o por otro lado, si nosotros tenemos muy clara la Constitución, lo vuelvo a repetir, que yo vaya copiando, creando prompts no significa que tú en el momento que quieras tocar alguno de estos marcos no lo puedas hacer a mano
53:42Por supuesto, yo lo lanzo
53:50Los archivos se crean, lo leemos, lo repasamos, entendemos si tiene sentido para nosotros y si no lo tiene y quieres cambiar algo a mano, lo haces
53:59En este caso, me vuelvo a repetir, lo hago todo de manera automática para seguir avanzando
54:05Fíjate, me empieza a mostrar aquí cada uno de los..
54:07Ficheros y lo que acabaríamos viendo en el momento en que esté todo ok, esto lo revisaríamos
54:13Le digo, "Vale, está todo perfecto
54:17Propongo añadir a los agentes una línea para que nos hable también del constitution o lo que sea." También lo podríamos acabar haciendo, fíjate, para que quede mejor
54:27Y así ya os pego tal cual en los apuntes cuando los recibáis, cómo quiero que quede mi Constitución
54:31Yo ya me tenía creada una Constitución
54:33¿Qué es esta Constitución? Pues que tiene que ser simple, que la especificación manda, la lógica tiene que estar separada de la interfaz, los tests, los idiomas, lo que sea
54:40Y dentro de los agentes, a mí lo que me gustaría también acabar añadiendo es alguna regla para hacer referencia a SDD
54:46Ya sabéis que los agentes..
54:52Es el archivo de entrada, es el lugar por donde tiene que comenzar todo nuestro agente a leer el contexto
54:58¿Por qué no hacemos lo siguiente? Vengo por aquí y le voy a añadir, pues, un par de cosas
55:02Le voy a decir, mira, como yo ahora le voy a añadir testing, yo quiero que los tests se lancen con este comando y, dentro de las reglas, le voy a decir: le docs/constitution y las diferentes especificaciones que vamos a ir creando poquito a poquito
55:15Así, ya hemos implementado dentro de nuestro agente la filosofía del SDD
55:20Constitution es el primer paso
55:23¿Cuál es el siguiente paso? La propia especificación
55:25Ahora es cuando vamos a crear cuál es la nueva funcionalidad que yo quiero crear
55:29¿Cómo lo acabaríamos haciendo? Pues, dentro de esto, os ponía también..
55:33Por aquí, en los esquemas, tenemos una estructura de carpetas que debemos finalizar definiendo con especificaciones
55:38Voy a crear una carpeta que se llama "specs"
55:41Y dentro de esta carpeta "specs" vamos a incluir cada una de las especificaciones
55:46¿Cuáles son esas especificaciones? Pues, en este caso, voy a ir por aquí y crear una spec que será una carpeta llamada "001", que será la primera especificación de nuestro proyecto
55:59Dentro de esta carpeta "001", puedo definir cuál es la spec, cómo vamos a generar nuestras especificaciones
56:07Sin más, me voy a la sección de la gente, le pego un prompt que tengo por aquí, que podemos ver muy rápidamente, y así también podemos entender cómo será la primera spec que quiero generar
56:20Le digo, "Mira, no escribas código
56:21Vamos a redactar la especificación de una nueva funcionalidad del diario." Digo, "Lo primero que tienes que hacer es leer los documentos y la Constitución, porque ahí están como las reglas inamovibles." Digo, idea inicial, un mapa de calor tipo GitHop, no sé si lo visualizáis, esa cuadrícula donde se van iluminando cada uno de los días en los que nosotros trabajamos
56:40Eso es lo que quiero añadir yo en nuestra aplicación
56:42Le digo, quiero generar ese mapa de calor tipo GitHop que muestre los días de trabajo
56:45Hazme preguntas
56:48Fijaos que esto es super importante
56:51No tiene ningún sentido empezar a desarrollar si nosotros no somos capaces de estresar un poquito a la gente para que nos haga..
56:59Preguntas, para que con nuestras propias respuestas sea capaz de acabar reflejando cómo todas las decisiones pueden acabar desencadenando en un fichero spec.m
57:05Tengo todo esto
57:12¿Veis que me hace preguntas? Me dice, "Ey, ¿qué periodo al marcar el mapa, lo que sea?" Bueno, decide tú
57:19Hacemos lo de siempre, que esto no es una buena práctica, pero así vamos un poquito más rápido
57:23Decide, pues bueno, cómo va a establecer, cómo va a ser ese mapa de calor, todo lo que sea
57:27Y dice, "Mira, ya puedes proponer diferentes límites, los decida yo." Y digo tú, vamos a dejar que trabaje hasta que acabe creando la especificación que nosotros le hemos indicado
57:37Recordad, todo esto lo vais a tener en los apuntes para que podáis ir
57:41Copiando poquito a poco
57:43Nada, genera la especificación
57:47No me hagas más preguntas
57:50Así, sin más, lo que hacemos es finalizar todo el flujo y acabar desarrollando
57:54Vamos ya por aquí a la estructura del proyecto que teníamos, porque si todo va bien, el agente va a ir generando las PCEC y aquí, donde yo le propuse que tendría las especificaciones y la 001, aquí tendría que acabar generando la propia especificación seguramente también en una nueva carpeta
58:13¿Por qué? Porque eso nos va a servir realmente para entender que la especificación ya no es solo la 001, la primera, sino que también va a acabar teniendo un nombre para que nosotros lo veamos más claro
58:19Vemos la especificación 001, mapa de calor
58:25¿Qué va a tener aquí dentro? La especificación
58:30Ya tenemos la definición profesional
58:33Basada en nuestras propias respuestas, que en este caso yo le dije que decía el propio modelo
58:36Aquí lo tenéis
58:38Requisitos funcionales
58:41Esto es el documento que los desarrolladores llevamos utilizando toda la vida para desarrollar una funcionalidad de manera profesional
58:48Y en este caso, a nosotros nos lo ha hecho la IA
58:51¿Quieres acabar cambiando las especificaciones? Perfecto, pero ahora vamos a empezar a iterar hasta llegar al fichero que va a ser capaz de implementar esto, porque de momento, nosotros lo que tenemos es esa fase de análisis
59:03Me voy a cargar lo que yo creé, este 001, porque ahora ya vamos a partir del diagrama de responsabilidades de la especificación, primero que tenemos en esta funcionalidad
59:11¿Qué es lo siguiente? En el momento que..
59:13Nosotros ya tenemos un spec, lo lógico es que no nos tengamos que acabar quedando con este documento
59:20Este documento hay que leerlo, hay que entender que lo que quiere, o lo que queremos que acabe desarrollando la gente, es justamente lo que nosotros buscamos, porque una funcionalidad compleja realmente necesita que se le deje el tiempo y que se trabaje de manera concienzuda para que el resultado sea el que nosotros buscamos
59:38Por eso, dentro de SDD, lo que existe es el paso tres, que es lo que llamamos la clarificación
59:43¿Qué es eso de la clarificación? Pues que vamos a utilizar el propio agente para que revise la propia especificación
59:52Así que, ¿cuál sería el prompt que nosotros tendríamos que utilizar para clarificar? Lo vemos también
59:55Aquí muy rápido
59:57Revisa estas especificaciones como si fueras un QA profesional y le digo: "Venga, tienes que listarme las ambigüedades, las contradicciones, los requisitos, todos estos prompts." Vuelvo a repetir, los vais a tener los apuntes, pero yo voy un poquito rápido, ¿vale? Vamos por aquí, a la gente, le voy a decir que clarifiquen
01:00:14¿Por qué? Porque no me fío de que la especificación que has creado esté perfecta
01:00:20Así que vamos a hacer una fase de revisión, que esto es lo lógico, lo habitual que hacemos los desarrolladores en nuestro día a día
01:00:26Se pone a revisar todo y dice: "Ey, es que hay ciertas contradicciones." Ya ves que los modelos no son capaces, en muchos casos, de llegar a la mejor conclusión a la primera
01:00:33Los humanos tampoco
01:00:39Por eso, nosotros, en el momento en que nos ponemos a desarrollar algo, revisamos y analizamos continuamente
01:00:45Aquí nos empieza a leer todo esto
01:00:48Hay 38 hallazgos, los más graves, hay cosas que bloquean
01:00:50Vuelvo a lo mismo: decide tú
01:00:52Cada vez que digo "decide tú", en realidad no es que decida la gente
01:00:57Deberíamos decidir nosotros, pero no quiero extenderme aquí con un rollo revisando cada una de las cosas que pone
01:01:03¿Vale? En el momento en que hacemos esto, ya podemos pasar a la siguiente parte
01:01:07Imagínate que damos por buena la especificación
01:01:10Decimos, "La especificación para mí está correcta." Vamos a dejar que acabe, que ponga de forma coherente todo ese fichero spec.md
01:01:20¿Cuál sería el siguiente paso? Piensa que estamos en la fase de..
01:01:25Análisis
01:01:31Hemos revisado cómo funciona nuestro proyecto, qué queremos acabar añadiendo y hemos llegado a la conclusión de que la especificación de la nueva tarea es lo que acabáis de ver
01:01:37¿Qué será lo siguiente? Vamos a planificar la tarea
01:01:38¿Cómo podríamos planificarla? Pues justamente con la fase cuatro del SEDD, que es la fase de planificación
01:01:45¿Qué es la fase de planificación? Otro prompt
01:01:47¿Cuál es este prompt? Os lo voy a pegar por aquí también para que lo leamos muy rápido
01:01:54Lee el Constitution, que siempre lo tenemos en el proyecto
01:01:57Lee la spec, que ahora ya la hemos dado por buena, ya es la especificación, pero no escribas código
01:02:00Y genera un plan
01:02:04La propia planificación va a generar un nuevo fichero que es un..
01:02:07Plan MD con los archivos que vamos a tocar, la manera en la que se va a acabar implementando y lo que sea, así podremos ir revisando ahora no solo la idea de la propia especificación, sino también cómo se va a planificar esa nueva especificación
01:02:22Copiamos el prompt, nos vamos por aquí a nuestro editor, vengo por aquí, pego, porque ahora quiero empezar a trabajar en la fase cuatro de planificación
01:02:35No os dejéis asustar por cada uno de los pasos que estoy dando, porque todo esto lo vamos a acabar automatizando, pero no quiero adelantar pasos, ya que realmente esto lo tenemos que entender muy bien cómo funciona, porque si no, la IA va a hacer cosas que nosotros no somos capaces de controlar
01:02:52Vemos que por aquí ya tenemos..
01:02:54Justamente esto, cómo yo le digo que, en base a la especificación y al código de constitución, empieza a generar cuál es la planificación
01:02:58Le damos ahí un ratillo, acabará generando la planificación, y aquí en la especificación 01 Hitmap va a acabar apareciendo un nuevo archivo que se llama plan.md y, dentro de ese plan.md, veremos cómo es capaz de transformar este análisis, que aquí veis, que no hay código realmente, simplemente es la idea de cómo debe generarse esa nueva especificación
01:03:22Se acabará transformando en un archivo donde ya empezaremos a intuir qué tareas terminará haciendo el propio agente
01:03:28Vemos aquí que está explorando, que está preparándose para escribir, y ahora, lo que veremos dentro de unos segundos, simplemente, es ese archivo
01:03:36de planning para acabar descubriendo cómo va a terminar llevando a cabo esa idea general
01:03:41Vamos a dejarlo por aquí y vamos a ir pensando cuál sería la siguiente parte
01:03:48Aquí, a mí personalmente, me gusta hacer algo, y es que la fase de clarificación, que es la fase tres, en realidad la podemos integrar dentro del flujo de SD cuando nos convenga
01:04:02Hemos clarificado la especificación, pero en el momento en que ahora también tengamos el plan, que ya se ha generado, fíjate, ya nos dice: "Ey, voy a tocar estos ficheros, voy a hacer estas cosas, voy a crear estas funciones." Ya vemos que aquí ya hay código, ya está planificando cómo va a terminar interactuando con nuestro código para ser capaz de añadir
01:04:20Cada una de las funcionalidades
01:04:24Esto nos permite revisar si tiene sentido lo que va a hacer la gente antes de que lo haga
01:04:30Estamos preparándonos para que la gente, cuando ejecute, lo haga de la mejor forma a la primera
01:04:35En el momento que ya tenemos esto, aquí yo digo que a veces añado otra vez la fase de, perdón, de clarificación, porque igual esto no me gusta, y digo: "Ey, vuelve a clarificar, vuelve a revisar, vuelve a revisar un poco qué es lo que has pensado en el modo plan, porque igual también tenemos que hacer ajustes." Una vez hechos esos ajustes, ya nos vamos a la última fase
01:04:57¿Cuál es la última fase? La fase del paso seis, que es la implementación, que es la implementación en Promas, ya decirle a la gente que..
01:05:04Implementa
01:05:11En este caso le digo, "Ey, mira, implementa solo la primera tarea de la lista, del task que hemos creado, del plan, de lo que sea y podemos acabar desarrollando." Fíjate, vamos por aquí, vamos a lanzar el prompt, vamos aquí a meterlo
01:05:18Y ahora ya haría la última fase
01:05:22Esta fase de implementación nos sirve para crear las tasks
01:05:28¿Qué son las tasks? Ya la lista de tareas, especificación, planificación, lista de tareas
01:05:33En este caso, es cómo quieres seguir, decide tú
01:05:36Y en el momento que tengamos la lista de tareas, ya nos vamos a esa implementación, a ese paso seis, que es el que yo os estaba contando antes
01:05:45¿Para qué sirve esa implementación? Para que se ponga ya a programar directamente
01:05:49Todos estos pasos los..
01:05:51Vais a ver reflejado poquito a poco los apuntes y seréis capaces de ir lanzándolos, paso a paso, para que sea muchísimo más simple
01:05:58En este caso, yo ya le he dicho que se ponga a planificar, que se ponga a ejecutar y que se ponga a hacer cada una de las tareas
01:06:05Aquí acabaríamos teniendo este fichero task
01:06:07¿Lo veis? Las tareas
01:06:10¿Por qué? Porque, igual que un desarrollador va agarrando tarea a tarea, nosotros podríamos acabar definiendo, “ey, ya hecho”, mira, como si fuera magia
01:06:21Se ha puesto a desarrollar la primera tarea y ya la ha marcado
01:06:24Así de simple
01:06:27¿Qué podríamos decirle nosotros? Mira, he marcado la T1 en TAS, lo he anotado en memoria
01:06:30Le puedo decir: implementa todo
01:06:32Y ahora, ¿qué haría? En el momento que le Decimos, implementa todo, se lee todos los ficheros y va lanzando cada una de las tareas, va haciendo esa labor de desarrollo, pero lo que importa es que hemos definido desde el minuto uno y así no le dejamos que haga pasos en falsos
01:06:50Esto en desarrollo profesional es lo más importante que tenemos que hacer, porque si nos ponemos a desarrollar a lo loco y creamos funcionalidades muchísimo más grandes, acabaremos perdiendo el control
01:07:00El software no es algo que vive una tarde
01:07:03El software no es un proyecto que hacemos, no sé, en un fin de semana
01:07:08El software es algo que día a día, semana a semana, mes a mes y año a año, el software profesional sigue creciendo
01:07:15En este caso, ¿qué va a ocurrir? Que nosotros..
01:07:17Siempre vamos a tener todo representado
01:07:19Que tú ahora mismo llevas 10 funcionalidades y el día de mañana tienes que decir, "Ey, cuando yo acabé implementando el mapa de calor, ¿qué pasó? Cómo lo planifiqué, cuál fue la especificación, cuáles fueron las tareas y así el agente siempre le puedes acabar diciendo, "Ey, ¿te acuerdas cuándo implementaste esto? Fíjate en la funcionalidad o en la especificación 001." Vamos a retocar cosas, vamos a revisar cosas
01:07:45Es como si estuvieras creando una memoria, en este caso ya a largo plazo, que sea capaz de recordar absolutamente todos los pasos que tú has dado como desarrollador para acabar realizando cada una de las nuevas funcionalidades que le vas vas metiendo a este proyecto
01:08:00El último paso, la validación
01:08:02¿Qué le podríamos acabar diciendo? Bueno, os pongo la validación y me había quedado antes y os había dicho, bueno, el último paso es la implementación para acabar viendo resultados
01:08:09¿Qué es lo correcto en este caso? Que verdaderamente el último paso sea este, recorrer la especificación y lanzar pruebas
01:08:20En este caso, ¿qué he hecho yo? Mira, lanza las pruebas, lanza los tests, pero también vérifícalo con las depools y aquí podríamos indicarle el tipo de pruebas que nos dé la gana
01:08:30En este caso, yo os lo dejo reflejado así para que veáis cómo podéis acabar lanzando tests manuales, pero en este caso también, como tenemos el MCP, nos permite ver de manera visual cómo la web se va modificando y vamos
01:08:42Trabajando sobre ella, le voy a decir, "Ey, venga, trabaja." ¿Y qué es lo último que le pedimos a la validación? ¿La especificación está cumplida? Sí, toda la especificación, todo lo que hemos visto, que hemos definido aquí, ya lo veis, lo ha marcado
01:08:55Vengo por aquí, intento lanzar también esto
01:08:58Bueno, pues vamos a probarlo
01:09:00Lanzo la fase de validación
01:09:02Empezaría a hacer pruebas, empezaría a generar pruebas, a lanzar pruebas y a hacer todo lo necesario para acabar decidiendo si la especificación está cumplida
01:09:11Si no está cumplida, vamos a volver a iterar para seguir mejorando
01:09:15Veis que aquí, en toda esta fase, vamos tan, tan rápido, que es cierto que igual cuesta un poquito verlo, pero bueno, todo esto lo podéis ver con calma, vais a poder
01:09:22Repasar cada uno de los prompts
01:09:24Se han generado tests, ha pasado todos los tests y ahora va a ejecutar las Chrome Web Tools, es decir, va a terminar lanzando la web por su cuenta para hacer modificaciones, probar cambios y ver que todo se está ejecutando correctamente
01:09:35De hecho, quizás con un poco de suerte, incluso nos da tiempo a ver aquí cómo acaba lanzando esas puertas
01:09:41¿Qué pasaría en el momento en que ya hacemos la validación final? Entramos en el loop
01:09:46¿Qué es eso del loop? Seguir iterando
01:09:49Hemos hecho SDD con una feature, y ahora viene otra tarea
01:09:54Queremos implementar otra nueva tarea sin ningún problema
01:09:56Volvemos a hacerla
01:09:58Otra nueva tarea
01:09:59Volvemos a hacerla
01:10:01Y ese loop, en realidad, este flujo de trabajo, lo podemos terminar
01:10:02repitiendo las veces que nos dé la gana
01:10:05¿Qué os propongo yo ahora mismo? Y ya una vez os llegue los apuntes, que entiendo que será mucho más fácil seguir todo esto, bueno, os quería proponer un par de ejercicios
01:10:15Fijaos que he lanzado un montón de prompts
01:10:19¿Qué está pasando? ¿Qué os he enseñado al principio de esta lección? Que en el momento en que detectamos que hay prompts que se empiezan a repetir, que se pueden acabar transformando en comandos o en skills
01:10:32Todos estos prompts que yo he ido copiando y pegando, los podríamos acabar añadiendo a unas skills, a unos comandos para que tú dices, "Bueno, quiero hacer fase de implementación." Lanzas la skill o el comando de implementación, que quiero hacer ahora la fase otra
01:10:48En lugar de validación, lanzar la skill
01:10:50Entonces, yo os propongo el ejercicio de que paséis a comandos cada una de las fases que hemos visto
01:10:59Aún así, ya os adelanto que los apuntes os van a llegar con todos estos comandos creados por mí, para que así ya tengáis esa utilidad para hacer SDD en base a comandos y no tengáis que estar haciendo el trabajo de copiar cada uno de ellos
01:11:13¿Por qué? Porque está bien entender cómo funcionan cada una de estas bases, pero es cierto que podemos ver complicaciones o podemos ir, bueno, detectando, como lento este proceso de implementar SEDD paso a paso
01:11:25Y ya, una vez tengáis eso, yo lo que os pediría como ejercicio es que implementéis una nueva especificación haciendo SD, porque a programar se aprende
01:11:33Programando, y la única forma de entender esto bien es justamente haciéndolo vosotros a mano
01:11:38Con esto llegamos a que nuestra cebolla del nuevo programador se va completando
01:11:43Ya hemos llegado a todo lo que hemos visto hasta la capa cuatro
01:11:49Hemos pasado por la tres, en este caso, todo ese jarness avanzado donde hemos entendido cómo darle más capacidades
01:11:55Y ahora hemos finalizado con el Development Driven by Specification, con cómo desarrollar diferentes funcionalidades de manera profesional
01:12:03¿Qué viene en la próxima clase? De verdad, por favor, atiéndanme, porque lo voy a decir muy en serio
01:12:10Os va a explotar la cabeza
01:12:13Imagínate todo lo que hemos visto durante estos dos días, que ahora, de repente, vosotros paséis a tener..
01:12:18Vuestro propio ejército de agentes que se coordinan entre sí y que son capaces de utilizar todas estas cosas, las habilidades, los MCPs, los comandos, la memoria, los agentes, el SLD de manera automática y no solo gracias a un agente, sino dos, tres, cuatro, lo que os dé la gana, coordinados entre sí, trabajando como vuestro pequeño ejército
01:12:43¿Cómo creo que se entiende mejor esto? Bueno, yo creo que la mejor forma de representarlo, y creo que lo vais a entender mejor, es así
01:12:51Tenéis que ser Gandalf que va a llegar con el ejército de los rohirrims, y esos rohirrims van a acabar siendo vuestro ejército de agentes
01:12:59Así que de verdad, mañana, en el tercer día, al amanecer, os espero aquí en YouTube
01:13:04Bueno, mañana sí, tercer día del
01:13:09Curso, pero no al alba, sino a la misma hora de siempre
01:13:14De verdad, muchísimas gracias
01:13:16Recordad que os llegarán mañana los apuntes y nos vemos en la última clase con multiagentes, con un montón de bucles y con orquestación para ya convertirnos en el programador definitivo
01:13:24Muchísimas gracias, nos vemos mañana
01:13:25Chao, ciao, ciao, ciao, ciao.