Hooks y guards

Activa los hooks de contexto que achican la salida de herramientas, y corre las verificaciones locales de guardrail que mantienen sano un workshop compartido.

Objetivo#

Activar los dos hooks de contexto opcionales del harness (ambos apagados por defecto), instalar y correr las verificaciones de orch guard, y elegir un guard.profile que decide cuanto de esto conecta orch por ti.

Hooks de contexto (opt-in, apagados por defecto)#

orch.yaml:

context:
  hooks:
    post_tool: true    # Claude Code PostToolUse / OpenCode tool.execute.after
    pre_compact: true  # Claude Code PreCompact
  • post_tool achica un resultado de herramienta sobredimensionado antes de que llegue al modelo (orch hook post-tool), usando los mismos ajustes de crush/externalize que context.guidance. Se salta cualquier nombre de herramienta listado en context.guidance.protect_tools (por defecto: Bash, PowerShell, Read, Grep, Glob, Edit, Write, Agent, Task, WebFetch, Shell, bash, read_file, write_file — herramientas de codigo donde una reescritura con perdida ocultaria un resultado real).
  • pre_compact corre el mismo condensador que orch memory condense sobre .workflow/BOARD.md y .orch/LAST_SESSION.md justo antes de que la compactacion nativa del harness descarte la transcripcion — asi la seccion ## Clarified del board y los checkboxes abiertos sobreviven byte por byte en vez de resumirse.

Ninguno de los dos hooks hace algo por si solo: ambos necesitan orch guard wire --claude (o --profile) para instalarse de verdad en ~/.claude/settings.json / la carpeta del plugin de OpenCode.

Verificaciones de orch guard#

orch guard dup <file>            # deniega/advierte sobre un archivo que duplica un simbolo compartido o clona un cuerpo de funcion
orch guard code-lang [root]      # los identificadores/strings deben coincidir con workspace.code_lang
orch guard lang [root]           # los docs deben coincidir con workspace.locale
orch guard ddl [files...]        # migraciones/CREATE TABLE necesitan un companero seeder/repository
orch guard tracker [TRACKER.md]  # sanidad de la tabla de estado de TRACKER.md (T1–T4)
orch guard lock <path> --holder  # deniega editar shared/** sin un lock valido

orch guard dup es advisory por defecto — imprime donde vive la copia existente y deja que la escritura continue. Define guard.dup.mode: block en orch.yaml para denegar la escritura en vez de eso (off desactiva el escaneo por completo). guard.dup.window / min_tokens / max_files ajustan el escaneo de clones.

Pasos#

  1. Elige un perfil (o acepta el default recomendado):

    orch guard profile lite     # docs + skills; sin hooks (recomendado dia 1)
    orch guard profile shared   # + hooks de git pre-commit/pre-push en repos shared/project
    orch guard profile strict   # + wire de hooks de usuario en Claude, conciencia de locale/tracker
    orch guard profile bring    # mantiene tu propio CLAUDE/rules; orch solo agrega locks/simbolos
    orch guard profile none     # solo orch.yaml
    
  2. Conecta los adaptadores de ese perfil:

    orch guard wire --profile
    

    O conecta adaptadores especificos directamente: --git, --claude, --cursor.

  3. Instala los hooks de git directamente (independiente de guard wire):

    orch guard hooks install [repo]
    orch guard hooks status [repo]
    orch guard hooks run [repo]       # lo que realmente llaman los hooks instalados
    

Verificar#

orch guard profile
orch guard hooks status

Deshacer#

orch guard unwire            # quita los adaptadores de Claude/Cursor/OpenCode
orch guard unwire --git      # tambien quita pre-commit/pre-push de git
orch guard hooks uninstall [repo]

Relacionado#

  • memory-and-ledger.md — que es lo que condensa pre_compact.
  • troubleshooting.md — "el hook no hizo nada" cuando el workspace no esta registrado.