.. _claude: ===================== Usando o Claude Code ===================== O Claude Code lê, escreve e valida mapas do Mapper Idea para você. Você descreve o que quer em linguagem natural, e o Claude edita os arquivos ``.mi``, roda o CLI ``mi`` e mostra o resultado no Freemapper. Este capítulo traz o que instalar, os comandos do plugin do Mapper Idea e exemplos de prompts. O que é preciso ~~~~~~~~~~~~~~~ * O **Claude Code**, com uma conta do Claude: https://claude.com/claude-code * Os **plugins do Mapper Idea para o Claude Code** (``agent-kit`` e ``iadd``): https://github.com/mapperidea/claude-plugins * O **CLI do Mapper Idea** (``mi``) instalado e autenticado com um usuário autorizado. Sem ele, o Claude escreve mapas, mas não valida nem gera nada. Os links estão na página :ref:`tips`. * O **Freemapper** (opcional), para ver os mapas mudando enquanto o Claude trabalha e para abrir o Claude Code dentro dele. Instalando os plugins ~~~~~~~~~~~~~~~~~~~~~ Dentro do Claude Code: .. code-block:: text /plugin marketplace add mapperidea/claude-plugins /plugin install agent-kit@mapperidea-iadd /plugin install iadd@mapperidea-iadd Ou no terminal: .. code-block:: text claude plugin marketplace add mapperidea/claude-plugins claude plugin install agent-kit@mapperidea-iadd claude plugin install iadd@mapperidea-iadd Abra uma **sessão nova** depois de instalar: uma sessão que já estava aberta não enxerga os comandos novos e responde ``Unknown skill``. Para atualizar depois, use ``/plugin marketplace update mapperidea-iadd``. Comandos ~~~~~~~~ .. list-table:: :widths: 35 65 :header-rows: 1 * - **Comando** - **O que faz** * - ``/iadd:init`` - Prepara o projeto: converte os mapas FreeMind (``.mm``) que já existem para ``.mi``, identifica o mapa principal e instala os três agentes, perguntando a você o que é do seu domínio. Rode uma vez, na raiz do projeto. * - ``/iadd:init `` - Instala ou reinstala um agente só: ``domain-mapper``, ``generator-author``, ``cli-runner`` ou ``todos``. Pergunta antes de substituir qualquer coisa. * - ``/iadd:mi`` ou ``/iadd:mapperidea`` - O especialista em ``.mi``: lê, escreve, valida e explica mapas de negócio, mapas de arquitetura, geradores, ícones e tipos. O Claude também o chama sozinho quando o assunto é um mapa ``.mi``. * - ``/agent-kit:agent-creator`` - Um assistente que entrevista você e escreve um agente novo do Claude Code para o seu projeto. Não é preciso digitar os comandos para usá-los: pedir em linguagem natural ("converte meus mapas .mm para .mi") já basta, e o Claude escolhe o certo. Os três agentes ~~~~~~~~~~~~~~~ O ``/iadd:init`` instala três agentes em ``.claude/agents/``. Cada um é dono de uma parte do trabalho, para que quem modela não gere e quem gera não mude o modelo: .. list-table:: :widths: 25 40 35 :header-rows: 1 * - **Agente** - **É dono de** - **Mexe em** * - ``domain-mapper`` - O mapa de negócio: entidades, atributos, relações, regras - Só os arquivos ``.mi`` de negócio * - ``generator-author`` - Os geradores: como o mapa vira código na sua stack - Só os arquivos ``.mi`` de gerador * - ``cli-runner`` - A validação e a geração de verdade, pelo CLI ``mi`` - Roda o ``mi``, não edita mapa Você conversa com o Claude normalmente e ele passa a tarefa ao agente certo. O que o plugin escreve no seu projeto (agentes, a memória deles, guias, hooks) é seu: continua funcionando sem o plugin e é feito para ser editado e commitado. O Claude no Freemapper ~~~~~~~~~~~~~~~~~~~~~~ O Freemapper pode deixar o Claude Code ver os mapas abertos: o nó selecionado, o texto de um mapa, uma imagem da tela. Ligue em **Preferências > Ambiente > Integração com IA**: * **Permitir que um assistente de IA veja e navegue nos mapas abertos** inicia um servidor local, que só este computador alcança, protegido por um token. * **Permitir também que o assistente altere os mapas** acrescenta as ferramentas que inserem, alteram e removem nós. Toda alteração aparece na tela e pode ser desfeita com **Ctrl+Z**; nada é salvo até você, ou o Claude, salvar o mapa. Reinicie o Freemapper depois de mudar essas opções. Aí há dois jeitos de usar o Claude: * **Dentro do Freemapper**: **Visualizar > Assistente de IA** (**Alt+9**) abre um painel com o Claude Code rodando na pasta do projeto, já ligado aos mapas. O painel pode ir para uma janela própria, tem uma aba por projeto e pode usar outras contas do Claude pelos **perfis**. * **No seu terminal**: o item **Integração com IA: copiar o comando do Claude Code** copia um comando; cole num terminal uma vez e, daí em diante, o Claude Code enxerga os mapas abertos no Freemapper. Quando o Claude altera um arquivo ``.mi`` no disco, o Freemapper recarrega o mapa e seleciona o nó que mudou. Exemplos de prompts ~~~~~~~~~~~~~~~~~~~ São pontos de partida: troque os nomes pelos do seu mapa. Quanto mais preciso o pedido (qual mapa, qual pacote, qual classe), menos o Claude precisa adivinhar. **Modelando o negócio** .. code-block:: text Acrescenta a entidade Fornecedor no pacote vendas, com CNPJ (chave), razão social e e-mail, e uma relação com Cidade. .. code-block:: text Lê a história em docs/historias/cancelar-pedido.md e atualiza o mapa de negócio com o que estiver faltando. Mostra as mudanças antes de gravar. .. code-block:: text Explica a classe Pedido do main.mi, atributo por atributo, e aponta o que parece inconsistente. **Escrevendo geradores** .. code-block:: text Escreve um gerador que cria uma interface TypeScript para cada classe de um pacote, com os tipos dos atributos convertidos para os tipos do TypeScript. .. code-block:: text No gerador de entidade Java, faz os atributos marcados como chave virarem @Id. .. code-block:: text Que função eu uso num gerador para transformar PedidoCliente em pedido_cliente? **Validando e gerando** .. code-block:: text Envia os mapas e valida a classe Pedido com o gerador struct. .. code-block:: text Gera a entidade Quarkus de Pedido em src/main/java/vendas/ e confere se o arquivo tem erro EMI. .. code-block:: text O mi generate devolve um arquivo vazio para Cliente. Descobre por quê. **No Freemapper** .. code-block:: text Explica o nó selecionado. .. code-block:: text Embaixo desta classe, acrescenta os atributos data de nascimento, telefone e ativo. .. code-block:: text Mostra no mapa onde está a classe Cliente e abre o ramo dela. .. code-block:: text Tira uma imagem do mapa e me diz quais classes não têm atributo chave. Dicas ~~~~~ * Diga o que o Claude **não** deve mudar ("só o pacote vendas", "não mexe nos geradores"). * Peça a validação: um mapa só é conferido quando o ``mi generate struct xml`` roda na classe. Os agentes sabem disso, mas pedir deixa explícito. * O Claude pergunta antes de rodar o ``mi push``, porque ele envia os mapas para a nuvem do Mapper Idea. Para pular a pergunta, diga no próprio pedido, como em "envia os mapas e gera...". * Depois de gerar, procure ``EMI`` na saída: um erro do CLI impresso na saída vai parar dentro do arquivo gerado. * Para uma dúvida sobre uma função XPath, o Claude pode abrir a página da função neste guia, como :ref:`mi_lower-case-add-underline`. * Os manuais do plugin, com o método inteiro (``docs/pipeline-iadd.md``) e como escrever um gerador do zero, vêm com o plugin; peça ao Claude que os abra.