Claude Stop Hooks¶
Dva stop hooka za Claude Code koji na kraju svakog turna automatski provjere
rad prije nego što sesija stane — jedan gleda šta si uradio (git diff), drugi
šta si rekao (tvrdnje vs stvarni razgovor + kod). Oba koriste
codex CLI (preko LiteLLM gatewaya), rade u svakom projektu, i
uključuju se po projektu.
Prvo podesi Codex
Ovi hookovi pretpostavljaju da je codex CLI već vezan na LiteLLM gateway.
Ako nije — prvo prođi kroz Codex setup, pa se vrati ovdje.
Šta rade¶
| Hook | Provjerava | Kako |
|---|---|---|
| codex_stop_review.py | šta si URADIO — kvalitet git diff-a |
agentic codex exec (read-only) nad repom |
| claim_review.py | šta si REKAO — da li tvrdnje drže vodu | agentic codex exec čita cijeli session transcript + repo |
Oba vraćaju ALLOW (pusti stop) ili BLOCK (2–3 rečenice zašto + šta popraviti).
Globalni hook, per-projekat config
Hook skripte žive globalno u ~/.claude/, pa rade svuda. Ali odluka
(da li je upaljen, koji model) je isključivo per-projekat — nema globalnog
config fajla. Gate je OFF po defaultu; pali se tek kad u projektu pokreneš
--enable.
Preduvjeti¶
- Python 3.9+ (
python3na PATH-u) codexCLI — instaliran i konfigurisan za LiteLLM gateway (codex login statusne mora biti "logged in" ako se koristiLITELLM_API_KEY). Setup: Codex preko LiteLLM- Modeli
gpt-5.3-codex-spark(codex gate) igpt-5.5(claim gate) dostupni u tvom Codex/LiteLLM setupu (default-i; mogu se promijeniti po projektu)
Instalacija¶
- Preuzmi i raspakuj ZIP.
-
Pokreni installer:
Skripta kopira hookove + komande u ~/.claude/ i idempotentno registruje
oba Stop hooka u ~/.claude/settings.json (ne duplira ako već postoje, ne
dira ostatak fajla).
Raspakuj ZIP, pa:
-
Hookovi →
~/.claude/hooks/(pachmod +x): -
Slash komande →
~/.claude/commands/: -
Registruj Stop hookove — spoji (merge) sadržaj
settings.snippet.jsonuhooks.Stopniz tvog~/.claude/settings.json. Ne prepisuj cijeli fajl — samo dodaj ova dva unosa uhooks→Stop:
Ne prepisuj settings.json
Tvoj ~/.claude/settings.json već ima druge postavke (permissions, ostali
hookovi, plugins…). Dodaj samo dva Stop unosa u postojeći hooks blok.
Installer to radi automatski i sigurno; ručno — pazi da samo proširiš
hooks.Stop.
Gdje šta ide (sažeto)¶
| Iz ZIP-a | Odredište |
|---|---|
hooks/codex_stop_review.py |
~/.claude/hooks/codex_stop_review.py |
hooks/claim_review.py |
~/.claude/hooks/claim_review.py |
commands/codex-review/setup.md |
~/.claude/commands/codex-review/setup.md |
commands/claim-review/setup.md |
~/.claude/commands/claim-review/setup.md |
settings.snippet.json |
merge u ~/.claude/settings.json → hooks.Stop |
Uključivanje po projektu¶
Oba gate-a su OFF dok ih ne upališ u tom projektu. Iz Claude sesije otvorene u repou koji želiš da čuvaš:
/codex-review:setup --enable # upali diff-review gate ovdje
/claim-review:setup --enable # upali claim-verification gate ovdje
Ovo upiše {"enabled": true} u <repo>/.claude/<hook>.json. Provjera:
Commit ili lično
<repo>/.claude/codex-review.json / claim-review.json možeš commit-ovati
(gate radi za svakog ko klonira repo) ili dodati u .gitignore (lično tvoje).
Komande (reference)¶
Iste zastavice za oba gate-a (/codex-review:setup i /claim-review:setup):
| Komanda | Efekat |
|---|---|
--enable |
upali gate za ovaj projekat |
--disable |
ugasi gate za ovaj projekat |
--model <ime> |
postavi model za ovaj projekat (npr. gpt-5.5) |
--clear-model |
vrati na default (gpt-5.3-codex-spark za codex, gpt-5.5 za claim) |
--status |
prikaži efektivni config (ništa ne upisuje) |
Kako se ponaša¶
- OFF po defaultu — registrovan globalno, ali no-op dok projekat ne postavi
enabled: true. Ne troši ništa u projektima gdje nije upaljen. - Fail-open — ako
codexfali, timeout-uje ili pukne, hook upiše grešku na stderr i pusti stop. Slomljen gate nikad ne zaglavi sesiju. - claim_review čeka flush — prije čitanja, sačeka da Claude Code završi upis
transkripta tog turna, da
codexvidi i zadnje tool pozive/rezultate (ne samo rani dio). - Nezavisni — pale/gase se odvojeno; možeš imati samo jedan, oba, ili nijedan po projektu.
Troubleshooting¶
Komanda javlja No such file or directory /.claude/...
Slash komanda se vrti iz root-a projekta; ako vidiš /.claude/... (prazan
$CLAUDE_PROJECT_DIR), provjeri da je komanda u ~/.claude/commands/.../setup.md
ispravno kopirana (koristi $HOME, ne hard-kodiranu putanju).
Gate se ne pali iako sam pokrenuo --enable
Pokreni --enable iz sesije otvorene u TOM projektu (piše u config tog
repa). Provjeri sa --status da effective.enabled bude true.
codex CLI not found on PATH
Hook fail-open-uje (pusti stop) i piše to na stderr. Instaliraj/konfiguriši
codex CLI; gate počinje da radi čim je dostupan.
Lažni BLOCK na nečemu što je tačno
claim_review čeka flush transkripta baš zbog toga. Ako se i dalje dešava na skorom tool-rezultatu — to je nepouzdanost transkripta, ne kod; prijavi.