Preciso saber JavaScript ou TypeScript para escrever um Mod no Claude Code?

Para escrever um mod no Claude Code o código precisa ser JavaScript ou TypeScript, porque os handlers rodam dentro do processo do Claude Code. O nível exigido é baixo: exportar uma função register, registrar handlers com on(evento, handler) e entender a cadeia com next, sem Node.js, bundler ou build. Quem programa em Python, Go ou PHP pode pedir o mod ao próprio Claude, usar hooks de shell (qualquer linguagem, mas sem interface nem estado compartilhado) ou instalar um mod pronto de fonte confiável, já que mods não rodam em sandbox
Fala aí, beleza? O Claude Code ganhou mods, e a primeira pergunta que aparece é: preciso ser fera em JavaScript pra mexer nisso?
Resposta curta: o mod é código JavaScript ou TypeScript, sim, mas isso não quer dizer que você precisa dominar a linguagem antes de começar 🙂
Os mods foram liberados em 1 de outubro de 2026 junto com o Claude Code 2.1.287, e já vêm ativados por padrão
Aí bate a dúvida de quem vive em Python, Go, PHP e por aí vai: dá pra escrever um mod no Claude Code sem ser dev JS? Existe saída pra outra stack? Ou é melhor só instalar um pronto e seguir a vida?
Bora destrinchar isso
Por que o mod do Claude Code é escrito em JavaScript ou TypeScript
Primeiro, o que é um mod?
É um plugin que muda como o Claude Code se parece e se comporta
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 48min
Ele é feito de event handlers, e aqui vale parar um segundo: que handler?
É uma função que o Claude Code chama quando um evento acontece, tipo uma chamada de ferramenta, um prompt enviado ou uma parte da interface sendo desenhada
E esse handler pode observar, alterar ou assumir o evento
Se você já usou addEventListener no navegador, a ideia é bem semelhante: tu registra uma função e ela é chamada quando o evento rola 😀
Agora o PORQUÊ da linguagem fixa
Os handlers de um mod são funções que rodam DENTRO do processo do Claude Code
É isso que deixa o mod desenhar interface e compartilhar estado, coisa que um script rodando fora do processo não faz
Por isso a linguagem é JS ou TS, e o módulo de hooks aceita estas extensões:
.js,.mjse.cjs.jsx.ts,.mtse.cts.tsx
Quanto de JavaScript você realmente precisa saber para escrever um mod
Menos do que parece, se liga
O código do mod (o tal módulo de hooks) faz basicamente três coisas:
- exporta uma função
register - dentro dela, usa a função
onque o Claude Code entrega, chamandoon(evento, handler)pra cada evento que quer tratar - escreve os handlers, que recebem três argumentos: a API de mods, o evento e uma função
next
O Claude Code chama a register uma vez, quando o mod carrega, e cada on registra um hook pro evento indicado
Ou seja: se tu sabe escrever uma função, passar um callback e mexer num objeto, já tem a base
Como funciona a cadeia com next?
Essa é a parte que mais confunde no começo, então vamos por partes
- chamar
nextcom o evento: a cadeia continua normal - chamar
nextcom uma cópia alterada do evento: todo o resto da cadeia vê a sua alteração - retornar um resultado SEM chamar
next: a cadeia acaba ali
Tome cuidado com o terceiro caso!
Esquecer de chamar next não é detalhe, é literalmente assumir o evento e cortar o que vinha depois
O que NÃO é exigido
Aqui tem uma notícia boa pra quem não é do ecossistema JS
Não precisa de Node.js, não precisa de bundler e não tem etapa de build
O Claude Code carrega os arquivos .js e .ts direto, sem aquele ritual de configurar ferramenta antes de escrever a primeira linha haha
O único requisito real é a versão: Claude Code v2.1.287 ou mais recente
O que muda para quem programa em Python, Go ou outra stack
Se JS/TS não é a sua praia, tu tem duas saídas honestas
Saída 1: hooks de shell na sua linguagem
O hook de comando funciona de outro jeito: recebe um JSON pelo stdin e devolve uma decisão em JSON pelo stdout
Como é só um comando de shell, aceita qualquer linguagem que rode como comando, então seu script em Python ou seu binário em Go servem
Mas tem o preço
É um processo por chamada e sem memória compartilhada, e como roda fora do Claude Code, não desenha interface

VPS Hostinger para seu sistema
10% OFF extraVPS com SSD NVMe e backups semanais. O cupom MATHEUSHORADECODAR é aplicado automaticamente pelo link.
Ver planos com 10% OFF →Saída 2: encarar o JS/TS mínimo com ajuda dos tipos
Toda vez que carrega ou recarrega um mod, o Claude Code grava arquivos de declaração TypeScript (.d.ts) em .claude-plugin/types/, dentro do diretório do mod
Esses arquivos descrevem os eventos, os métodos da API de mods e os elementos
Na prática, o editor passa a autocompletar e checar os tipos dos seus hooks, então tu não fica chutando nome de evento nem de método
Pra quem vem de linguagem tipada, isso ajuda MUITO a se sentir em casa
O que só o mod faz
Vale deixar claro: desenhar interface e compartilhar estado entre chamadas são coisas do mod
Se o seu caso precisa disso, o hook de shell não resolve, e aí o caminho é JS/TS mesmo
Mod, hook de shell ou mod pronto: comparação lado a lado
| Caminho | Linguagem exigida | Onde roda | Desenha interface? | Estado compartilhado? | Esforço para começar |
|---|---|---|---|---|---|
| Escrever o próprio mod | JavaScript ou TypeScript | Dentro do processo do Claude Code | Sim | Sim | Escrever ou pedir o código, testar e validar |
| Hook de settings (shell, HTTP ou prompt) | Qualquer linguagem que rode como comando (no hook de comando) | Fora do processo | Não | Não, é um processo por chamada | Adaptar um script que você já tem para ler e devolver JSON |
| Instalar mod pronto | Nenhuma para instalar | Dentro do processo do Claude Code | Sim, se o mod fizer isso | Sim, se o mod fizer isso | Um comando de instalação, mais avaliar se confia no autor |
Quando vale escrever o próprio mod e quando vale usar um pronto
Quando faz sentido escrever o seu
Quando tu precisa mexer na interface ou reagir a eventos do Claude Code por dentro
Alguns dos eventos disponíveis:
tool.callprompt.submitturn.starteturn.completesession.startcommand.runui.render
Pra ter noção do alcance: segundo a cobertura do lançamento feita pelo SourceTrail, a Anthropic transformou três recursos nativos do Claude Code em mods, o painel de diff, o loader de agents.md e a telemetria
Se dá pra fazer isso, dá pra fazer muiiita coisa 😀
Quando um hook de shell resolve
Quando tu só quer bloquear ou validar algo e já tem o script pronto em outra linguagem
Não precisa de interface, não precisa guardar estado, então reescrever em JS seria esforço à toa
Quando instalar um mod pronto
Quando a necessidade já foi resolvida por terceiros ou pela sua organização
Mods são instalados como plugins a partir de um marketplace, no formato nome@marketplace, e o exemplo da documentação é este, rodado dentro de uma sessão do Claude Code:
/plugin install token-chart@your-org
Como criar um mod mesmo sem dominar TypeScript
Agora a parte prática, num caminho enxuto e verificável
- Peça o mod ao Claude numa sessão normal. Descreva o que tu quer, e o Claude escreve o mod usando uma skill de autoria de plugins que já vem com o Claude Code. Funciona parecido com quando tu monta uma skill de design responsivo: quanto mais claro o comportamento esperado, melhor o resultado. O erro comum deste passo: descrever o objetivo vago e esquecer as exceções. Se o seu caso tem várias regras e casos de borda, vale ver como descrever regra de negócio com exceções antes de pedir
- Confira a estrutura mínima de três arquivos. O manifesto, o
hooks.jsone o módulo de hooks:
meu-mod/
.claude-plugin/
plugin.json
hooks/
hooks.json
register.js
O hooks.json aponta pro código pela chave "modules", por exemplo "modules": ["./register.js"]. O erro comum deste passo: achar que o caminho é relativo à raiz do mod. Ele é relativo ao hooks.json, por isso no exemplo acima o register.js fica dentro de hooks/

Crie sistemas com IA para vender
Prompts, modelos e checklists para criar e publicar seu sistema com IA e preparar a oferta para o primeiro cliente.
Quero o e-book gratuito Receba o livro e os bônus no seu e-mail.- Teste localmente com
--plugin-dir. Essa flag carrega um diretório de plugin por uma sessão e recarrega o módulo de hooks quando tu salva:
claude --plugin-dir ./meu-mod
Dá pra repetir a flag pra carregar vários diretórios ao mesmo tempo. O erro comum deste passo: esquecer que o carregamento vale só pra aquela sessão, então o mod não aparece nas próximas se tu não passar a flag de novo
- Valide antes de confiar. O comando
claude plugin validate <diretório>lê o manifesto e o módulo de hooks e mostra os erros, os eventos tratados e as chamadas à API de mods que o mod faz. No nosso exemplo, apontando pra pastameu-modcom o--strictligado, fica assim:
claude plugin validate ./meu-mod --strict
O --strict trata avisos como erros e o --json gera um relatório legível por máquina. O erro comum deste passo: pular a leitura do relatório. Pra quem não domina TS, a lista de eventos e de chamadas à API é o jeito mais rápido de conferir se o código que o Claude escreveu faz só o que tu pediu
- Rode os testes automatizados. O
claude plugin testexecuta todo arquivo terminado em.test.tsou.test.tsxdo diretório, sem sessão, sem login e sem rede:
claude plugin test ./meu-mod
Se tu não informar o diretório, ele usa o diretório atual. O erro comum deste passo: nomear o teste fora desse padrão e achar que ele rodou, quando na verdade foi ignorado
- Recarregue sem reiniciar. Se tu instalou ou atualizou o mod pelo shell com a sessão aberta, rode dentro da sessão:
/reload-plugins
Ele recarrega plugins, skills, agents, hooks, servidores MCP e LSP de plugins sem reiniciar nada
Veredito: escrever o próprio mod ou usar um pronto?
Sem experiência em JS/TS, o caminho realista é um destes dois
Pedir o mod ao Claude e revisar com validate e test, ou instalar um mod pronto de fonte confiável
Mas se liga no ponto mais importante do post todo: mods NÃO rodam em sandbox
Um mod é código que roda com as suas permissões, lê e grava seus arquivos, inicia processos e faz requisições de rede
Então a pergunta que mais importa nem é sobre linguagem, é sobre confiança: tu leu o código ou confia no autor?
A orientação oficial é instalar mods só de autores e marketplaces em que você confia, e eu não pularia essa parte nem por preguiça 😛
Em empresa, o admin ainda tem controle pelas managed settings
allowManagedModsOnly(empluginConfigs, na chavecc-plugin-sec-default@builtin) bloqueia os mods trazidos pelos usuários e mantém só os da organizaçãoallowManagedHooksOnlytambém existe pra restringir hooksdisableAllHooksdesliga os mods de todos os plugins e todos os hooks de settings
Próximo passo para começar com mods no Claude Code
Recapitulando:
- o mod é JS ou TS porque roda dentro do processo do Claude Code, e é isso que dá interface e estado compartilhado
- o nível exigido é baixo:
register,on(evento, handler)e a cadeia comnext, sem Node.js, bundler ou build - quem é de outra stack pode usar hook de shell na própria linguagem, abrindo mão de interface e estado
O primeiro passo é confirmar que tu está no Claude Code v2.1.287 ou mais recente, no CLI ou no desktop, que são onde os mods estão disponíveis
Depois escolhe teu caminho: pedir um mod ao Claude, adaptar um hook de shell na sua linguagem ou instalar um pronto
E se o mod ficar massa e tu quiser compartilhar, um repositório no GitHub com um arquivo de marketplace já vira um marketplace de onde qualquer pessoa instala, com atualização por um push normal
Bora testar? =)
Até o próximo post!
Perguntas frequentes
Preciso instalar Node.js para escrever ou rodar um mod no Claude Code?
Não. O Claude Code carrega arquivos .js e .ts direto, sem Node.js, sem bundler e sem etapa de build. O único requisito real é ter o Claude Code na versão v2.1.287 ou mais recente.
Dá para testar um mod sem instalar ele de fato?
Dá. A flag –plugin-dir <diretório> carrega um diretório de plugin só pra aquela sessão e recarrega o módulo de hooks toda vez que você salva o arquivo. Se quiser carregar mais de um mod ao mesmo tempo, é só repetir a flag.
Como sei se o meu mod está escrito certo antes de usar?
O comando claude plugin validate <diretório> lê o manifesto e o módulo de hooks e aponta erros, os eventos tratados e as chamadas à API de mods. Com –strict, avisos passam a contar como erro, e –json gera um relatório pra máquina ler.
Preciso reiniciar o Claude Code depois de instalar ou atualizar um mod?
Não precisa. O comando /reload-plugins recarrega plugins, skills, agents, hooks e os servidores MCP e LSP de plugins sem fechar a sessão. Serve bem pra pegar um mod que foi instalado ou atualizado pelo shell enquanto você ainda está trabalhando.
Um mod no Claude Code roda em sandbox, então é seguro instalar qualquer um?
Não, e esse é um ponto importante: o mod é código que roda com as suas permissões, lendo e gravando arquivos, iniciando processos e fazendo requisições de rede. A orientação é instalar mods só de autores e marketplaces em que você confia.
Minha empresa pode impedir que eu instale mods de terceiros no Claude Code?
Pode. Nas managed settings, o administrador usa allowManagedModsOnly para liberar só os mods da organização, e ainda existem allowManagedHooksOnly e disableAllHooks pra desligar hooks de settings e mods de todos os plugins de uma vez.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 30min
Blog | Mais populares
Bateu o limite de uso do Claude Code? Como retomar a tarefa sem refazer tudo
Bateu o limite de uso do Claude Code? Veja como retomar a tarefa de onde parou com /usage, CLAUDE.md e --continue, sem refazer nada.
Como pagar o Claude Code no Brasil: cartão, dólar, IOF e quanto fica em reais
Claude Code preço Brasil na prática: câmbio, IOF de 3,5% e quanto fica na fatura. Planos Pro e Max convertidos em reais e como pagar com cartão.

O que é o JEV e para que ele serve no Claude Code?
O que é JEV no Claude Code? Entenda o modelo da TypeSafe AI, como instalar a skill e quanto custa por milhão de tokens.
