Domínio 3 — Claude Code Configuration & Workflows · Lição 3 de 6

Slash commands e skills

Objetivos de aprendizagem

Slash commands: prompts empacotados

Um slash command é um arquivo Markdown cujo conteúdo vira o prompt quando alguém digita /nome-do-comando. Existem dois escopos, e a distinção cai na prova (é uma das sample questions oficiais):

EscopoLocalQuem recebe
Projeto.claude/commands/review.md → /reviewTodo o time, automaticamente, via git clone/pull
Pessoal~/.claude/commands/meu-fluxo.mdSó você, em todos os seus projetos

O arquivo aceita frontmatter (description, argument-hint, allowed-tools, model) e placeholders: $ARGUMENTS (tudo que foi digitado após o comando) ou $1, $2... (posicionais):

---
description: Roda o checklist de code review do time no diff atual
argument-hint: "[branch-base]"
allowed-tools: "Bash(git diff*) Bash(git log*) Read Grep"
---
Revise o diff contra a branch $1 seguindo o checklist do time:

1. Segurança: entradas validadas? segredos hardcoded?
2. Erros: caminhos de falha tratados e logados?
3. Testes: novos comportamentos cobertos?

Reporte cada achado com arquivo:linha e severidade (alta/média/baixa).

Comando que codifica um processo do time (ex.: /review com o checklist padrão) pertence a .claude/commands/ no repositório: é versionado, chega a todos no clone e evolui por pull request como qualquer código.

Skills: capacidades sob demanda

Uma skill vive em .claude/skills/<nome>/SKILL.md (com arquivos auxiliares na mesma pasta, se precisar). Diferente do CLAUDE.md — carregado sempre, em toda sessão —, a skill é carregada sob demanda: quando invocada ou quando o Claude julga que a descrição dela casa com a tarefa. É o mecanismo certo para workflows específicos que não precisam ocupar contexto em toda interação.

---
name: analyze-deps
description: Analisa o grafo de dependencias do monorepo e aponta ciclos
context: fork
allowed-tools: "Read Grep Glob"
argument-hint: "[pacote]"
---
Analise as dependencias do pacote $ARGUMENTS:

1. Liste imports entre pacotes internos (use Grep em package.json e imports).
2. Detecte ciclos e dependencias nao declaradas.
3. Retorne APENAS um resumo: ciclos encontrados, top 5 acoplamentos, riscos.

Os três campos de frontmatter cobrados no exame:

flowchart TD
    I["/analyze-deps pacote-x"] --> F{context: fork?}
    F -- sim --> SUB["Subagente isolado
leituras e buscas verbosas
ficam aqui"] SUB --> RES["Só o resumo volta
à conversa principal"] F -- não --> MAIN["Roda na conversa principal
toda a saída entra no contexto"]

Skill vs CLAUDE.md: o critério

PerguntaCLAUDE.md / rulesSkill
Quando o conteúdo é necessário?Em (quase) toda interaçãoSó em tarefas específicas
Custo de contextoPago em toda sessãoPago só quando invocada
NaturezaConvenções, padrões universaisWorkflow/procedimento com passos
Exemplo"Use TypeScript strict; teste com Vitest""Gerar relatório de migração de esquema"

Sintoma de erro de projeto: CLAUDE.md inchado com procedimentos passo-a-passo raramente usados (custo de tokens em toda sessão) ou, no inverso, convenções universais escondidas numa skill que nem sempre é carregada. Cada conteúdo no mecanismo certo.

Variantes pessoais sem afetar o time

Quer experimentar uma versão diferente de uma skill do time (outro formato de relatório, outros passos)? Crie a variante em ~/.claude/skills/ com nome diferente (ex.: analyze-deps-experimental). Ela fica disponível só para você, em qualquer projeto, e não interfere na skill oficial versionada do repositório. O mesmo raciocínio vale para comandos pessoais em ~/.claude/commands/.

Pegadinhas da prova

Resumo em 5 linhas

  1. Slash commands: Markdown em .claude/commands/ (projeto, versionado, time todo) ou ~/.claude/commands/ (pessoal); placeholders $ARGUMENTS/$1.
  2. Skills: .claude/skills/<nome>/SKILL.md, carregadas sob demanda — ao contrário do CLAUDE.md, que é sempre carregado.
  3. context: fork roda a skill em subagente isolado: saída verbosa/exploratória não polui a conversa principal.
  4. allowed-tools restringe ferramentas na execução (segurança/escopo); argument-hint guia a invocação com os parâmetros certos.
  5. Variante pessoal de skill: ~/.claude/skills/ com nome diferente — experimenta sem afetar o time.

Documentação oficial

Questões de fixação

1. O time quer um comando /changelog disponível para qualquer desenvolvedor imediatamente após clonar o repositório. Onde criá-lo?

2. Uma skill de auditoria de dependências lê centenas de package.json e gera logs extensos; depois de usá-la, a conversa principal fica "entupida" e o Claude perde o fio da tarefa original. Qual configuração resolve?

3. Você quer garantir que a skill generate-fixtures só possa criar/editar arquivos de fixture, sem jamais executar comandos de shell durante sua execução. Qual mecanismo usar?

4. Uma desenvolvedora quer testar uma versão modificada da skill oficial release-notes do time, sem impactar ninguém. Qual é o caminho recomendado?