PTENES
Saltar al contenido
MÓDULO 3.3

📋 Prompts listos (copy-run)

Seis prompts realmente copiables para usar en Claude Code hoy. Cada uno incluye un objetivo, el bloque para copiar (con las partes que debes cambiar marcadas como <assim>) y cómo verificar el resultado en los campos de usage.

6
Prompts
~30
Minutos
Avanzado
Nivel
Copy-run
Tipo

Cada prompt sigue el mismo formato: Objetivo (lo que hace), el bloque para pegar (copia y reemplaza las partes entre <chevrons>) e Cómo verificar (qué revisar en el usage para saber que funcionó). Todos se basan en la misma verdad: la caché es una coincidencia de prefijos, y la suma de cache_read_input_tokens + cache_creation_input_tokens + input_tokens es el tamaño del prompt.

1 · copiar + cambiar 2 · pegar en Claude 3 · ejecutar 4 · verificar usage ¿cache_read aumenta?

Leyenda: los tres pasos morados preparan y ejecutan; el paso cian confirma en usage si la caché mejoró.

1

🕵️ Auditar el caché de un pipeline

Úsalo cuando el cache «no coincide» y no sabes por qué. Este prompt hace que Claude Code analice el código que arma el prefijo y devuelva una lista de acciones de invalidadores silenciosos, cada uno con archivo, línea y corrección.

Prompt 1 — auditoría del caché

Objetivo

Enumera cada byte variable que impide la caché en tu pipeline, priorizado por impacto.

Prompt (cópialo y cambia <…>)

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.

Cómo verificar

Aplica las correcciones y ejecuta dos solicitudes iguales. En el usage, cache_read_input_tokens debe dejar de ser 0 a partir de la 2.ª. Si aún aparece 0, quedó un invalidator: usa el Prompt 4.

Revisión

Tools + system + messages

Archivo+línea

Hallazgo útil

Por impacto

Frente del prefijo antes

Verifica

leer > 0 en la 2.ª solicitud

2

🔤 Hacer determinista la lista de tools

Úsalo cuando las tools salen de un set/dict y el orden puede variar. Como las tools quedan en posición 0, cualquier cambio en el orden invalida el prefijo completo.

Prompt 2 — serialización estable de tools

Objetivo

Garantizar que la lista de tools siempre salgan en el mismo orden entre solicitudes.

Prompt (cópialo y cambia <…>)

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).

Cómo verificar

Lanza dos requests iguales: cache_read_input_tokens pasa a ser > 0 en la 2.ª. Antes de la corrección, seguía en 0 aunque se repitiera el mismo prompt.

Posición 0

Tools antes que todo

sorted()

Ordena por nombre

sort_keys

También los objetos internos

Idéntico

Entre requests

3

🤔 Decidir entre compactar o continuar

Úsalo cuando el contexto haya crecido y no sepas si conviene /compact. Este prompt pone números en la decisión: costo por turno de continuar frente al costo único de compactar, con el payback.

Prompt 3 — compactar o continuar

Objetivo

Compara el costo por turno de cargar el contexto actual con el costo único de compactar, y recomienda.

Prompt (cópialo y cambia <…>)

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.

Cómo verificar

La recomendación debe seguir el criterio del módulo 3.1: contexto pequeño / pocos turnos → continuar (conserva el caché caliente); contexto grande, cerca del límite o con calidad en descenso → compactar (se recupera la inversión en ~1 turno).

Costo/turno

N @ 0,1×

Write en frío

K @ 1,25×, una vez

Payback

En cuántos turnos se amortiza

Regla

Pequeño→continuar

4

🩺 Diagnosticar cache_read = 0

Úsalo cuando cache_read_input_tokens viene siempre 0 aunque repitas el mismo prompt. Es la prueba de que existe un silent invalidator; este prompt hace que diff de los bytes para encontrar al culpable.

solicitud A · prefijo system... 14:03:07 ...tools solicitud B · prefijo system... 14:03:09 ...tools diff: solo cambia el timestamp → datetime.now() en system = el invalidante

Leyenda: dos prefijos "iguales", un único fragmento diferente. Ese byte es el motivo de cache_read quedar en 0.

Prompt 4 — diff del prefijo

Objetivo

Encontrar el primer byte que cambia entre dos requests iguales y su origen.

Prompt (cópialo y cambia <…>)

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>.

Cómo verificar

Después del fix, vuelve a comparar los dos prefijos: debe quedar vacío. Entonces cache_read_input_tokens empieza a subir con cada turno repetido.

leer = 0

El síntoma

2 requests

Iguales, consecutivos

Diff

1.er byte que cambia

Vacío

Diff limpio = resuelto

5

🧊 Revisar el system prompt pro caché

Úsalo cuando el system tenga la fecha, el nombre del usuario o el modo interpolados. Este prompt congela el system y mueve el contexto dinámico al final de las messages, sin perder información.

Prompt 5 — congelar el system

Objetivo

Quitar toda interpolación dinámica del system y devolverla como bloque listo para el final de las messages.

Prompt (cópialo y cambia <…>)

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.

Cómo verificar

Después del cambio, el system queda idéntico byte por byte entre requests. El caché de tools + system deja de invalidar y cache_read_input_tokens cubre este fragmento.

Congela

System sin variables

Move

Dinámico → final de las messages

No se pierde

El contexto sigue ahí

Estable

Prefijo idéntico

6

📍 Estrategia de breakpoints

Úsalo cuando controles los cache_control manualmente (fuera de Claude Code, en la API). Son como máximo 4 por request; este prompt sugiere dónde colocarlos y advierte sobre el 20-block lookback.

Dónde marcar cache_control (máx. 4) tools system estable fragmento compartido parte variable (no se almacena en caché) ▲ fin del system ▲ fin de lo compartido

Leyenda: dos breakpoints bien ubicados (al final del system, al final del fragmento compartido) cubren casi todo; la parte variable queda fuera a propósito.

Prompt 6 — plan de breakpoints

Objetivo

Decidir dónde colocar los cache_control y evitar el fallo del 20-block lookback.

Prompt (cópialo y cambia <…>)

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.

Cómo verificar

cache_read_input_tokens se mantiene alto y estable turno a turno. Si algún turno con muchos bloques reduce el read a 0, faltó el breakpoint intermedio del lookback.

Máx. 4

Breakpoints por solicitud

Fin del system

Guarda en caché las herramientas y el sistema

Compartido

Antes de la parte variable

20 bloques

Lookback: punto intermedio

El kit completo

1
Auditar el caché — revisa el pipeline y enumera los silent invalidators con su solución.
2
Tools determinista — ordena la serialización y confirma un orden estable.
3
Compactar vs. continuar — estima el costo por turno frente a una escritura en frío y recomienda.
4
Diagnosticar read = 0 — diff de los bytes del prefijo entre dos requests.
5
Revisar system — congela el system y mueve lo dinámico al final de las messages.
6
Breakpoints — dónde marcar cache_control y la alerta del 20-block lookback.

Fin de la Ruta 3

Ya completaste las buenas prácticas avanzadas: decidir entre caché y compactación, montar una arquitectura favorable al caché y tener los prompts a mano. Marca los temas como leídos y sigue tu progreso en «Mi recorrido».