00:00:00Ao trabalhar com o Claude Code, Codex ou qualquer outra ferramenta de engenharia baseada em agentes, um conceito
00:00:05realmente importante que é suportado por todas essas ferramentas e que você deve entender e usar é o de
00:00:12habilidades de agente (agent skills). É fácil ignorá-las porque são apenas um monte de arquivos markdown ou porque
00:00:18configurá-las pode ser trabalhoso, mas, na minha experiência, vale a pena. E, alguns dias atrás, houve
00:00:24uma postagem de alguém da equipe do Claude Code — ou seja, da Anthropic — onde ele compartilhou os
00:00:31diferentes tipos de habilidades que eles usam internamente, pois, de fato, você pode diferenciar
00:00:37os tipos de habilidades que deseja criar. No fim, são apenas arquivos markdown, embora
00:00:42você possa adicionar algo mais, voltarei a isso, mas o conteúdo desse arquivo markdown pode ser
00:00:49bem diferente. Agora, esta imagem aqui e todo este post podem ser um tanto esmagadores e levar
00:00:56você a não fazer nada, por sentir que, se tiver que passar uma semana configurando habilidades, prefere
00:01:02nem usá-las. É por isso que quero oferecer uma alternativa neste vídeo. Acho que você
00:01:08pode simplesmente focar em três tipos principais de habilidades que trarão resultados melhores.
00:01:15A propósito, como mencionei, todas essas ferramentas suportam habilidades. Eu ensino como configurá-las,
00:01:20como invocá-las ativamente e como criar habilidades para o Claude Code e Codex em meus cursos.
00:01:26Se quiser acessá-los, inclusive cursos futuros, estou com uma promoção
00:01:31da assinatura anual que dá acesso total a todos os meus cursos pelo tempo da assinatura,
00:01:35por um preço super baixo no link abaixo. Mas, sobre essas habilidades,
00:01:41elas são apenas arquivos markdown armazenados em um local especial. O local exato
00:01:46depende da ferramenta, mas servem como modelos de prompt ou
00:01:52contextos extras que podem ser injetados em suas sessões de engenharia. E o
00:02:01primeiro tipo de habilidade é a de documentação ou de conhecimento, eu diria. O que quero dizer com isso?
00:02:09Aqui estou no projeto do meu site, academy.com, e nele tenho várias
00:02:15habilidades de agente que são, basicamente, tipos de documentação ou conhecimento expostos ao agente de IA.
00:02:25Por exemplo, alguns conhecimentos de TypeScript aqui, informações sobre recursos mais avançados
00:02:33do TypeScript, talvez recursos mais novos como a palavra-chave "satisfies", que não existe
00:02:40há 10 anos. Coisas que quero que o agente de IA saiba ou das quais seja lembrado, pois pode não
00:02:50ser a primeira opção que ele usaria, talvez por não ter visto tanto disso em seus dados de treinamento.
00:02:58Isso é algo que você encontraria na documentação oficial do TypeScript. O ponto é que,
00:03:04a menos que você diga explicitamente, é muito provável que o agente não consulte
00:03:11a documentação oficial do TypeScript. Então prefiro ter minha própria habilidade, e
00:03:17esta habilidade aqui tem metadados. Os metadados são importantes porque a ideia é que
00:03:24nem todas as habilidades disponíveis sejam carregadas na janela de contexto sempre. Em vez disso,
00:03:30apenas os metadados são carregados, e então o agente de IA decide qual habilidade quer
00:03:37ler mais a fundo, dependendo do seu prompt e das tarefas dadas. Você também pode invocá-las ativamente,
00:03:43dependendo da ferramenta, mas a ideia principal é que o agente as carregue sozinho
00:03:47com base nesses metadados. Aqui, tenho metadados para dar ao agente uma ideia
00:03:55de quando usar esta habilidade. Portanto, esse é um tipo de habilidade onde você fornece documentação extra
00:04:02ou conhecimento que o agente talvez não tenha, talvez por você estar usando uma biblioteca
00:04:08que não estava nos dados de treinamento por ser nova, ou algo que você sabe que ele não conhece bem
00:04:13e quer que ele esteja ciente. Esse é o primeiro tipo de habilidade.
00:04:18O segundo tipo são comportamentos, boas práticas, abordagens e coisas do tipo. Aqui, a ideia
00:04:29é que, ao trabalhar em um projeto, você pode ter certas preferências sobre
00:04:37estilo de código ou como certas coisas devem ser feitas. Por exemplo, tenho esta habilidade de
00:04:45código React limpo e moderno, que não é tanto para documentar recursos do React, mas sim para
00:04:50estabelecer regras que o agente deve seguir ao escrever código React, para garantir que
00:04:59certos antipadrões sejam menos comuns. Pelo menos para mim, no momento, agentes de IA tendem a gerar
00:05:08códigos que nem sempre têm a maior qualidade. Pode-se discutir se a qualidade do código
00:05:13importa. Fiz um vídeo separado em outro canal sobre isso. Eu diria que
00:05:18importa, porque a qualidade facilita a revisão do código. Pode ter implicações
00:05:23de desempenho e afetar o quão fácil é manter ou estender o código. Então, acho que importa.
00:05:29Se você quer que o agente use certos comportamentos ou padrões, então uma
00:05:36habilidade comportamental — onde você diz como escrever um bom código React, que ele deve evitar
00:05:43o uso de "useEffect" e como evitá-lo — pode ser interessante. Aqui o foco é menos em
00:05:50fornecer documentação extra e mais em instruir comportamentos. O que é
00:05:55interessante nesta habilidade é que tenho arquivos relacionados, com um arquivo de mais detalhes
00:06:02sobre o "useEffect", pois todos esses arquivos de habilidade são carregados de forma ociosa (lazily). E você pode,
00:06:09em um arquivo de habilidade, referenciar outro, como este arquivo "useEffect.md" na pasta de referências,
00:06:15e a IA pode decidir carregar esse arquivo apenas quando souber que está trabalhando com "useEffect",
00:06:21ou fazendo algo relacionado a ele. Assim, aqui tenho mais detalhes sobre os antipadrões
00:06:27que ela deve conhecer. Configurar esses tipos de habilidades vale muito a pena, até porque
00:06:33posso copiar isso para qualquer projeto React, não preciso reescrever sempre, e isso
00:06:39gera um código melhor. Esse é o segundo tipo que recomendo. Você não precisa
00:06:45pensar em todos os padrões de uma vez; aja passo a passo. Se notar que,
00:06:52no seu projeto, o agente de IA está fazendo consistentemente algo que você não quer,
00:06:58adicione uma habilidade com uma boa descrição que aumente a chance de ela ser carregada
00:07:04nos momentos certos e coloque suas instruções nela. Use-a para corrigir problemas e, com o tempo,
00:07:11você criará uma biblioteca de habilidades com suas boas práticas e comportamentos específicos,
00:07:17podendo usá-la em projetos futuros. Não veja isso como uma tarefa inicial enorme e
00:07:22intimidante; construa essa base de habilidades aos poucos. O terceiro tipo,
00:07:29que é bem diferente, são as habilidades baseadas em funcionalidades. Até agora, falamos de documentação
00:07:37e imposição de comportamentos. Estas ferramentas de engenharia, como Claude Code e Codex,
00:07:43podem fazer todo tipo de coisa. Elas escrevem código, obviamente, mas você não está limitado a isso
00:07:49nos projetos. Como elas escrevem código, podem fazer qualquer coisa no seu computador. Se quiser,
00:07:55pode usá-las para analisar documentos PDF, por exemplo. Eu tenho algumas habilidades globais no sistema
00:08:03que não são exclusivas de programação. Algumas são, mas nem todas. Você poderia criar uma habilidade
00:08:09que ensine o agente a gerar uma imagem. O que quero dizer com isso? Bem, existem
00:08:16vários serviços ou APIs para gerar imagens ou vídeos com IA, como o Fal AI — aliás,
00:08:24este vídeo não é patrocinado. Também tem o Replicate e outros serviços. É claro que,
00:08:29se quiser gerar uma imagem — digamos que precise de uma imagem de marcação para seu site ou
00:08:34para algo totalmente diferente, como imprimir e pôr na parede — você pode usar
00:08:41esses serviços. Você poderia usar o Codex, Claude Code ou o agente Pi, que eu gosto muito, e pedir
00:08:49para gerar uma imagem. Por padrão, ele provavelmente falharia, porque essas ferramentas
00:08:54não têm recursos de geração de imagem integrados. Mas, se você der a habilidade certa, que ainda é
00:09:00apenas um arquivo markdown, nela você pode descrever como interagir com uma
00:09:06API de terceiros para gerar a imagem. Descrever essa interação seria um caminho, mas você
00:09:12pode ir além. Suas habilidades também podem vir com scripts. Nem todas precisam, mas minha
00:09:18habilidade de gerar imagens tem um. Este script, para ser sincero, foi escrito por IA; foi "vibe coded".
00:09:26E aqui tenho scripts que interagem com a API da Fal. Basicamente, para esse serviço
00:09:34de geração de imagem, peguei a documentação deles, coloquei em um prompt e pedi para um agente de IA
00:09:40escrever uma ferramenta que utilize ou converse com essa API da Fal para gerar imagens. Uma pequena ferramenta
00:09:49CLI foi criada aqui, um script que fala com a API e gera imagens com diferentes
00:09:56parâmetros e tudo mais. Então, o arquivo "skill.md" apenas explica como usar esse script,
00:10:02aponta para ele e diz ao agente como executá-lo, quais parâmetros passar e etc. E
00:10:08tenho o arquivo ".env" com minha chave da Fal. Quando esse script é invocado via Bun, que é
00:10:18o que digo à IA no arquivo markdown, o arquivo ".env" é carregado automaticamente. Assim, eu não
00:10:23preciso dar acesso à chave para o agente. Não preciso dizer "gere uma imagem e,
00:10:29aliás, aqui está a chave". Em vez disso, apenas peço a imagem. Ele irá,
00:10:34graças à descrição, carregar essa habilidade quando necessário e nela aprenderá que só precisa
00:10:39rodar um script, sem se preocupar com os detalhes de implementação. Esse é outro tipo
00:10:45de habilidade que acho interessante, e não só para programação. Você poderia ter uma habilidade
00:10:52baseada em script que formata o código ou algo assim. Mas, no geral,
00:10:57como você pode usar esses agentes para mais do que gerar código, esta
00:11:02é definitivamente outra categoria de habilidade para conhecer. No todo, eu diria: não complique demais,
00:11:08mas também não ignore. Construa sua biblioteca de habilidades passo a passo. Vale notar que
00:11:14existem registros de habilidades, como o skills.sh, onde você pode navegar por habilidades criadas por outros.
00:11:21Duas notas importantes: isso pode ser útil, mas o que eu não faria é dizer: "estou criando
00:11:29um projeto React com Tailwind e Better Auth e sei lá o quê, então vou procurar todas as habilidades
00:11:35que possam ser interessantes e instalá-las no meu projeto". Isso pode ser
00:11:40contraproducente, pois você estará carregando mais e mais metadados para a janela de contexto,
00:11:47e algumas dessas habilidades podem nem importar. Esteja ciente disso. Eu não tentaria
00:11:53adicionar todas as habilidades possíveis; seja seletivo e foque nas
00:11:57coisas que a IA erra consistentemente ou onde você sabe que documentação extra
00:12:04será necessária. Esse é um ponto. O outro ponto sobre esses registros é que você
00:12:09está incluindo habilidades escritas por terceiros. Como vimos, essas habilidades são apenas prompts.
00:12:16Se houver algo malicioso em um desses prompts, pode ser um problema e levar a um ataque
00:12:22de injeção de prompt. Alguns registros, como o skills.sh, até onde eu sei,
00:12:28fazem algum tipo de varredura para reduzir o perigo, mas nunca se está 100%
00:12:36seguro. Portanto, ao usar uma habilidade escrita por
00:12:40outra pessoa, leia-a. Ela está lá para você ler, verifique se há algo
00:12:47malicioso. É apenas um aviso. Fora isso, use habilidades. Não sinta que
00:12:54precisa criar um sistema super complexo; experimente e mantenha esses
00:13:00três tipos principais de habilidades em mente.