Melhores Práticas para Comandos, Hooks e Subagentes Personalizados
Estas são as convenções que valem a pena adotar assim que um projeto começa a depender de comandos, hooks e subagentes personalizados além de um experimento pontual.
Busque em todas as páginas da documentação
Estas são as convenções que valem a pena adotar assim que um projeto começa a depender de comandos, hooks e subagentes personalizados além de um experimento pontual.
Cada regra abaixo reflete um modo de falha real, um matcher ambíguo, um prompt de tarefa vago, um hook que roda de forma muito ampla, que aparece rapidamente assim que esses pontos de extensão são usados para trabalho real.
settings.json ou .claude/commands/ crescer além de um punhado de entradas; as convenções decaem mais rapidamente sob acúmulo silencioso.description em seu frontmatter. Sem isso, um comando fica invisível no autocompletar, e os colegas de equipe voltam a implementar a mesma solicitação do zero./pre-review é lido claramente meses depois; /chris-check não sobrevive à saída da pessoa da equipe./pr-review, /pr-summarize e /pr-changelog são lidos como uma família no autocompletar; três nomes não relacionados não o são.Edit|Write, não de um match sem escopo em todas as chamadas de ferramenta.{"decision": "block", "reason": "..."} é o sinal confiável; códigos de saída sozinhos podem ser interpretados de forma inconsistente.*.json protegendo um único arquivo de lock acabará bloqueando todos os arquivos JSON no projeto.Edit ou Write em sua lista de ferramentas, como uma questão de aplicação, não apenas de organização..claude/commands/, settings.json ou uma definição de subagente.settings.json e .claude/commands/ juntos durante o onboarding. Ambos são verificados no repositório e ambos moldam o que "digitar uma solicitação" ou "uma edição acontecendo" realmente faz; pular qualquer um deixa um novo membro da equipe com uma imagem incompleta.Dar aos comandos uma description clara e escopar os matchers de hook de forma restrita. Ambos são baratos de fazer desde o início e caros de refazer depois que um projeto acumulou uma dúzia de comandos indocumentados ou um hook excessivamente amplo.
Para um comando puramente pessoal e descartável, sim. Para qualquer coisa verificada em um repositório compartilhado, pular isso significa que os colegas de equipe não podem descobrir que o comando existe sem abrir o arquivo diretamente.
Porque um comando sobrevive à pessoa que o escreveu; um nome ligado à ação (/pre-review) permanece significativo muito depois que um nome ligado ao autor (/chris-check) perdeu seu contexto.
Deixar o matcher sem escopo, de modo que o hook seja acionado em todas as chamadas de ferramenta em vez de apenas nas ferramentas que ele realmente se importa, adicionando ruído e latência a ações não relacionadas.
Porque o tratamento do código de saída pode variar por configuração, enquanto uma carga útil explícita {"decision": "block", "reason": "..."} é a maneira inequívoca e documentada de sinalizar um bloqueio.
Não. Um único script de proteção com uma lista de padrões de caminhos protegidos é mais fácil de auditar como um todo do que as mesmas regras espalhadas por muitas entradas de hook separadas.
Quando a tarefa do subagente realmente exige o mesmo acesso amplo que a sessão pai, como um subagente explicitamente encarregado de fazer um conjunto coordenado de edições em vários arquivos. O escopo é um padrão, não um requisito absoluto.
O subagente que precisava da informação perdida geralmente produzirá um relatório mais fraco ou incorreto, pois não tem como solicitar esse contexto no meio da tarefa; capturar dependências antes de gerar evita isso.
Porque um hook é um comando shell sem raciocínio de modelo anexado; pedir a ele para "decidir" algo significa escrever lógica condicional frágil para aproximar uma chamada de julgamento que um comando ou subagente poderia realmente raciocinar.
A justificativa permanece a mesma, mas o custo de ignorá-las aumenta acentuadamente em uma equipe: um comando indocumentado ou um hook excessivamente amplo afeta todos que puxam o repositório, não apenas a pessoa que o escreveu.
Revise-os sempre que settings.json ou o diretório de comandos crescer além de um punhado de entradas, pois as convenções tendem a decair silenciosamente à medida que mais automações se acumulam sem que ninguém audite o conjunto completo em conjunto.
A disciplina de nomenclatura e descrição é importante para ambos, mas o controle de versão de scripts e a documentação de qual ponto de extensão está em uso são mais importantes para comandos e hooks com escopo de projeto, pois são o que uma equipe inteira compartilha.
Versões da Stack: Escrito contra a linha de modelos Claude atual em ~junho de 2026 - Claude Fable 5, Claude Opus 4.8, Claude Sonnet 5 (o padrão) e Claude Haiku 4.5. Nomes de modelos, preços e recursos do produto mudam rapidamente - verifique as especificações atuais em platform.claude.com/docs antes de confiar neles.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026