Pular para o conteúdo
MÓDULO 1.3

🔄 Carregar, recarregar e instalar

Existem três jeitos de um mod chegar a uma sessão: por flag, por variável de ambiente e por marketplace. Cada um tem uma regra diferente para quando a mudança que você salvou aparece. Saber qual está em uso evita meia hora de "por que não mudou?".

6
Tópicos
~35
Minutos
Base
Nível
Prático
Tipo
0 de 60%
1

Carregue com --plugin-dir

O --plugin-dir é o jeito de desenvolver. Ele carrega o mod direto da pasta, só nesta sessão. Nada fica instalado: fechou a sessão, o mod some.

Para vários mods, repita a flag, uma vez por pasta. O scripts/try.sh do Starter Kit faz exatamente isso: monta uma lista de --plugin-dir, uma por mod escolhido, e abre o claude numa pasta de demonstração temporária.

🆕 Novo aqui? Pasta vigiada

Numa sessão interativa, o Claude Code fica de olho na pasta passada em --plugin-dir. Salvou um arquivo dela, o módulo recarrega sozinho. É o hot-reload do próximo tópico.

🎯 Objetivo: abrir uma sessão com o starter-mod carregado

Na raiz do kit:

claude --plugin-dir templates/starter-mod

Para experimentar um mod pronto do kit numa pasta descartável:

bash scripts/try.sh terminal-pet
Como verificar: resultado esperado: digitando /read no prompt, o /readcount aparece na lista de comandos. E surge a pasta templates/starter-mod/.claude-plugin/types/, com claude-code/, claude-code-tools/, claude-code-mcp/ e tsconfig.json: o Claude Code escreve os tipos ali a cada carga.

✓ --plugin-dir serve para

  • ✓ escrever e testar o seu mod
  • ✓ experimentar um mod de terceiro sem instalar
  • ✓ juntar vários: --plugin-dir a --plugin-dir b

✗ Não serve para

  • ✗ deixar o mod ligado em toda sessão
  • ✗ chegar a uma conversa do app desktop já aberta
  • ✗ uma lista de pastas numa flag só
2

Veja o hot-reload acontecer

Quando a pasta muda, o módulo recarrega: register roda de novo num ambiente novo, e os timers do ambiente anterior caem. Variáveis de módulo também recomeçam do zero.

O momento depende de quem salvou. Se foi o próprio Claude, no meio do turno, recarrega uma vez quando o turno acaba (ou antes, quando uma ferramenta ou comando do mod está para rodar). Se foi você, no editor, recarrega quando a pasta fica quieta.

você salva no editor salvou ¼ s quieta recarrega o Claude salva durante o turno turno em andamento recarrega uma vez verde = register roda de novo, num ambiente novo

Como ler o desenho: os pontos azuis são gravações; os verdes, recargas. Em cima, uma gravação solta recarrega logo. Embaixo, três gravações do Claude viram uma recarga só, no fim do turno, para o turno poder experimentar o que escreveu.

⚠️ O contador do starter-mod pode voltar a zero

O próprio README do starter-mod avisa: recarregar pode zerar o contador, que é uma variável de módulo. Dado que precisa sobreviver vai para $.state ou $.store (módulo 2.3). Se um hook parece não rodar depois de uma recarga, abra com claude --debug e leia o motivo no log.

Tipo de sessãoVigia a pasta?
interativa no terminalsim
claude -pnão precisa: carrega do zero a cada execução
headless longa (SDK, desktop)só com CLAUDE_CODE_PLUGIN_DIR_WATCH=1
💾
salvou

a pasta muda

🔁
register

roda de novo

⏲️
timers

caem

🏁
fim do turno

se foi o Claude

3

Use CLAUDE_CODE_PLUGIN_DIRS no desktop

No app desktop, ou numa sessão aberta por SDK, não há onde digitar uma flag. Para esses casos existe CLAUDE_CODE_PLUGIN_DIRS: cada pasta listada carrega exatamente como um --plugin-dir.

Use caminhos absolutos (o ~ é aceito), separados pelo separador de listas do sistema: : no Linux e no macOS, ; no Windows. O valor vem do ambiente do processo ou do bloco env do ~/.claude/settings.json. Nunca do settings de um projeto.

🎯 Objetivo: o mod do Rafa no app desktop

Acrescente ao ~/.claude/settings.json (troque o caminho pelo da sua pasta; se o arquivo já tem env, junte a linha a ele):

{
  "env": {
    "CLAUDE_CODE_PLUGIN_DIRS": "/home/rafa/mods/meu-contador"
  }
}
Como verificar: resultado esperado: feche o app de vez, abra de novo e comece uma sessão nova de código. O comando do mod aparece na lista de comandos. Uma conversa que já estava aberta não recebe o mod.

💡 Desktop é outra sessão

O guia do Starter Kit insiste nisso: um claude --plugin-dir no terminal não acrescenta nada a uma conversa do desktop já aberta. E um teste de interface simulado não prova o resultado no desktop. Para ver de verdade, sessão nova.

✓ Certo

  • ✓ /home/rafa/mods/meu-contador
  • ✓ ~/mods/a:~/mods/b (Linux, macOS)
  • ✓ no env do ~/.claude/settings.json

✗ Ignorado

  • ✗ caminho relativo, como ./meu-contador
  • ✗ no .claude/settings.json do projeto
  • ✗ esperar que a conversa aberta perceba
4

Instale por marketplace

Instalar é para o mod ficar ligado em toda sessão. Primeiro você adiciona um marketplace, depois instala um plugin dele pelo nome plugin@marketplace.

O que muda tudo é de onde o marketplace vem. Se é uma pasta e a entrada do plugin é um caminho relativo, o mod é lido da própria pasta. Se vem de um repositório, roda a cópia feita na instalação.

🆕 Novo aqui? Marketplace

É uma lista de plugins num arquivo .claude-plugin/marketplace.json. O do Starter Kit se chama claude-mods-kit e aponta cada plugin com "source": "./plugins/<nome>". Por isso o mod se instala como terminal-pet@claude-mods-kit.

🎯 Objetivo: instalar um mod do kit a partir da pasta clonada

Na raiz do kit (uma linha de cada vez):

claude plugin marketplace add . --scope user
claude plugin install terminal-pet@claude-mods-kit --scope user
claude plugin list
Como verificar: resultado esperado: o claude plugin list mostra o terminal-pet com uma linha Read from: apontando para a pasta do kit. Abra uma sessão nova e o mod já está lá, sem flag. Mantenha a pasta do kit no mesmo lugar enquanto usar esse marketplace.
marketplace de pasta edita a pasta /reload-plugins sessão lê a pasta marketplace de repositório versão nova claude plugin update /reload-plugins nova cópia editar a cópia de trabalho não muda um plugin instalado de repositório

Como ler o desenho: a linha de cima tem dois passos; a de baixo, quatro. Quem desenvolve quer a de cima. Quem distribui para outras pessoas vive na de baixo (módulo 4.4). Para adicionar um marketplace de repositório, o comando é o mesmo, com <dono/repo> no lugar do ..

1

Edite o mod na pasta do marketplace

Sem versão nova e sem reinstalar.

2

Rode /reload-plugins na sessão

Vale no terminal e numa sessão do app desktop nesta máquina.

3

Leia a confirmação

Se a pasta mudou desde a última leitura, a recarga cita o plugin e a pasta de onde foi relido.

🏪
marketplace add

pasta ou repo

📥
install

plugin@marketplace

🔄
/reload-plugins

relê a origem

📋
list

mostra Read from:

5

Escolha o escopo certo

O --scope diz onde a instalação fica gravada e, portanto, quem recebe o mod. São três opções: user, project e local.

O conselho do Starter Kit é simples: escolha o escopo que você quer de fato. Não instale nos três "por garantia". Depois, para desligar, você vai ter de lembrar de cada um.

EscopoVale paraExemplo do Rafa
usertodos os seus projetoso medidor de contexto, que ele quer sempre
projecto projeto, e quem clonar o repositórioo recibo de mudanças no repo de um cliente, para a equipe toda
localsó você, só neste projetoo mapa de calor, que só ele usa naquele repo

O que olhar na tabela: project é o único que sai da sua máquina. As configurações do projeto podem ir para o repositório com o próximo commit. Revise antes de commitar.

🎯 Objetivo: instalar só para um projeto

No terminal, dentro da pasta do projeto (troque o caminho do kit pelo seu):

claude plugin marketplace add <pasta-do-kit> --scope project
claude plugin install changes-receipt@claude-mods-kit --scope project

Para uma escolha só sua neste projeto, troque project por local nas duas linhas.

Como verificar: resultado esperado: o mod aparece numa sessão aberta nesta pasta e não aparece numa sessão aberta em outro projeto.
👤
user

você, em tudo

👥
project

a equipe

🔒
local

você, aqui

☝️
um só

nada de "por garantia"

6

Desligue e desinstale sem sobras

Desligar (disable) tira o mod das próximas sessões e mantém a instalação. Desinstalar (uninstall) remove a instalação no escopo escolhido. Os dois valem por escopo: repita em cada um onde instalou.

O scripts/manage.sh do Starter Kit faz isso para os dez mods de uma vez. Ele aceita install, enable, disable e uninstall, e no uninstall passa --keep-data para não apagar preferências sem avisar.

Como o mod chegouComo tirar
--plugin-dirfeche a sessão; nada foi instalado
CLAUDE_CODE_PLUGIN_DIRSapague a linha do env e reabra o app
marketplacedisable ou uninstall, em cada escopo usado
comando do próprio mod (/pet off)esconde a função; o mod continua carregado

O que olhar na tabela: a última linha engana. Esconder um painel não para o mod de observar. Para parar de vez, use uma das três primeiras.

🎯 Objetivo: desligar o que você instalou

Um mod só:

claude plugin disable terminal-pet@claude-mods-kit --scope user

Os dez mods do kit, a partir da raiz do kit:

bash scripts/manage.sh disable user all
Como verificar: resultado esperado: o script termina com Commands succeeded. Close old sessions and start a fresh Claude Code session. Feche as sessões antigas, inclusive as abertas com --plugin-dir, e abra uma nova: o mod não aparece.

⚠️ O que fica para trás

  • • A pasta .claude-plugin/types/ que o Claude Code escreveu dentro do mod (o starter-mod a ignora no git).
  • • As escolhas do /config em pluginConfigs, no settings.json.
  • • O que o mod gravou em $.store ou em arquivos. O guia do kit INEMA lembra: um comando que grava on/off persiste de verdade; depois de testar ao vivo, volte ao padrão.

Teste rápido (opcional): o Rafa instalou um mod de um marketplace de repositório. Editou a cópia de trabalho, rodou /reload-plugins e nada mudou. Por quê?

⏸️
disable

mantém instalado

🗑️
uninstall

remove no escopo

🧰
manage.sh

os dez de uma vez

🧹
sobras

tipos, config, store

🎓 Resumo do módulo

✓
--plugin-dir é para desenvolver — só a sessão, uma flag por pasta.
✓
Salvar recarrega — register roda de novo, timers e variáveis caem.
✓
Desktop usa CLAUDE_CODE_PLUGIN_DIRS — caminho absoluto, settings do usuário.
✓
Marketplace de pasta lê a pasta — o de repositório roda uma cópia.
✓
Um escopo, e desligue em cada um — user, project ou local.

Próximo módulo:

1.4 — Seu primeiro mod: comando e contador