Olá! Bem-vindo à sua primeira lição no módulo sobre como dar ao nosso agente a capacidade de agir.
Nas lições anteriores, construímos a "mente" do nosso agente. Focamo-nos em como ele pode pesquisar e entender informações de fontes como Google Drive e repositórios de código, usando Retrieval-Augmented Generation (RAG). Aprendemos a refinar as estratégias de chunking e indexação para garantir que o agente tenha acesso a um contexto de alta qualidade, seja para regras de negócio ou para blocos de código-fonte estruturados.
Agora que o nosso agente pode "pensar", é hora de ensiná-lo a "agir". A capacidade de agir é o que distingue um agente autônomo de um simples chatbot ou sistema de busca. O objetivo desta lição é definir uma 'ferramenta' ou 'ação' dentro do framework do agente Rovo. Esta é a base para permitir que seu agente interaja com o mundo exterior — como o GitHub, o Jira ou seu banco de dados.
1. O Que São "Ações" ou "Skills"?
Um agente de IA opera em um ciclo de perceber-planejar-agir. A parte de "agir" é executada através do uso de ferramentas (tools). Uma ferramenta é uma capacidade específica e bem definida que o agente pode invocar para realizar uma tarefa. Pode ser algo simples como calcularSoma(a, b) ou algo complexo como criarPullRequest(repositorio, branchOrigem, branchDestino, titulo).
No ecossistema da Atlassian, essas ferramentas são chamadas de actions ou, mais recentemente, skills. Pense nelas como os verbos do seu agente; as ações que ele pode executar.

Para começar, vamos assistir a uma breve introdução aos componentes de um agente e ao conceito de skills.
From zero to hero: Building Rovo agents
O vídeo 'From zero to hero: Building Rovo agents' da Atlassian apresenta os quatro componentes fundamentais de um agente.
Assista ao trecho de 00:02:47 a 00:03:12. Preste atenção nos quatro pilares de um agente, especialmente no último: skills, que são descritos como as ferramentas ou capacidades que o agente possui.
É importante notar que a Atlassian tem atualizado a terminologia. O que antes era amplamente chamado de "action" agora é referido como "skill". Para todos os efeitos práticos, os termos são intercambiáveis neste contexto.
From zero to hero: Building Rovo agents
No mesmo vídeo, há uma clarificação sobre essa mudança de terminologia e uma visão geral da 'skills library'.
Assista agora ao trecho de 00:19:04 a 00:20:30. Note a frase chave: 'Skills is the new actions'. O vídeo também explica que as skills podem ser de primeira parte (da Atlassian), de terceiros (do marketplace) ou, o mais importante para nós, customizadas com o Forge.
Para o seu projeto, você criará skills customizadas usando o Atlassian Forge, a plataforma de desenvolvimento serverless da Atlassian. Isso lhe dará total controle para implementar a lógica de que você precisa, como fazer chamadas de API para o GitHub.
2. Definindo uma Ação no Forge manifest.yml
A definição de uma ação customizada é feita no arquivo manifest.yml do seu aplicativo Forge. Este arquivo YAML declara todos os módulos e configurações do seu app, incluindo os agentes Rovo e suas ações.
A declaração de uma ação informa ao Rovo que uma nova ferramenta está disponível, como se chama, o que faz e quais informações (inputs) ela precisa para funcionar. Essa declaração é análoga a como você definiria um endpoint em uma API REST, especificando a rota, o método HTTP e os parâmetros esperados.
Para entender a estrutura, vamos usar o tutorial "Hello World" da Atlassian como nosso guia.
Build a Rovo Agent hello world app
O tutorial 'Build a Rovo Agent hello world app' fornece um exemplo claro e completo de como um agente e sua ação são declarados no manifest.yml.
Leia a seção 'manifest.yml' do tutorial. Observe a estrutura do arquivo com dois módulos principais: rovo:agent e action. Focaremos na seção action.
Agora, vamos detalhar cada propriedade da definição da ação, usando a documentação oficial como referência.
A página da documentação 'Forge action module: Action' é a fonte definitiva para todas as propriedades de uma ação. Vamos usá-la para entender a anatomia de uma definição de ação.
Leia as seções 'Action', 'Manifest structure' e 'Inputs'. Não se preocupe em memorizar tudo; concentre-se em entender o propósito de cada propriedade principal.
Com base nesses recursos, aqui está um resumo das propriedades mais importantes que você definirá para cada ação:
key: Um identificador único para a ação dentro do seumanifest.yml. Ex:criar-branch-github.name: O nome legível por humanos que pode aparecer na interface. Ex:Criar Branch no GitHub.description: Esta é a propriedade mais crucial. O Rovo (que usa um LLM) lê esta descrição para decidir quando usar sua ação. Uma descrição clara, precisa e detalhada é fundamental para que o agente invoque a ferramenta corretamente. Por exemplo: "Use esta ação para criar um novo branch em um repositório GitHub a partir do branch padrão. Requer o nome do repositório e o nome do novo branch como entrada."function: Referência à função (definida em outra parte domanifest.yml) que aponta para o seu código de implementação (por exemplo, uma função em seu arquivoindex.js).actionVerb: O tipo de operação que a ação realiza (GET,CREATE,UPDATE,DELETE,TRIGGER). Ajuda o Rovo a entender a natureza da ação. Para criar um branch, você usariaCREATE.inputs: Um objeto que define os parâmetros que sua ação precisa. Para cada input, você especifica:title: O nome do parâmetro (ex:repositoryName).type: O tipo de dado (string,integer,boolean).required: Se o parâmetro é obrigatório.description: Uma descrição do que é este parâmetro, para ajudar o LLM a extrair o valor correto da conversa com o usuário.

3. Conectando a Definição à Implementação
A definição no manifest.yml é apenas o "contrato" da sua ação. A lógica real reside em uma função JavaScript (ou TypeScript) em seu projeto Forge. A propriedade function no manifesto cria essa ponte.
Vamos ver como isso funciona no exemplo "Hello World".
Build a Rovo Agent hello world app
Vamos voltar ao tutorial 'Build a Rovo Agent hello world app' para ver o código JavaScript que é executado quando a ação é chamada.
Leia a seção 'index.js'. Observe como a função messageLogger é exportada. Esta função é o 'handler' para a ação hello-world-logger definida no manifesto.
A sua função de handler receberá dois argumentos principais: payload e context.
payload: Este objeto contém osinputsque você definiu no manifesto. Os valores para esses inputs são extraídos pelo LLM da conversa do usuário.context: Este objeto contém informações de execução fornecidas de forma determinística pelo Forge, como oaccountIddo usuário que invocou a ação e informações sobre o local onde a ação foi chamada (por exemplo, detalhes de uma issue do Jira ou de uma página do Confluence).
É uma prática recomendada usar os dados do context para verificações críticas (como autorização), pois os dados no payload dependem da extração do LLM e podem, em teoria, ser "alucinados" ou incorretos.
A documentação oficial detalha o que é passado para a sua função. Entender a diferença entre payload e context é vital para construir ações robustas.
Leia a seção 'Writing your action'. Preste atenção especial à distinção entre 'Input' (extraído pelo LLM) e 'Context' (passado deterministicamente) e aos exemplos de payload para Jira e Confluence.
No exemplo do messageLogger, a função recebe um payload que se parece com { "message": "alguma mensagem do usuário" } e simplesmente o imprime no console. Em seu projeto, a função criarPullRequest receberia um payload como { "repository": "meu-repo", "title": "Nova Funcionalidade" } e usaria bibliotecas como o octokit para fazer a chamada de API correspondente ao GitHub.
Conclusão
Nesta lição, estabelecemos o alicerce para dar ao nosso agente a capacidade de executar tarefas no mundo real. Aprendemos que as "ações" ou "skills" são as ferramentas que um agente Rovo usa para interagir com outros sistemas.
Principais Pontos:
- Ações (Skills) são as "mãos" do agente: Elas permitem que ele vá além da recuperação de informações e execute tarefas concretas.
- Definição no
manifest.yml: Uma ação é declarada no arquivomanifest.ymldo Forge, especificando suas propriedades, comokey,descriptioneinputs. - A
descriptioné para o LLM: A propriedadedescriptioné a instrução que o Rovo usa para entender o que a ação faz e quando deve ser usada. Sua clareza é fundamental. - Conexão com o Código: A propriedade
functionliga a declaração da ação a uma função JavaScript/TypeScript que contém a lógica de negócios real (por exemplo, fazer uma chamada de API). Payloadvs.Context: A sua função de handler recebe dados extraídos pelo LLM (payload) e dados de contexto confiáveis (context), e você deve saber quando usar cada um.
Agora que entendemos como definir uma ação para interagir com uma API como a do GitHub, o próximo passo lógico é garantir que nosso agente tenha as permissões necessárias para fazer isso de forma segura.
Na Próxima Lição:
Vamos abordar a segurança e a autenticação. A próxima lição, "Configurar autenticação segura para interações automatizadas com a API do GitHub", mostrará como usar um GitHub App ou Personal Access Token para que nosso agente possa se autenticar e executar as ações que definimos.