Founding Member: $499/mes de por vida
Micare
Calidad de vida

Barra de estado consciente de tu contexto

Un hook que adivina de qué área de trabajo habla tu mensaje (por palabras clave que TÚ defines) y la guarda por sesión, para que tu barra de estado muestre el contexto lógico en el que estás —no la carpeta física donde abriste la terminal—. Ideal si saltas entre varios proyectos o clientes en una misma sesión.

HookPremiumCalidad de vidacontexto y estado

🌱 Empieza aquí · Barra de estado consciente de tu contexto

¿Trabajas varios proyectos o clientes desde la misma carpeta y tu barra de estado siempre te muestra lo mismo, sin importar de qué estés hablando? Esta semilla arregla eso. Le enseña a tu asistente a adivinar de qué área de trabajo trata cada mensaje —por unas palabras clave que tú defines— y a dejarlo anotado, para que tu barra de estado te muestre el contexto real ("Cliente A", "Personal", "Sistema"...) en vez de la carpeta física donde abriste la terminal.

Para instalarla

Abre esta carpeta con Claude Code 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 detector de contexto de la barra de estado", "haz el setup de esto". Te entiende igual.


Para el asistente que siembra 🤖

Instala este hook (gancho de automatización) del evento UserPromptSubmit (se dispara cada vez que el usuario envía un mensaje). El hook no bloquea nada: solo lee el mensaje, decide un área y la escribe en un archivo de estado por sesión. Una barra de estado (statusline) puede leer ese archivo para mostrar el contexto.

Sigue estos pasos y no inventes rutas: usa $HOME siempre. Los valores entre <...> los resuelves tú según la plataforma.

  • <TU-RUTA-DE-HOOKS> → carpeta de hooks del asistente. En Claude Code: ~/.claude/hooks/.
  • <TU-ARCHIVO-DE-SETTINGS>settings.json del asistente. En Claude Code (usuario): ~/.claude/settings.json.

1. Copia el script del kernel

mkdir -p "$HOME/.claude/hooks"
cp kernel/domain-statusline-state.sh "$HOME/.claude/hooks/domain-statusline-state.sh"
chmod +x "$HOME/.claude/hooks/domain-statusline-state.sh"

El script usa bash, jq, grep, sed, find y tr. En macOS y Linux ya vienen. jq (lector de JSON) puede faltar; si jq no está instalado, instálalo antes (brew install jq en macOS, apt install jq en Debian/Ubuntu). En Windows usa Git Bash o WSL con jq disponible.

2. Registra el hook UserPromptSubmit 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 existente en vez de reemplazarlo:

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "bash $HOME/.claude/hooks/domain-statusline-state.sh",
            "timeout": 5
          }
        ]
      }
    ]
  }
}

3. Crea el archivo de áreas (el corazón del valor)

Aquí vive TODO el jugo: sin este archivo el hook no hace nada (sale limpio). Copia el ejemplo del kernel a la ruta que el script busca por defecto y edítalo con las áreas reales del usuario:

cp kernel/statusline-areas.ejemplo.conf "$HOME/.claude/statusline-areas.conf"

Abre $HOME/.claude/statusline-areas.conf. Cada línea es Nombre del área = palabras clave. Pregúntale al usuario (o dedúcelo de su trabajo) cómo dividir su mundo: por cliente, por proyecto, por tema. Reemplaza los ejemplos por lo suyo. Reglas de la config:

  • El área con más coincidencias de palabras clave en el mensaje gana.
  • En empate gana la primera área listada (ordénalas de más a menos prioritaria).
  • Si un mensaje no coincide con nada, se mantiene la última área de la sesión.
  • El regex es case-insensitive; separa varias palabras con |. Usa \bpalabra\b para exigir la palabra completa y evitar falsos positivos.

4. Conecta el estado a la barra de estado (opcional pero es el punto)

El hook solo escribe el área. Para verla, tu barra de estado debe leer el archivo de estado de la sesión. Si el usuario aún no tiene un statusline, este es un ejemplo mínimo: un script que Claude Code invoca con el JSON de la sesión por stdin, del que sacamos el session_id para leer el estado correcto.

Guárdalo como $HOME/.claude/statusline.sh, dale chmod +x, y regístralo en settings.json bajo la clave statusLine ({ "statusLine": { "type": "command", "command": "bash $HOME/.claude/statusline.sh" } }):

#!/usr/bin/env bash
INPUT="$(cat)"
SID="$(printf '%s' "$INPUT" | jq -r '.session_id // empty' 2>/dev/null)"
# Misma carpeta y valor por defecto que el hook: si el usuario cambió
# STATUSLINE_STATE_DIR, el lector lo respeta y no se desincroniza.
STATE_DIR="${STATUSLINE_STATE_DIR:-$HOME/.claude/statusline-state}"
AREA="General"
[ -n "$SID" ] && [ -f "$STATE_DIR/$SID.area" ] && \
  AREA="$(cat "$STATE_DIR/$SID.area")"
printf '📍 %s' "$AREA"

Si el usuario ya tiene un statusline, solo agrégale la lógica de esas líneas (leer session_id, resolver STATE_DIR igual que el hook, leer $STATE_DIR/$SID.area e imprimirlo) donde quiera que aparezca.

5. Verificación post-siembra (obligatoria)

a) El clasificador decide bien. Simula un mensaje y confirma que escribe el área correcta. Reemplaza el regex del ejemplo por uno que exista en la config del usuario:

echo '{"session_id":"prueba-123","prompt":"tengo una reunión con el cliente el jueves"}' \
  | bash "$HOME/.claude/hooks/domain-statusline-state.sh"; echo "EXIT=$?"
cat "$HOME/.claude/statusline-state/prueba-123.area"; echo

Salida esperada: EXIT=0 y, debajo, el nombre del área cuyas palabras clave matchearon (con el ejemplo por defecto, Trabajo). Si sale vacío, revisa que ~/.claude/statusline-areas.conf exista y tenga palabras que coincidan con la frase.

b) El comportamiento pegajoso funciona. Un segundo mensaje sin ninguna palabra clave NO debe borrar el área anterior:

echo '{"session_id":"prueba-123","prompt":"ok, gracias"}' \
  | bash "$HOME/.claude/hooks/domain-statusline-state.sh"
cat "$HOME/.claude/statusline-state/prueba-123.area"; echo
rm -f "$HOME/.claude/statusline-state/prueba-123.area"

Salida esperada: el MISMO área del paso (a) (no cambió). Al final limpiamos el estado de prueba.

c) El hook quedó registrado:

grep -q 'domain-statusline-state' "$HOME/.claude/settings.json" && echo 'REGISTRADO'

Salida esperada: REGISTRADO.

Cuando las tres pruebas den lo esperado, abre una sesión nueva, escribe un par de mensajes de distintos temas y confirma que la barra de estado va cambiando de área. Luego avísale al usuario en una línea qué gana con esto.


✅ ¿Cómo sé que funcionó?

De ahora en adelante, tu barra de estado te va a decir de qué estás hablando, no en qué carpeta estás. Si en una misma sesión saltas de un cliente a otro, o del trabajo a un pendiente personal, el rótulo cambia solito conforme escribes. Y si mandas un "sí, dale" sueltito, no se pierde el contexto: se queda en la última área que venías tratando.

No tienes que hacer nada especial en el día a día. La única vez que vale la pena volver al archivo statusline-areas.conf es cuando arranques un proyecto o cliente nuevo: agrégale una línea con sus palabras clave y listo. Eso es todo. 🌱

¿Quieres implementarla con acompañamiento?

Agenda una asesoría directa con JP y aterrízala en tu caso · desde $600 MXN.

Agendar una asesoría