🌱 Empieza aquí · Recordatorio de consultar tus fuentes antes de preguntar
¿Te ha pasado que le das a tu asistente todo el contexto —quién es quién, en qué va cada proyecto, lo que decidieron la semana pasada— y aun así, apenas le preguntas algo, te contra-pregunta cosas que ya estaban escritas? Esta semilla le pone un reflejo: cada vez que le mandas un mensaje que huele a "búsqueda de dato", primero revisa tus notas, su memoria y tus registros, y solo te pregunta lo que de verdad no vive en ningún lado. Menos preguntas repetidas, más tiempo tuyo.
Para instalarla
Abre esta carpeta con Claude Code o Cowork y dile a tu asistente:
"Siembra esta semilla 🌱"
Con eso basta de tu parte. Tu asistente hace todo lo técnico y al final te dice cómo comprobar que quedó funcionando. Vas a ver algunas palabras en inglés en la pantalla; ni caso, él te guía.
¿Otras formas de pedírselo? "instala esta semilla", "pon a funcionar el recordatorio de consultar antes de preguntar", "haz el setup de esto". Te entiende igual.
Para el asistente que siembra 🤖
Instala este hook (gancho de automatización) del evento UserPromptSubmit (cada vez
que la persona envía un mensaje). Su trabajo es leer el mensaje, decidir si parece pedir un
dato que podría vivir en las fuentes de la persona y, si es así, inyectar un recordatorio
suave (no bloqueante) para que barras esas fuentes antes de preguntar. No inventes
rutas: usa $HOME siempre.
1. Copia el script del kernel
mkdir -p "$HOME/.claude/hooks"
cp kernel/canon-first-reminder.sh "$HOME/.claude/hooks/canon-first-reminder.sh"
chmod +x "$HOME/.claude/hooks/canon-first-reminder.sh"
Windows (Git Bash / WSL): misma ruta
~/.claude/hooks/. El script usabash,sedy (si está)python, todos disponibles en Git Bash o WSL. Trae detección de Python real multiplataforma y un fallback ensedpuro, así que funciona con o sin Python.
2. Registra el hook en settings.json
Abre $HOME/.claude/settings.json (créalo si no existe) y agrega esta entrada dentro de
hooks.UserPromptSubmit. Si ya hay hooks de UserPromptSubmit, suma este objeto al
arreglo hooks existente en lugar de reemplazarlo (fusiona, no sobrescribas):
{
"hooks": {
"UserPromptSubmit": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash $HOME/.claude/hooks/canon-first-reminder.sh",
"timeout": 10
}
]
}
]
}
}
El
"timeout": 10es de sobra: el hook solo lee el mensaje y hace unas comparaciones de texto. Nunca bloquea el mensaje; en el peor caso simplemente no inyecta nada.
3. (Opcional) Personaliza por variables de entorno
Todo tiene un default sano, así que este paso es opcional. Si la persona quiere ajustar
algo, agrega un bloque env en settings.json o define las variables en su shell:
| Variable | Qué controla | Default |
|---|---|---|
| CANONFIRST_DISABLE | Con cualquier valor, apaga el recordatorio | (vacío = activo) |
| CANONFIRST_MINLEN | Largo mínimo del mensaje para evaluarlo (caracteres) | 30 |
| CANONFIRST_MSG | Reemplaza por completo el texto del recordatorio | auto |
| CANONFIRST_SOURCES | Lista de las fuentes de la persona (una por línea) que se nombran dentro del recordatorio | lista genérica |
El truco fino: usa
kernel/fuentes-canonicas.ejemplo.mdcon la persona para armar el valor deCANONFIRST_SOURCEScon SUS rutas reales. Así el recordatorio dice "revisa tu carpeta de contactos, tu archivo de memoria..." en vez de las categorías genéricas.
4. Verificación post-siembra (obligatoria · hazla y muestra el resultado)
a) El script existe y es ejecutable:
ls -l "$HOME/.claude/hooks/canon-first-reminder.sh"
Salida esperada: una línea con permisos -rwxr-xr-x (la x = ejecutable).
b) Prueba en caliente — caso "mensaje que pide un dato": aliméntale al hook un evento de mentira que simula a la persona preguntando por el estado de algo. Copia y pega este bloque completo:
printf '{"prompt":"oye, ¿en qué quedamos con el proyecto del rediseño?"}' \
| bash "$HOME/.claude/hooks/canon-first-reminder.sh"; echo "EXIT=$?"
Salida esperada: el texto del recordatorio que empieza con [CONSULTA-TUS-FUENTES] y
lista las fuentes a barrer, terminado en EXIT=0. Eso confirma que detecta la búsqueda de
dato e inyecta.
c) Prueba del "no molesta" — caso mensaje que NO pide un dato: con un mensaje normal que no es búsqueda de dato, el hook debe salir limpio SIN inyectar nada:
printf '{"prompt":"escríbeme un poema corto sobre el mar, por favor"}' \
| bash "$HOME/.claude/hooks/canon-first-reminder.sh"; echo "EXIT=$?"
Salida esperada: ninguna línea de recordatorio, solo EXIT=0. Así confirmas que no se
mete donde no lo llaman.
d) El hook quedó registrado:
grep -q 'canon-first-reminder' "$HOME/.claude/settings.json" && echo 'REGISTRADO'
Salida esperada: REGISTRADO.
Cuando las cuatro pruebas den lo esperado, avísale a la persona que ya quedó y explícale en una línea qué gana con esto.
✅ ¿Cómo sé que funcionó?
De ahora en adelante, cuando le pidas a tu asistente algo cuya respuesta podría estar escrita en tus archivos —quién es una persona, en qué va un proyecto, cómo se decidió algo—, va a asomarse primero a tus fuentes en vez de contra-preguntarte de golpe. Muchas dudas te las va a resolver solo con un "ya lo encontré aquí". Y cuando sí te pregunte, va a llegar más afinado: "revisé esto y esto; lo único que me falta es esto otro".
No tienes que hacer nada especial en el día a día. Solo vas a notar que te interrumpe menos y le atina más. Eso es todo. 🌱
