00:00:00Olá a todos. Bem-vindos à transmissão ao vivo da comunidade Vercel desta semana. Eu sou a Amy, e este é o
00:00:26Jacob. Fazemos parte da equipe da comunidade aqui na Vercel. Apenas um lembrete, estamos transmitindo
00:00:31isso no X e no YouTube, mas se você quiser garantir que vejamos suas perguntas e comentários
00:00:36no chat, vá para a comunidade e faça o login. É em [community.vercel.com/live](https://community.vercel.com/live) e você
00:00:43verá que é o primeiro evento.
00:00:44Sim, ao final da sessão, teremos um tempinho para algumas perguntas. Se você
00:00:49for participar do chat enquanto assiste à sessão, lembre-se de seguir
00:00:55nosso código de conduta e, sim, você pode enviar as perguntas que tiver ao longo do caminho e
00:00:59nós garantiremos que sejam feitas. Gostaria de apresentar nosso convidado. Temos Jon Lindquist aqui para nos mostrar
00:01:05o novo plugin da Vercel para o Cloud Code. Oi, Jon.
00:01:09Oi, Jacob. Oi, Amy. Obrigado por me receberem. Certo. Vamos começar a compartilhar
00:01:16minha tela imediatamente para que possamos mostrar o que está acontecendo aqui. Já faz um tempo que as
00:01:23skills têm sido a sensação e todos estão falando sobre quais skills usar para elevar o nível dos seus projetos
00:01:29e para permitir que seus agentes façam coisas que normalmente não são capazes de fazer. Agora, surgindo das
00:01:37skills, a próxima evolução disso é o que chamamos de plugins. E isso é algo
00:01:43que ainda está pegando. Não existem muitos plugins por aí e as pessoas ainda estão
00:01:48explorando exatamente como construí-los. Eu construí a primeira versão do plugin da Vercel e o que
00:01:56eu gostaria de falar é por que construir um plugin, quando você deve construir um plugin, por que um plugin
00:02:03em vez de skills e como eles se complementam, e todas essas questões. Então,
00:02:09se você tiver alguma dúvida sobre o que é, eu estarei falando sobre isso, mas o que um plugin pode
00:02:16proporcionar para você, se você deve construir um internamente ou pessoalmente, eu adoraria discutir isso
00:02:22e falaremos sobre isso durante a sessão de hoje. Então, antes de tudo, um plugin foi inicialmente
00:02:32lançado pelo Cloud Code e pelo Gemini também, mas adotaram abordagens muito diferentes. E a
00:02:39padronização de plugins é um esforço contínuo. E isso é algo que esperamos ter,
00:02:44posso falar mais em breve, onde um único plugin pode funcionar em todos os editores.
00:02:49No momento, estamos falando do suporte ao Cloud Code e ao Cursor também. O CodeX está chegando muito,
00:02:54muito em breve, se não já hoje, e muitos outros também. Há um padrão de plugin
00:03:01sendo trabalhado. Então, podemos esperar que os plugins sejam algo que você possa empacotar e compartilhar
00:03:08em qualquer ferramenta que esteja usando. Dito isso, você pode estar familiarizado com as skills,
00:03:15já que elas são arquivos markdown que podem ser carregados pelo seu agente para fornecer instruções adicionais.
00:03:23Se você as invoca manualmente, como fazendo um "slash" e invocando sua skill, ou se o agente
00:03:29detecta, com base na descrição, que a skill deve ser carregada. Portanto, é muito invocado pelo usuário ou
00:03:36o agente decide com base em uma condição na descrição. Agora, o próximo nível de um plugin
00:03:44é que eles têm algo chamado hooks. E se você pensar em um plugin, ou pensar em uma sessão
00:03:53que você tem com o Cloud Code ou com qualquer um dos suportes de agentes, você pode pensar que eles têm ciclos de vida.
00:03:59Agora estou no diretório do plugin da Vercel; se eu iniciar apenas o Cloud Code aqui, vou
00:04:07perguntar a ele quais são os hooks que ele usa. E isso vai listar os hooks
00:04:18meio que para definir um ciclo de vida. E um ciclo de vida é o quando: quando sua sessão começa, quando ferramentas
00:04:27como... antes das ferramentas serem chamadas, depois que elas são chamadas, quando um usuário envia texto para ele,
00:04:33e quando sua sessão termina. Há uma série de outros hooks lá. Mas para nossos propósitos
00:04:39no plugin da Vercel, estes são os que estamos usando atualmente com base em nossos objetivos iniciais.
00:04:44Para ser claro, o objetivo inicial do plugin da Vercel era ajudar as pessoas a publicar
00:04:51agentes na Vercel. Então a ideia é: como vamos tornar os agentes cientes do ecossistema Vercel,
00:05:02como tudo na plataforma que tem a ver com o AI SDK, o gateway. E nossos fluxos de trabalho
00:05:11estão quase todos aqui. Então, qualquer coisa sobre fluxos de trabalho e, essencialmente, a CLI da Vercel foi muito atualizada.
00:05:19E todas essas coisas sobre o SDK de agentes, ou desculpe, sobre a publicação de
00:05:26agentes na Vercel. São todas coisas que foram lançadas nos últimos dias, semanas,
00:05:33meses. E qualquer um desses suportes de agentes, como o Cloud Code, eles têm esses cortes de conhecimento
00:05:39de provavelmente seis meses a um ano atrás. Então depende do modelo, depende de
00:05:46uma série de variáveis. Mas são todas coisas que todos esses agentes não conhecem
00:05:52sobre todas as novidades incríveis que lançamos. Portanto, o objetivo do plugin da Vercel
00:05:57é impedir que o agente escreva código desatualizado, práticas desatualizadas, e trazê-lo
00:06:06para: aqui está tudo o que há de mais moderno na plataforma Vercel. Então essa é
00:06:11a grande vitória, pois os modelos são inteligentes, mas eles simplesmente não sabem sobre todas essas coisas.
00:06:19E em vez de pedir que façam pesquisas todas as vezes, ou pedir, ter um enorme
00:06:25pacote de skills para cada coisa, se pudermos encontrar alguma maneira de essencialmente forçar
00:06:32um agente a carregar o que há de melhor na plataforma Vercel, então isso é uma grande vitória para
00:06:38nós. Então, se você olhar para esses hooks no ciclo de vida de um agente, e novamente, há muitos,
00:06:45muitos outros hooks que podemos aproveitar no futuro ou que você pode aproveitar. Mas os principais
00:06:49por enquanto são session start. E usamos isso de algumas maneiras diferentes. Pre-tool use, user prompt
00:06:56submit, post-tool use e session end. Então session start e session end são, você sabe, o início
00:07:03e o fim de uma conversa com um agente. E você pode pensar que seu arquivo agents.md ou claud.md
00:07:12é normalmente a coisa que você faz no session start. Então, o que podemos fazer no session start para
00:07:19a plataforma Vercel? E o que poderíamos fazer é carregar um arquivo da plataforma Vercel, o que significa
00:07:27que se olharmos para, eu direi apenas: descreva vercel.md. Então este arquivo é algo que podemos incluir
00:07:40no session start junto com um claud.md. Essencialmente, você poderia ter um plugin que, se tudo o que você
00:07:48quisesse fazer fosse compartilhar um arquivo claud.md e ter uma maneira fácil para alguém
00:07:52instalá-lo. Você poderia construir um plugin que tudo o que ele fizesse fosse apenas injetar um "este é um grafo de conhecimento"
00:07:59da Vercel. E isso é algo que estamos continuamente ajustando. Estamos procurando
00:08:04maneiras de comprimi-lo e torná-lo o menor possível, mas ainda assim ter um bom desempenho
00:08:08e um equilíbrio do que deve estar lá e do que não deve. É muito difícil
00:08:15executar avaliações em todos os diferentes modelos e suportes. Mas estamos descobrindo
00:08:21essas coisas aos poucos. Então, o que está lá são essencialmente relações no ecossistema Vercel
00:08:28em torno de IA, quando usar, qual produto usar, quando chamar quais coisas,
00:08:35como uma compreensão estruturada de todo o ecossistema Vercel. Então o conceito de um... eu gosto
00:08:44de como ele chama de sumário. É como o início de um livro quando você começa uma conversa.
00:08:50E a maneira como estruturamos isso e pensamos nisso é: se você pensar em como eu falo
00:08:56com um agente sobre as coisas, eu tenho um certo vocabulário, eles têm um certo vocabulário.
00:09:02E se você puder fornecer a ele um glossário de termos, mapear isso para documentos, mapear isso para
00:09:07skills, mapear isso para coisas que ele deve carregar. Uma vez que você define essas coisas, você pode
00:09:12pensar no que eu vou dizer e no que o agente
00:09:19deve carregar e chamar, e tentar desenvolver esse mapa mental antecipadamente para que eu possa apenas
00:09:24falar naturalmente com ele e não ter que me preocupar em falar sobre, ou mesmo mencionar o
00:09:30AI SDK. E mesmo sem mencionar nenhum dos recursos. E se eu puder apenas encontrar alguma
00:09:38maneira de dizer apenas: "construa este app e publique-o". E então ele simplesmente resolve tudo no
00:09:45plugin. Perdão, resolve tudo no plugin para que um belo
00:09:52app seja publicado na Vercel e eles possam iterar a partir daí. Semelhante a como o v0 e
00:09:57alguns outros projetos funcionam para nós. Se pudermos apenas fazer com que você tenha uma experiência
00:10:02maravilhosa, sem ter que pensar no ecossistema. E isso é uma grande vitória. Isso
00:10:09faz sentido? Jacob, Amy, alguma pergunta inicial sobre isso ou algo no chat?
00:10:16Jacob, acho que você tem uma pergunta para a sua reunião. Desculpe, sinto muito. Eu tinha uma pergunta
00:10:24para você, Jon. Sim. Já que este plugin opera como um sumário, é por isso que ele não precisa...
00:10:30por que o plugin não precisa se atualizar constantemente toda vez que uma nova documentação é lançada?
00:10:38Porque ele é basicamente uma coleção de URLs que os agentes podem seguir para encontrar
00:10:43os documentos atualizados? Ou o plugin tem algum tipo de sistema de atualização imediata? Como
00:10:49essa abordagem funciona? Sim. Essencialmente, se você pensar no grafo de conhecimento inicial,
00:10:58muito do que ele pode fazer é apenas apontar para os documentos mais recentes. Então, se você pensar nisso...
00:11:07esta é uma pergunta que surge muito com as skills e como gerenciamos as skills por bibliotecas.
00:11:14E se você tem alguém na versão cinco de um SDK e outra pessoa na versão
00:11:18seis do SDK, e você tenta influenciá-los com skills de versões diferentes que são
00:11:22conflitantes, como você faz isso? E muito disso é, tipo, com base no que alguém
00:11:31tem instalado, você pode verificar o arquivo package.json, pode verificar a versão. E com base
00:11:36nisso, criar uma maneira inteligente de ver para quais URLs de documentos ele deve olhar e quais
00:11:44skills devem carregar e todas essas coisas. E essa é outra parte do tipo
00:11:51de fase de pré-carregamento que o session start faz: apenas inspecionar o projeto da pessoa.
00:11:58E, novamente, isso é tudo local. Ele apenas olha para o projeto e vê quais são as bibliotecas
00:12:02que você está usando, quais são as configurações que você está usando para saber como te apontar na direção certa.
00:12:07Um dos erros mais comuns é tentar usar, por exemplo, generateObject na versão mais recente
00:12:12de um SDK quando você sabe que a API mudou. Então, os plugins
00:12:21apenas lidam com isso; você não deveria ter que se preocupar se está usando isso em um projeto
00:12:27antigo ou se está usando no projeto mais novo e do zero; o plugin deve
00:12:32ser capaz de lidar com isso e você não deveria ter que se preocupar com números de versão, não deveria
00:12:34ter que se preocupar com nomes de pacotes, não deveria ter que se preocupar com nada, apenas deixe
00:12:41a Vercel fazer isso por você. Certo. E estamos continuamente trabalhando em formas de...
00:12:49temos muito mais ideias de como fazer isso melhor. E o plugin continuará a se atualizar e levar
00:12:54isso adiante. Mais alguma pergunta?
00:12:58Sim, qual é o escopo total do plugin? Ele lida apenas com serviços da
00:13:04Vercel? Qualquer coisa que eu possa encontrar no dashboard? Ou ele também abrange as bibliotecas de código aberto
00:13:11que suportamos, como Next.js, AI SDK, fluxos de trabalho e assim por diante?
00:13:16Sim, então o escopo inicial... o que decidimos inicialmente é cobrir o máximo possível,
00:13:25e tipo, ter cada biblioteca, tudo na plataforma, tudo lá dentro,
00:13:32para ver o que é mais usado. Internamente, fazemos com que todos ativem a telemetria,
00:13:36e você pode optar por compartilhar a telemetria. E descobriremos quais skills estão realmente sendo
00:13:40usadas e quais não estão. Assim, podemos remover algumas coisas que talvez não
00:13:48precisemos de tanta informação ou adicionar mais com base no que parece ser mais usado; obviamente
00:13:53Next.js, AI SDK e as coisas mais baixadas devem ter mais informações.
00:13:59E então é um equilíbrio inicial, onde intencionalmente fomos bem amplos com o
00:14:08lançamento inicial, e vamos reduzi-lo para algo muito mais enxuto daqui para
00:14:15frente. Então,
00:14:16sim, isso faz muito sentido. Obrigado. Sim. Tudo bem. Então, se você está
00:14:24construindo um plugin, e uma das razões pelas quais eu falo disso em termos gerais e flexíveis
00:14:29é porque eu gosto muito de desenvolvimento orientado a agentes. E em vez de mostrar
00:14:36exatamente como tudo funciona, acho que é muito mais importante aprender a falar
00:14:40sobre isso e absorver a terminologia. Assim você pode simplesmente pedir ao seu assistente de IA
00:14:45para fazer coisas semelhantes. Se você disser ao Cloud Code para construir um plugin para o Cloud
00:14:52Code, e você fornecer os documentos, ele consegue fazer isso. Então é muito mais importante
00:14:58discutir os conceitos e ideias em torno disso do que mergulhar demais no código. Com
00:15:05isso dito, o session start é um ótimo lugar para injetar um sumário
00:15:11da plataforma; tipo, estas são todas as coisas que estão desatualizadas com base em... tipo, as coisas que
00:15:19são importantes para mim que estão desatualizadas para a maioria dos modelos. Então isso
00:15:24é o que traz tudo para o nível de: aqui está como a Vercel é hoje. E assim,
00:15:31mesmo que essa seja a única coisa que aconteça no plugin, ele sabe que deve ir e
00:15:37verificar as coisas daqui para frente. Mas o que também podemos fazer — e apenas como uma nota
00:15:44lateral — um motivo pelo qual cada sessão no Cloud Code tem seu próprio ID exclusivo, o que permite
00:15:52que, conforme a sessão avança, ela garanta que tenha um orçamento de skills,
00:16:01e tenha as skills que já foram carregadas e coisas desse tipo. Então podemos
00:16:07escrever coisas no ambiente da sessão, ou em um local de armazenamento da sessão
00:16:15onde, ao longo dessa sessão, garantimos que não
00:16:20carregaremos coisas que já foram carregadas, ou duplicaremos esforços, porque podemos manter
00:16:26o rastro das coisas que já aconteceram. Então essa é outra ótima parte.
00:16:30A parte boa sobre a sessão é que ela te dá a chance de pegar um ID de sessão para que, através de
00:16:35qualquer um dos hooks futuros, qualquer coisa que for executada dentro da sessão, você tenha
00:16:40um ID para se prender e armazenar informações sobre a sessão para o seu plugin individual.
00:16:47O Claude Code também faz isso; se você olhar no diretório .claud com os projetos, você
00:16:50pode ver sessões e coisas lá. Então você usa esse mesmo conceito para seus próprios plugins
00:16:56e ferramentas próprias. Certo, dito tudo isso, vamos falar de pre-tool use e
00:17:05falaremos de pre-tool e post-tool ao mesmo tempo; o que eles te dão é a chance
00:17:11de ver alterações de arquivos. No pre-tool, você pode obter o conteúdo do arquivo que está prestes
00:17:20a mudar. E isso é em relação a ler arquivos, escrever arquivos, ou desculpe, ler arquivos,
00:17:29editar arquivos, criar arquivos. E o pre-tool também abrange muitas outras ferramentas que podem
00:17:34ser usadas, como executar coisas no bash. Então você tem essa chance de: antes que isso aconteça,
00:17:40existe algo que eu queira fazer? E, por exemplo, se virmos alguém
00:17:47tentando executar um comando específico da CLI da Vercel, e notarmos que existe uma maneira
00:17:55melhor de fazer isso agora na CLI da Vercel, como o fato de que a CLI da Vercel agora tem uma opção de API onde
00:18:00podemos fazer consultas muito mais avançadas. E a CLI da Vercel foi atualizada. Se você não a
00:18:05atualizou recentemente, ela tem muitos novos recursos excelentes. Podemos dar dicas sobre essas coisas e
00:18:11dizer que você está tentando fazer isso, ou mesmo verificar: sua CLI da Vercel está desatualizada? Seria
00:18:17ótimo atualizá-la. Então você tem muito mais opções aqui. Isso te dá a chance de
00:18:21verificar se ele vai fazer algum tipo de chamada de ferramenta, seja uma chamada de CLI.
00:18:27Isso é super importante para a CLI do sandbox, para a CLI de fluxo de trabalho, para todas essas novas
00:18:34CLIs sobre as quais os modelos ainda não sabem nada, porque foram lançadas após os
00:18:39cortes de conhecimento, para garantir que eles estejam fazendo as coisas corretamente. Então é por isso que para
00:18:47chamadas de ferramentas, como chamadas de bash, e para edições de arquivos, fica muito interessante com edições de arquivos.
00:18:52Algo que estamos explorando mais é comparar arquivos; tipo, este arquivo costumava ser assim,
00:18:59o agente está tentando deixá-lo assim. Isso é o correto, com base em nossas bibliotecas,
00:19:06é uma mudança correta? Ou tem algo estranho ali? E isso entra em... eu vou
00:19:11apenas me apoiar no exemplo de: digamos que você tenha o SDK v6 instalado e ele tente usar generateObject
00:19:18como uma API, o que é comum. E se você notar isso naquele momento, tipo: "vejo que
00:19:25você está tentando usar generateObject", vamos parar e lembrá-lo de como o AI SDK realmente
00:19:32funciona para que, antes mesmo de você chegar a testar ou publicar ou qualquer coisa, você o tenha flagrado
00:19:36no exato momento em que o agente estava tentando alterar o arquivo. E esta é uma daquelas
00:19:46coisas onde, se você tentar confiar em uma skill — onde skills são como dicas textuais de
00:19:54se você já tentou escrever no seu claud.md ou em uma skill, tipo: "nunca faça commit de tais
00:20:03arquivos" ou "nunca publique a menos que eu esteja em uma branch" ou algo assim. Você provavelmente
00:20:13já passou por isso; essas dicas nem sempre te protegem. O pre-tool use
00:20:21te dá a chance de, literalmente, impedir que essas coisas aconteçam de uma forma programática
00:20:28e técnica. E você pode dar a ele instruções diferentes e exemplos diferentes
00:20:32de maneiras de fazer isso. Então essa é a enorme diferença aqui entre skills, entre
00:20:41seus arquivos claud.md ou agents.md, é que você pode realmente controlar o que está mudando e
00:20:47se, ou o que está acontecendo. E se você quer que aconteça ou o que está mudando, se
00:20:51você quer que isso mude, esse é o ponto que te permite... é ótimo. A partir daí,
00:21:01você tem capacidades semelhantes no post-tool. A chance de verificar exatamente o que mudou
00:21:07depois que, por exemplo, um comando bash foi executado; o que há de diferente agora que
00:21:13uma ferramenta foi chamada? Então isso não permite que você impeça que algo
00:21:19aconteça, mas permite que você veja o resultado de algo que aconteceu. E se isso,
00:21:25se ele mudou algo ou fez algo inesperado, é outra chance de obter
00:21:31uma comparação e dizer: "isso parece meio estranho. Vamos dizer ao agente que isso nos parece estranho".
00:21:38Então esses são dois enormes hooks de ciclo de vida para se conhecer ao construir. E para nós, é
00:21:43de novo, é muito sobre esse corte de conhecimento. Essa é a
00:21:49coisa contra a qual a Vercel tem que lutar, porque publicamos rápido, publicamos com frequência e
00:21:55e estamos apenas lançando toda essa nova tecnologia tão rapidamente. E é apenas esse material incrível
00:22:00que queremos apresentar às pessoas. E é aí que um plugin pode ser muito, muito útil.
00:22:09Alguma pergunta sobre isso?
00:22:11Sim. Então, se ele está usando caminhos de arquivo para decidir quais habilidades injetar, isso significa que realmente
00:22:21temos muito a ganhar ao restringir os arquivos em nossos projetos para serem um pouco mais de
00:22:27propósito único, para que ele possa determinar com mais precisão de quais habilidades ele precisa,
00:22:34quais habilidades ele precisa adicionar. Por exemplo, se eu tiver um arquivo grande e talvez ele esteja usando cinco ou seis de nossas
00:22:39bibliotecas e agora ele só pode adicionar três, até três habilidades ali, ou ele pode não saber
00:22:47com base no caminho do arquivo. Então, você acha que isso deveria ser uma consideração agora
00:22:51ao construir software com essas ferramentas?
00:22:54Eu diria que você não deveria ter que se importar com o código que o agente escreve e que
00:23:02cabe aos autores do plugin. Cabe aos autores do framework fazer com que essas coisas funcionem
00:23:12bem. Como as pessoas que estão realmente executando avaliações e vendo se
00:23:17isso faz diferença ou não. Enquanto que eu acho que é muito, é muito fácil voltar ao modo engenheiro
00:23:27e pensar: vou resolver isso porque é o que um humano faria. E é definitivamente
00:23:33o que um agente iria querer. Tipo, essa é uma das maiores tentações dos desenvolvedores agora
00:23:39é a resolução de problemas, tipo encontrar problemas que não são problemas. Porque sim, é se,
00:23:50se você está tentando consertar algo e não sabe como testar, tipo,
00:23:53se você sabe como testar isso contra um agente, então vá em frente. Se você não tem vontade
00:24:00de fazer isso, então deixe que as pessoas que estão construindo os plugins e os frameworks
00:24:05cuidem disso, porque os testes e avaliações são caros. Tipo, custa
00:24:12muito dinheiro rodar todos esses modelos contra essas mudanças. Leva muito tempo e é
00:24:17uma dor enorme. Então, tipo, é uma daquelas coisas. Espero que ninguém tenha que se preocupar com isso.
00:24:23E eu acho que gastaria meu esforço em outras coisas por enquanto. Sim.
00:24:33Entendo, entendo. Então não faz sentido mudar a forma como eu construo as coisas. Se a próxima versão
00:24:40do modelo for construída de uma forma que tornaria todas essas alterações desnecessárias
00:24:47essencialmente.
00:24:48Sim. E eu acho, quero dizer, o objetivo final para todos os frameworks e para a Vercel é
00:24:56que você realmente não precise pensar ou olhar tanto para o código. Não estou dizendo que esse
00:25:01seja o caso agora. Estou dizendo que esse é o objetivo final. É para isso que
00:25:07estamos trabalhando, para que você queira entregar software bonito. Você quer ser capaz de
00:25:11pensar, você quer ter um fluxo livre de ideias e obter variações e ver quais realmente ressoam
00:25:19com você e então realmente reduzir para algo que seja bonito para você, sua
00:25:25família ou para seus clientes. Tipo, nós só queremos uma experiência bonita onde
00:25:33você não esteja pensando demais no tamanho dos seus arquivos. Se você está escrevendo,
00:25:39você sabe, os padrões de design certos, quais bibliotecas você está escolhendo. E eu concordo totalmente.
00:25:48Tipo, a tentação de dizer: vamos usar todos esses padrões porque os agentes são
00:25:53melhores com eles. Vamos fazer todas essas coisas. E é definitivamente algo que estamos
00:25:58experimentando com o plugin e testando. Mas, novamente, se você não pode testar, então
00:26:07é tão tentador dizer: eu fiz essa mudança e obviamente está funcionando melhor agora.
00:26:18E esse é um daqueles erros onde, bem, agora que você fez essa mudança, você
00:26:23não está olhando para como funcionava antes e o que isso impacta em outros lugares. E sim,
00:26:28talvez tenha funcionado bem para aquela sessão e, tipo, a engenharia está diferente agora. Desculpe,
00:26:35estou ficando filosófico, eu acho. Sim, acho que entendemos. Sim. Tudo bem.
00:26:44Então, outro hook é o envio do prompt do usuário. Este é muito importante porque permite
00:26:50que você pegue o texto do que o usuário digitou. E se ele mencionar uma biblioteca, se mencionar
00:26:55um conceito, se mencionar, sabe, se mencionar a palavra agendamento, vamos
00:27:00trazer a habilidade de cron. Isso é muito semelhante a como as habilidades funcionam, tipo, se o usuário ou
00:27:07se houver algo detectado na conversa que corresponda à descrição, mas isso na verdade
00:27:12dá a chance de rodar um regex contra um prompt do usuário. E se você detectar certas palavras-chave
00:27:20ou padrões ou o que quer que seja, carregue essas habilidades, faça essas coisas, dê dicas ao agente,
00:27:26tipo, talvez você deva fazer mais perguntas de acompanhamento. Esta é a parte interativa onde
00:27:33é a sua chance de dizer: o usuário disse isso, talvez devêssemos pedir mais esclarecimentos
00:27:38ou devêssemos apenas carregar todas essas coisas e seguir em frente. Você pode fazer
00:27:44algumas coisas muito divertidas com o envio do prompt do usuário onde, se você quiser ter
00:27:48seu próprio glossário personalizado ou linguagem de comandos para você mesmo, e quiser
00:27:56prefixar coisas com cifrões. E se algo começar com um cifrão, faça isso. Ou
00:28:00se algo tiver, você sabe, é como escrever pequenos scripts bash ou algo assim
00:28:07dentro do envio do prompt do usuário, que se você detectar isso, poderá executar uma ferramenta imediatamente e
00:28:13ela pode rodar dentro de, você pode rodar quaisquer scripts bash, scripts node,
00:28:20o que for dentro desse hook que está fora do contexto da sessão. Então você pode fazer
00:28:28todo tipo de coisas rápidas e malucas ali. Se você quiser, tipo, detectar a palavra commit
00:28:37e então evitar que o agente dê alguns passos para fazer o commit de algo. Em vez disso,
00:28:47você apenas tem um script que faz o commit baseado no que quer que seja. Logo após o prompt
00:28:53commit, você pode dizer ao agente: sabe, eu rodei essa coisa de commit, você não precisa se preocupar
00:28:59com isso. E você pode economizar alguns turnos do agente. E há alguns pequenos truques
00:29:03interessantes que você pode fazer ali para realmente acelerar se houver muitas coisas que
00:29:09você faz que são repetitivas, em vez de pedir ao agente para fazer todas as vezes. É
00:29:15um projeto divertido se você quiser construir um pequeno envio de prompt para você mesmo e
00:29:19criar sua própria linguagem de como você quer falar com o agente. Mas para nós,
00:29:25é mais tipo: se eles disseram isso, falaram sobre esse conceito, o que isso significa na
00:29:30terminologia da Vercel, então é como combinar palavras contra, especificamente, tipo,
00:29:37agendamento são crons e workflows. E, sabe, palavras como paralelo ou performance ou o que for, tipo,
00:29:45você pode encontrar e direcionar o agente para coisas específicas que você conhece sobre a Vercel. Muito, muito
00:29:53divertido de brincar com o envio de prompt do usuário se você tiver um fim de semana para mexer com isso.
00:29:58E, novamente, vou reiterar: é totalmente possível chegar aqui e dizer: me ajude
00:30:03a construir um plugin do Claude Code com envio de prompt do usuário que detectará, sabe, cifrões
00:30:09e se mostrar um cifrão, então execute o commit dentro do envio do prompt do usuário para que
00:30:14com esse prompt, sabe, eu pudesse ter construído isso, então não se preocupe muito com
00:30:19o código, você pode simplesmente começar a brincar com ele. Tudo bem, agora que você tem tudo
00:30:26isso organizado, o fim da sessão é uma chance de limpar quaisquer arquivos ou qualquer coisa que você escreveu
00:30:32durante a sessão. Então, se você começou a coletar quais habilidades foram executadas, se começou a
00:30:39coletar qualquer informação sobre resultados de ferramentas que foram chamadas, ou qualquer tipo de
00:30:48orçamento ou algo que você esteja acompanhando durante a sessão, é uma chance de entrar lá e
00:30:51limpar tudo. Há algumas coisas fascinantes que você pode fazer no fim da sessão. Porque ele roda
00:30:57essencialmente no Ctrl C, tipo na saída da sessão. Você pode acionar outros agentes
00:31:05para dizer: ok, olhe para todos os arquivos que mudaram na sessão. Eles correspondem ao que
00:31:09tudo o que não fazemos. É apenas coisas muito interessantes que você pode
00:31:13fazer no fim da sessão onde minha sessão acabou. Essa sessão representa progresso neste
00:31:20projeto? Representa lixo? Tipo, olha todos os arquivos que foram alterados.
00:31:26Isso é duplicidade de coisas que já estão no projeto? E se for, tipo, vá lá,
00:31:30limpe e avise, você teria que avisar o usuário de alguma forma, como através de uma notificação do sistema
00:31:37ou através de algum outro meio, já que sua sessão se foi. Mas coisas realmente
00:31:43interessantes que você pode fazer ali. Tudo bem. Com tudo isso dito, eu só vou
00:31:50escrever uma pequena demonstração aqui. Então, vou iniciar uma versão do Claude Code rodando
00:31:56o plugin da Vercel versus quando não está rodando o plugin da Vercel. Vou usar
00:32:04o Claude para pular permissões perigosamente, vou deixar o debug ligado, mostrarei isso em um segundo.
00:32:08E este modelo será definido como Haiku. Esse é o modelo mais rápido e simples
00:32:13para o Claude Code. E eu vou dizer: apenas escreva um tutorial sobre o AI SDK.
00:32:26E tipo, veremos o que acontece lá. E vou comparar lado
00:32:30a lado, você pode ver que ele já começa a carregar a habilidade. E este tem o plugin carregado.
00:32:37Se eu quiser iniciar uma sessão sem nenhum plugin carregado, há uma flag de fontes
00:32:46de configuração que dá a chance de desativar, tipo, fontes de nível de usuário ou configurações de nível de usuário ou
00:32:53configurações de nível de projeto, essencialmente, apenas ignorar quaisquer configurações. Dessa forma, posso carregá-lo sem
00:32:59plugins. O "no flicker", ops. Esse "no flicker" é novo, de ontem, é uma maneira legal
00:33:05de fazer rolagem suave dentro do Claude Code. Então estou ativando isso também. E então eu
00:33:12vou definir o modelo Opus, sendo o modelo mais inteligente. E se eu fizer o mesmo prompt
00:33:20de tutorial sobre o SDK. E esta é a versão padrão aqui. E vamos
00:33:28comparar os resultados. Oh, ops, eu preciso, eu não apaguei o anterior. Vamos
00:33:36começar de novo. Deixe-me ligar isso e rodar aquilo. Isso foi
00:33:50algo que eu estava rodando hoje de manhã e limpei antes disso começar. Então deixe-me lançar de novo.
00:33:56Fazendo uma comparação. Sim.
00:34:01Tudo bem. Então
00:34:04a grande diferença aqui é este ser Haiku 4.5 versus Opus 4.6, certo? Tipo, o máximo este
00:34:15é um milhão de vezes mais barato e muito, muito mais rápido. E ele já vem carregado com muito mais
00:34:22informações da Vercel. Então, mesmo se você comparar, tipo, o custo orçamentário dos tokens extras
00:34:32que estamos incluindo, incluindo versus, sabe, Haiku versus Opus. Enquanto isso está indo para
00:34:38eu deveria ter dito apenas criar um arquivo markdown. Eu acho que ele está indo para escrever código de verdade,
00:34:45mas isso será interessante o suficiente. Vamos ver. Então esta é uma coisa a notar sobre uma
00:34:59das abordagens que estamos adotando para muitas de nossas habilidades é, como mencionado antes, por causa
00:35:05do número da versão, porque as diferentes habilidades podem mudar para nós fixamos o número da versão
00:35:13das habilidades. Deixe-me reformular isso. Bem
00:35:21habilidades diferentes. Muitas de nossas habilidades dizem: por favor, olhe para os node_modules, onde vamos agrupar
00:35:28muitos dos documentos para que os documentos também fiquem fixados na versão. Então, olhando aqui,
00:35:34você pode ver que ele estava realmente lendo os documentos locais. E ele está passando por aqui
00:35:40e montando este tutorial. Tudo bem. Agora, vamos dar isso. Isso realmente não fez
00:35:53nenhuma pesquisa. Então isso será interessante. Da última vez eu fiz muito mais pesquisa. E eu
00:36:01já posso ver agora, tipo, que ele está usando um modelo desatualizado Sonnet 4 em vez de, tipo,
00:36:074.6. Ele está usando um desatualizado. Mencionou generateObject, que não é o que queremos usar. Nós
00:36:15usamos V6. E já há um monte de coisas que estão apenas desatualizadas. Eu não diria que elas
00:36:23estão erradas, mas estão, tipo, muito, muito desatualizadas para o que há de mais moderno se você quer a melhor performance
00:36:28e as melhores práticas do SDK. Então, tudo bem. Isso capturou algo
00:36:37aqui? Sim, parece que sim. A habilidade do SDK captou, parece que ele escreveu um tutorial inicialmente
00:36:51aqui. E então a habilidade percebeu que não estava atualizado para a V6, tipo, sem eu dizer
00:36:58nada. E agora ele está indo e atualizando. Ele passou de generateObject para generateText.
00:37:03E ele está indo e atualizando tudo para garantir que esteja nas versões mais recentes. Tudo bem,
00:37:10então eu posso comparar esses dois. Vou apenas começar uma nova sessão. Vamos entrar aqui e comparar
00:37:23os tutoriais sem plugin versus o tutorial com o plugin da Vercel para precisão. E isso
00:37:44será interessante de ver, tipo, toda vez que eu rodei isso antes, o Opus escreveu um arquivo markdown
00:37:48desta vez ele fez trechos de código. Vai ser divertido ver a diferença.
00:37:54Quando você está fazendo isso, sim, especialmente se você tiver outras habilidades, talvez trabalhando ao lado
00:38:03deste plugin, existe o risco de eles terem um conflito e, tipo, resultar em coisas desatualizadas
00:38:10sendo preferidas ou o plugin terá, tipo, uma prioridade maior?
00:38:16O plugin irá essencialmente, eu diria, injetar habilidades com força baseado em seus padrões. Então se
00:38:27houver, sempre há esse risco, tipo, é tudo apenas contexto,
00:38:34tipo, todos esses são apenas arquivos de texto que são inseridos em uma sessão. Então eu sempre diria
00:38:41use apenas as coisas que você quer para o projeto em que está como uma, desculpe, muito raramente
00:38:49instale uma habilidade em nível de usuário, a menos que você saiba que quer aquilo em cada projeto.
00:38:58E mesmo para o plugin da Vercel, estamos trabalhando para encontrar as melhores maneiras possíveis de, tipo,
00:39:06carregar apenas o que você precisa para o projeto em que está. E temos muitas ideias em torno
00:39:11disso. Mas uma das, uma das ideias provavelmente mais controversas é: quando
00:39:23um usuário diria que instalou um plugin da Vercel? Então, qual suposição você poderia fazer sobre isso?
00:39:30Se eles instalaram o plugin da Vercel, e estão na plataforma de um concorrente, e abrem um
00:39:35projeto na plataforma do concorrente? Deveríamos falar para eles sobre as nossas coisas? Tipo, isso é,
00:39:42é uma coisa muito controversa, certo? E se uma pessoa vê isso, e
00:39:47ela não queria, e ela não está realmente interessada em migrar para a Vercel,
00:39:53ela vai ficar muito brava. Se outra pessoa estiver, ela ficará muito feliz. Tipo, então tem
00:39:59algumas coisas fascinantes. Se você aceita a teoria de que todo mundo
00:40:05vai apenas interagir com agentes... tipo, qual é a etiqueta em um plugin ou ao informar
00:40:15agentes sobre, tipo, a nova coisa fantástica na sua plataforma sem, tipo, pisar no pé
00:40:24das outras plataformas. E então, tipo, há muitas coisas. Isso é muito relevante para
00:40:31o que eu estou fazendo agora, pois vamos lançar a versão estável do Workflow em breve. E por isso estou escrevendo
00:40:37guias de migração. Se alguém quiser migrar de um dos concorrentes do Workflow, isso,
00:40:43sabe, poderia usar diretamente uma habilidade para dizer: migre disto para o Workflow. É assim que você,
00:40:49é assim que você faz. Se você quiser fazer isso, tipo, em que ponto em um agente eu informaria
00:40:55alguém sobre isso? E esse tipo de coisa é muito, muito interessante para mim. Especialmente porque é
00:41:00uma prioridade agora, já que é no que estou trabalhando no momento. Mas sim, tipo, conflitos de contexto,
00:41:07tipo, vai ser um problema no futuro. Eu não sei o que tentar
00:41:14inferir o que o usuário quer baseado no contexto do projeto deles ou do que pediram até agora.
00:41:19Seria ótimo. Tipo, poderíamos tecnicamente olhar conversas passadas e ver o que eles
00:41:27fizeram. Poderíamos olhar o histórico de commits. Tipo, poderíamos dizer para a CLI do GitHub, tipo, vá olhar
00:41:35qualquer coisa no projeto. Tipo, há muitas coisas que você poderia fazer para reunir contexto,
00:41:40mas isso também é cruzar algumas fronteiras, tipo, chamar ferramentas que eles não pediram para você chamar,
00:41:46muitas e muitas coisas realmente interessantes que, se for, é muito mais fácil apenas fazer tudo
00:41:53na Vercel e apenas ter, tipo, apenas em vez de... e tipo, fornecer um agente com um conjunto específico
00:42:00de regras e um plugin que apenas, tipo, entrega tudo lindamente lá e, tipo, não ter
00:42:05que se preocupar com todos esses conflitos. Enfim. Eu espero mencionar, sim.
00:42:14Em um contexto de plugin, quando nossas habilidades... tipo, em que ponto desse processo as habilidades
00:42:19normalmente estão? Por exemplo, se eu tivesse uma habilidade de migrar o Create React App para o Next.js, e ela
00:42:26estivesse apenas na minha pasta de habilidades, é mais provável que ela seja invocada automaticamente sempre
00:42:32que eu estiver em um projeto Create React App? Em vez de, digamos, se eu tiver o plugin da Vercel aqui, eu posso
00:42:39decidir quando ela será invocada e eu posso, se eu construir essa mesma migração como um plugin,
00:42:47posso fazer com que ela aconteça apenas se o usuário estiver solicitando explicitamente. Esse é o modelo mental
00:42:52correto? Eu acho que sim. Tipo, estivemos conversando sobre
00:42:59o conceito de, tipo, habilidades de uma só vez ou, tipo, habilidades de uso único que são mais tipo: eu quero
00:43:06fazer uma coisa como uma migração, que é, tipo, essa é uma tarefa que você tem, ou
00:43:12tipo, uma habilidade relacionada a uma tarefa que você não quer carregar em nenhum outro momento, exceto para a tarefa.
00:43:17Tipo, você quer que ela seja restrita à tarefa. Você não quer que seja restrita ao projeto.
00:43:22Você não quer que seja restrita ao usuário, você quer que seja restrita à tarefa. E essas são discussões
00:43:27que estamos tendo. E eu acho que, eu não tenho uma resposta ótima porque agora, se você tem
00:43:33uma habilidade como essa carregada, então ela vai influenciar um framework nos modelos baseado
00:43:41no modelo e baseado em outras habilidades. Tipo, é tão difícil dizer sem saber exatamente
00:43:47o que mais está no projeto. Mas sim, tipo, isso definitivamente é, isso também é prioridade como
00:43:55habilidades restritas a tarefas. Outra pergunta na minha mente aqui é o quanto
00:44:04dessa arquitetura de plugin é específica do Claude Code. Então, se eu quisesse ter um comportamento semelhante
00:44:12no Cursor ou Codex ou em qualquer outro, eles têm seu próprio formato de plugin? Eu preciso
00:44:18de um plugin para cada um deles? Como isso funciona? Sim. Então, devemos ter alguns anúncios
00:44:25em breve sobre o tipo de especificação em torno dos plugins e todo mundo concordando em, tipo, finalmente ter
00:44:33plugins que funcionarão universalmente e com compatibilidade cruzada. Praticamente todo mundo
00:44:39está de acordo com isso. Eu não diria hoje, mas hoje, se você construir um plugin no formato do Claude Code,
00:44:45você pode, eu diria que poderia esperar que ele funcione com os outros em pouco tempo.
00:44:54Mas sim, é fantástico. Já existem pastas de habilidades demais. Estou muito feliz
00:45:00que finalmente estamos começando a padronizar algo aqui. Sim. Uma vez que a ideia,
00:45:07tipo, eu adorei quando estava conversando com a Anthropic sobre plugins e o motivo
00:45:13de terem escolhido a palavra plugin em vez de extensão é que plugin implica algo
00:45:18que você pode conectar e desconectar. Tipo, se você criar um plugin com um conjunto
00:45:24de habilidades e só quiser usá-lo novamente para uma única tarefa, isso deve ser bem viável.
00:45:33Se estou no meu projeto e sou um designer, eu não quero que todas as minhas
00:45:40habilidades de design interfiram com as habilidades de desenvolvedor ou algo assim. Tipo,
00:45:46você quer poder conectar apenas aquelas peças. E eu concordo plenamente com esses
00:45:52conceitos de que pessoas individuais terão suas tarefas, funções e projetos individuais.
00:45:59E elas vão querer plugins mais do que habilidades, porque podem, e provavelmente
00:46:05vão querer curar seus próprios plugins também, tipo, construir seu próprio conjunto
00:46:10de habilidades e ganchos, tudo totalmente personalizado para a maneira como trabalham.
00:46:16Isso significa que eu deveria pensar em talvez desconectar o plugin da Vercel se
00:46:21eu estiver trabalhando em um projeto que não seja da Vercel?
00:46:25Eu diria que, a partir de hoje, sim, por causa de como, tipo, ele é muito agressivo
00:46:34em se autopromover. E espero não me meter em encrenca com alguém por dizer isso.
00:46:39Mas a intenção total do plugin da Vercel é: isto é algo para carregar seu
00:46:46agente e dizer "construa isso para mim". E então aquilo simplesmente aparece de forma mágica
00:46:53na Vercel. Esse é o objetivo inicial. E estamos vendo como isso funciona. E se, com base
00:46:59no feedback que estamos recebendo, estamos recuando um pouco, vendo que definitivamente
00:47:04precisamos detectar melhor o que está no projeto para desativar e tudo mais.
00:47:09E isso virá muito, muito, muito em breve. Então, você sabe, provavelmente mantenha-o,
00:47:15mantenha-o instalado e ativado porque estamos trabalhando ativamente nisso,
00:47:18como estávamos conversando hoje de manhã. Então...
00:47:23Entendo. Então é meio que uma troca onde talvez, no futuro, ele entenda um pouco
00:47:29melhor quando deve se invocar. Mas agora, a maneira como o usuário controla se este
00:47:36plugin está agindo ou não é conectando-o ou desconectando-o para uma sessão diferente.
00:47:42Sim. E agora, se você digitar slash plugin, você pode ir até os plugins instalados,
00:47:48navegar com tab, ir até qualquer plugin que queira desativar. E você pode atualizar,
00:47:54pode desinstalar, pode fazer o que quiser. Então você pode desativá-lo dessa forma. E há
00:48:03outros truques mais avançados, como configurar funções ZSH personalizadas
00:48:10que carregam conjuntos específicos de configurações para cada usuário... é tudo muito estranho,”
00:48:17o conceito de um perfil da pessoa que se senta ao computador. E tipo,
00:48:23quais são todos os plugins que ela quer com base no que está olhando? E não há uma
00:48:29solução perfeita para isso. Espero que possamos descobrir uma, no entanto.
00:48:34É como quando um Waymo encosta e ajusta todos os assentos para você no momento em que
00:48:39você entra.
00:48:40Sim, sim. E eu acho que, em certo ponto, imagino que veremos agentes perguntando
00:48:49mais sobre você. Sinto que isso é algo enorme, como o conceito de identidade de perfil, função,
00:48:57que para mim parece uma peça que falta. A menos que você queira assumir que todos agora são
00:49:05o gerente de projeto completo de uma coisa inteira. Eu simplesmente não vejo isso tão cedo.
00:49:12Eu só sinto que algumas pessoas têm ideias melhores sobre algumas coisas do que outras.
00:49:19Então...
00:49:20É, vamos revisar isso. Então, o que é interessante? Vamos ver, estes são... sim,
00:49:33é interessante que estou fazendo o Opus revisar o Opus e ainda está errado, né? Tipo,
00:49:37ele ainda está recomendando generate object e v6. Vamos verificar contra a documentação.
00:49:50Ele está tentando verificar e está dizendo que, sabe, aquele que eu escrevi está incorreto.
00:49:56Isto ainda se mostra válido, mas datado. Então, tipo, nosso Haiku recomendou os modelos
00:50:05mais recentes, e isso, para mim, é super importante. Não sei quantas vezes você tentou
00:50:08usar um agente para escrever algo com IA. E ele diz: "vamos usar o GPT-4o", tipo,
00:50:14não, isso já está muito antigo agora. E não chega nem perto da qualidade que precisamos.
00:50:20O que é apenas uma daquelas coisas que você pode detectar, capturar e dizer: "verifique os
00:50:25modelos mais recentes no gateway de IA". E você poderia dizer para detectar os modelos mais recentes,
00:50:31perguntar ao usuário qual ele quer, descrever cada modelo e tudo mais. Enquanto que agora,
00:50:36esses agentes sempre usam o GPT-4. Tem sido interessante, apenas como uma observação,
00:50:43ver o Claude Code recomendando o SDK da Anthropic cada vez mais recentemente, o que não
00:50:49fazia antes. E você pensa: acho que alguém está ajustando alguns prompts de sistema nos bastidores
00:50:55para recomendar o próprio SDK deles. O que eu não os culpo. São negócios, né? Certo.
00:51:03É, então o generate object ainda está lá. E sim, isso foi bom. Após verificar
00:51:13a documentação, o tutorial está mais preciso. Várias coisas que chamei de fabricadas realmente existem.
00:51:19Então sim, este é o Opus percebendo que estas são coisas reais... este é o Haiku
00:51:25com um plugin. E o Opus escrevendo o tutorial, tentando validar o tutorial, tipo, eu tive
00:51:32que dizer a ele para olhar exatamente na documentação para descobrir que algo que o Haiku
00:51:39com o plugin meio que fez de primeira, certo? E se você sabe a diferença entre Opus
00:51:44e Haiku, isso é algo importante. Aqui está um diff de tudo o que ele acertou
00:51:53nos desafios ou mudanças. Enfim, espero que isso demonstre de uma forma simples.
00:52:04Apenas um dos cenários, o AI SDK, isso é muito, muito mais. Isso para coisas como workflow
00:52:15e sandbox com as tecnologias muito mais recentes da Vercel que são incríveis, mas não estão
00:52:21dentro do corte de conhecimento dos modelos. Essas distinções tornam-se ainda maiores porque
00:52:28os modelos nem sabem sobre elas, certo? Então é para isso que serve o plugin da Vercel.
00:52:35Se alguém tiver dúvidas, sinta-se à vontade para me procurar no X ou em qualquer lugar. Adoro
00:52:41conversar sobre isso, fico feliz em abordar qualquer preocupação. Isto é definitivamente um trabalho em
00:52:48progresso e algo que vamos iterar, iterar e iterar até que seja essa experiência mágica
00:52:52e incrível. E espero que vocês possam ver o começo disso hoje. Se alguém tiver
00:52:59qualquer dúvida, ficarei feliz em responder. Se alguém tiver ideias de plugins e quiser fazer um
00:53:04brainstorm, também ficarei feliz em falar sobre isso. Então é isso, a menos que alguém
00:53:14queira que eu me aprofunde em outra coisa. É o que eu tenho para cobrir por hoje.
00:53:20Realmente agradeço por você dedicar esse tempo. É muita coisa para absorver. É uma grande mudança.
00:53:25Temos avançado tão rápido com todas essas ferramentas de IA.
00:53:28É, infelizmente não vai desacelerar.
00:53:33Uma pergunta que eu tenho é: se as pessoas quiserem contribuir de alguma forma, ou se encontrarem
00:53:38um bug e quiserem relatar, qual é a melhor maneira de fazer isso chegar até você?
00:53:41Ah, sim, o repositório para isso. Vercel slash, Vercel slash plugin ou é Vercel slash
00:53:49Vercel plugin?
00:53:51Sim, Vercel slash Vercel dash plugin.
00:53:58Certo. Vou colocar isso no chat também para que as pessoas tenham o link.
00:54:03Obrigado. Sim, abrir issues lá é ótimo. Vai mudar rapidamente. Eu sei que aprovei
00:54:10um grande PR logo antes desta chamada.
00:54:14Incrível. Certo, Jacob, mais alguma pergunta da sua parte?
00:54:20Não, não, acho que cobrimos tudo na transmissão. Sim, obrigado por fazer uma
00:54:24demonstração tão aprofundada e fantástica. Sinto que agora estou pronto para construir meus
00:54:30próprios plugins para o Claude. E em vez de apenas gritar com o agente quando ele decide
00:54:37forçar um push para o main, agora eu sei quais hooks devo dizer para ele usar para garantir
00:54:42que ele não faça isso de novo. Então isso é super útil.
00:54:45Pre-tools são seus amigos, são sua melhor defesa contra coisas que você não quer que aconteçam.
00:54:51Legal. Muito obrigado, John. Com certeza. Obrigado, pessoal.
00:54:56E obrigado a todos por se juntarem a nós. Vocês podem encontrar as próximas sessões em
00:55:01community.vercel.com slash events. E nos vemos na próxima.
00:55:05Isso aí. Vejo vocês na comunidade. Tenham um ótimo dia, pessoal.