🪝 Hook SessionStart
El camino «siempre activo, sin pensar»: el script inject-playbook.sh inyecta el playbook como
additionalContext en cada sesión. Lo señalas en el evento SessionStart del settings.json.
E é fail-open: si el archivo del playbook no existe, la sesión sigue con normalidad: nada se rompe.
// ~/.claude/settings.json
{
"hooks": {
"SessionStart": [
{
"matcher": "startup",
"hooks": [
{ "type": "command",
"command": "bash ~/projetos/fablelite/hooks/inject-playbook.sh" }
]
}
]
}
}
✓ Lo que hace el hook
- ✓Lee el
.mdy devuelve medianteadditionalContext. - ✓Se activa en el
startupde cada sesión. - ✓Apunta a otro archivo mediante
FABLE_PLAYBOOK=.
🔎 Fail-open en la práctica
Si el playbook no existe, el script imprime {"continue":true} y sale con código 0: la sesión comienza normalmente. La inyección es un extra, nunca un punto de falla.
🧩 Convertir en skill
No siempre quieres el playbook en TODAS las sesiones. La skill fable-mindset carga el playbook
bajo demanda y también trae los scripts (debloat, extract, compare, make_playbook). Es el canal para cuando prefieres
invocarlo explícitamente en lugar de inyectarlo siempre.
Bajo demanda
El modelo consulta el playbook cuando la tarea es de código, no en todas las conversaciones. Tú controlas cuándo.
Scripts incluidos
La skill incluye todo el pipeline: puedes volver a medir y regenerar el playbook desde la propia invocación.
💡 Consejo práctico
La skill fable-mindset está en ~/.claude/skills/fable-mindset/. Úsala cuando quieras tener el playbook Y las herramientas a mano, sin dejarlo activo todo el tiempo.
📄 CLAUDE.md — el camino más simple
El mínimo esfuerzo: pega el contenido del playbook (o un enlace a él) en el CLAUDE.md — global o del proyecto. Ya es
inyectado automáticamente en cada sesión, con control de versiones junto con el repo, sin ninguna configuración de hook. Tres canales, tres ventajas y desventajas: elige según lo que necesites:
| Canal | Cuándo se activa | Elige si… |
|---|---|---|
| 🪝 Hook | siempre activo (en cada SessionStart) | quiere no pensar, en cada sesión |
| 🧩 Skill | bajo demanda + los scripts | quiere invocar explícitamente |
| 📄 CLAUDE.md | inyectado automáticamente, con control de versiones | quiere el mínimo esfuerzo |
📊 Resumen de la decisión
- Siempre activo, sin pensar → hook
SessionStart. - Bajo demanda + los scripts juntos → skill.
- Esfuerzo mínimo →
CLAUDE.md.
🤗 ¿No tienes datos de Fable? Los traces abiertos
¿Y si apenas tuviste tiempo para conversar con Fable y no tienes sesiones suyas para analizar? Algunas personas abrieron sus propias sesiones en Hugging Face:
Glint-Research/Fable-5-traces. O import_hf_traces.py descarga el dataset y ejecuta el
MISMO ejercicio de comportamiento sobre datos de terceros — misma lectura de herramientas/turno, razonamiento y orden de trabajo.
pip install datasets # Glint-Research/Fable-5-traces (default): python import_hf_traces.py # inspeciona o schema do dataset: python import_hf_traces.py --peek # escreve stats.json num corpus: python import_hf_traces.py --out corpus_fable_hf
💡 Consejo práctico
El importador es defensivo: intenta mapear formatos comunes (chat, JSONL integrado, transcripción sin procesar). Si el recuento sale extraño, abre un registro con --peek y ajusta record_to_events(). Después, make_playbook.py --from-json se convierte en playbook (lado a = estos datos).
Fable-5-traces (HF)
pip install datasets
import_hf_traces.py
mismo ejercicio
🎚️ Qué se transfiere y qué NO
La expectativa honesta: imitas el RITMO (pensar antes, leer antes de editar, cerrar el ciclo), no clona el modelo. El poder de Fable está en los pesos, y eso el playbook no lo abarca. Lo que sí hace es mejorar la ejecución del modelo objetivo; no se convierte en Fable.
✓ SE TRANSFIERE (el ritmo)
- ✓Pensar antes de actuar en lo no trivial.
- ✓Leer antes de editar; herramienta con propósito.
- ✓Cerrar el ciclo con una prueba/build.
✗ NO se transfiere
- ✗Los pesos del modelo — dónde reside el poder.
- ✗Convertirlo en Fable: la identidad no cambia.
- ✗El contenido del razonamiento (viene cifrado en los registros).
🔎 La lectura honesta
El playbook es una mejora de proceso, no un trasplante de capacidad. Le da al modelo objetivo el buen ritmo medido en Fable: una ganancia real, sin la promesa mágica de "convertir Opus en Fable".
⚖️ Ética y generalización
Para cerrar el ciclo con responsabilidad: ejecútalo en TU historial; trata el corpus como sensible — tiene tu código y tus datos. El método no es exclusivo del par Fable/Opus: se aplica a Opus, Codex y modelos de código abierto. Y mantén el playbook actualizado: itera con datos nuevos a medida que acumulas sesiones.
⚠️ El corpus es sensible
Tus registros contienen código, rutas y posiblemente secretos. Trátalos como datos personales: redacta la información sensible antes de compartirlos y no los expongas. El oro está en el ritmo, no en los datos — y el ritmo puedes publicarlo; los datos, no.
tu historial
trátalo como sensible
Opus/Codex/open-source
iterando con datos nuevos
💉 Resumen del módulo
SessionStart — inyecta como additionalContext, fail-open.fable-mindset — bajo demanda, con los scripts juntos.CLAUDE.md — autoinyectado, esfuerzo mínimo.import_hf_traces.py — Glint-Research/Fable-5-traces en HF.Fin de la ruta:
Del registro al playbook inyectado: el método es tuyo. Ejecútalo con tu historial e itera.