Hooks
Manejadores de eventos de herramientas que se disparan en SessionStart, PreToolUse y Stop, cargando contextos de mensaje que imponen el aislamiento de git y la disciplina de planes.
Los hooks se disparan en eventos de herramientas y cargan contextos de mensaje que
el asistente trata como prompts de sistema adicionales. El cableado vive en
el bloque de hooks del settings.json de Claude Code, el archivo de hooks hooks.json de Codex
y el mapa de hooks del settings.json de Qwen Code.
| Evento | Tiempo de espera | Propósito |
|---|---|---|
| SessionStart | 30 segundos | Leer memoria, comprobar el estado del plan, reportar la disponibilidad |
| PreCompact | 30 segundos | Verificar que el estado esté externalizado antes de la compactación |
| PostCompact | 30 segundos | Restaurar el estado de trabajo tras la compactación |
| Stop | 60 segundos | Externalización al final de la sesión |
| PreToolUse (Bash) | 10 segundos | Validación de Bash — aislamiento de artefactos de git |
| PreToolUse (Write/Edit/NotebookEdit/apply_patch) | 10 segundos | Aislamiento de referencias a planes, comprobaciones de frontmatter |
Despachador
Las entradas de hook instaladas invocan al despachador mediante la ruta absoluta del script.
Las plantillas de ajustes llevan el token ${HARNESS_ROOT} —
python "${HARNESS_ROOT}/apothem/hooks/dispatch.py" <event> [<message-name>]
— que el instalador renderiza a la ruta real de la raíz del harness en el momento
de la instalación (Claude Code y Qwen Code materializan el despachador bajo
<harness-root>/apothem/hooks/; Codex bajo <harness-root>/hooks/). El
despachador es un script autónomo de la biblioteca estándar: arranca su propio sys.path,
de modo que no se necesita ningún paquete apothem importable en el host. Desde un
checkout de fuente, la forma de módulo python -m apothem.hooks.dispatch <event> (con
PYTHONPATH=src) ejecuta el mismo código para desarrollo. El despachador carga
hooks/lib/resolve_root.py para la resolución de la raíz del ecosistema y delega en
hooks/emit_hook_context.py y hooks/session_start_bootstrap.py.
Contextos de mensaje
Los contextos en Markdown por evento viven bajo src/apothem/hooks/messages/:
postcompact.md,precompact.md,stop.mdpretooluse-bash.md,pretooluse-write.md,pretooluse-edit.md,pretooluse-notebookedit.md
Cada archivo de contexto es cargado por el despachador cuando su evento se dispara y su argumento de contexto está registrado en el archivo de ajustes.
Inventario de mensajes de hook generado
| Name | Description | Source |
|---|---|---|
postcompact | Post-compaction Blind Bootstrap (CM-24 §6.2). Restore working state from durable files; conversation context is now compressed. | src/apothem/hooks/messages/postcompact.md |
posttooluse-proactive-compaction | Proactive-compaction tracker for PostToolUse tool calls. | src/apothem/hooks/messages/posttooluse-proactive-compaction.md |
precompact | Pre-compaction protocol (CM-24 §2.3). Externalize all in-conversation state BEFORE the harness compresses context. | src/apothem/hooks/messages/precompact.md |
pretooluse-askuserquestion-recommended | Call-time (Recommended)-marker guard for AskUserQuestion tool calls. | src/apothem/hooks/messages/pretooluse-askuserquestion-recommended.md |
pretooluse-bash-plan-guard | Plans-Discipline write guard for Bash tool calls (companion to pretooluse-write-plan-guard.md). | src/apothem/hooks/messages/pretooluse-bash-plan-guard.md |
pretooluse-bash | CM-7 git-artifact isolation + M12 numeric-prefix discipline + M15 human-only authorship. | src/apothem/hooks/messages/pretooluse-bash.md |
pretooluse-conformity | > Advisory: this hook reports; it does not block. Mechanical enforcement runs in CI. | src/apothem/hooks/messages/pretooluse-conformity.md |
pretooluse-dependency-guard | Dependency-manifest supply-chain guard (advisory). | src/apothem/hooks/messages/pretooluse-dependency-guard.md |
pretooluse-edit-header-guard | SPDX-header inject guard for Edit tool calls. | src/apothem/hooks/messages/pretooluse-edit-header-guard.md |
pretooluse-edit | Codebase isolation (Edit scope). | src/apothem/hooks/messages/pretooluse-edit.md |
pretooluse-eval-guard | Dynamic-eval / unsafe-deserialization guard — advisory prompt-injection defense. | src/apothem/hooks/messages/pretooluse-eval-guard.md |
pretooluse-notebookedit | Codebase isolation (notebook scope). | src/apothem/hooks/messages/pretooluse-notebookedit.md |
pretooluse-write-header-guard | SPDX-header inject guard for Write tool calls. | src/apothem/hooks/messages/pretooluse-write-header-guard.md |
pretooluse-write-plan-guard | Plans-Discipline write guard for Write / Edit / NotebookEdit tool calls. | src/apothem/hooks/messages/pretooluse-write-plan-guard.md |
pretooluse-write | Codebase isolation + frontmatter compliance. | src/apothem/hooks/messages/pretooluse-write.md |
sessionstart | Session-start conformity posture. | src/apothem/hooks/messages/sessionstart.md |
stop | Session-end protocol (CM-14 + CM-24 §2.5 + CM-26 + CM-22 §2/§4). | src/apothem/hooks/messages/stop.md |
Trabajadores delegados
Trabajadores delegados persistentes para investigación, auditoría, calidad y orquestación, con contratos de frontmatter y protocolos de aislamiento de despliegue.
Estilos de salida
Perfiles de tono de operador (Arquitecto Senior, Ingeniero Conciso, Auditor Forense) activados por sesión mediante el comando /output-style.