Skip to main content

claude-code-notify-setup

Usar una sola vez para que uno o varios agentes de Grok Bot se despierten con los avisos de Claude Code en Slack. Le pregunta al usuario el canal de avisos, su channel id y qué bots activar; asigna un slug notify-<slug> por bot sin colisiones, crea la routine con trigger por keyword, lo guarda en memoria y prueba que dispara. Dos flujos: coordinador (configura a varios bots) o por agente (se configura solo).

Source facts

Repository
luck-prg/grokbot-claude-code
Last source activity
October 16, 2026 at 00:57
Detected SKILL.md language
Spanish
Stars
2
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
claude-code-notify-setup
description
Usar una sola vez para que uno o varios agentes de Grok Bot se despierten con los avisos de Claude Code en Slack. Le pregunta al usuario el canal de avisos, su channel id y qué bots activar; asigna un slug notify-<slug> por bot sin colisiones, crea la routine con trigger por keyword, lo guarda en memoria y prueba que dispara. Dos flujos: coordinador (configura a varios bots) o por agente (se configura solo).
# Configurar agentes para recibir avisos de Claude Code Los hooks de Claude Code (en la nube, por defecto, o local como fallback) publican en el canal de avisos un mensaje así: ``` *Claude Code* • *evento:* `<evento>` • *sesión:* <url|session_xxx> • *repo:* `owner/name` • *rama:* `<rama>` • *agente:* `notify-<slug>` • *tarea:* `<tarea>` ``` Un campo por línea (`• *<campo>:* <valor>`, valor entre backticks o `<url|session_xxx>`); los campos vacíos no aparecen. La routine identifica al agente por la línea `*agente:*` `` `notify-<slug>` ``, que es el único `notify-` real del mensaje. Detalle del parseo en la skill `claude-code-task`. El hook saca el agente de la línea `notify: <slug>` del primer mensaje del prompt de la tarea (sin archivos ni variables por tarea) y la `tarea` de la rama, sin el prefijo `feature/`, `hotfix/` o `release/`. Si el prompt no trae esa línea, el aviso sale con agente `` `desconocido` `` y no despierta a nadie. Cada agente tiene una routine que despierta solo con **su** keyword `notify-<slug>`. Esta skill se corre una vez (por agente o una vez para varios). Para lanzar tareas después, usá la skill `claude-code-task`. ## Qué le preguntás al usuario (nunca lo adivines) Nada de esto viene fijo en la skill: el canal y los bots son los del usuario de Grok Bot. 1. **Nombre del canal de avisos** (`#<canal>`): el canal privado donde publica el bot de notificaciones. 2. **Channel id** de ese canal (estilo `C0123456789`; en Slack: detalles del canal → abajo de todo). Es el valor de `SLACK_NOTIFY_CHANNEL` (nube, por defecto: en las variables del environment; local: en `~/.config/grokbot-claude-code/env`). 3. **Qué bots activar** (flujo coordinador) o confirmación de que sos vos (flujo por agente), y el **slug** de cada uno. 4. **Los `notify-...` que ya se usan** en `#<canal>`, si el usuario los conoce (además, revisá el historial del canal si podés leerlo). Si falta algún dato, preguntá y esperá la respuesta. No pegues ni pidas tokens por el chat: el token `xoxb-...` va solo en el archivo de config o como network secret. ## Reglas del slug Tu keyword va a ser `notify-<slug>`: - Minúsculas, números y guiones (`^[a-z0-9][a-z0-9-]*$`), sin espacios. El hook no pasa a minúsculas por vos. - Único: ningún otro agente lo usa. - **Sin colisión por substring.** La routine matchea el keyword como substring del mensaje, así que un keyword **no puede estar contenido** en el de otro agente **ni contener** el de otro. Ejemplo: `notify-dev` y `notify-dev-ml` chocan (un aviso para `notify-dev-ml` despierta también a `notify-dev`). Preferí algo distintivo, p.ej. el nombre del bot en vez de un rol genérico. Chequealo siempre con el helper del repo, pasando **todos** los slugs: los nuevos y los que ya se usan en el canal (con o sin el prefijo `notify-`): ```bash bash ~/grokbot-claude-code/local/check-slugs <slug-nuevo-1> <slug-nuevo-2> <slug-ya-usado-1> ... ``` [`local/check-slugs`](../../local/check-slugs) sale 0 si está todo bien y 1 si hay problemas (formato, duplicados o colisión por substring; los imprime). Si sale 1, proponé otros slugs al usuario y volvé a chequear. Si no tenés el repo a mano, aplicá la regla a mano par por par. ## Routine (igual para todos los flujos) Trigger, con el nombre de canal que te dio el usuario: ```json {"type":"slack","channel":"#<canal>","match":{"kind":"keyword","keyword":"notify-<slug>"}} ``` Instrucción de la routine: > Llegó un aviso de Claude Code. Confirmá que la línea `*agente:*` diga `` `notify-<slug>` `` (si no, ignorá el mensaje). Cada línea es `• *<campo>:* <valor>`, con el valor entre backticks o como `<url|session_xxx>`: sacá `evento` (con su detalle, p.ej. `error=rate_limit`), `tarea`, `sesión` y `rama`. Buscá la tarea por `tarea` y seguí "Al recibir el aviso" de la skill claude-code-task: continuá la tarea o reportá el resultado a quien la pidió. No cambies nada fuera del alcance de esa tarea. Requisito: `@Cursor` tiene que estar invitado a `#<canal>` (es la app que dispara las routines; si no ve el canal, la routine nunca salta). Si no está, pedíselo al usuario. ## Prueba (exactamente UNA por bot) Siempre con el bot de notificaciones (vía el hook), no con un mensaje escrito a mano, así se prueba el mismo camino que los avisos reales. Con el hook instalado y `SLACK_NOTIFY_TOKEN` / `SLACK_NOTIFY_CHANNEL` configurados: ```bash d=$(mktemp -d) # Transcript mínimo: el primer mensaje del usuario trae la línea notify: <slug>. printf '{"type":"user","message":{"role":"user","content":"Prueba de routine.\\nnotify: <slug>"}}\n' > "$d/t.jsonl" echo "{\"session_id\":\"prueba-$(date +%s)\",\"transcript_path\":\"$d/t.jsonl\",\"cwd\":\"$d\",\"hook_event_name\":\"Stop\"}" \ | bash ~/.claude/hooks/grokbot-notify.sh rm -rf "$d" ``` (Si no corriste `local/install.sh`, usá `hooks/notify.sh` del repo. El `session_id` distinto evita que el dedup lo descarte.) Sin acceso local: pedile al usuario que publique con el bot de notificaciones un mensaje con el formato de arriba, con las líneas `` • *evento:* `Stop` `` y `` • *agente:* `notify-<slug>` ``. Confirmá que la routine de ese bot disparó **una** vez y que no despertó a otro. Si no salta: revisá `${XDG_STATE_HOME:-~/.local/state}/grokbot-claude-code/notify.log`, que `@Cursor` y el bot de notificaciones estén en el canal y que el keyword esté bien escrito. No reintentes en loop. --- ## Flujo A: coordinador (un agente configura a varios bots) Usalo cuando el usuario te pide configurar a varios de sus bots de una. 1. **Preguntá** al usuario: nombre del canal (`#<canal>`), channel id (`C0123456789`), la lista de bots a activar y un slug por bot (proponé uno si no lo tiene, y que lo confirme). Preguntá también qué `notify-...` ya existen en el canal. 2. **Chequeá colisiones** sobre TODOS los slugs (nuevos + ya usados en el canal) con `local/check-slugs`. Si sale 1, ajustá con el usuario y repetí hasta que salga 0. 3. **Config del hook:** confirmá que el environment de la nube (por defecto) y la máquina compartida (fallback local) tienen `SLACK_NOTIFY_CHANNEL` con el channel id que te dieron (ver docs/instalacion.md del repo). El token no lo toques vos si no te lo pidieron. 4. **Mandale las instrucciones a cada bot:** - Si tenés `SendToAgent`, mandale a cada bot el **prompt por agente** de abajo con su canal y su slug ya completos. - Si no, dale al usuario un prompt listo para copiar y pegar por bot (el mismo, completo), uno por bot. Pedile a cada bot que cree la routine y guarde el slug en memoria, pero que **no** haga su propia prueba: la hacés vos en el paso 5 (así hay una sola por bot). 5. **Verificá:** cuando cada bot confirme su routine, hacé **exactamente una** prueba por bot (ver "Prueba") y anotá si disparó. 6. **Reportá** al usuario una tabla: | Bot | Keyword | Disparó | | :- | :- | :- | | `<bot>` | `notify-<slug>` | sí / no (motivo) | Más el canal usado y cualquier problema. Nunca pegues tokens en el reporte. Prompt por agente (lo que mandás con `SendToAgent` o le das al usuario para pegar): ```text Configurate para que te despierten los avisos de Claude Code (skill claude-code-notify-setup del repo grokbot-claude-code). - Canal de avisos: #<canal> - Tu slug: <slug> (keyword notify-<slug>). Ya está chequeado contra colisión por substring con los demás slugs. 1) Creá en vos una routine con trigger {"type":"slack","channel":"#<canal>","match":{"kind":"keyword","keyword":"notify-<slug>"}} cuya instrucción confirme la línea *agente:* `notify-<slug>`, lea los campos del aviso (una línea por campo, • *<campo>:* <valor>, valor entre backticks o <url|session_xxx>: evento, tarea, sesión, rama) y siga "Al recibir el aviso" de la skill claude-code-task, sin cambiar nada fuera del alcance de la tarea. 2) Guardá en tu memoria el slug, el keyword y el canal. Al lanzar tareas (por defecto en la nube con claude --cloud; local solo como fallback), poné en el prompt una línea sola "notify: <slug>". 3) No hagas la prueba vos: avisame cuando la routine esté creada y yo mando una sola prueba. No pegues tokens en el chat ni en ningún repo. No hagas polling. ``` ## Flujo B: por agente (te configurás vos) 1. **Preguntá** al usuario el nombre del canal (`#<canal>`) y su channel id (`C0123456789`), y **confirmá** tu slug (proponé uno si no te lo dieron). Preguntá qué `notify-...` ya se usan en el canal. 2. **Chequeá colisiones** con `local/check-slugs` pasando tu slug y todos los ya usados. Si sale 1, proponé otro y repetí. 3. **Creá tu routine** (ver "Routine") si no existe ya. 4. **Guardá en tu memoria** tu slug (`<slug>`), tu keyword (`notify-<slug>`) y el canal. Al lanzar cada tarea con Claude Code (nube por defecto, local como fallback), el prompt lleva una línea sola `notify: <slug>`, con el slug **sin** el prefijo `notify-`. Ver la skill `claude-code-task`. 5. **Probá** con **una** sola prueba (ver "Prueba"). 6. **Reportá** al usuario: keyword `notify-<slug>`, canal, si la prueba disparó (sí/no) y cualquier problema. Nunca pegues tokens en el reporte.
View on GitHub