▲ Sesión comunitaria: Plugin de Vercel para Claude Code

VVercel
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

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.

Key Takeaway

Los plugins de Vercel para Claude Code optimizan el desarrollo mediante hooks de ciclo de vida y grafos de conocimiento que fuerzan el uso de APIs actualizadas como AI SDK v6, permitiendo que modelos ligeros como Haiku superen la precisión de modelos más grandes.

Highlights

Los plugins de Vercel para Claude Code utilizan hooks de ciclo de vida como session start, pre tool use y post tool use para intervenir en las acciones del agente.

El uso del plugin permite que el modelo Haiku supere en precisión a Opus al generar tutoriales actualizados del AI SDK v6.

El hook pre tool use funciona como una barrera programática que puede impedir que un agente ejecute comandos de bash o ediciones de archivos incorrectas.

El archivo vercel.md inyecta un grafo de conocimiento estructurado que compensa los límites de conocimiento de los modelos de IA, que suelen tener un retraso de 6 a 12 meses.

La estandarización de plugins busca que un mismo paquete sea compatible con Claude Code, Cursor, Codex y otros editores en el futuro cercano.

El plugin de Vercel automatiza la detección de versiones en el archivo package.json para sugerir la documentación y APIs correspondientes a la versión instalada.

Timeline

Evolución de Skills a Plugins Universales

  • Los plugins representan la evolución técnica de las skills al permitir una integración más profunda con el entorno del editor.
  • Existe un esfuerzo activo para estandarizar el formato de los plugins entre herramientas como Claude Code, Cursor y Codex.
  • El primer borrador del plugin de Vercel establece las bases para que los agentes operen con el ecosistema de la plataforma de manera nativa.

El paso de skills basadas en archivos Markdown a plugins programáticos permite que los agentes realicen tareas que normalmente superan sus capacidades básicas. La estandarización es la prioridad actual para asegurar que los desarrolladores no tengan que construir versiones específicas para cada editor de código. Esta arquitectura facilita que el agente comprenda el contexto del proyecto sin intervención manual constante del usuario.

Arquitectura de Hooks y Ciclo de Vida del Agente

  • Los hooks permiten ejecutar código antes y después de que el agente utilice herramientas o reciba prompts del usuario.
  • El archivo vercel.md actúa como una tabla de contenidos y glosario de términos para el inicio de la sesión.
  • El objetivo principal es evitar que el agente escriba código basado en prácticas obsoletas debido a su límite de conocimiento temporal.

Los puntos de interrupción como session start inyectan instrucciones específicas de la plataforma Vercel junto con los archivos de configuración estándar del agente. Al proporcionar un mapa mental estructurado del ecosistema, el agente puede mapear términos del usuario a documentos y skills precisas de forma automática. Esto elimina la necesidad de que el usuario mencione explícitamente tecnologías como el AI SDK o el Gateway en cada instrucción.

Gestión Automática de Contexto y Versiones

  • El plugin inspecciona localmente archivos como package.json para determinar la versión exacta de las librerías instaladas.
  • La asignación de IDs de sesión únicos evita la duplicación de carga de skills y optimiza el presupuesto de tokens.
  • El alcance del plugin abarca desde servicios de infraestructura en el panel de control hasta librerías de código abierto como Next.js.

La inspección local del proyecto permite al plugin dirigir al agente hacia las URLs de documentación correctas, evitando conflictos entre diferentes versiones de un mismo SDK. Este enfoque garantiza que el agente no intente usar APIs nuevas en proyectos heredados o viceversa. El sistema de telemetría opcional ayuda a identificar qué partes del grafo de conocimiento son más útiles para refinar el plugin en futuras actualizaciones.

Control Programático con Pre-Tool y Post-Tool Use

  • El hook pre tool permite interceptar y validar cambios en los archivos antes de que se apliquen.
  • Los desarrolladores pueden usar estos hooks para impedir acciones peligrosas como realizar commits directos a la rama principal.
  • La validación programática ofrece una seguridad superior a las simples instrucciones de texto en archivos de configuración.

Al comparar el estado anterior y posterior de un archivo, el plugin detecta si el agente está introduciendo errores comunes de API en el momento exacto de la edición. Esta capacidad de interrupción es fundamental para flujos de trabajo profesionales donde la ingeniería de prompts por sí sola no garantiza el cumplimiento de reglas críticas. El objetivo final es que el desarrollador se centre en la arquitectura del software mientras el plugin supervisa la implementación técnica de bajo nivel.

Optimización de Prompts y Gestión de Tareas

  • El hook user prompt submit permite ejecutar expresiones regulares (regex) contra las instrucciones del usuario para cargar herramientas específicas.
  • Es posible crear un lenguaje de comandos personalizado utilizando prefijos para acelerar tareas repetitivas.
  • El hook session end ofrece una oportunidad para realizar limpiezas de archivos temporales o auditorías de progreso al finalizar el trabajo.

Detectar palabras clave como 'horario' o 'paralelo' permite al plugin inyectar habilidades de cron o optimización de rendimiento de forma proactiva. Al automatizar tareas como los commits mediante scripts disparados por el prompt, se ahorran turnos de conversación y créditos de API. Esta capa de personalización permite a cada usuario adaptar el comportamiento del agente a su flujo de trabajo específico sin modificar el núcleo del modelo.

Demostración: Comparativa de Precisión Haiku vs. Opus

  • Haiku 4.5 con el plugin de Vercel genera código de AI SDK v6 preciso, mientras que Opus de fábrica sugiere APIs desactualizadas.
  • El plugin fuerza al agente a corregir errores como el uso de 'generateObject' cuando la documentación actual exige otros métodos.
  • Los plugins de Vercel son especialmente críticos para tecnologías de lanzamiento reciente como Workflow y Sandbox que no están en el entrenamiento original del modelo.

La comparativa en vivo demuestra que un modelo más pequeño y económico puede ser más efectivo si cuenta con el contexto adecuado proporcionado por el plugin. Opus, a pesar de su inteligencia superior, falla al recomendar modelos viejos como GPT-4 para tareas donde existen opciones más eficientes. El repositorio oficial vercel/vercel-plugin está abierto para contribuciones y reportes de errores mientras la herramienta evoluciona hacia una experiencia de desarrollo 'mágica'.

Community Posts

View all posts