Pular para o conteúdo
MÓDULO 3.3

📋 Prompts prontos (copy-run)

Seis prompts coláveis de verdade pra usar no Claude Code hoje. Cada um vem com objetivo, o bloco pra copiar (com as partes que você troca marcadas como <assim>) e como verificar o resultado nos campos de usage.

6
Prompts
~30
Minutos
Avançado
Nível
Copy-run
Tipo

Cada prompt segue o mesmo formato: Objetivo (o que ele faz), o bloco colável (copie e troque as partes entre <chevrons>) e Como verificar (o que olhar no usage pra saber que funcionou). Todos apoiam na mesma verdade: cache é casamento de prefixo, e a soma de cache_read_input_tokens + cache_creation_input_tokens + input_tokens é o tamanho do prompt.

1 · copiar + trocar 2 · colar no Claude 3 · rodar 4 · verificar usage cache_read sobe?

Legenda: os três passos roxos preparam e rodam; o passo ciano confirma no usage se o cache melhorou.

1

🕵️ Auditar cache de um pipeline

Use quando o cache "não bate" e você não sabe por quê. Este prompt faz o Claude Code varrer o código que monta o prefixo e devolver uma lista acionável de silent invalidators, cada um com arquivo, linha e fix.

Prompt 1 — auditoria de cache

Objetivo

Listar cada byte de variação que impede o cache no seu pipeline, priorizado por impacto.

Prompt (copie e troque <…>)

Audite o prompt caching do meu pipeline em <caminho/do/projeto>.
Varra TUDO que alimenta o prefixo (a lista de `tools`, o `system` e o
começo estável das `messages`) e liste cada silent invalidator:
- datetime.now() / Date.now() / uuid / id aleatório no prefixo;
- json.dumps sem sort_keys=True;
- iteração de set (ordem não garantida);
- tools montadas por usuário/modo;
- seção condicional no system (if flag: system += ...).
Para cada achado, dê: arquivo, linha, por que quebra o cache e o fix mínimo.
Ordene por impacto — o que fica mais na FRENTE do prefixo primeiro.

Como verificar

Aplique os fixes e rode duas requisições iguais. No usage, cache_read_input_tokens deve deixar de ser 0 a partir da 2ª. Se ainda vier 0, sobrou um invalidator — use o Prompt 4.

Varredura

Tools + system + messages

Arquivo+linha

Achado acionável

Por impacto

Frente do prefixo antes

Verifica

read > 0 no 2º request

2

🔤 Tornar a lista de tools determinística

Use quando as tools saem de um set/dict e a ordem pode variar. Como as tools ficam na posição 0, qualquer troca de ordem invalida o prefixo inteiro.

Prompt 2 — serialização estável de tools

Objetivo

Garantir que a lista de tools saia sempre na mesma ordem entre requests.

Prompt (copie e troque <…>)

Em <caminho/do/arquivo>, a lista de `tools` é montada assim:
<cole aqui o trecho que monta as tools>
Reescreva pra serialização ficar DETERMINÍSTICA:
1) ordene as tools por nome antes de enviar
   (ex.: sorted(tools, key=lambda t: t["name"]));
2) garanta que cada objeto interno saia ordenado
   (json.dumps(..., sort_keys=True));
3) confirme que a ordem é IDÊNTICA entre dois requests.
Mostre o diff e explique por que isso preserva o prefixo (posição 0).

Como verificar

Dispare dois requests iguais: cache_read_input_tokens passa a ser > 0 no 2º. Antes da correção, ele ficava 0 mesmo repetindo o mesmo prompt.

Posição 0

Tools antes de tudo

sorted()

Ordene por nome

sort_keys

Objetos internos também

Idêntico

Entre requests

3

🤔 Decidir compactar vs continuar

Use quando o contexto cresceu e você não sabe se vale /compact. Este prompt põe números na decisão: custo por turno de continuar vs custo único de compactar, com o payback.

Prompt 3 — compactar ou continuar

Objetivo

Comparar o custo por turno de carregar o contexto atual com o custo único de compactar, e recomendar.

Prompt (copie e troque <…>)

Estou com um contexto de ~<N> tokens e ainda faltam ~<M> turnos.
Compare os dois caminhos (use read≈0,1× · write 5min≈1,25×):
(a) CONTINUAR sem compactar: custo por turno = N @ 0,1× ≈ N/10-equiv,
    repetido em todos os <M> turnos;
(b) COMPACTAR pra ~<K> tokens: 1 write frio K @ 1,25× (uma vez) e
    depois K @ 0,1× por turno.
Diga o payback (em quantos turnos a compactação se paga) e recomende
compactar OU continuar — considerando também o teto de 1M e a qualidade
(context rot). Se a conversa for curta, avise que continuar pode ser melhor.

Como verificar

A recomendação deve seguir a régua do módulo 3.1: contexto pequeno / poucos turnos → continuar (preserva o cache quente); contexto grande, perto do teto ou qualidade caindo → compactar (payback em ~1 turno).

Custo/turno

N @ 0,1×

Write frio

K @ 1,25×, uma vez

Payback

Em quantos turnos paga

Régua

Pequeno→continuar

4

🩺 Diagnosticar cache_read = 0

Use quando cache_read_input_tokens vem sempre 0 mesmo repetindo o mesmo prompt. É a prova de que existe um silent invalidator; este prompt faz o diff dos bytes pra achar o culpado.

request A · prefixo system... 14:03:07 ...tools request B · prefixo system... 14:03:09 ...tools diff: só o timestamp muda → datetime.now() no system = o invalidator

Legenda: dois prefixos "iguais", um único trecho diferente. Esse byte é o motivo de cache_read ficar 0.

Prompt 4 — diff do prefixo

Objetivo

Achar o primeiro byte que muda entre dois requests iguais e a sua origem.

Prompt (copie e troque <…>)

Meu cache_read_input_tokens vem SEMPRE 0 repetindo o MESMO prompt.
Capture os bytes exatos do prefixo (tools + system + começo das messages)
de DOIS requests consecutivos e faça o diff entre eles.
Aponte o PRIMEIRO ponto que difere e explique a origem
(relógio/datetime.now(), uuid, ordem de set/dict, json.dumps sem sort_keys,
seção condicional no system). Proponha o fix determinístico.
Arquivos que montam o prefixo: <cole os caminhos>.

Como verificar

Depois do fix, refaça o diff dos dois prefixos: ele deve ficar vazio. Aí cache_read_input_tokens passa a subir a cada turno repetido.

read = 0

O sintoma

2 requests

Iguais, consecutivos

Diff

1º byte que muda

Vazio

Diff limpo = resolvido

5

🧊 Revisar system prompt pró-cache

Use quando o system tem data, nome do usuário ou modo interpolados. Este prompt congela o system e move o contexto dinâmico pro fim das messages, sem perder informação.

Prompt 5 — congelar o system

Objetivo

Tirar toda interpolação dinâmica do system e devolvê-la como bloco pronto pro fim das messages.

Prompt (copie e troque <…>)

Aqui está meu system prompt:
<cole o system prompt inteiro>
Remova TODA interpolação dinâmica dele (data/hora, nome do usuário, modo,
e qualquer valor que muda entre requests) e mova esse contexto pro FIM
das messages — nunca no system. Devolva:
1) o system CONGELADO (fixo, sem variáveis);
2) o bloco de contexto dinâmico pronto pra ir nas messages;
3) o diff comentado, explicando por que cada mudança preserva o prefixo.

Como verificar

Depois da troca, o system fica idêntico byte a byte entre requests. O cache de tools + system para de invalidar e cache_read_input_tokens cobre esse trecho.

Congela

System sem variáveis

Move

Dinâmico → fim das messages

Não perde

Contexto continua lá

Estável

Prefixo idêntico

6

📍 Estratégia de breakpoints

Use quando você controla os cache_control à mão (fora do Claude Code, na API). São no máximo 4 por request; este prompt sugere onde colocá-los e alerta sobre o 20-block lookback.

Onde marcar cache_control (máx. 4) tools system estável trecho compartilhado parte variável (não cacheia) ▲ fim do system ▲ fim do compartilhado

Legenda: dois breakpoints bem postos (fim do system, fim do trecho compartilhado) cobrem quase tudo; a parte variável fica de fora de propósito.

Prompt 6 — plano de breakpoints

Objetivo

Decidir onde posicionar os cache_control e evitar o furo do 20-block lookback.

Prompt (copie e troque <…>)

Meu prompt tem esta estrutura:
<descreva: tamanho do system; se as tools mudam; se há um trecho
 compartilhado seguido de um sufixo que varia por request>
Sugira onde colocar os cache_control (MÁX. 4 por request). Tipicamente:
- no fim do `system` estável;
- no fim do maior trecho COMPARTILHADO, antes da parte variável.
Alerte sobre o 20-block lookback: se um turno adiciona >20 blocos
(loops com muitos tool_use/tool_result), proponha um breakpoint
intermediário (~a cada 15 blocos). Explique cada escolha.

Como verificar

cache_read_input_tokens fica alto e estável turno a turno. Se algum turno com muitos blocos derruba o read pra 0, faltou o breakpoint intermediário do lookback.

Máx. 4

Breakpoints por request

Fim do system

Cacheia tools+system

Compartilhado

Antes da parte variável

20 blocos

Lookback: pt. intermediário

O kit completo

1
Auditar cache — varre o pipeline e lista os silent invalidators com fix.
2
Tools determinística — ordena a serialização e confirma ordem estável.
3
Compactar vs continuar — estima custo por turno vs write frio e recomenda.
4
Diagnosticar read = 0 — diff dos bytes do prefixo entre dois requests.
5
Revisar system — congela o system e move o dinâmico pro fim das messages.
6
Breakpoints — onde marcar cache_control e o alerta do 20-block lookback.

Fim da Trilha 3

Você fechou as boas práticas avançadas: decidir cache vs compactação, montar uma arquitetura pró-cache e ter os prompts na mão. Marque os tópicos como lidos e acompanhe o progresso em "Minha jornada".