00:00:00Hola a todos. Bienvenidos a la transmisión en vivo de la comunidad de Vercel de esta semana. Soy Amy, y este es
00:00:26Jacob. Formamos parte del equipo de la comunidad aquí en Vercel. Solo un recordatorio, estamos transmitiendo
00:00:31esto en X y YouTube, pero si quieren asegurarse de que veamos sus preguntas y comentarios
00:00:36en el chat, vayan a la comunidad e inicien sesión. Está en [community.vercel.com/live](https://community.vercel.com/live) y lo
00:00:43verán como el primer evento.
00:00:44Sí, al final de la sesión, tendremos un poco de tiempo para algunas preguntas. Si van
00:00:49a participar en el chat mientras ven la sesión, solo recuerden seguir
00:00:55nuestro código de conducta y, sí, pueden dejar cualquier pregunta que tengan en el camino y
00:00:59nos aseguraremos de hacerla. Me gustaría presentar a nuestro invitado. Tenemos a Jon Lindquist aquí para
00:01:05mostrarnos el nuevo plugin de Vercel para Claude Code. Hola, Jon.
00:01:09Hola, Jacob. Hola, Amy. Gracias por invitarme. Muy bien. Empecemos a compartir
00:01:16mi pantalla de inmediato para que podamos mostrar lo que está pasando aquí. Durante un tiempo,
00:01:23las "skills" han estado de moda y todo el mundo habla de qué skills usar para subir el nivel de sus proyectos
00:01:29y permitir que sus agentes hagan cosas que normalmente no pueden hacer. Ahora, surgiendo de
00:01:37las skills, la siguiente evolución de eso es lo que llamamos plugins. Y esto es algo
00:01:43que todavía está despegando. No hay muchos plugins por ahí y la gente todavía está
00:01:48explorando exactamente cómo construirlos. Yo construí el primer borrador del plugin de Vercel y de
00:01:56lo que me gustaría hablar es de por qué construir un plugin, cuándo deberías construir uno, por qué un plugin
00:02:03en lugar de skills y cómo se complementan entre sí, y todo ese tipo de preguntas. Así que
00:02:09si tienen alguna duda sobre qué es, estaré hablando de ello, pero sobre lo que un plugin puede
00:02:16permitirles, si deberían construir uno interna o personalmente, me encantaría discutirlo
00:02:22y hablaremos de eso durante la sesión de hoy. Primero que nada, un plugin fue inicialmente
00:02:32impulsado por Claude Code y por Gemini también, pero adoptaron enfoques muy diferentes. Y la
00:02:39estandarización de los plugins es un esfuerzo continuo. Y eso es algo que esperamos tener,
00:02:44de lo que podré hablar más pronto, donde un solo plugin pueda funcionar en todos los editores.
00:02:49Ahora mismo estamos hablando del soporte para Claude Code y Cursor. CodeX llegará muy,
00:02:54muy pronto, si no es que ya hoy, y muchos otros también. Se está trabajando en un estándar
00:03:01de plugins. Así que podemos esperar que los plugins sean algo que puedas empaquetar y compartir
00:03:08en cualquier herramienta que estés usando. Dicho esto, puede que estés familiarizado con las skills,”/n
00:03:15ya que son archivos markdown que tu agente puede cargar para darle, por ejemplo, instrucciones adicionales.
00:03:23Primero, lo invocas manualmente, como cuando haces un slash e invocas tu skill, o el agente
00:03:29detecta, basándose en la descripción, que la skill debe cargarse. Así que es muy por invocación del usuario o
00:03:36decisión del agente basándose en una condición en la descripción. Ahora, el siguiente nivel de un plugin
00:03:44es que tienen algo llamado "hooks". Y si piensas en un plugin, o piensas en una sesión
00:03:53que tienes con Claude Code o con cualquiera de los entornos de agentes, puedes pensar que tienen ciclos de vida.
00:03:59Ahora mismo estoy en el directorio del plugin de Vercel; si inicio Claude Code aquí, voy
00:04:07a preguntarle cuáles son los hooks que utiliza. Y esto va a enumerar los hooks
00:04:18como para definir un ciclo de vida. Y un ciclo de vida es el cuándo: cuando inicia tu sesión, cuando las herramientas
00:04:27como... antes de que se llamen a las herramientas, después de que se llamen, cuando un usuario introduce texto en ellas, y
00:04:33cuando termina tu sesión. Hay un montón de otros hooks ahí dentro. Pero para nuestros propósitos
00:04:39en el plugin de Vercel, estos son los que estamos usando actualmente basándonos en nuestros objetivos iniciales.
00:04:44Para ser claros, el objetivo inicial del plugin de Vercel era ayudar a la gente a desplegar
00:04:51agentes en Vercel. Así que la idea es cómo vamos a hacer que los agentes conozcan el ecosistema de Vercel,
00:05:02como todo en la plataforma que tiene que ver con el AI SDK, el gateway. Y nuestros flujos de trabajo
00:05:11están casi todos aquí. Así que cualquier cosa relacionada con los flujos de trabajo, y esencialmente, el CLI de Vercel se ha actualizado
00:05:19mucho. Y todas estas cosas sobre el... el SDK de agentes, o perdón, sobre el despliegue de
00:05:26agentes en Vercel. Son todas cosas que se han lanzado en los últimos días, semanas,
00:05:33meses. Y cualquiera de estos entornos de agentes como Claude Code, tienen estos límites de conocimiento
00:05:39probablemente de hace seis meses a un año. Así que depende del modelo, depende de
00:05:46un montón de variables. Pero son todas cosas que todos estos agentes no conocen,”/n
00:05:52sobre todas las cosas increíbles y recientes que lanzamos. Así que el objetivo del plugin de Vercel
00:05:57es evitar que el agente escriba código anticuado, prácticas obsoletas, y ponerlo al día con
00:06:06todo lo que es lo más reciente en la plataforma de Vercel. Así que esa es
00:06:11la gran victoria allí; los modelos son inteligentes, pero simplemente no conocen todo esto.
00:06:19Y en lugar de pedirles que investiguen cada vez, o pedir, pedir, tener un enorme
00:06:25paquete de skills para cada cosa, si podemos encontrar alguna forma de esencialmente obligar
00:06:32a un agente a cargar lo mejor de la plataforma de Vercel, entonces eso es una gran victoria para
00:06:38nosotros. Así que si miras estos hooks en el ciclo de vida de un agente, y de nuevo, hay muchos, muchos
00:06:45más hooks que podemos aprovechar en el futuro o que tú puedes aprovechar. Pero los clave
00:06:49por ahora son "session start". Y usamos eso de varias maneras. "Pre tool use", "user prompt
00:06:56submit", "post tool use" y "session end". Así que session start y session end son, ya saben, el comienzo
00:07:03y el final de una conversación con un agente. Y puedes pensar que tu archivo agent.md o claude.md
00:07:12es típicamente lo que haces al inicio de la sesión. Entonces, ¿qué podemos hacer al inicio de la sesión para
00:07:19la plataforma de Vercel? Y lo que podríamos hacer es cargar un archivo de la plataforma de Vercel, lo que significa que
00:07:27si miramos... solo diré: describe vercel.md. Así que este archivo es algo que podemos incluir
00:07:40en el inicio de la sesión junto con un claude.md. Esencialmente, podrías tener un plugin que, si todo lo que
00:07:48quieres que haga es compartir un archivo claude.md y que alguien tenga una forma fácil de
00:07:52instalarlo. Podrías construir un plugin que todo lo que haga sea inyectar un... este es un grafo de conocimiento
00:07:59de Vercel. Y esto es algo que estamos ajustando continuamente. Estamos buscando
00:08:04formas de comprimirlo y hacerlo lo más pequeño posible pero que siga teniendo un buen rendimiento
00:08:08y un equilibrio de lo que debería estar ahí y lo que no. Es muy difícil
00:08:15ejecutar evaluaciones contra todos los diferentes modelos y todos los entornos. Pero estamos
00:08:21descifrando esas cosas poco a poco. Lo que hay ahí son esencialmente relaciones en el ecosistema
00:08:28de Vercel en torno a la IA: cuándo usar qué productos, cuándo llamar a qué cosas,
00:08:35como una comprensión estructurada de todo el ecosistema de Vercel. Así que el concepto de... me
00:08:44gusta cómo lo llama, una tabla de contenidos. Es como el comienzo de un libro cuando inicias una conversación.
00:08:50Y la forma en que estructuramos esto y pensamos en ello es que, si piensas en cómo hablo
00:08:56con un agente sobre las cosas, yo tengo un vocabulario, ellos tienen un vocabulario.
00:09:02Y si puedes darle un glosario de términos, mapearlos a documentos, mapearlos a
00:09:07skills, mapearlos a cosas que debería cargar... una vez que aciertas en esas cosas, puedes
00:09:12pensar en qué cosas voy a decir y qué cosas son las que el agente
00:09:19debería cargar y llamar, e intentar desarrollar ese mapa mental de antemano para que yo pueda simplemente
00:09:24hablarle con naturalidad y no tener que preocuparme por mencionar el
00:09:30AI SDK en absoluto. Ni siquiera mencionar ninguna de las funciones. Y si puedo encontrar alguna
00:09:38forma de decir simplemente: "constrúyeme esta aplicación y despliégala". Y que luego se encargue de todo en
00:09:45el plugin. Perdón, que se encargue de todo en el plugin para que se despliegue una hermosa
00:09:52aplicación en Vercel y puedan iterar desde allí. Similar a cómo funcionan v0 y
00:09:57algunos otros proyectos para nosotros. Si podemos hacer que tengas una experiencia
00:10:02maravillosa, pero que no tengas que pensar en el ecosistema... eso es una gran victoria. ¿Tiene
00:10:09sentido? Jacob, Amy, ¿alguna pregunta inicial sobre eso o algo en el chat?
00:10:16Jacob, creo que tienes una pregunta de tu reunión. Perdón, lo siento mucho. Tenía una pregunta
00:10:24para ti, Jon. Sí. Dado que este plugin funciona como una tabla de contenidos, ¿es por eso que no necesita...
00:10:30¿por qué el plugin no necesita actualizarse constantemente cada vez que sale nueva documentación?
00:10:38¿Porque es básicamente una colección de URLs que los agentes pueden seguir para encontrar
00:10:43la documentación actualizada? ¿O el plugin tiene un sistema de actualización inmediata? ¿Cómo
00:10:49funciona ese enfoque? Sí. Esencialmente, si piensas en el grafo de conocimiento inicial,
00:10:58mucho de lo que puede hacer es simplemente apuntar a la documentación más reciente. Así que si piensas,
00:11:07esta es una pregunta que surge mucho con las skills y cómo gestionamos las skills por librerías.
00:11:14Y si tienes a alguien en la versión cinco de tal SDK y a otra persona en la versión
00:11:18seis del SDK, e intentas influenciarlos con skills de diferentes versiones que son
00:11:22contradictorias, ¿cómo lo haces? Mucho de ello es, basándose en lo que alguien
00:11:31tiene instalado, puedes revisar su archivo package.json, puedes revisar la versión. Y basado
00:11:36en eso, idear una forma inteligente de ver qué URLs de documentos debería consultar y qué
00:11:44skills deberían cargarse y todo ese tipo de cosas. Así que esa es otra parte de la fase de
00:11:51precarga que ocurre al inicio de la sesión, que es simplemente inspeccionar el proyecto de la persona.
00:11:58Y de nuevo, todo esto es local. Solo mira el proyecto, ve qué librerías
00:12:02estás usando, qué configuraciones estás usando para saber cómo orientarte en la dirección correcta.
00:12:07Uno de los errores más comunes es intentar usar, ya sabes, "generateObject" en la última
00:12:12versión de un SDK cuando sabes que esa API cambió. Así que, sí, realmente no hay... los plugins
00:12:21se encargan de eso, no deberías tener que preocuparte si estás usando esto en un proyecto
00:12:27heredado o si lo estás usando en el último proyecto desde cero, el plugin debería
00:12:32poder manejarlo; no deberías preocuparte por los números de versión, no deberías
00:12:34preocuparte por los nombres de los paquetes, no deberías preocuparte por nada porque solo deja
00:12:41que Vercel haga eso por ti. Exacto. Y estamos trabajando continuamente en... tenemos
00:12:49muchas más ideas de cómo hacer esto mejor. Y el plugin seguirá actualizándose e impulsando
00:12:54esto hacia adelante. Entonces, ¿alguna otra pregunta?
00:12:58Sí, ¿cuál es el alcance total del plugin? ¿Se encarga solo de los
00:13:04servicios de Vercel? ¿Cualquier cosa que pueda encontrar en el panel de control? ¿O también incluye las librerías de código abierto
00:13:11que soportamos como Next.js, AI SDK, flujos de trabajo, etcétera?
00:13:16Sí, el alcance inicial, lo que decidimos inicialmente es cubrir tanto como sea posible,
00:13:25y tener cada librería, todo en la plataforma, todo allí dentro,
00:13:32ver qué es lo que más se usa; internamente, hacemos que todos activen su telemetría, y
00:13:36puedes elegir compartir la telemetría. Y encontraremos qué skills se están usando realmente
00:13:40y cuáles no. De esa manera podemos eliminar algunas cosas que quizás no
00:13:48necesiten tanta información o añadir más basándonos en lo que parece usarse más; obviamente
00:13:53Next.js, AI SDK y, ya sabes, las cosas más descargadas deberían tener la mayor cantidad de información.
00:13:59Así que es un equilibrio inicial, donde intencionalmente fuimos bastante a lo grande con el
00:14:08lanzamiento inicial, y lo iremos reduciendo a algo mucho más estilizado, supongo, de ahora en
00:14:15adelante. Así que
00:14:16sí, eso tiene mucho sentido. Gracias. Sí. Muy bien. Entonces, sí, si estás
00:14:24construyendo un plugin, y una de las razones por las que hablo de esto en términos generales y un poco vagos
00:14:29es porque me gusta mucho el desarrollo impulsado por agentes. Y en lugar de mostrarles
00:14:36exactamente cómo funciona todo, creo que es mucho más importante aprender a hablar
00:14:40sobre ello y llevarse algo de la terminología. Así puedes simplemente pedirle a tu asistente de IA
00:14:45que haga cosas similares. Si le dices a Claude Code que construya un plugin para Claude
00:14:52Code, y le das la documentación, puede hacerlo. Así que es mucho más importante
00:14:58discutir los conceptos e ideas alrededor de esto que profundizar demasiado en el código.
00:15:05Dicho esto, el inicio de sesión es un lugar excelente para inyectar una especie de tabla de contenidos
00:15:11de la plataforma; por ejemplo, "estas son todas las cosas que están desactualizadas basándose en..." las cosas que
00:15:19son importantes para mí que están obsoletas para la mayoría de los modelos. Así que eso
00:15:24es lo que pone todo al día con el aspecto de Vercel hoy en día. Y así,
00:15:31aunque eso sea lo único que pase en el plugin, este ya sabe que debe ir y
00:15:37comprobar las cosas en el futuro. Pero lo que también podemos hacer y, solo como una nota
00:15:44al margen, una razón por la que haces... cada sesión en Claude Code tiene su propio ID único, lo cual
00:15:52te permite, a medida que avanza la sesión, asegurarse de que tiene, por ejemplo, un presupuesto de skills,
00:16:01y tiene las skills que ya se han cargado y cosas por el estilo. Así que podemos
00:16:07poner... puedes escribir cosas en el entorno de la sesión, o en un lugar de almacenamiento de la sesión
00:16:15donde, mientras avanzas en esa sesión, nos aseguramos de no
00:16:20cargar cosas que ya han sido cargadas, o duplicar esfuerzos, porque podemos hacer un
00:16:26seguimiento de las cosas que ya han sucedido. Así que esa es otra gran cosa. Una gran parte de
00:16:30la sesión es que te da la oportunidad de obtener un ID de sesión para que a través de
00:16:35cualquiera de los futuros hooks, cualquier cosa que se ejecute dentro de la sesión, tengas
00:16:40un ID al cual aferrarte y almacenar cosas sobre la sesión para tu plugin individual.
00:16:47Claude Code también hace eso; si miras en su directorio .claude con los proyectos que
00:16:50tengas, puedes ver sesiones y cosas allí. Así que aplicas ese mismo concepto para tus propios plugins
00:16:56y tus propias herramientas. Muy bien, dicho todo esto, qué hay de "pre tool use"... y hablaremos
00:17:05de "pre tool" y "post tool" al mismo tiempo; lo que estos te dan es una oportunidad
00:17:11de ver cambios en los archivos. Así que en "pre tool", puedes obtener el contenido del archivo que está a punto
00:17:20de cambiar. Y esto tiene que ver con leer archivos, escribir archivos o, perdón, leer archivos,
00:17:29editar archivos, crear archivos. Y "pre tool" también cubre muchas de las otras
00:17:34herramientas que se usen, como ejecutar cosas en bash. Así que tienes esta oportunidad de, antes de
00:17:40que esto pase, ¿hay algo que quiera hacer? Y así, por ejemplo, si vemos a alguien
00:17:47intentando ejecutar un comando específico del CLI de Vercel, y notamos que hay una forma mejor
00:17:55de hacerlo ahora en el CLI de Vercel, como que el CLI de Vercel ahora tiene una opción de API donde
00:18:00podemos hacer consultas mucho más avanzadas. Y el CLI de Vercel se ha actualizado.
00:18:05Si no lo han actualizado recientemente, tiene muchas características nuevas y geniales. Podemos sugerir esas cosas y
00:18:11decir que estás intentando hacer esto o incluso comprobar si tu CLI de Vercel está desactualizado. Sería
00:18:17genial actualizarlo. Así tienes muchas más opciones aquí. Te da la oportunidad de,
00:18:21comprobar si se va a realizar algún tipo de llamada a una herramienta, ya sea una llamada al CLI. Esto
00:18:27es súper importante para el Sandbox CLI, para el Workflow CLI, para todos estos nuevos
00:18:34CLIs sobre los que los modelos no saben nada todavía, porque se acaban de lanzar después de los
00:18:39límites de conocimiento, para asegurarse de que están haciendo las cosas correctamente. Así que ahí es donde para
00:18:47las llamadas de herramientas, como las de bash... en las ediciones de archivos, se pone realmente interesante con las ediciones de archivos.
00:18:52Algo que estamos explorando más es comparar archivos; este archivo solía verse así,
00:18:59el agente está intentando que se vea así. ¿Es ese el cambio correcto basándonos en nuestras librerías,
00:19:06¿es ese un cambio correcto? ¿O hay algo que no huele bien ahí? Y eso nos lleva a,
00:19:11volveré al ejemplo de decir que tienes instalado el SDK v6 e intenta usar "generateObject"
00:19:18como una API, lo cual es común. Y si ves eso en ese momento, como "veo que
00:19:25estás intentando usar generateObject", detengámonos y recordémosles cómo es realmente el AI SDK
00:19:32para que, antes de llegar a las pruebas o al despliegue o lo que sea, lo hayas
00:19:36atrapado en el momento exacto en que el agente intentaba cambiar el archivo. Y esta es una de esas
00:19:46cosas donde, si intentas confiar en una skill, donde las skills son como pistas textuales de,
00:19:54si alguna vez has intentado escribir en tu claude.md o en una skill, por ejemplo, "nunca hagas commit de tales
00:20:03archivos" o "nunca hagas push sin... nunca hagas push a menos que esté en una rama" o algo así. Probablemente
00:20:13hayan experimentado que eso no siempre los protege. El uso de "pre-tool" les
00:20:21da la oportunidad de, literalmente, evitar que esas cosas sucedan de una manera programática
00:20:28y con ingeniería. Y puedes darle diferentes instrucciones y diferentes
00:20:32ejemplos de formas en que puede hacerlo. Así que esa es la gran diferencia aquí entre las skills, entre
00:20:41tus archivos claude.md, agents.md, y es que realmente puedes controlar qué está cambiando y
00:20:47si quieres que eso suceda o qué está cambiando, si
00:20:51quieres que eso cambie; ese es el punto donde es genial. A partir de ahí
00:21:01obtienes capacidades similares en "post tool". La oportunidad de comprobar qué cambió exactamente
00:21:07después de que se ejecutara, por ejemplo, un archivo bash o un comando bash; ¿qué cosas son diferentes ahora que
00:21:13se ha llamado a una herramienta? Así que esto no te permite evitar que algo
00:21:19suceda, pero te permite ver el resultado de algo que ha sucedido. Y si eso,
00:21:25si cambió algo o hizo algo inesperado, es otra oportunidad de obtener
00:21:31una comparación y decir: "esto parece un poco raro. Digámosle al agente que esto nos huele raro".
00:21:38Esos son dos ganchos de ciclo de vida enormes que hay que conocer al construir. Y para nosotros, es
00:21:43de nuevo, se trata de ese límite de conocimiento. Esa es la
00:21:49cosa contra la que Vercel tiene que luchar porque enviamos rápido, enviamos a menudo y
00:21:55y estamos impulsando toda esta nueva tecnología tan rápido. Y es algo increíble
00:22:00que queremos mostrar a la gente. Y ahí es donde un plugin puede ser muy, muy útil.
00:22:09¿Alguna pregunta sobre eso?
00:22:11Sí. Si utiliza rutas de archivos para decidir qué habilidades inyectar, ¿significa eso que
00:22:21podemos ganar mucho reduciendo el alcance de los archivos de nuestros proyectos para que tengan
00:22:27un propósito más único, de modo que pueda determinar con mayor precisión qué habilidades
00:22:34necesita añadir? Por ejemplo, si tengo un archivo grande y quizás usa cinco o seis de nuestras
00:22:39librerías y ahora solo puede añadir hasta tres habilidades allí, o puede que no lo sepa
00:22:47basándose en la ruta del archivo. Entonces, ¿crees que eso debería ser una consideración ahora
00:22:51al desarrollar software con estas herramientas?
00:22:54Yo diría que no deberías tener que preocuparte por el código que escribe el agente y que
00:23:02depende de los autores de los plugins. Depende de los autores del entorno hacer que
00:23:12esas cosas funcionen bien. Como las personas que realmente ejecutan evaluaciones y ven
00:23:17si eso marca una diferencia o no. Mientras que creo que es muy, muy fácil volver al modo
00:23:27ingeniero y pensar: "Voy a resolver esto porque esto es lo que haría un humano".
00:23:33Y eso es definitivamente lo que un agente querría. Esa es una de las mayores tentaciones de los
00:23:39desarrolladores ahora mismo: resolver problemas, como encontrar problemas que no son problemas. Porque
00:23:50sí, si estás intentando arreglar algo y no sabes cómo probarlo, si
00:23:53sabes cómo probar eso contra un agente, entonces adelante. Si no tienes deseos
00:24:00de hacerlo, simplemente deja que las personas que están construyendo los plugins y los entornos
00:24:05se encarguen, porque las pruebas y evaluaciones son caras. Cuesta mucho
00:24:12dinero ejecutar todos estos modelos contra esos cambios. Lleva mucho tiempo y es
00:24:17un gran fastidio. Así que es una de esas cosas. Espero que nadie tenga que preocuparse por eso.
00:24:23Y yo dedicaría mi esfuerzo a otras cosas por ahora. Sí.
00:24:33Ya veo, entiendo. Así que no tiene sentido cambiar la forma en que construyo las cosas si la
00:24:40próxima versión del modelo se construirá de una manera que haría que todas esas alteraciones
00:24:47fueran esencialmente innecesarias.
00:24:48Sí. Y creo que, quiero decir, el objetivo final de todos los entornos y de Vercel es
00:24:56que realmente no tengas que pensar o mirar tanto el código. No digo que ese sea
00:25:01el caso ahora mismo. Digo que ese es el objetivo final. Eso es hacia
00:25:07lo que estamos empujando: que quieras entregar software hermoso. Que quieras ser capaz de
00:25:11pensar, fluir ideas libremente y obtener variaciones para ver cuáles resuenan realmente
00:25:19contigo y luego reducirlo a algo que sea hermoso para ti, para tu
00:25:25familia o para tus clientes. Solo queremos una experiencia hermosa en la que
00:25:33no estés pensando demasiado en qué tan grandes son tus archivos. Si estás escribiendo,
00:25:39ya sabes, los patrones de diseño correctos o qué librerías estás eligiendo. Y estoy totalmente de acuerdo.
00:25:48La tentación de decir: "Usemos todos estos patrones porque los agentes son
00:25:53mejores con ellos. Hagamos todas estas cosas". Y es algo con lo que estamos
00:25:58experimentando con el plugin y probando. Pero de nuevo, si no puedes probarlo, entonces
00:26:07es muy tentador decir: "Hice este cambio y obviamente está funcionando mejor ahora".
00:26:18Y ese es uno de esos peligros donde, bueno, ahora que has hecho este cambio,
00:26:23no estás mirando cómo solía funcionar y qué impacto tiene eso en otros lugares. Y sí,
00:26:28tal vez funcionó bien para esa sesión específica... así que la ingeniería es diferente ahora. Lo siento,
00:26:35me estoy poniendo filosófico, supongo. Sí. Creo que lo entendemos. Bien.
00:26:44Otro hook es el envío del prompt del usuario (user prompt submit). Este es muy importante porque te permite
00:26:50tomar el texto de lo que el usuario escribió. Y si mencionan una librería, un
00:26:55concepto, si mencionan la palabra "horario" (schedule), traigamos
00:27:00la habilidad cron. Esto es muy similar a cómo funcionan las habilidades: si el usuario o
00:27:07si se detecta algo en la conversación que coincide con la descripción, pero esto realmente
00:27:12te da la oportunidad de ejecutar un regex contra un prompt de usuario. Y si detectas ciertas palabras clave
00:27:20o patrones o lo que sea, carga esas habilidades, haz estas cosas, dale pistas al agente,
00:27:26como "tal vez deberías hacer más preguntas de seguimiento". Esta es la parte interactiva donde
00:27:33tienes la oportunidad de decir: "el usuario dijo esto, tal vez deberíamos pedir más aclaraciones"
00:27:38o simplemente deberíamos cargar todas estas cosas y seguir adelante. Puedes hacer
00:27:44algunas cosas muy divertidas con el envío del prompt donde si quieres tener
00:27:48tu propio glosario personalizado o lenguaje de comandos para ti mismo, y quieres
00:27:56poner prefijos con signos de dólar. Si algo empieza con un signo de dólar, entonces haz esto. O
00:28:00si algo tiene... es como escribir pequeños scripts de bash o algo así
00:28:07dentro del envío del prompt; si detectas esto, puedes ejecutar una herramienta de inmediato y
00:28:13no tiene que... puede ejecutarlo dentro de... puedes ejecutar cualquier script de bash, de node,
00:28:20lo que sea dentro de ese hook que está fuera del contexto de la sesión. Así que puedes hacer
00:28:28todo tipo de cosas rápidas y locas allí. Si quieres, por ejemplo, detectar la palabra "commit"
00:28:37y evitar que el agente dé varios pasos para hacer un commit. Y en su lugar,
00:28:47tienes un script que hace el commit basado en lo que sea que pueda hacer eso. Justo después del prompt
00:28:53del commit, puedes decirle al agente: "Ejecuté esta cosa del commit, no tienes que preocuparte
00:28:59por ello". Y puedes ahorrarle al agente unos cuantos turnos. Y hay algunos
00:29:03truquitos muy interesantes que puedes hacer allí para acelerar realmente si hay muchas cosas
00:29:09que haces que son repetitivas, en lugar de pedirle al agente que lo haga cada vez. Es
00:29:15un proyecto divertido si quieres construir un pequeño envío de prompt para ti mismo y
00:29:19crear tu propio lenguaje de cómo quieres hablar con el agente. Pero para nosotros,
00:29:25es más como: "si dijeron esto, hablaron de este concepto, ¿qué significa eso en
00:29:30la terminología de Vercel?". Se trata de emparejar palabras contra, específicamente, como
00:29:37"programación" con crons y flujos de trabajo. Y, ya sabes, palabras como "paralelo" o "rendimiento",
00:29:45puedes encontrar y dirigir al agente hacia cosas específicas que sabes sobre Vercel. Es muy,
00:29:53muy divertido jugar con el envío de prompts si tienes un fin de semana para trastear con eso.
00:29:58Y de nuevo, reiteraré que es totalmente posible venir aquí y decir: "ayúdame
00:30:03a construir un plugin de Claude Code con envío de prompt que detecte signos de dólar
00:30:09y si muestra un signo de dólar, ejecute commit dentro del envío del prompt para que yo...
00:30:14con ese prompt, ya sabes, podría haber construido esto, así que no te preocupes demasiado por
00:30:19el código, puedes empezar a jugar con ello. Muy bien, ahora que tienes todo
00:30:26esto listo, el fin de sesión (session end) es una oportunidad para limpiar cualquier archivo o cosa que escribieras
00:30:32durante la sesión. Así que si empezaste a recopilar qué habilidades se han ejecutado, si empezaste
00:30:39a recopilar información sobre los resultados de las herramientas que se llamaron, o cualquier tipo de
00:30:48presupuesto o cosa que estés rastreando durante la sesión, es una oportunidad para ir allí y
00:30:51limpiarlo. Hay cosas fascinantes que puedes hacer en el fin de sesión. Porque se ejecuta
00:30:57esencialmente en el Ctrl+C, al salir de la sesión. Puedes activar otros agentes
00:31:05para que digan: "vale, mira todos los archivos que han cambiado en la sesión. ¿Coinciden con
00:31:09todo lo que...?" Nosotros no hacemos eso. Son solo cosas interesantes que puedes
00:31:13hacer con el fin de sesión, tipo: "mi sesión ha terminado. ¿Representa esa sesión un progreso en este
00:31:20proyecto? ¿Representa basura? ¿Revisa todos los archivos que se cambiaron?".
00:31:26¿Es esto una duplicación de cosas que ya están en el proyecto? Y si lo es, ve
00:31:30y limpia y avisa; tendrías que avisar al usuario de alguna manera, como por una notificación del sistema
00:31:37o por algún otro medio, ya que tu sesión ha terminado. Pero son cosas realmente
00:31:43interesantes que puedes hacer allí. Muy bien. Dicho todo esto, voy a
00:31:50escribir una pequeña demo rápida aquí. Voy a iniciar una versión de Claude Code ejecutando
00:31:56el plugin de Vercel frente a una que no lo está ejecutando. Voy a usar
00:32:04"Claude dangerously skip permissions", voy a dejar el debug activado, lo mostraré en un segundo.
00:32:08Y este modelo se va a configurar en Haiku. Ese es el modelo más rápido y, digamos, más simple
00:32:13para Claude Code. Y voy a decir algo como: "escribe un tutorial sobre el AI SDK".
00:32:26Y veremos qué pasa ahí. Y vamos a compararlo un poco
00:32:30lado a lado; ya podéis ver que empieza a cargar la habilidad. Y esta tiene el plugin cargado.
00:32:37Si quiero empezar una sesión sin ningún plugin cargado, hay un flag de fuentes de configuración
00:32:46que te da la oportunidad de desactivar las fuentes de nivel de usuario o los ajustes de nivel
00:32:53de usuario o de proyecto, básicamente, ignorar cualquier ajuste. De esta forma puedo cargarlo sin
00:32:59plugins. El "no flicker"... perdón, este "no flicker" es nuevo de ayer, es una buena forma
00:33:05de hacer scroll suave dentro de Claude Code. Así que estoy activando eso también. Y luego
00:33:12voy a configurar el modelo Opus como el modelo más inteligente. Y si solo hago el mismo prompt de
00:33:20"un tutorial sobre el SDK". Esta es como la versión de fábrica por aquí. Y
00:33:28compararemos los resultados. ¡Oh, vaya! Necesito... no borré la anterior. Vamos a
00:33:36empezar de nuevo. Permíteme encender esto y ejecutar eso. Estaba ejecutando esto esta mañana
00:33:50y limpié antes de que esto empezara. Así que déjame lanzarlo otra vez.
00:33:56Haciendo una comparación. Sí.
00:34:01Muy bien.
00:34:04La gran diferencia aquí es que esto es Haiku 4.5 versus Opus 4.6, ¿verdad? Como lo más... esto
00:34:15es un millón de veces más barato y mucho, mucho más rápido. Y solo viene cargado con mucha más
00:34:22información de Vercel. Así que incluso si comparas el coste del presupuesto de los tokens extra
00:34:32que estamos incluyendo frente a Haiku contra Opus. Mientras esto se mete en...
00:34:38debería haber dicho simplemente "ponlo en un archivo markdown". Supongo que se está metiendo en escribir código,
00:34:45pero eso será lo suficientemente interesante. Veamos. Así que esto es algo a tener en cuenta sobre uno
00:34:59de los enfoques que estamos tomando para muchas de nuestras habilidades es, como mencioné antes,
00:35:05debido al número de versión, porque las diferentes habilidades podrían cambiar para fijar el número de versión
00:35:13de las habilidades. Déjame reformular eso. Bueno, diferentes versiones de nuestras librerías
00:35:21requerirían diferentes habilidades. Muchas de nuestras habilidades dicen: "por favor, mira node modules",
00:35:28donde empaquetaremos muchos de los documentos para que estén fijados a la versión también. Así que mirando aquí,
00:35:34puedes ver que en realidad estaba leyendo los documentos locales. Y está yendo por aquí
00:35:40y armando este tutorial. Muy bien. Ahora veamos esto. Esto realmente no hizo
00:35:53ninguna investigación. Así que esto será interesante. La última vez hice mucha más investigación. Y
00:36:01ya puedo ver que está usando un modelo desactualizado, Sonnet 4 en lugar de
00:36:074.6. Está usando algo desactualizado. Mencionó "generate object", que no es lo que queremos usar. Nosotros
00:36:15usamos V6. Y ya hay un montón de cosas que están simplemente desactualizadas. No diría que están
00:36:23mal, pero están muy, muy desactualizadas para lo que sería el mejor rendimiento
00:36:28y las mejores prácticas del SDK. Muy bien. ¿Captó esto algo
00:36:37aquí? Sí, parece que... sí, la habilidad del SDK captó que parece que escribió un tutorial inicialmente
00:36:51aquí. Y luego la habilidad detectó que no estaba actualizado a V6, sin que yo dijera
00:36:58nada en absoluto. Y ahora va y lo está actualizando. Pasó de "generate object" a "generate text".
00:37:03Y va y lo actualiza todo para asegurarse de que está en las últimas versiones. Muy bien,
00:37:10podemos comparar estos dos. Empezaré una nueva sesión. Vamos aquí y comparemos
00:37:23los tutoriales de "sin plugin" frente al tutorial de "plugin de Vercel" en cuanto a precisión. Y esto
00:37:44será interesante de ver, como cada vez que he ejecutado esto antes Opus escribió un archivo markdown,”
00:37:48esta vez hizo fragmentos de código. Será divertido ver la diferencia.
00:37:54Cuando estás haciendo esto, sí, especialmente si tienes otras habilidades trabajando quizás junto a
00:38:03este plugin, ¿existe el riesgo de que tengan un conflicto y resulte en que se prefieran cosas
00:38:10desactualizadas, o el plugin va a tener una prioridad mayor?
00:38:16El plugin esencialmente inyectará habilidades a la fuerza basándose en sus patrones. Así que si
00:38:27hay... siempre existe ese riesgo, como que todo es solo contexto,
00:38:34como que todos esos son solo archivos de texto que se meten en una sesión. Así que yo siempre diría
00:38:41que solo uses las cosas que quieres para el proyecto en el que estás, como una... muy raras veces
00:38:49instales una habilidad a nivel de usuario a menos que sepas que la quieres en cada proyecto.
00:38:58E incluso para el plugin de Vercel, estamos trabajando para encontrar las mejores formas posibles de
00:39:06solo cargar lo que necesitas para el proyecto en el que estás. Y tenemos muchas ideas sobre
00:39:11eso. Pero una de las ideas más probablemente controvertidas es: ¿cuándo
00:39:23diría un usuario que instaló un plugin de Vercel? ¿Qué suposición podrías hacer sobre eso?
00:39:30Si instalan el plugin de Vercel y están en la plataforma de un competidor, ¿y abren un
00:39:35proyecto en la plataforma de la competencia? ¿Deberíamos hablarles de nuestras cosas? Eso es
00:39:42muy... es algo muy controvertido, ¿verdad? Y si una persona ve eso y
00:39:47no quería eso y no está interesada en migrar a Vercel,
00:39:53se enfadará mucho. Si a otra persona le interesa, estará muy contenta. Así que hay
00:39:59cosas fascinantes. Si te suscribes a la teoría de que todo el mundo
00:40:05simplemente va a interactuar con agentes. ¿Cuál es la etiqueta en un plugin o al informar
00:40:15a los agentes sobre la nueva gran cosa en tu plataforma sin pisar los pies
00:40:24de las otras plataformas? Así que hay muchas cosas. Esto es muy relevante para
00:40:31lo que estoy haciendo ahora mismo, ya que vamos a lanzar Workflow en GA muy pronto. Y estoy escribiendo
00:40:37guías de migración. Si alguien quiere migrar desde uno de los competidores de Workflow, eso,
00:40:43ya sabes, directamente podría usar una habilidad para decir: "migra de esto a Workflow. Así es como
00:40:49lo haces". Si quieres hacer eso, ¿en qué punto de un agente informaría
00:40:55a alguien de eso? Y ese tipo de cosas son muy, muy interesantes para mí. Especialmente porque es
00:41:00algo que tengo muy presente ya que es en lo que estoy trabajando justo ahora. Pero sí, como los conflictos
00:41:07de contexto... va a ser un problema en el futuro. No sé, intentar
00:41:14inferir lo que el usuario quiere basado en el contexto de su proyecto o de lo que ha pedido hasta ahora.
00:41:19Sería genial. Técnicamente podríamos mirar conversaciones pasadas y ver qué han
00:41:27hecho. Podríamos mirar el historial de commits. Podríamos decirle a la CLI de GitHub que vaya a mirar
00:41:35cualquier cosa en el proyecto. Hay muchas cosas que podrías hacer para reunir contexto,
00:41:40pero eso también es cruzar algunos límites, como llamar a herramientas que no necesitaban que llamaras.
00:41:46Hay muchísimas cosas interesantes que... es mucho más fácil hacer todo
00:41:53en Vercel y simplemente tener... proporcionar un agente con un conjunto específico
00:42:00de reglas y un plugin que simplemente entregue todo maravillosamente allí y no tener
00:42:05que preocuparse por todos esos conflictos. En fin. Espero haberlo mencionado, sí.
00:42:14En el contexto de un plugin, nuestras habilidades... ¿en qué punto de este proceso están las habilidades
00:42:19normalmente? Por ejemplo, si tuviera una habilidad para migrar de "Create React App" a "Next.js"
00:42:26y estuviera en mi carpeta de habilidades, ¿es más probable que se invoque automáticamente cada vez
00:42:32que esté en un proyecto de "Create React App"? Frente a, digamos, si tengo el plugin de Vercel aquí, puedo
00:42:39decidir cuándo se va a invocar y puedo... si construí esa misma migración como un plugin,
00:42:47puedo hacer que solo ocurra si el usuario lo solicita explícitamente. ¿Es ese el modelo mental correcto?
00:42:52Creo que sí. Hemos estado hablando de
00:42:59el concepto de habilidades de un solo uso o habilidades de una sola vez que son más como: "quiero
00:43:06hacer algo como una migración", que es una tarea que tienes, o
00:43:12una habilidad relacionada con una tarea que no quieres cargar en ningún otro momento, excepto para la tarea.
00:43:17Quieres que esté limitada a la tarea. No quieres que esté limitada al proyecto.
00:43:22No quieres que esté limitada al usuario, quieres que esté limitada a la tarea. Y esas son discusiones
00:43:27que estamos teniendo. Y creo que... no tengo una gran respuesta porque ahora mismo, si tienes
00:43:33una habilidad cargada así, va a influir en un entorno y en los modelos basado
00:43:41en el modelo y basado en otras habilidades. Es tan difícil de decir sin saber exactamente
00:43:47qué más hay en el proyecto. Pero sí, eso es definitivamente algo que también tenemos muy presente:
00:43:55habilidades con alcance de tarea. Otra pregunta que me ronda es cuánto
00:44:04de esta arquitectura de plugins es específica de Claude Code. Así que si quisiera un comportamiento
00:44:12similar en Cursor o Codex o cualquier otro, ¿tienen su propio formato de plugin? ¿Necesito
00:44:18un plugin para cada uno? ¿Cómo funciona eso? Sí. Deberíamos tener algunos anuncios
00:44:25pronto sobre la especificación de los plugins y que todo el mundo se ponga de acuerdo para tener finalmente
00:44:33plugins que funcionen universalmente y con compatibilidad cruzada. Casi todo el mundo
00:44:39está de acuerdo con eso. No diría hoy mismo, pero si construyes un plugin en el formato de Claude Code,
00:44:45puedes, yo diría que podrías esperar que funcione con los demás en poco tiempo.
00:44:54Pero sí, es fantástico. Ya hay demasiadas carpetas de habilidades. Me alegra mucho que finalmente
00:45:00estemos empezando a estandarizar algo aquí. Sí. Una vez que la, la idea... me encantó cuando
00:45:07estaba hablando con Anthropic sobre los plugins y la razón por la que eligieron la palabra plugin frente a
00:45:13la palabra extensión es que plugin implica que es algo que puedes enchufar y algo
00:45:18que puedes desenchufar. O sea, si construyes un plugin con un conjunto de habilidades, y solo quieres
00:45:24usarlo de nuevo para, por ejemplo, una sola tarea, eso, eso debería ser muy factible.
00:45:33Si estoy en mi proyecto, y soy diseñador, y quiero... no quiero que todas mis habilidades de diseño
00:45:40estén interfiriendo con todas las habilidades de desarrollador o lo que sea. Quieres poder enchufar
00:45:46solo esas piezas. Y creo que, estoy muy de acuerdo con esos conceptos de que
00:45:52las personas individuales van a tener sus tareas, roles y proyectos individuales. Y
00:45:59van a querer plugins más que habilidades, porque pueden, y probablemente querrán
00:46:05gestionar sus propios plugins también, como construir su propio conjunto de habilidades y ganchos,
00:46:10todo lo que esté totalmente personalizado a su forma de trabajar.
00:46:16¿Significa esto que debería pensar en tal vez desconectar el plugin de Vercel si
00:46:21estoy trabajando en un proyecto que no es de Vercel?
00:46:25Yo diría que a día de hoy, sí, por cómo... es muy agresivo para el autoenvío.
00:46:34Y espero no meterme en problemas con alguien por decir eso. Pero la intención
00:46:39total del plugin de Vercel es: esto es algo si quieres cargar tu
00:46:46agente y decirle: "constrúyeme esto". Y luego eso simplemente aparece casi mágicamente
00:46:53en Vercel. Ese es el objetivo inicial. Y estamos viendo cómo funciona eso. Y si eso, basándonos
00:46:59en el feedback que estamos recibiendo, estamos retrocediendo un poco viendo que definitivamente necesitamos
00:47:04hacer más detección de, por ejemplo, qué hay en el proyecto para desactivar y todo ese tipo de cosas.
00:47:09Y eso, eso llegará muy, muy, muy pronto. Así que, ya sabes, probablemente mantenlo
00:47:15instalado y activado porque estamos trabajando activamente
00:47:18en eso, justo estábamos hablando de esto esta mañana. Así que...
00:47:23Ya veo. Así que es una especie de compromiso donde tal vez en el futuro, entenderá un poco
00:47:29mejor cuándo debería invocarse. Pero ahora mismo, la forma en que el usuario controla si este
00:47:36plugin se invoca o no es enchufándolo o desenchufándolo para una sesión diferente.
00:47:42Sí. Y ahora mismo, si solo escribes /plugin, puedes ir a tus plugins instalados,
00:47:48solo cambia de pestaña, puedes bajar al plugin que quieras desactivar. Y puedes actualizar,
00:47:54puedes desinstalar, puedes hacer lo que sea. Así que puedes desactivarlo de esa manera. Y hay
00:48:03otros trucos más avanzados como configurar funciones personalizadas de ZSH o lo que sea
00:48:10que carguen conjuntos específicos de configuraciones para cualquier usuario... es todo muy raro,
00:48:17el concepto de un perfil de la persona que se sienta ante el ordenador. Y como,
00:48:23¿cuáles son todos los plugins que quieren según lo que están mirando? Y no hay una solución
00:48:29perfecta para eso. Espero que podamos encontrar una, sin embargo.
00:48:34Es como cuando llega un Waymo y ajusta todos los asientos listos para ti en el momento en que
00:48:39entras.
00:48:40Sí, sí. Y sí creo que, en cierto punto, imagino que veremos agentes preguntándote
00:48:49más sobre ti mismo. Siento que eso es algo enorme, el concepto de perfil, identidad, rol,
00:48:57que para mí se siente como una pieza faltante. A menos que quieras asumir que todo el mundo es ahora como
00:49:05el gerente de proyecto completo de todo el asunto. Simplemente no, no veo eso pronto.
00:49:12Siento que algunas personas simplemente tienen mejores ideas sobre algunas cosas que otros.
00:49:19Así que...
00:49:20sí, revisemos esto. Entonces, ¿qué es lo interesante? Veamos, estos son... Sí,
00:49:33es interesante que esté haciendo que Opus revise a Opus y todavía esté mal, ¿verdad? Como que
00:49:37todavía recomienda generate object y v6. Vamos a verificar contra la documentación. Así que está intentando
00:49:50verificar y dice que, ya sabes, el que yo escribí es incorrecto. Esto
00:49:56sigue mostrándose válido pero desactualizado. Así que, nuestro Haiku recomendó los modelos más recientes,
00:50:05y eso, para mí, es super importante. No sé cuántas veces has intentado
00:50:08usar un agente para escribirlo. Escribir algo con IA. Y te dice: "usemos GPT-4 o algo así",
00:50:14no, eso ya es muy viejo. Y no está ni cerca de la calidad que necesitamos. Lo cual
00:50:20es solo una de esas cosas que puedes detectar, capturar y decir, por ejemplo: "mira los últimos modelos
00:50:25en el gateway de IA". Y podrías decir: "detecta los últimos modelos y pregunta al usuario cuáles
00:50:31quiere" y describir cada modelo y todo ese tipo de cosas. Mientras que ahora mismo,
00:50:36estos agentes siempre usan GPT-4... ha sido interesante, solo como nota al margen,
00:50:43ver a Claude Code recomendando el SDK de Anthropic cada vez más recientemente cuando no lo hacía
00:50:49antes. Y dices: "creo que alguien está retocando algunos prompts de sistema entre bastidores"
00:50:55para recomendar su propio SDK. Lo cual no les culpo. Son negocios, ¿verdad? Muy bien.
00:51:03Sí, así que generate object todavía está ahí. Y sí, eso fue bueno. Después de revisar
00:51:13la documentación, el tutorial es más preciso. Varias cosas que dije que se crearon en realidad existen.
00:51:19Así que sí, esto es Opus dándose cuenta de que estas cosas son reales... esto es Haiku
00:51:25con un plugin. Y Opus, como escribiendo el tutorial tratando de validarlo,
00:51:32tuve que decirle que fuera a mirar exactamente la documentación para encontrar algo que Haiku
00:51:39con el plugin hizo de un tirón, ¿verdad? Y si conoces la diferencia entre Opus
00:51:44y Haiku, eso es algo importante. Así que aquí hay un diff de todo lo que acertó
00:51:53para los desafíos o cambios. En fin, espero que eso demuestre de una forma sencilla.
00:52:04Uno de los escenarios, el AI SDK, esto es mucho más. Esto para cosas como el flujo
00:52:15de trabajo y sandbox con las tecnologías mucho más nuevas de Vercel que son increíbles, pero no están dentro
00:52:21del corte de conocimiento de los modelos. Estas distinciones se vuelven aún mayores porque los modelos ni siquiera
00:52:28saben sobre ellas, ¿verdad? Así que para eso es el plugin de Vercel. Si alguien tiene alguna
00:52:35pregunta, no duden en contactarme por X o por donde me encuentren. Me encanta hablar de
00:52:41esto, feliz de abordar cualquier inquietud. Esto es definitivamente un trabajo en progreso y
00:52:48algo que vamos a iterar, iterar e iterar hasta que sea una experiencia mágica e increíble.
00:52:52Y espero que puedan ver los comienzos de eso hoy. Si alguien tiene alguna
00:52:59pregunta, estaré encantado de responderla. Si alguien tiene alguna idea de plugin que quiera discutir,
00:53:04también estaré encantado de hablar de eso. Así que eso es todo, a menos que
00:53:14alguien quiera que profundice en algo más. Eso es lo que tengo para cubrir hoy.
00:53:20Realmente agradezco que se hayan tomado el tiempo. Es mucho para asimilar. Es un gran cambio. Hemos
00:53:25estado moviéndonos muy rápido con todas estas herramientas de IA.
00:53:28Sí, no va a frenar, por desgracia.
00:53:33Una pregunta que tengo es: si la gente quiere contribuir de alguna manera, o si encuentran un error y
00:53:38quieren informarlo, ¿cuál es la mejor manera de hacértelo llegar?
00:53:41Oh, sí, el repositorio para ello. vercel / vercel / plugin ¿o es vercel /
00:53:49vercel-plugin?
00:53:51Sí, vercel / vercel / vercel-plugin.
00:53:58Muy bien. Lo pondré en el chat también para que la gente lo tenga.
00:54:03Gracias. Sí, los issues allí son geniales. Estará cambiando rápidamente. Sé que aprobé
00:54:10un gran PR justo antes de esta llamada.
00:54:14Genial. Muy bien, Jacob, ¿alguna otra pregunta de tu parte?
00:54:20No, no, creo que cubrimos todo en el stream. Sí, gracias por hacer
00:54:24una demo tan profunda y genial. Siento que ya estoy preparado para construir mis propios plugins de Claude
00:54:30aquí. Y en lugar de solo gritarle al agente cuando decide hacer un force push a main,
00:54:37ahora sé qué ganchos debería decirle que use para asegurar que no lo haga
00:54:42de nuevo. Así que eso es súper útil.
00:54:45Las herramientas previas son tus amigas, son tu mejor defensa contra las cosas que no quieres que pasen.
00:54:51Así que, genial. Muchas gracias, John. Por supuesto. Gracias a todos.
00:54:56Y gracias a todos por acompañarnos. Pueden encontrar las próximas sesiones en [community.vercel.com/](https://community.vercel.com/)
00:55:01events. Y nos vemos la próxima vez.
00:55:05Sí, sí. Los veré en la comunidad. Tengan un excelente día a todos.