Leo respuestas de IA todo el día. Claude Code y Codex me arreglan cosas, me revisan formas, me preparan entregas para clientes. Y durante meses, la respuesta correcta venía enterrada: un párrafo de contexto arriba, la línea útil en el medio y un resumen de lo que acababa de leer abajo.
al-grano es lo que escribí para eso. Es un estilo de respuesta para tu asistente de código, y es uno de los dos repos que la agencia tiene abiertos en GitHub. En el post de los repos públicos lo presenté en una sección. Aquí va completo: el problema, las reglas, lo que cuesta, cómo instalarlo en Claude Code y en Codex, y lo que encontré al revisarlo para escribir esto.
El problema que tenía
Antes de al-grano usaba un plugin de estilo «caveman»: le quita al texto los artículos, el relleno y las cortesías. Funcionaba a medias. Las palabras bajaban, pero la forma no cambiaba: la respuesta seguía llegando como un bloque, con la decisión en la tercera línea y una lista de cosas hechas al final. El registro de decisión del repo lo dice así: cortaba palabras, pero no estructura, así que las entregas seguían largas.
La otra mitad ya la tenía escrita en mis notas de trabajo: el cierre de una tarea son 10 líneas o menos, una tabla como máximo, sin resumen y sin despedida. El 18 de septiembre junté las dos cosas en un solo archivo de reglas, apagué el plugin viejo (lo dejé instalado por si había que volver) y desde entonces es lo que uso. Hoy carga en Claude Code con dos hooks y en Codex con un bloque en mi AGENTS.md, así que las respuestas se ven igual en las dos herramientas.
Este es el ejemplo del README. Lo escribimos nosotros, no es una conversación de un cliente:
Antesrespuesta del asistente
Buena pregunta. Hay varias cosas pasando con tu build. El paso que falla probablemente es el type check, aunque también podría ser el lint o un cache viejo. Podrías limpiar el cache, volver a correrlo, y si eso no funciona revisar el tsconfig. ¡Espero que eso te ayude a avanzar!
Despuésrespuesta del asistente
Build falla en el type check: flag strict en tsconfig.json. 1. Arregla los 3 errores que lista (o pon "strict": false en tsconfig.json). 2. Corre npm run build. Aparte: el cache está viejo. ¿Lo limpio después?
La diferencia no es el número de palabras, son 14 menos. Es dónde queda la respuesta. En el antes, la causa probable aparece en la tercera oración, envuelta en un «probablemente» y dos «podría». En el después, la primera línea dice qué falla y dónde, los pasos están numerados y lo que no es urgente (el cache) va en una sola línea al final, como pregunta.
Qué trae el repo
El repo es pequeño a propósito. Lo que importa son cinco archivos; lo demás es documentación para quien quiera contribuir.
| Archivo | Qué hace |
|---|---|
| skills/al-grano/SKILL.md | Las reglas completas, en Markdown. Es la única fuente: si quieres cambiar el estilo, cambias este archivo. |
| hooks/al-grano-activate.mjs | Corre al abrir la sesión. Lee el SKILL.md, le quita el encabezado y lo mete como contexto. Escribe una bandera de activo. |
| hooks/al-grano-tracker.mjs | Corre con cada mensaje tuyo. Apaga o prende la bandera según lo que escribas y, si está prendida, deja un recordatorio corto. |
| hooks/hooks.json | Conecta los dos hooks cuando instalas el repo como plugin de Claude Code. |
| .codex-plugin/plugin.json | El manifiesto para Codex: apunta al SKILL.md como entrada. Versión 0.1.0, igual que el de Claude Code. |
Los hooks no hacen llamadas a internet, no corren comandos y lo único que escriben es la bandera, un archivo llamado .al-grano-active dentro de tu carpeta de configuración de Claude. Si algo falla, salen sin error y la sesión abre normal, sin el estilo. Eso lo leí en el código de los dos, no solo en el README.
Las 11 reglas
El SKILL.md tiene 1,072 palabras. La mayoría son ejemplos de qué sí y qué no. Las reglas, resumidas:
| # | Regla | Qué corta |
|---|---|---|
| 1 | La respuesta va primero | «Buena pregunta», «déjame revisar», el plan antes del resultado |
| 2 | Fuera palabras muertas | Relleno, cortesías y dudas que no dicen nada; el código y los errores quedan tal cual |
| 3 | Pasos numerados | Un párrafo con cinco «y luego» |
| 4 | Tope de largo | Cierres de más de 10 líneas o con dos tablas |
| 5 | Sin resumen ni despedida | «Espero que te ayude», repetir lo que acabas de leer |
| 6 | Estado en una línea | Perder la cuenta en tareas de varios pasos («Paso 3/5 listo») |
| 7 | Un problema a la vez | Tres temas mezclados; el segundo va en una línea al final |
| 8 | Hallazgos en una línea | La evidencia en el chat; va al commit o al registro |
| 9 | Estimados con unidades | «Un poco de trabajo»; dice «unos 15 minutos» |
| 10 | Errores sin drama | «Ay, hay un problema»; dice archivo, causa y arreglo |
| 11 | Máximo 5 por lista | Listas de 14 cosas; agrupa y muestra las 5 primeras |
El archivo también dice cuándo romperlas. Hay seis casos en los que el largo cede: cuando pides que te explique algo («explica», «walk me through»), antes de una acción que no se puede deshacer (borrar, forzar un push, mandar algo afuera), cuando el orden de los pasos se puede malinterpretar si quitas los conectores, cuando la petición es ambigua (una pregunta corta), cuando pides opciones (de dos a cuatro, la recomendada primero) y cuando choca con las instrucciones de la herramienta, que siempre mandan.
La que más me importa es la de las acciones que no se deshacen. Una confirmación de algo destructivo escrita en fragmentos es peligrosa. Ahí el estilo pide oraciones completas, aunque salga más largo.
Cuánto cuesta en contexto
Nada es gratis en una sesión de agente: todo lo que un hook mete ocupa contexto. El 22 de octubre medí lo que mete cada hook en un clon limpio, con una configuración de Claude vacía:
Bash(node hooks/al-grano-activate.mjs | wc -w)
1037
Bash(echo '{"prompt":"arregla el build"}' | node hooks/al-grano-tracker.mjs)
AL-GRANO MODE ACTIVE. Answer first (command/path/decision on line 1). Drop dead words. ...
Con esos dos números puedes sacar la cuenta de una sesión tuya. Un ejemplo de 40 mensajes:
- Al abrir: 1,037 palabras, una vez.
- Por mensaje: 33 palabras × 40 mensajes = 1,320 palabras.
- Total: 1,037 + 1,320 = 2,357 palabras de reglas en toda la sesión.
- Si la sesión se compacta, el hook de inicio vuelve a correr (el plugin lo conecta a startup, resume, clear y compact): suma otras 1,037 por cada compactación.
Son palabras, no tokens. El número de tokens depende del modelo, así que no lo convierto. Lo que sí sé es para qué está el recordatorio de 33 palabras: cuando la conversación se compacta, las reglas del inicio se pueden perder en el resumen, y el recordatorio es lo que mantiene el estilo hasta que vuelven a cargar.
Instalarlo en Claude Code
Primero, algo que encontré al revisar el repo para este post. El INSTALL.md describe mi configuración, no la tuya: habla de dos copias de los hooks en mi carpeta ~/.claude/hooks/ que no están en el repo, y el comando de plugin apunta a una copia privada. Hasta que eso se corrija en el repo, el camino que funciona con lo que está público es apuntar tu configuración a los dos hooks del repo, que son los mismos que corrí arriba:
- Clona el repo en tu carpeta personal: git clone https://github.com/svdiginet/al-grano ~/al-grano. Necesitas Node.
- Abre skills/al-grano/SKILL.md y busca la oración que empieza con «For this reader:», dentro de la sección de idioma. Dice español del Caribe con tú, que es lo mío. Pon tu idioma y tu registro.
- Haz una copia de ~/.claude/settings.json y añade los dos hooks del bloque de abajo. Si ya tienes otros hooks en esos eventos, agrega estos a la lista; no la reemplaces.
- Abre una sesión nueva. En el contexto debe aparecer AL-GRANO MODE ACTIVE.
~/.claude/settings.json (solo la parte de hooks)
{
"hooks": {
"SessionStart": [
{ "matcher": "startup|resume|clear|compact",
"hooks": [ { "type": "command", "timeout": 5,
"command": "node \"$HOME/al-grano/hooks/al-grano-activate.mjs\"" } ] }
],
"UserPromptSubmit": [
{ "hooks": [ { "type": "command", "timeout": 5,
"command": "node \"$HOME/al-grano/hooks/al-grano-tracker.mjs\"" } ] }
]
}
}Instalarlo en Codex
Según el repo, Codex no tiene un hook que corra al abrir la sesión, así que ahí el truco es otro: Codex siempre lee tu AGENTS.md. Pones un bloque corto que le dice que use al-grano y le das el archivo de reglas completo como skill. Así lo tengo yo, y por eso las respuestas se ven igual en las dos herramientas.
- Enlaza la carpeta de la skill: ln -s ~/al-grano/skills/al-grano ~/.codex/skills/al-grano.
- Pega el bloque de abajo en el AGENTS.md que Codex carga en tu proyecto o en tu carpeta de trabajo.
- Abre una sesión nueva de Codex y pide algo normal.
AGENTS.md (bloque mínimo)
<!-- al-grano --> ## Output style: al-grano Apply the al-grano output style to every response. Full ruleset: ~/.codex/skills/al-grano/SKILL.md Off only on "para al-grano" or "normal mode". <!-- al-grano -->
Una diferencia que conviene saber: en Codex no hay recordatorio por mensaje ni bandera. Lo único que sostiene el estilo es el bloque del AGENTS.md, que Codex lee al empezar, y el apagado depende de que el modelo obedezca la línea que dice cuándo parar.
Cómo sabes que está activo
Una lista corta para revisar tu instalación, en Claude Code:
- La línea de arranque. Al abrir la sesión, el contexto empieza con AL-GRANO MODE ACTIVE.
- La bandera. Existe el archivo ~/.claude/.al-grano-active (o dentro de tu CLAUDE_CONFIG_DIR, si usas otra carpeta).
- El apagado. Escribe para al-grano, stop al-grano, normal mode o modo normal. La bandera se borra y el siguiente mensaje ya no lleva recordatorio.
- El encendido. Un mensaje que empiece con al grano, o que diga «activa al-grano», la vuelve a crear. Una sesión nueva también.
- La prueba de la primera línea. Pregunta algo con una respuesta concreta. Si la primera línea es la respuesta y no una introducción, está funcionando.
Lo que todavía no sé
- Cuánto más cortas salen mis respuestas. Lo noto todos los días, pero no lo he medido con un antes y un después justo, así que no te doy un porcentaje.
- Si las 33 palabras por mensaje valen la pena en sesiones muy largas. El roadmap del repo tiene una idea pendiente: una prueba con varias preguntas fijas para comparar el estilo cada vez que cambian las reglas.
- Si hace falta un nivel más suave. También está en el roadmap como idea, no como plan: una versión «lite» para quien sienta que una sola forma es demasiado.
Si lo pruebas y algo no funciona, abre un issue en el repo. Es la forma más rápida de que lo arregle, y la única de saber que alguien más lo usa.
Lee también: los dos repos públicos de SVDIGINET y lo que reviso antes de abrir uno.
Si quieres esto en tu negocio
al-grano sale del trabajo diario de SVDIGINET, mi agencia de marketing local en Central Florida. Usamos agentes de IA para perfiles de Google, reseñas, webs y automatizaciones, y al-grano está activo en mis sesiones de Claude Code y Codex. Si prefieres que lo hagamos nosotros, la información está en svdiginet.com.
Fuentes: github.com/svdiginet/al-grano, leído el 22 oct 2026; skills/al-grano/SKILL.md; INSTALL.md


