Inteligência Artificial

CLAUDE.md para projeto WordPress: as regras que evitam o Claude Code quebrar o tema

O CLAUDE.md para projeto WordPress que funciona é curto: versões, onde pode mexer, comandos do projeto e o que é proibido tocar. O Claude Code lê esse arquivo da raiz em toda sessão, então cada linha ali vira regra fixa. Eu começo com o /init, que gera um rascunho lendo o código, e depois corto mais da metade.

O que fica no arquivo

# Loja do cliente: WordPress 6.9, PHP 8.3

## Onde pode mexer
- Só em wp-content/themes/loja-filho/ e wp-content/mu-plugins/.
- Tema pai e plugin de terceiro: nunca. Precisou? Proponha um hook no tema filho.

## Comandos
- WP-CLI: wp --path=/var/www/loja (ex.: wp plugin list)
- Padrão de código: vendor/bin/phpcs wp-content/themes/loja-filho

## Padrões
- Prefixo lf_ em função, hook e opção; text domain loja-filho.
- Saída com esc_html, esc_attr ou esc_url; formulário com nonce.

## Proibido
- wp-config.php, wp-content/uploads/ e qualquer comando no banco de produção.

A regra do tema filho é a que mais salva. Sem ela, o Claude acha a função no tema pai e corrige lá mesmo, e a próxima atualização do tema apaga a correção. Com o “proponha um hook”, ele procura o filtro certo em vez de copiar o arquivo inteiro.

Por que curto funciona melhor

Manual de 300 linhas dilui as regras: o que importa fica no meio de explicação que o Claude descobriria sozinho lendo o código. Eu deixo de fora estrutura de pastas, lista de plugins e história do projeto. Fica o que ele erraria sem aviso.

Se o time já tem um AGENTS.md ou um guia de padrões, não copie o conteúdo: uma linha @AGENTS.md no CLAUDE.md importa o arquivo.

Instrução não é trava

O CLAUDE.md orienta, mas não impede nada. Para barrar comando de verdade, como um wp db reset, a regra vai nas permissões do .claude/settings.json, que o Claude Code aplica antes de rodar.

Toda vez que o Claude errar a mesma coisa duas vezes, vira uma linha nova no arquivo; o resto continua no código.

Post Recentes

YouTube sem cookie: adiar o embed do vídeo e do Maps até o aceite

Seu banner de consentimento está certo, mas o vídeo incorporado grava cookie de terceiro no primeiro carregamento. Troque o domínio…

1 dia atrás

Custom post type dando 404: flush_rewrite_rules na ativação do plugin

A listagem do custom post type abre e o single dá 404 no WordPress 6.9. Entenda o cache das rewrite…

3 dias atrás

systemd timer no lugar do cron: agendar script com log e sem execução dupla

Um par .service e .timer substitui a linha do crontab com log no journal, execução perdida recuperada no boot e…

3 dias atrás

Descrição em massa no WooCommerce: wp eval-file lendo a lista de SKUs

400 produtos importados do fornecedor com a aba Descrição vazia. Um wp eval-file percorre os SKUs sem texto, grava pelo…

3 dias atrás

Frete grátis no WooCommerce: esconder as outras opções de entrega

Some com PAC e SEDEX da lista quando o frete grátis está disponível, usando woocommerce_package_rates, e limpe o cache de…

4 dias atrás

Erro HTTP no WordPress ao enviar imagem para a biblioteca de mídia

A barra de upload chega no fim e o WordPress devolve só "Erro HTTP". Separe as três causas: Imagick barrado…

4 dias atrás