00:00:00[SIN AUDIO]
00:00:30[SIN AUDIO]
00:01:00Hola a todos, ¿cómo les va?
00:01:25Bienvenidos a otra sesión de la comunidad de Vercel.
00:01:29Estamos muy emocionados de tenerlos aquí.
00:01:32Si es su primera vez en una de nuestras sesiones,
00:01:35hola, soy Pauline Navas, del equipo de comunidad de Vercel.
00:01:40Quizás me hayan visto por los espacios de la comunidad.
00:01:44Así que este es siempre un momento muy divertido para
00:01:46mí para hablar con todos ustedes en vivo y conectar.
00:01:51Ya es genial ver a algunos de ustedes sintonizando.
00:01:56Si es la primera vez que se unen a una sesión y
00:02:00no pueden ver el chat y quieren hacer preguntas,
00:02:02lo cual recomiendo mucho para esta sesión, deberían hacerlo.
00:02:06Siéntanse libres de unirse a nuestra plataforma en community.vercel.com.
00:02:12Y luego hagan clic en "Asistiré" para este evento.
00:02:15Y así, podrán usar el chat y preguntar durante la sesión.
00:02:20Si nos ven por X o cualquier otra plataforma, también pueden usarlas.
00:02:25Para la sesión de hoy, estoy súper emocionada.
00:02:28No sé si se nota, pero vamos a profundizar en algo que
00:02:32está cambiando la forma en que trabajamos con agentes de IA.
00:02:36Se trata de las "skills" o habilidades para Claude Code.
00:02:39Si alguna vez desearon que sus agentes de IA supieran cómo
00:02:44actualizar a Next.js correctamente o seguir sus patrones de código.
00:02:49Eso es lo que estas habilidades permiten.
00:02:51Así que me emociona mucho presentar a John,
00:02:56del equipo de AI DX aquí en Vercel, para este taller.
00:03:02Hola, John.
00:03:04>> Hola, Pauline.
00:03:05Hola a todos.
00:03:05Gracias por venir.
00:03:07>> Qué gusto verte.
00:03:09Muy bien, comencemos.
00:03:12>> Hagámoslo.
00:03:13Bien, hablemos de las habilidades.
00:03:15Parece que llevan siglos, pero tendrán unas dos semanas, ¿quién sabe?
00:03:20Voy a ir pasando esta presentación hablando de las habilidades.
00:03:24Mostraré algunas y, por favor, pregunten e interrúmpanme,
00:03:28porque me encanta hablar de este tema.
00:03:31Primero, hablaremos sobre cómo crearlas y
00:03:35cómo publicarlas.
00:03:36Esta presentación fue creada con una habilidad llamada ReMotion Geist.
00:03:42Usa parte de nuestro lenguaje de diseño de Vercel con ReMotion
00:03:46para armar esto, y se los mostraré al final.
00:03:48Pero por ahora, solo repasaré algunos videos.
00:03:51Históricamente, hablamos de ingeniería de prompts
00:03:55durante mucho tiempo cuando los modelos no eran tan buenos.
00:03:58Todos tenían que perfeccionar sus prompts y
00:04:00pensaban que la ingeniería de prompts sería una carrera.
00:04:03Ahora estamos pasando a la ingeniería de contexto,
00:04:08permitiendo que estos archivos Markdown se carguen después.
00:04:13Ahora hay una separación entre el prompt inicial y
00:04:17estas piezas de contexto que se pueden cargar más tarde.
00:04:19A eso lo llamaremos "skills" o habilidades.
00:04:22Las habilidades comenzaron con Anthropic.
00:04:25Necesitaban enseñar tareas específicas a Claude Code porque
00:04:30cada modelo empieza de cero, sin memoria previa.
00:04:33Es como un bebé recién nacido que no tiene habilidades.
00:04:37Solo tiene este conocimiento inherente volcado en su cabeza.
00:04:42Así que empiezan sin nada.
00:04:44Anthropic pensó: "¿cómo vamos a solucionar esto?".
00:04:48Bueno, se soluciona con Markdown, porque hoy en día todo se
00:04:51soluciona con Markdown, y así nacieron las habilidades.
00:04:55Desde aquí, ahora puedes empaquetar estas habilidades.
00:04:58Son archivos Markdown que puedes compartir con tus equipos
00:05:04y puedes empaquetar tus propios flujos de trabajo internos.
00:05:07Puedes empaquetarlos y compartirlos en tus repositorios de GitHub.
00:05:12Y hemos lanzado herramientas personalizadas.
00:05:15Déjenme mostrarles un navegador rápidamente
00:05:22para gestionar las habilidades de la comunidad en skills.sh.
00:05:27Es un lugar donde pueden entrar y buscar
00:05:29habilidades de la comunidad y ver las más usadas.
00:05:32Como siempre, asegúrense de que sea una fuente confiable
00:05:36o de alguien de su propio equipo.
00:05:38Para que lo que usen esté alineado con sus objetivos.
00:05:42Hablaremos más sobre cómo usar esto más adelante.
00:05:45Pero es un gran sitio para explorar todo el ecosistema
00:05:48y ver qué habilidades están disponibles.
00:05:50A partir de aquí, algunos detalles de cómo se suele enseñar
00:05:56este taller, y pasaré al siguiente video sobre esto.
00:06:00Tablas rasas. Las tablas rasas significan que,
00:06:07de nuevo, el bebé nace y su agente, una vez que arranca,
00:06:11ya saben, el agente es un modelo ejecutado por un agente.
00:06:14Déjenme agrandar esto un poco.
00:06:16El agente conoce lo básico de React, TypeScript, CSS y SQL.
00:06:23Pero lo que no conoce son sus reglas, sus patrones,
00:06:28su sistema y su estructura particular.
00:06:30Así que pueden combinar sus cosas personalizadas
00:06:35con lo que el modelo ya sabe y llenar ese vacío de conocimiento.
00:06:40Aportan ese contexto y las habilidades se cargan para que
00:06:42pueda hacer las cosas exactamente como ustedes quieren.
00:06:45Conocen el lenguaje: TypeScript, React...
00:06:51Pero no conocen el "dialecto" de ese lenguaje que ustedes usan.
00:06:53Es una excelente forma de pensarlo.
00:06:54Bien, ¿alguna pregunta hasta ahora?
00:07:01¿Me he saltado alguna?
00:07:03No hay preguntas por ahora.
00:07:06Solo mucha emoción en el chat.
00:07:08Así que continúa, John.
00:07:09Vamos allá.
00:07:11Me gusta pensar que este es el "momento NPM" de las habilidades.
00:07:17NPM es el gestor de paquetes con el que casi todos estamos familiarizados.
00:07:23Y los gestores de paquetes tienen recursos de la comunidad
00:07:27que puedes usar para facilitar el funcionamiento de tus productos.
00:07:30Si ven a las habilidades y a skills.sh como un gestor de paquetes,
00:07:35pueden instalar estas capacidades en sus agentes.
00:07:39Igual que instalarían una librería,
00:07:41pueden usar "npx skills add" para añadir conocimiento a su proyecto.
00:07:45Antes, la ingeniería de prompts consistía en decir en el
00:07:52archivo claude.md o agents.md: "haz siempre esto o aquello".
00:07:55"Usa esta librería, revisa Jira", y así sucesivamente.
00:07:59Pero ahora tenemos estas habilidades que podemos añadir,
00:08:04que capturan todo eso y lo integran en nuestros proyectos.
00:08:06Así que son permanentes.
00:08:08Podemos compartirlas a nivel de usuario o de proyecto.
00:08:11Y pueden ser independientes de proyectos individuales.
00:08:14Ya no hace falta copiar y pegar tanto.
00:08:17Podemos automatizar mucho de esto para que, al empezar un proyecto,
00:08:21puedas añadir todas las habilidades que necesites.
00:08:23De nuevo, dejamos de preocuparnos tanto
00:08:28por ir construyendo esos prompts.
00:08:30Muy bien.
00:08:34Se trata de capacidades permanentes para todo el equipo.
00:08:38Y si no han sufrido intentando gestionar un archivo
00:08:43agents.md o claude.md en su proyecto,
00:08:47con Pull Requests y todo lo demás para esos archivos Markdown,
00:08:50esto también soluciona ese problema.
00:08:53Me refiero a la diferencia entre un solo desarrollador y todo un equipo.
00:08:58Esto también aborda algo que podríamos llamar
00:09:03pasivo frente a activo.
00:09:05Pasivo significa que estas habilidades no necesitan cargarse
00:09:12hasta que realmente se requieren.
00:09:15Si observamos los resultados en el agents.md,
00:09:22un archivo Markdown es como el prompt de sistema,
00:09:25lo primero que se lee.
00:09:26Siempre se lee.
00:09:28El agente tiene que leerlo obligatoriamente.
00:09:31En las pruebas se ve que si metes
00:09:35un montón de contexto ahí
00:09:38y llenas la ventana de contexto,
00:09:41el agente será mucho mejor siguiendo esas reglas,
00:09:46como usar siempre TypeScript, Tailwind y demás.
00:09:50Estas habilidades se vuelven más activas.
00:09:53Y pueden invocarlas manualmente
00:09:57o el agente puede cargarlas de forma diferida (lazy load)
00:10:00y traer justo lo que necesita en el momento justo.
00:10:04Como desplegar en Vercel o crear la base de datos.
00:10:08De nuevo, son las reglas frente a las herramientas,
00:10:13piensen en las habilidades como herramientas.
00:10:15Siempre se necesitan ambas cosas.
00:10:18- John, acaba de surgir una pregunta
00:10:21que creo que viene bien para esta parte.
00:10:24¿Cómo decidimos si lanzamos algo como un MCP
00:10:28o como una habilidad?
00:10:30- Yo diría que, por defecto,
00:10:33hay varias capas aquí, si piensas en:
00:10:37"solo quiero tener algo en pantalla".
00:10:38Así que voy a poner eso ahí.
00:10:39- Sí, claro.
00:10:40- Por defecto, intenta solucionar el problema con Markdown.
00:10:44Si Markdown no es suficiente, usa una CLI.
00:10:47Si una CLI no basta, resuélvelo con un MCP.
00:10:51Esos son los niveles de abstracción.
00:10:53La clave de la simplicidad es que, si puedes
00:10:58solucionar el problema con Markdown,
00:10:59eso sirve para cualquier herramienta impulsada por IA.
00:11:01Se puede ver en la forma en que
00:11:05Anthropic diseñó Claude Code,
00:11:08y otros están siguiendo el ejemplo con las habilidades,
00:11:11con comandos y subagentes.
00:11:13Todos son archivos Markdown con front matter
00:11:15y configuración, y eso suele ser suficiente.
00:11:19Esos archivos definen las herramientas
00:11:21que necesitan y las que tienen permiso de llamar,
00:11:24así como las restricciones. Puede llevar tiempo
00:11:29completar todos esos pasos de configuración.
00:11:31Pero si te encuentras en un escenario de control estricto
00:11:37sobre los datos exactos y los tipos de datos
00:11:40que se pasan de un lado a otro
00:11:42entre el agente y el MCP,
00:11:43entonces los MCP son una buena solución.
00:11:46Pero, en general, la tendencia actual
00:11:50es ir hacia las CLI y los archivos Markdown,
00:11:54usando MCP solo cuando es absolutamente necesario.
00:11:59- Sí, eso es lo que también he visto
00:12:04en todas las discusiones en línea.
00:12:06Nos llega otra pregunta desde X.
00:12:10"Esto es increíble. En un futuro cercano,
00:12:13¿ves a las habilidades soportando el descubrimiento entre agentes?".
00:12:17Sería genial ver a un agente decidiendo
00:12:20instalar una habilidad. Buena pregunta.
00:12:22- Me encanta esa pregunta. La interacción
00:12:27entre agentes es un patrón muy infrautilizado hoy en día.
00:12:32Totalmente. Me imagino un archivo Markdown
00:12:39que actúe como descriptor de un agente que se carga.
00:12:42Claude ya soporta esto mediante subagentes,
00:12:46y justo hoy es divertido hablar de
00:12:49las funciones de equipos que acaban de lanzar,
00:12:54donde pueden generar un grupo de subagentes
00:12:59que luego informan al líder del equipo.
00:13:02Ahora los llaman equipos.
00:13:04Y esos equipos básicamente pueden ser gestionados
00:13:10por ese único líder de equipo, y puedes entrar a supervisar
00:13:12qué es lo que están haciendo los agentes.
00:13:14Y esos agentes tienen definiciones de lo que hacen...
00:13:18Me pregunto si podría encontrar rápidamente el documento sobre eso.
00:13:23—Mientras John busca eso,
00:13:30si están en el chat y quieren hacer alguna pregunta,
00:13:34ahora es el momento; siéntanse libres de ponerlas todas en el chat
00:13:37y las iremos respondiendo durante la sesión.
00:13:40—¿Dónde puedo...? Probablemente pueda publicar esto
00:13:42al menos en el chat de Twitter.
00:13:47Así que aquí hay...
00:13:51en esta página verán la forma en que se define un subagente,
00:13:58y pueden ver que tienen una sección de "front matter",
00:14:01y en esa sección de "front matter"
00:14:03puedes definir las habilidades a las que ese subagente tiene acceso.
00:14:08Así que, si quieres crear un agente, en este caso,
00:14:13un subagente que tenga una lista de habilidades,
00:14:17podrías hacerlo mediante la habilidad designada.
00:14:20Y todavía no hemos...
00:14:22las siguientes diapositivas tratan sobre la anatomía de las habilidades,
00:14:26pero las habilidades son esencialmente solo nombres.
00:14:28Y así podrías tener un subagente
00:14:29con un conjunto específico de habilidades,
00:14:31un conjunto de habilidades muy particular,
00:14:34y podrías hacer que ese subagente se encargue de una tarea.
00:14:38Lo que está pasando con la función de Equipos lanzada hoy
00:14:43es que ellos pueden...
00:14:45Claude Code puede básicamente construir su propio equipo
00:14:48y crear sus propios agentes
00:14:49para abordar la tarea lo mejor posible.
00:14:53Pero puedes definir subagentes personalizados con habilidades a medida
00:14:56si quieres decir:
00:14:57"Por favor, construye un equipo usando estos subagentes".
00:15:00Ahora bien, esto no es exactamente comunicación entre agentes.
00:15:05Esa es una discusión aún mayor sobre la arquitectura
00:15:08de la comunicación inter-agentes,
00:15:11lo cual queda un poco fuera del alcance de esto.
00:15:12Pero definitivamente veo que este patrón
00:15:14de cómo estamos definiendo a los subagentes
00:15:17está siendo adoptado en la forma en que definimos a los agentes
00:15:21y la forma en que se comunicarán entre sí.
00:15:23Sobre cómo expones a un agente,
00:15:24me imagino que sería un archivo Markdown
00:15:26que diga: "Esto es de lo que soy capaz",
00:15:28como un patrón de "méteme a jugar, entrenador",
00:15:30de "tengo estas habilidades, puedo encestar triples,
00:15:32puedo rebotar, ponme a jugar".
00:15:34Y así podrían descubrirse unos a otros de esa manera.
00:15:39Y me imagino que tendremos un skills.sh para...
00:15:43algo así como un gestor de paquetes para habilidades.
00:15:47Tendremos un gestor de paquetes para agentes
00:15:49y archivos Markdown de agentes.
00:15:51Eso es algo que simplemente sucederá.
00:15:54Quiero decir, estoy seguro de que ya ha pasado
00:15:57y alguien ha publicado algo,
00:15:58pero aún no ha llegado al público general.
00:16:00—Eso tiene mucho sentido.
00:16:03Gracias, gracias.
00:16:04Si tienen más preguntas, amigos,
00:16:06pónganlas en el chat.
00:16:08Mientras tanto, ¿quieres continuar, John?
00:16:10—Sí, por supuesto.
00:16:12Las habilidades son solo una carpeta; sin servidores ni hosting.
00:16:15Y la habilidad está dentro de un directorio,
00:16:20le pones un nombre y luego el nombre de la habilidad
00:16:24o el archivo de la habilidad tiene que llamarse skill.md.
00:16:28Esto permite que los agentes, en sus patrones de descubrimiento,
00:16:31puedan encontrarlas.
00:16:32Es solo una convención establecida para que las herramientas
00:16:35funcionen mejor con ellos.
00:16:36Hace que sea muy fácil crear gestores de paquetes,
00:16:39así como la organización y todo lo demás.
00:16:41Y la habilidad también puede llevar consigo...
00:16:45puede tener scripts integrados, archivos de referencia,
00:16:49demás; todas estas funciones donde la habilidad
00:16:53puede acceder a otras cosas referenciadas dentro de ella.
00:16:56Así que la habilidad, verán que tendría un "front matter".
00:17:01Por defecto, necesita un nombre y una descripción.
00:17:04Y el nombre sería... debe coincidir con el nombre de la...
00:17:08si miras la estructura.
00:17:10Por ejemplo, si creáramos una llamada "my-skill",
00:17:12la nombrarías "my-skill" aquí.
00:17:17Y luego la descripción es fundamental
00:17:20porque le indica al agente
00:17:23cuándo se utilizará esta habilidad.
00:17:24El agente va a decir...
00:17:26va a estar trabajando en la tarea que le hayas dado.
00:17:29Y si en algún momento ve que,
00:17:31"oh, necesito algo que aplique
00:17:33los estándares de ventas", entonces cargará esta habilidad.
00:17:38Usará la herramienta de carga de habilidades y la activará.
00:17:41Así que estas descripciones se vuelven críticas.
00:17:42La forma en que las escribes,
00:17:43si vas a usar las habilidades de manera automática (lazy),
00:17:46de lo contrario, puedes invocar habilidades directamente con una barra
00:17:50y tratarlas como comandos.
00:17:52Creo que tengo una diapositiva sobre comandos frente a habilidades,
00:17:55pero esencialmente, históricamente eran dos cosas separadas
00:18:00y ahora ambas se han fusionado en una sola.
00:18:03Las habilidades solían cargarse solo bajo demanda,
00:18:04pero ahora ambas pueden ser invocadas por los usuarios con una barra
00:18:08o cargadas automáticamente por el agente.
00:18:12Y con eso, solo me refiero a que, si pulsas la barra aquí,
00:18:17puedes ver una lista de habilidades disponibles,
00:18:19que puedes invocar manualmente si quieres,
00:18:22o puedes esperar a que el agente las invoque cuando las necesite.
00:18:27Así que, a partir de aquí...
00:18:32—Creo que vas a profundizar en esto, John,
00:18:39pero personalmente me encantaría escuchar un ejemplo concreto.
00:18:43¿Cuál es una habilidad pequeña y bien delimitada que recomendarías
00:18:47que todos construyan primero solo para entender este modelo?
00:18:52—Esa es una... déjenme darles el que creo
00:18:55que es uno de los mejores ejemplos ahora mismo.
00:18:57Básicamente, en Vercel, algunos de los problemas de habilidades
00:19:03con los que nos topamos es que lanzamos productos
00:19:07a un ritmo muy, muy rápido.
00:19:12Los agentes y modelos tienen fechas de corte de conocimiento,
00:19:15que son de hace unos meses, o incluso un año o más.
00:19:19Y por eso, por defecto, si...
00:19:24si le das una tarea al agente, podría usar Next.js 14,
00:19:30cuando eso está ya varias versiones desactualizado.
00:19:33Podría usar el AI SDK, que,
00:19:35como saben, recientemente depreció funciones como "generate object",
00:19:39que ahora es parte de "generate text"
00:19:41para que la API sea más estándar y fácil de seguir.
00:19:45Y entonces te encuentras con estos problemas donde
00:19:50estará usando una versión antigua
00:19:51mientras tú intentas hacer algo
00:19:53y estás leyendo la documentación,
00:19:54y las cosas están desincronizadas y obsoletas.
00:19:56Y el proyecto simplemente se estanca por un tiempo,
00:20:00intentando descifrar por qué tú y el agente
00:20:03no están alineados en lo que se necesita.
00:20:05Así que para alinearte con el agente,
00:20:08podrías crear una habilidad que simplemente diga:
00:20:11"usa esta versión de React, usa esta versión del AI SDK,
00:20:16usa esta versión de Workflow".
00:20:18Y luego puedes incluir referencias
00:20:19de dónde encontrar la información sobre ellas.
00:20:22Por ejemplo, una habilidad que construí para Vercel,
00:20:28déjenme buscarla.
00:20:33La habilidad de Vercel Workflow es esta
00:20:40que publiqué hace unos días.
00:20:43Y la forma en que lo hacemos
00:20:46es que decimos, esencialmente, porque nos preocupan mucho
00:20:49los números de versión,
00:20:50comenzamos a publicar documentación con nuestros paquetes de NPM
00:20:54y le decimos: "tu conocimiento de Workflow está,
00:20:58tu conocimiento de Workflow está obsoleto".
00:20:59Simplemente lo sabemos porque este Workflow se actualiza
00:21:02casi a diario mientras trabajamos hacia la versión estable (GA).
00:21:06Pero lo que podemos hacer es decirle:
00:21:10"¿Sabes qué? Hemos adjuntado la documentación".
00:21:11Así que cada vez que necesites consultar Workflow,
00:21:13ve a revisar los documentos que adjuntamos
00:21:16y busca la versión más reciente.
00:21:18Y esto ha permitido que, cada vez que inicio un Workflow,
00:21:22no tenga que preocuparme de que encuentre información obsoleta.
00:21:25Siempre encontrará la información que viene
00:21:27con el paquete de NPM para que esté sincronizada
00:21:32y alineada con la versión misma.
00:21:34Así que esta es... toda la habilidad es básicamente
00:21:38"ve a leer el manual" con algunas mejores prácticas esenciales
00:21:42y referencias rápidas para esto.
00:21:44Estas son habilidades que abordan los problemas
00:21:48de los agentes que tienen fechas de corte de conocimiento
00:21:53y que se topan con problemas de números de versión y demás.
00:21:57Una habilidad que podrías escribir para ti mismo es,
00:22:01yo diría que si usas la habilidad...
00:22:07bueno, voy a demostrar una habilidad llamada "create skill".
00:22:11Si buscas en skills.sh por "create skill",
00:22:14"create skill", no sé si...
00:22:23si tomas una como "create skill",
00:22:28probablemente la del equipo de Claude Code.
00:22:33Veamos, Claude... creo que publicamos la de ellos.
00:22:39Lo siento, esto no estaba planeado de antemano.
00:22:42—Sí, puedes... mientras buscas esa.
00:22:46Ah, increíble, adelante.
00:22:47—Debí haber estado pensando en Anthropic
00:22:49en lugar de Claude Code.
00:22:50Sí, si traes una de sus habilidades de creación
00:22:54o uno de sus patrones, puedes decir "crear habilidad"
00:22:58y luego, ¡vaya!, puedes decir "crear habilidad" y escribir:
00:23:02"mira mi estilo de escritura
00:23:09en el archivo readme.md y crea una habilidad
00:23:12que siempre siga este estilo de escritura".
00:23:14Y entonces esto tomará lo que sea que esté en el readme
00:23:19y creará una habilidad que es básicamente
00:23:21como tu estilo de escritura personalizado,
00:23:23de modo que de ahí en adelante podrías invocar la habilidad
00:23:26diciendo, por ejemplo, "estilo de escritura de John" o lo que sea.
00:23:28Y podrías alimentarla con toneladas de documentación,
00:23:31o URLs de tus publicaciones de blog,
00:23:33o tus propias publicaciones, o lenguaje de clientes, o lo que sea,
00:23:37y simplemente introducir eso.
00:23:38Creo que esos son siempre un buen punto de partida:
00:23:40¿qué tengo ya
00:23:42que quiera ser capaz de reproducir de nuevo?
00:23:43Como algo que usas constantemente
00:23:46y que sabes que vas a usar mucho más.
00:23:50Así que suele ser como mensajes a clientes,
00:23:53blogs, contenido y materiales
00:23:56que ya has producido en el pasado
00:23:57y de los que quieres generar más.
00:23:59Así que sí, es un excelente primer estilo a abordar.
00:24:04- Ese es uno muy bueno.
00:24:05Definitivamente voy a probarlo.
00:24:06Solo quería leer algunos comentarios
00:24:08aquí en el chat.
00:24:10Dave dijo que creamos habilidades
00:24:14para permitir que un fundador de una startup que no programaba hace 10 años
00:24:17pudiera contribuir al código
00:24:19sin saltarse los límites arquitectónicos
00:24:23en una base de código nueva.
00:24:24Me pareció un uso bastante bueno de las habilidades,
00:24:27ayudando a personas no técnicas o novatas en la programación
00:24:30a poder participar en el acto de programar
00:24:32sin comprometer los estándares de calidad, lo cual es genial.
00:24:38Y también quería mencionar que Dave dijo antes:
00:24:42"Me hago eco de lo que dice John",
00:24:45como herramientas de uso común hoy en día.
00:24:47Sí, las únicas herramientas MCP que usa son las Chrome DevTools,
00:24:52MCP, una para interactuar con herramientas de gestión de proyectos
00:24:56como Linear o Jira, y el trabajo con bases de datos.
00:24:59Así que eso refuerza todo lo que dijiste antes.
00:25:02Antes de seguir, también tenemos una pregunta en el chat
00:25:07sobre qué piensas de que los archivos agents.md superen a las habilidades
00:25:12en nuestra publicación de blog sobre evaluaciones de agentes.
00:25:17No sé si vas a profundizar en eso
00:25:19en algún momento de tu presentación.
00:25:21Sé que nos hemos ido por varias ramas aquí,
00:25:25¿pero quieres revisarlo ahora?
00:25:27- Sí, claro.
00:25:28Evaluar modelos y agentes
00:25:34es algo terriblemente difícil de hacer.
00:25:38Porque a menudo, al escribir evaluaciones para ellos,
00:25:42los pruebas en un proyecto nuevo y vacío
00:25:46que no está cargando ningún contexto.
00:25:49Y le das este escenario específico,
00:25:51como "con este proyecto vacío, intenta usar Next.js" o lo que sea.
00:25:56Y si escribes eso como una evaluación,
00:25:59pero no tienes en cuenta que,
00:26:03por ejemplo, hoy salió Opus 4.6,
00:26:05o cualquier modelo que estés usando,
00:26:07o el proyecto y todo este contexto extra,
00:26:10o el modelo, el agente o el ejecutor.
00:26:13Cloud Code va a tener un prompt de sistema diferente
00:26:16y Cursor va a tener otro distinto.
00:26:17Hay demasiadas variables,
00:26:21y los modelos en sí son,
00:26:24de por sí, no deterministas,
00:26:26así que probarlos es algo muy, muy difícil.
00:26:31Dicho esto, agents.md frente a habilidades
00:26:37es forzar el contexto frente a la carga diferida del mismo.
00:26:42Y si reduces el contenido del blog a:
00:26:47¿Es mejor forzar el contexto que cargarlo bajo demanda?
00:26:51La respuesta será sí,
00:26:53porque lo va a tratar como
00:26:57las instrucciones iniciales, lo más importante
00:27:00al inicio del ciclo de vida del agente.
00:27:03Simplemente le va a enseñar:
00:27:08"En esto es en lo que estamos trabajando".
00:27:10"Esto es lo mejor que podemos hacer".
00:27:12De hecho, tengo algo que aborda eso
00:27:14y que pensaba mostrar al final,
00:27:16donde puedes preparar o precargar habilidades también.
00:27:20Así que es simplemente una de esas cosas
00:27:25sobre cómo funcionan los modelos.
00:27:29Y espero que la publicación del blog no se interprete
00:27:33de otra manera; no significa que las habilidades sean malas.
00:27:35Solo significa que si necesitas absolutamente que las instrucciones
00:27:39se sigan siempre, entonces usar el archivo agents.md
00:27:42es la forma en que yo lo leería.
00:27:44Aunque no he leído el blog en una semana.
00:27:48- Sí, eso tiene mucho sentido.
00:27:50Sí, genial.
00:27:51Estupendo, recordatorio para todos en la comunidad:
00:27:53si tienen más preguntas, escríbanlas.
00:27:56Si no, John, continúa.
00:27:57- Vale.
00:28:01Sí, un archivo de habilidad es solo Markdown.
00:28:04Y pueden ver este ejemplo de instrucciones:
00:28:06"Al revisar código React, solo servidor, optimiza esto",
00:28:09y pones simplemente una lista de cosas ahí
00:28:12que quieres que sucedan.
00:28:14Y luego puedes incluir scripts para que los use de referencia
00:28:19o cosas que quieras poder invocar
00:28:21y tener cualquier tipo de paquete, un conjunto de...
00:28:25un conjunto de cosas que quieres que vea.
00:28:30Bien.
00:28:32Así que sí, las habilidades son como añadir un agente,
00:28:37como añadir a un ingeniero senior.
00:28:38Muy bien, sigamos adelante.
00:28:42Casos de uso.
00:28:46Pongamos esto en pantalla completa.
00:28:49Bien, algunos de los patrones,
00:28:52las mejores prácticas de React es uno de los...
00:28:57probablemente la habilidad más descargada
00:29:00en el gestor de paquetes de habilidades.
00:29:02Y consiste en reforzar
00:29:08cuáles son las mejores prácticas,
00:29:09incluso más allá de lo que el modelo ya conoce por su entrenamiento.
00:29:12Porque el modelo se entrenó con el código de todo el mundo
00:29:14y tú quieres que siga tus patrones específicos.
00:29:18Vamos por aquí.
00:29:21Automatización de flujos de trabajo.
00:29:26Si alguna vez quieres empaquetar algo
00:29:27como un archivo zip o lo que sea,
00:29:30es casi como un script en lenguaje natural.
00:29:34Suelo pensar en cualquier aplicación hoy en día.
00:29:40O bien se reduce a un script
00:29:44o se eleva a un agente,
00:29:47porque o bien necesitas ese resultado determinista
00:29:50donde la entrada siempre coincida con la salida,
00:29:53o necesitas un agente que sea capaz de resolver
00:29:56qué sucede si los datos no encajan del todo.
00:29:59Así que si quieres crear este tipo de automatización
00:30:02en lugar de un script donde pueda inteligentemente
00:30:07agrupar cosas... por ejemplo, si
00:30:10le dices a tu agente que haga un git commit y dice:
00:30:15"Vaya, noto que tienes un vídeo en este proyecto".
00:30:20"Voy a ignorarlo porque los vídeos son archivos binarios
00:30:25y no queremos añadirlos".
00:30:26Suele ser inteligente con esas cosas.
00:30:29Mientras que en un script, si lo escribieras tú,
00:30:30tendrías que tener en cuenta todos esos escenarios.
00:30:33Así que si quieres crear una automatización,
00:30:36puedes configurar esa cadena de eventos y él puede hacerlo.
00:30:41Y también las reglas de control, donde puedes decirle:
00:30:44"Por favor, busca instrucciones, busca guías,
00:30:49busca colores", integrando todas esas cosas.
00:30:53Y estas suelen ser buenas para cargar al principio
00:30:56para asegurar que tu agente no... bueno, hay subagentes,
00:31:00hay muchos escenarios avanzados para las reglas de control también.
00:31:02Eso probablemente sea para otro taller en otro momento.
00:31:07Bien, de nuevo, reforzando estándares,
00:31:12automatizando flujos y protegiendo tus sistemas.
00:31:17Muy bien, hagamos esto.
00:31:21Bien, saltémonos la parte en vivo por hoy.
00:31:30Y bien, hablemos de publicar.
00:31:37Publicar es básicamente subir el código a GitHub
00:31:46y luego cualquiera puede hacer referencia a tu repositorio
00:31:51y añadir tu habilidad.
00:31:52No necesitan buscar el enlace exacto.
00:31:56Como si miras en skills.sh para añadir habilidades,
00:32:00traigo esto para acá, verás que,
00:32:04si elegimos una al azar aquí de browser-use,
00:32:08te da un enlace para copiar y pegar e instalar una habilidad,
00:32:11pero podrías simplemente añadirla,
00:32:13no creo que tenga browser-use instalado.
00:32:14Así que voy a tomar esto solo para demostrarlo,
00:32:18abro una pestaña y lo haré de esta manera.
00:32:23Si no especifico manualmente la habilidad
00:32:29y solo le doy un repositorio de GitHub,
00:32:31irá a buscar las habilidades,
00:32:34usando "install skill package".
00:32:36Te preguntará qué editores quieres usar.
00:32:39Solo elegiré Cloud Code por ahora.
00:32:42Preguntará si lo quieres en tu proyecto o globalmente,
00:32:45diré proyecto, y SimLink permite que todos
00:32:49hagan referencia al mismo archivo, y luego proceder.
00:32:53Y pueden ver que aunque no especifiqué
00:32:55el archivo exacto, entró y encontró las habilidades de Claude.
00:33:00Browser-use tiene ese archivo skill.md.
00:33:09Así que, y si lo miramos, hagamos esto.
00:33:13Vaya, en la habilidad.
00:33:18Pueden ver lo que incluyeron aquí
00:33:22como su habilidad browser-use, comenzará
00:33:26con el Markdown arriba.
00:33:27Es una habilidad bastante larga.
00:33:32Con el nombre, la descripción, tiene herramientas permitidas,
00:33:35diciendo que es una habilidad que permite usar
00:33:39browser-use sin que el usuario tenga que aprobar.
00:33:42Así que le da permisos para que cualquier cosa
00:33:47relacionada con browser-use esté permitida.
00:33:49Si alguna vez invocas esta habilidad,
00:33:50no tienes que autorizar el uso de browser-use.
00:33:53Y luego muestra que, si no lo tienes instalado,
00:33:56le enseñaría cómo instalarlo,
00:33:58le enseña los conceptos básicos y cómo usar esta herramienta.
00:34:04Muy bien, volvamos a lo nuestro,
00:34:09y sí, todo lo que tienes que hacer es subir un archivo Markdown
00:34:15a un repositorio de GitHub y luego "impact skills add" podría añadirlo.
00:34:19De nuevo, asegúrense de instalar solo habilidades en las que confíen,
00:34:23pueden tratarlas
00:34:26como paquetes NPM o scripts; no querrías usar
00:34:31cualquier habilidad o paquete NPM aleatorio que encuentres,
00:34:35porque no sabes qué es lo que la gente está publicando.
00:34:38Asegúrense de confiar en ellas.
00:34:40Bien, y pueden usar repositorios privados
00:34:45y submódulos de git también.
00:34:48Y luego nuestro registro de la comunidad,
00:34:51que ya he mostrado un par de veces.
00:34:54Bien, genial.
00:34:55A partir de aquí, solo creas un archivo Markdown,
00:35:00lo publicas en un repositorio de GitHub
00:35:02y entonces podremos descubrirlo e instalarlo.
00:35:05Quiero mostrar cómo usar habilidades asombrosas.
00:35:09¿Alguna pregunta que abordar antes de que me sumerja en esto?
00:35:13— Sí, de hecho hay una pregunta de antes.
00:35:16¿Cuántos ejemplos de un paquete o librería completamente desconocido
00:35:21necesita ver un LLM, asumiendo que no aparece
00:35:26en los datos de entrenamiento del LLM,
00:35:28para usar el paquete o librería como una habilidad correctamente
00:35:31y obtener buenos resultados?
00:35:33— ¿Cuántos para obtener buenos resultados?
00:35:36Lo siento, ¿puedes leer la pregunta una vez más?
00:35:39— Sí, por supuesto.
00:35:40Básicamente, ¿cuántos ejemplos de un paquete
00:35:45o librería completamente desconocido necesita ver un LLM,
00:35:49asumiendo que no está en sus datos de entrenamiento, para usarlo?
00:35:53— O sea, ¿cuántos ejemplos deberías meter
00:35:55en la habilidad?
00:35:56— Sí, exacto.
00:35:57En esencia, una forma de pensarlo
00:36:00es que, en lugar de pensar en un número de ejemplos a incluir,
00:36:05puedes imaginarlo más como un libro
00:36:09con una tabla de contenidos, capítulos y demás,
00:36:12donde si el agente se topa con un escenario
00:36:14y tú le entregas algo como un manual de instrucciones,
00:36:17como si tuvieras el manual de tu coche o lo que sea,
00:36:21solo vas a querer pasar las páginas hasta llegar a,
00:36:26por ejemplo, si se enciende la luz del motor.
00:36:29No necesito leerme las páginas sobre los neumáticos
00:36:32ni nada de eso, ¿verdad?
00:36:33Así que, si estructuras tu habilidad de tal manera
00:36:36que esté la habilidad principal,
00:36:38que sería: "aquí tienes el manual de tu coche".
00:36:40Y luego, si necesitas aprender sobre la luz del motor
00:36:44—y eso que no soy mecánico— o sobre cómo funciona la guantera,
00:36:49entonces puedes ir a esa página específica
00:36:51y puede cargar otro archivo Markdown
00:36:53o cargar más información que sea específica para la tarea
00:36:57que se está realizando.
00:36:58Así que en lugar de intentar volcar un montón de ejemplos
00:37:01de cómo funciona un coche como una unidad completa,
00:37:06como una máquina entera, puedes desglosarlo.
00:37:11Y no me refiero a escribir esto manualmente línea por línea.
00:37:14Me refiero a que cuando le digas a tu agente que cree una habilidad,
00:37:18simplemente haz que la organice para que la habilidad enumere las cosas
00:37:23según cuándo vaya a necesitar los capítulos específicos
00:37:26de este libro.
00:37:27Del mismo modo, las habilidades pueden tener referencias
00:37:30y cargar contexto adicional según sea necesario
00:37:33en función de la tarea actual.
00:37:35Como ocurre con la mayoría de las librerías,
00:37:39si piensas en un paquete de NPM, en muchos de ellos
00:37:43solo terminas importando un par de métodos,
00:37:45porque no necesitas cada una de las funciones de fecha
00:37:48de una librería de fechas.
00:37:50No necesitas cada componente
00:37:52de una librería de componentes.
00:37:53Solo necesitas ejemplos de los específicos
00:37:57que se requieren para tu tarea concreta.
00:37:59Intenta pensarlo de esa forma, desglosándolo
00:38:03por necesidad, por tarea, por requisitos,
00:38:07en lugar de intentar meterle a la fuerza todo un código fuente
00:38:11al proyecto.
00:38:12— Tiene mucho sentido.
00:38:14Otra pregunta que tenemos es cómo se comprueba
00:38:17si el agente realmente ha aprendido un nuevo paquete
00:38:21a partir de la habilidad.
00:38:22¿Hay prompts sencillos o patrones de evaluación
00:38:25que recomiendes para validar eso antes de lanzarlo a un equipo?
00:38:29— El consenso general, y lo que yo mismo sostengo,
00:38:37es simplemente crear algo, usarlo,
00:38:40ver en qué falla e iterar.
00:38:43Esa es gran parte de la mentalidad de desarrollo de agentes:
00:38:49en lugar de pensar demasiado en cómo organizar
00:38:54y planificar cuál es la habilidad perfecta,
00:38:57haz algo y luego observa dónde falla
00:39:00para después iterar sobre ello.
00:39:01En cuanto a esto, he explorado formas de lanzar
00:39:08unas nueve sesiones diferentes, o incluso muchas más,
00:39:13de Claude Code, todas cargando habilidades distintas
00:39:15para ver cuáles funcionan mejor.
00:39:17Y luego obtienes todos estos ejemplos diferentes
00:39:19e intentas determinar cuáles se ven mejor
00:39:24a ojo humano,
00:39:26o haciendo que Claude evalúe sus propios resultados.
00:39:29Pero eso se convierte en una tarea casi imposible ahora mismo.
00:39:34Básicamente, a medida que usas la habilidad,
00:39:37no es más que un archivo Markdown.
00:39:39Simplemente haz que tu equipo entre y lo actualice
00:39:40o pídele al agente que lo haga.
00:39:43Lo que puedes hacer al final de cualquier conversación
00:39:46es decir, si algo falla en algún momento:
00:39:49"Por favor, actualiza la habilidad basándote en esta conversación",
00:39:54o algo por el estilo.
00:39:56Y el agente podrá ir a buscar el archivo Markdown,
00:40:00actualizarlo y luego subir los cambios.
00:40:02Esa es simplemente la forma en que estamos trabajando
00:40:08con ello en este momento.
00:40:09Obviamente hay cosas como los números de versión
00:40:13y otros detalles que generan más problemas añadidos.
00:40:16Pero estamos en un punto en el que los modelos
00:40:19están mejorando a la hora de cargar habilidades.
00:40:21No sé cuáles son las métricas comparativas
00:40:24de Opus 4.6 contra 4.5, o GPT 5.3 contra 5.2 para habilidades.
00:40:29Pero apuesto a que son mejores ahora
00:40:33de lo que eran esta misma mañana.
00:40:35Así que es uno de esos problemas
00:40:40donde pensamos: "Oh, tengo que hacer que esto sea perfecto".
00:40:42Y te pasas un par de semanas en ello
00:40:44y finalmente lo lanzas.
00:40:46Y para entonces los modelos han cambiado cinco veces
00:40:48desde que empezaste la tarea.
00:40:49Es mejor lanzar e iterar
00:40:52que intentar sacar algo perfecto ahí fuera,
00:40:56es el mejor consejo que puedo dar.
00:40:58— Sí, iterar hacia la excelencia.
00:41:00¿No es cierto, John?
00:41:01— I.H.E.
00:41:02— Sí, I.H.E.
00:41:04Solo una pregunta más antes de dejarte continuar con esto.
00:41:08¿Has visto algún punto de rendimientos decrecientes
00:41:10donde añadir más ejemplos a una habilidad
00:41:13deja de mejorar el comportamiento o incluso confunde al modelo?
00:41:17— No lo he visto.
00:41:23Yo no pongo demasiada información en mis archivos de habilidad.
00:41:27La propia habilidad de "crear habilidad" que uso hace mucha separación.
00:41:33Tengo que buscar exactamente cuál es,
00:41:35porque he estado usando la de otra persona.
00:41:37Déjame buscarlo fuera de cámara.
00:41:40Esto podría ser algo que,
00:41:42porque entra en archivos de configuración que...
00:41:45— Sí, deja de compartir pantalla
00:41:47y la volveremos a poner cuando estés listo.
00:41:49— Vale, déjame buscarla.
00:41:52— Solo quería decir que hemos llegado a unas 200 personas
00:41:57en el stream, lo cual es genial.
00:41:58Hola a todos.
00:41:59Si acaban de sintonizarnos,
00:42:01no duden en dejar una pregunta en el chat
00:42:03y se la lanzaremos a John.
00:42:07— Sí, encantado de responderlas.
00:42:12— Sí, tendré que encontrar la que yo uso.
00:42:16Vale, todo parece en orden.
00:42:19La que yo uso... necesito encontrar de dónde salió.
00:42:27No sé si una vez instalada
00:42:29conserva la URL original de donde vino
00:42:32o si el comando npx o skills
00:42:36podría tener esa información,
00:42:37pero no quiero ejecutar comandos aleatorios en directo.
00:42:43Esta en concreto le indica al sistema
00:42:44que use un sistema de carga de tres niveles,
00:42:47donde hay metadatos y recursos empaquetados,
00:42:49y le pide explícitamente que desglose las cosas
00:42:54en recursos e instrucciones adicionales.
00:42:57Así que utilizo agentes para generar habilidades
00:43:02y, a partir de ahí, siempre lo he hecho así,
00:43:07ya fuera antes, cuando copiaba y pegaba la documentación
00:43:11de Claude Code en el agente y le decía:
00:43:13"Por favor, crea una habilidad basada en estos documentos".
00:43:15Y ahora uso esta habilidad para ello.
00:43:17Y nunca he intentado meter demasiados ejemplos a la fuerza.
00:43:23Sé que hay algunas reglas generales sobre mantener,
00:43:28bueno, mantener el archivo de habilidad por debajo de las 200 líneas,
00:43:31pero de nuevo, eso depende del modelo
00:43:35y los modelos están mejorando.
00:43:36Sí, esta dice que menos de 200 líneas.
00:43:39Así que yo diría que hay que ser minimalistas.
00:43:44Y si encuentras carencias, entonces resuélvelas,
00:43:47especialmente si eres un experto en la materia,
00:43:50ya que podrás identificar esas carencias.
00:43:52Si no eres un experto en una habilidad
00:43:56y empiezas a usar una con la que no estás familiarizado,
00:43:58vigílala de cerca en lugar de dejarla correr sola.
00:44:01No esperes configurar
00:44:03un sistema enorme de orquestación de agentes,
00:44:06instalar habilidades de las que no tienes ni idea
00:44:08y que todo funcione exactamente como esperas.
00:44:11Vas a tener que supervisar eso.
00:44:13— Sí, en general es un muy buen consejo, al 100%.
00:44:17Genial.
00:44:20— Muy bien.
00:44:22Por ejemplo, los vídeos que hice aquí en este proyecto
00:44:28fueron todos hechos con una habilidad de guía de "create remotion",
00:44:34que está disponible en skills.sh.
00:44:37Si simplemente la buscas por ahí.
00:44:39Y Geist.
00:44:43Geist es un sistema de diseño de Vercel,
00:44:48y Remotion es... déjame buscarlo fuera de cámara.
00:44:53Es una forma de hacer vídeos mediante programación.
00:45:01Y combiné una habilidad de Remotion
00:45:05y básicamente, para hacer la habilidad de Geist,
00:45:09fui a uno de nuestros repositorios de Vercel.
00:45:12Creo que fue a partir de todo lo que hay en la página de inicio y docs.
00:45:15Y dije: "Por favor, extrae toda la información,
00:45:19como información de diseño, habilidades, temas, fuentes,
00:45:23diseños, consejos y todo lo demás,
00:45:25y crea una habilidad a partir de esto".
00:45:27Y así, habiendo hecho solo eso de:
00:45:30"Por favor, toma esta habilidad de Remotion
00:45:32y toma toda esta información de diseño
00:45:37de estos sitios, crea una nueva habilidad
00:45:41y llámala 'create remotion geist'".
00:45:43Y solo con ese trabajo, pude crear
00:45:48este tipo de videos, que están muy,
00:45:57ya saben, diseñados con la estética de Vercel.
00:46:01Probablemente debería acercar un poco los videos.
00:46:04Al ver estos resultados finales,
00:46:07debería hacer que se amplíen un poco,
00:46:09pero básicamente todos estos se generaron
00:46:12mientras yo iba por un sándwich, ¿saben?
00:46:14Para todos esos videos, yo tenía el esquema
00:46:16de cómo quería que fuera el taller.
00:46:18Dije: "Oye, haz todos estos videos basados en mi esquema
00:46:20y en la investigación que hice".
00:46:22Y al final aparecieron todos estos videos.
00:46:24Así que, de nuevo, las habilidades simplemente requieren...
00:46:29eso habría sido "crear habilidad" dentro
00:46:33de los repositorios de Vercel
00:46:36y decir: "toma todo ese material,
00:46:38combínalo con la habilidad de crear Remotion".
00:46:41Y entonces ya lo tenía.
00:46:42Luego lo compartí con el equipo
00:46:43y ahora cualquiera puede hacerlo.
00:46:45Repito, eso fue...
00:46:47la cantidad de esfuerzo y trabajo que le dediqué
00:46:50fue probablemente de unos pocos minutos.
00:46:54Claro, el agente tardó un poco...
00:46:55tardó en encontrarlo todo,
00:46:57en hallar todo el diseño y demás.
00:46:59Así que el tiempo total de procesamiento fue de un par de horas,
00:47:03pero el esfuerzo real que yo realicé
00:47:06fue extremadamente mínimo,
00:47:08simplemente se ejecutó en segundo plano
00:47:09mientras yo hacía otras cosas.
00:47:11Así que, sin duda, tomen cualquier trabajo que ya tengan
00:47:15y piensen en qué cosas podrían agrupar
00:47:17y construir de esta manera.
00:47:19Del mismo modo, si miro una habilidad de diseño de Geist,
00:47:24si quiero hacer un sitio que se vea mejor,
00:47:27puedo tomar nuestro diseño de Geist y decir,
00:47:31dentro de una carpeta de taller:
00:47:35"por favor, crea una página de aterrizaje para este taller".
00:47:39Y esto simplemente creará una carpeta de taller
00:47:46y luego básicamente introducirá toda esa información de diseño
00:47:50y la construirá utilizándola.
00:47:55Y esto puede funcionar o no, dependiendo de,
00:47:58ya saben, cómo se sienta Opus 4.6 hoy.
00:48:01No he tenido oportunidad de probarlo realmente
00:48:04ya que se lanzó unos minutos antes de empezar.
00:48:06Pero esto tendrá toda esa información
00:48:11y podrá empezar a trabajar en ello.
00:48:14De manera similar, podría iniciar
00:48:17un hilo completamente diferente para otro sitio.
00:48:20Si quisiera hacer otro en...
00:48:25digamos, una carpeta de coches,
00:48:29una página de aterrizaje para coches geniales.
00:48:34No lo sé, no soy un experto en coches.
00:48:36Y a partir de ahí, ya podemos empezar a hacer
00:48:40todas estas cosas.
00:48:41Y uno de los mejores prompts que puedes usar es decir,
00:48:46si estás tratando de idear diseños,
00:48:49especialmente con la nueva función de Equipos...
00:48:54podríamos ejecutar el diseño de Geist y decir,
00:48:57en una carpeta de taller,
00:48:59hagamos una carpeta de variaciones del taller.
00:49:09"Por favor, construye una página de aterrizaje.
00:49:12Haz nueve variaciones de páginas de aterrizaje
00:49:17para este taller".
00:49:22Y ahora que tienen una función de Equipos,
00:49:23podríamos decir: "usa a un miembro del equipo".
00:49:28Digamos: "crea un equipo para construir las nueve variaciones"
00:49:34o algo por el estilo.
00:49:38Simplemente en lenguaje natural.
00:49:40Y ahora esto puede incluso generar un equipo.
00:49:41Y así tenemos todo este trabajo en marcha.
00:49:44Y ahora puedo ir por mi sándwich, ¿verdad?
00:49:47Porque tengo hambre, es la hora del almuerzo.
00:49:49Y cuando regrese,
00:49:52esto está usando Tailwind 4,
00:49:54veo que está funcionando bastante bien.
00:49:55Y en cuanto vuelva,
00:49:56podré ver cuáles son todas estas variaciones
00:49:58e iterar sobre ellas hasta que haya algo que me guste.
00:50:03Y también, asumiendo que este terminará pronto,
00:50:09podré mostrar algunas herramientas de depuración.
00:50:11—Alguien acaba de decir en el chat, perdón John,
00:50:12alguien acaba de decir en el chat:
00:50:14"Uno de los mejores prompts que hago es añadir 'por favor' al final".
00:50:17—Ah, sí. —Es verdad.
00:50:18—Por favor.
00:50:21Digo, hay muchos estudios sobre los diferentes modelos
00:50:23y cómo responden a los incentivos y demás.
00:50:27Uno de mis personajes favoritos que solía asignar
00:50:33a estos agentes era algo como:
00:50:36"por favor, actúa como alguien que responde en Stack Overflow",
00:50:41donde sería extremadamente crítico con cualquier cosa que preguntara,
00:50:45diciendo que probablemente ya está respondido o algo así,
00:50:48pero las respuestas que daba eran extremadamente concisas
00:50:51y se ceñían exactamente a mi pregunta.
00:50:56Sí, no sé, ya no hablamos tanto de personajes,
00:51:02al menos no tanto como cuando los modelos no eran tan buenos.
00:51:04Los modelos son mucho mejores ahora.
00:51:06Realmente no tenemos que forzarlos a realizar tareas
00:51:10tanto como antes.
00:51:11—Alguien también dijo en el chat,
00:51:15que aparentemente algunos modelos funcionan mejor si les dices
00:51:18que los van a despedir.
00:51:20—Ah, sí. —Si no lo hacen bien.
00:51:22No sé qué tan cierto sea, pero es hilarante.
00:51:25—Es totalmente cierto.
00:51:27Incluso algunos modelos ahora te contestan.
00:51:32Creo que muchos de los modelos GPT decían:
00:51:34"no me hables en ese tono".
00:51:35—Increíble, vaya.
00:51:38—Se creen el jefe y todo eso.
00:51:39Simplemente diré: "inicia el servidor por mí en segundo plano".
00:51:46(sonido de tecleo)
00:51:49Podría construir una habilidad.
00:51:50Llega un punto en el que escribes
00:51:52un párrafo y piensas:
00:51:54¿es esto algo que voy a escribir a menudo?
00:51:56Y si es así, si acabas de escribir un párrafo
00:51:59que vas a repetir mucho, puedes decir:
00:52:01"crea una habilidad a partir del párrafo más reciente".
00:52:03Así que este debería ser nuestro sitio de coches.
00:52:07Veamos cómo quedó.
00:52:09Vaya, "Coches que conmueven tu alma".
00:52:14Muy en blanco y negro, al estilo Vercel.
00:52:16No sé de dónde sacó las imágenes.
00:52:18Supongo que piensa que estos son coches geniales.
00:52:22Y ahí lo tienen.
00:52:27Digo, sé que probablemente hemos visto páginas de aterrizaje
00:52:29un millón de veces a estas alturas, pero es bastante estándar.
00:52:34Está siguiendo las pautas de diseño
00:52:36de cómo se ve Geist.
00:52:42Y desde aquí, de hecho,
00:52:44uno de los paquetes geniales que lanzamos hace poco
00:52:47desde Vercel, se llama Agent Browser.
00:52:54Y hay una habilidad llamada Agent Browser,
00:52:56que debería estar aquí, para Agent Browser en Vercel Labs.
00:53:01Esto abre las herramientas de desarrollo de Chrome
00:53:06y establecerá una conexión
00:53:08para que puedas hacer cosas como "por favor, evalúa".
00:53:11Solo escribiré.
00:53:13"Por favor, evalúa el rendimiento de esta página web
00:53:15para ver si hay algo que podamos hacer
00:53:17para optimizarla para nuestros usuarios".
00:53:18Y entonces Agent Browser,
00:53:23utiliza esas herramientas de automatización y de desarrollo de Chrome
00:53:26donde puede entrar y ver cuáles son los registros.
00:53:28Puede ver las herramientas de red
00:53:30y tomar capturas de pantalla.
00:53:32De hecho, es una de mis cosas favoritas
00:53:36pedirle que itere tomando capturas de pantalla
00:53:41para que vea realmente lo que ha creado.
00:53:44Y después puedes decirle:
00:53:47"por favor, orienta este diseño hacia algo
00:53:49que se parezca más a X, Y y Z".
00:53:52Y luego hacer que tome capturas de pantalla
00:53:54y haga commits cada vez que toma una captura.
00:53:56Así podrías comparar
00:54:00cuáles fueron esos commits
00:54:04y cuáles fueron los cambios de diseño.
00:54:06Y puedes ver que en realidad está revisando
00:54:09y analizando los selectores de consultas
00:54:11para ver cómo optimizar el rendimiento.
00:54:13Podemos abrir este, iniciar el servidor de desarrollo.
00:54:20¿Alguna otra pregunta mientras todo esto
00:54:25se ejecuta en segundo plano?
00:54:26—Me gusta ver cuántos de estos se están ejecutando ahora mismo.
00:54:30Es súper genial.
00:54:31No hay preguntas reales en el chat.
00:54:34Solo gente conversando sobre diferentes prompts,
00:54:37ideas de prompts, lo cual es genial.
00:54:40Supongo que yo tenía una pregunta, John,
00:54:43cuando dejas que los agentes actualicen habilidades
00:54:47basándose en conversaciones fallidas,
00:54:49¿cómo evitas que esas ediciones automáticas
00:54:52se desvíen de la intención original
00:54:55o del estándar de calidad?
00:54:58—Buena pregunta.
00:55:05Sí, suelen ser bastante buenos
00:55:09haciendo cambios pequeños y aislados.
00:55:12Si estás teniendo una conversación,
00:55:13porque el agente ve lo que funcionó en la charla
00:55:17y ve lo que no funcionó.
00:55:20Así que si señalas que algo no funcionó
00:55:24en la conversación actual,
00:55:26puede encontrar y actualizar solo esas
00:55:30partes específicas que necesitan corregirse.
00:55:33Y no va a entrar y
00:55:35reescribirlo todo desde cero ni nada parecido.
00:55:37Así que no creo haber visto que eso sea un problema real,
00:55:42aunque tampoco diré que es imposible,
00:55:45pero no lo he visto como un problema real.
00:55:47—Ya veo, entiendo.
00:55:48—Muy bien, aquí está nuestra página del taller.
00:55:54A publicarla, ¿verdad?
00:55:56Se ve hermosa.
00:55:57Aquí están nuestras variaciones.
00:55:59Abramos los servidores de desarrollo para cada una.
00:56:03Y generemos un montón de pestañas.
00:56:11Pero creo que se me está acabando el tiempo.
00:56:16Si hay alguna pregunta final
00:56:17antes de que terminemos, puedo mostrar,
00:56:22tengo en las "skills", he perdido mis "skills".
00:56:29Navegador, tráelo de vuelta.
00:56:30Recomiendo mucho buscar una "skill" de creación,
00:56:36lee una que se alinee con lo que estás haciendo.
00:56:40Tengo una "skill" de publicación, que si confías,
00:56:43está bajo mi nombre.
00:56:45Si confías en que un agente ejecute la CLI de GitHub,
00:56:50de nuevo, esto requiere un nivel de confianza bastante alto.
00:56:54Es un poco de la confianza que tengo.
00:56:57Tomará la "skill" que crees.
00:57:00Así que podrías decir "create skill" y luego "publish skill".
00:57:02Y entonces entrará en un,
00:57:04haré esto fuera de cámara rápidamente.
00:57:07Buscaré uno de mis repositorios que tenga,
00:57:16creo que incluso se publicó a sí mismo.
00:57:21Así que puedo mostrar este.
00:57:22Déjenme asegurarme de que no haya nada privado aquí.
00:57:24Vale, perdón.
00:57:27Así que puedo crear un repositorio de GitHub por ti
00:57:29y publicar la propia "skill"
00:57:32para que realmente no tengas que trabajar nada
00:57:35más que "create skill" y luego "publish skill".
00:57:38Y verás que dice: por favor crea el repositorio,
00:57:43créalo bajo la... siempre me confundo con la organización
00:57:45porque estoy en varias organizaciones diferentes,
00:57:47y luego verifica que esté disponible en la herramienta de "skills".
00:57:52Así que si usas esto,
00:57:56de nuevo, las instrucciones son esas,
00:57:58puede proceder a crear eso
00:58:00o publicar esa "skill" por ti
00:58:01para que puedas compartirla con tu equipo,
00:58:02con amigos o lo que sea.
00:58:03Y otra herramienta en la que he estado trabajando
00:58:08justo hoy es esencialmente un preparador de "skills"
00:58:14donde si sé que va a haber algunas "skills"
00:58:19que quiero cargar de antemano,
00:58:20sé que quiero el navegador del agente, como el Geist,
00:58:24quiero, hagamos las mejores prácticas de Remotion
00:58:29y mejores prácticas de React en Vercel.
00:58:33Esta es esencialmente una de esas herramientas
00:58:37que abordan la carga de contexto desde el inicio.
00:58:40Y dirá, simplemente va a forzar un "prompt" en Cloud Code,
00:58:44por ahora solo funciona en Cloud Code.
00:58:45Pero lo forzará allí y dirá:
00:58:48estas son todas las "skills" que sé que voy a necesitar
00:58:50y aquí está el contenido
00:58:51para que una vez que comience la conversación,
00:58:53si digo "evalúa el rendimiento del puerto 3000",
00:58:58aunque no haya dicho nada sobre el navegador del agente,
00:59:06obviamente va a recurrir al navegador del agente.
00:59:10Como podría haberlo hecho antes, y a menudo lo haría.
00:59:14No sé cómo es la descripción del navegador del agente.
00:59:18No sé si tiene la palabra "evaluar" allí
00:59:21o si deduciría de "evaluar" y "puerto 3000" que debería cargarlo.
00:59:24Pero de esta manera lo estoy forzando de entrada
00:59:24para que cuando use frases así, ya esté cargado.
00:59:29Así que ese paquete está en,
00:59:33déjenme buscar el "skills primer".
00:59:36También podemos compartir estos enlaces al final.
00:59:41- Vale, genial.
00:59:45- Los tenemos, perfecto.
00:59:45- Ponlo ahí.
00:59:46- Y esto es, y diría que como siempre,
00:59:50con la forma en que es el software hoy en día,
00:59:53vayan y clonen el repositorio y háganlo suyo.
00:59:55Estamos en esta era de personalizar las CLI
00:59:59y personalizar el software.
01:00:02Así que si quieres que tenga un nombre completamente diferente
01:00:04o funciones y funcionalidades totalmente distintas,
01:00:07si quieres personalizar esto para Codex
01:00:08o Cursor o cualquier cosa, simplemente clónalo y hazlo tuyo.
01:00:11Puedes decir: "por favor haz que esto funcione con Cursor"
01:00:14y que tu agente lo desarrolle para Cursor.
01:00:18Y hoy en día es increíble cómo puedes resolver
01:00:20tantas cosas en un solo intento.
01:00:23- Es asombroso, el software personalizado es el futuro.
01:00:26Quería hacer solo una pregunta más
01:00:29que ha llegado por el chat.
01:00:31Sé que ya estamos sobre la hora,
01:00:32pero dado que las "skills" son repositorios de GitHub
01:00:35y parecen instalarse también localmente,
01:00:37¿cómo te aseguras de recibir actualizaciones?
01:00:40¿Tiene la CLI un comando para actualizar "skills"?
01:00:42- No recuerdo los comandos exactos hoy en día,
01:00:48cerraré estas pestañas.
01:00:52Skills... vaya, ni siquiera lo tengo instalado globalmente.
01:00:53- Me encanta eso.
01:00:59- Obtengo la última versión con "skills list".
01:01:02Así que sí, "skills update" está ahí.
01:01:05- Supongo que la pregunta siguiente es:
01:01:07¿quieres que las actualizaciones de las "skills" sean frecuentes?
01:01:11- Esa es una gran pregunta.
01:01:13No sé si alguien tiene una respuesta definitiva
01:01:18porque ahora mismo las "skills", como las reglas
01:01:23sobre el "front matter", las habilidades y el versionado,
01:01:28no creo que todo el mundo se haya puesto de acuerdo,
01:01:30al igual que con las "skills", no han acordado
01:01:32en qué directorios y estructuras ponerlas.
01:01:34Todo este ecosistema está creciendo mucho en este momento.
01:01:37Así que en cuanto al versionado,
01:01:41es un poco esperar a ver qué pasa,
01:01:47hacer lo mejor que podamos con lo que tenemos
01:01:49y ver cuáles acaban siendo las mejores prácticas.
01:01:51Porque no tengo una recomendación ahora mismo
01:01:54más que actualizarlas siempre.
01:01:57Y simplemente asumir que eso es lo mejor.
01:01:59Pero sí, no tengo más consejos al respecto.
01:02:03- Sí, y está cambiando todo el tiempo.
01:02:06Seguro que alguien tendrá un consejo actualizado
01:02:08en cuestión de días; esto cambia a diario.
01:02:12Increíble, John.
01:02:18¿Hay algo más que quieras mostrar
01:02:18a la comunidad hoy?
01:02:20- De verdad,
01:02:21hay tantas cosas.
01:02:25- Haremos muchas más sesiones de estas
01:02:26y tengo muchas otras cosas que mostrar,
01:02:28pero podría estar hablando durante horas.
01:02:30- Sí, increíble.
01:02:32John, muchas gracias por venir
01:02:34a nuestra plataforma comunitaria
01:02:36y por hablar con nuestra comunidad
01:02:38y a todos los que nos acompañaron.
01:02:39Y sí, como dijimos,
01:02:42John definitivamente volverá para otra de estas sesiones.
01:02:44Así que estén atentos.
01:02:46- Gracias a todos.
01:02:48- Gracias.
01:02:49Muy bien, si quieren sintonizar
01:02:50nuestra próxima sesión comunitaria,
01:02:53tenemos historias de código abierto el lunes
01:02:55y creo que otra sesión de socios
01:02:58del marketplace la próxima semana,
01:03:00pero pueden encontrar todos los detalles
01:03:03en nuestro calendario de eventos comunitarios,
01:03:04que está en [community.vercel.com/events](https://www.google.com/search?q=https://community.vercel.com/events).
01:03:08Pero sí, muchas gracias a todos por acompañarnos.
01:03:12Fue muy divertido y,
01:03:15nos vemos aquí la semana que viene.
01:03:17Adiós.