▲ Sesión comunitaria: Cómo crear y publicar habilidades

VVercel
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

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.

Key Takeaway

Las habilidades para Claude Code transforman a los agentes de IA de modelos generales en expertos personalizados mediante archivos Markdown que inyectan contexto, herramientas y estándares de equipo de forma dinámica.

Highlights

Las habilidades o "skills" son archivos Markdown que permiten a Claude Code aprender patrones de código, reglas y flujos de trabajo específicos.

Se está produciendo una transición de la simple ingeniería de prompts hacia la ingeniería de contexto y la carga diferida (lazy loading).

El sitio skills.sh actúa como un gestor de paquetes (similar a NPM) para descubrir y compartir habilidades creadas por la comunidad.

Las habilidades resuelven el problema de las fechas de corte de conocimiento de los LLM al proporcionar documentación actualizada de librerías y APIs.

La nueva función de "Equipos" permite a Claude Code generar subagentes especializados que colaboran para resolver tareas complejas.

Es preferible un enfoque de "lanzar e iterar" al crear habilidades en lugar de intentar alcanzar la perfección desde el inicio.

Timeline

Introducción y bienvenida a la sesión

Pauline Navas da la bienvenida a la comunidad de Vercel y explica la importancia de interactuar mediante la plataforma oficial para realizar preguntas en vivo. Presenta a John, miembro del equipo de AI DX, quien liderará el taller sobre la creación y publicación de habilidades para Claude Code. Se destaca que estas herramientas están cambiando radicalmente la forma de trabajar con agentes de inteligencia artificial al permitirles seguir patrones específicos de código. Pauline enfatiza que las habilidades permiten que Claude entienda cómo actualizar Next.js o seguir guías de estilo particulares de una empresa. El ambiente es de gran entusiasmo ante una tecnología que apenas tiene un par de semanas de vida.

Evolución: De Prompts a Ingeniería de Contexto

John explica que hemos pasado de la era de la ingeniería de prompts, donde se intentaba perfeccionar cada instrucción, a la ingeniería de contexto. Define las habilidades como piezas de contexto empaquetadas en archivos Markdown que el agente puede cargar según sea necesario. Compara a un modelo recién nacido con una "tabla rasa" que conoce lo general (React, SQL) pero no los dialectos o reglas internas de un equipo específico. Las habilidades llenan ese vacío de conocimiento al proporcionar la estructura y los patrones que el modelo no trae de fábrica. Se presenta el sitio skills.sh como el epicentro para explorar el ecosistema de habilidades compartidas por otros desarrolladores.

El Momento NPM de las Habilidades

Esta sección profundiza en la analogía de las habilidades como un gestor de paquetes similar a NPM, donde se pueden instalar capacidades permanentes para todo un equipo. John diferencia entre el archivo agents.md, que es un contexto pasivo que siempre se lee, y las habilidades, que son activas y se cargan bajo demanda. Responde a preguntas sobre cuándo usar un Model Context Protocol (MCP) frente a una habilidad, recomendando priorizar siempre la simplicidad de Markdown. También realiza demostraciones en vivo sobre cómo usar habilidades para generar videos con Remotion o diseñar páginas siguiendo el sistema Geist de Vercel. Explica cómo los agentes pueden incluso crear sus propios equipos de subagentes para realizar variaciones de diseño de forma autónoma. Se subraya la capacidad de las habilidades para mitigar la obsolescencia de los modelos al incluir documentación técnica de versiones de software muy recientes.

Gestión, Actualizaciones y Cierre

En el tramo final, se aborda la gestión técnica de las habilidades, incluyendo cómo publicarlas en repositorios de GitHub mediante la CLI. John responde dudas sobre la frecuencia de actualización, sugiriendo que, aunque no hay un estándar definitivo, lo ideal es mantenerlas siempre actualizadas a la última versión disponible. Menciona que el software personalizado es el futuro y anima a los desarrolladores a clonar repositorios para adaptar las herramientas a sus necesidades específicas. Pauline cierra la sesión agradeciendo a los más de 200 asistentes y anunciando próximos eventos sobre código abierto y socios del marketplace. La sesión concluye con la promesa de que John regresará para profundizar en flujos de trabajo de orquestación aún más avanzados.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video