# Test Output Filter Hook — token štednja (PreToolUse Bash)

# Test Output Filter Hook (PreToolUse[Bash])

**MC #105580** | 2026-07-13 | Token-saving audit

## Šta radi
PreToolUse hook `~/.claude/hooks/test-output-filter.py` presreće test-runner komande (npm test, npx playwright/jest/vitest, pytest, go test, gradlew/gradle/mvn test) i prepiše ih tako da:
- **pass run** → zadnjih 15 linija (summary) umjesto punog outputa
- **fail run** → grep -B2 -A6 oko FAIL/ERROR markera, cap 200 linija
- puni output UVIJEK ostaje na disku (`/tmp/testout-XXXXXX`, putanja u poruci)
- **exit code originalne komande je sačuvan** (dokumentovani primjer iz code.claude.com/docs/en/costs ima bug: `cmd | grep FAIL` vraća grep-ov exit → prolazan run izgleda kao fail; naša verzija hvata rc prije filtriranja)

## Kada NE dira komandu
- komanda nije test runner
- komanda već ima pipe/redirect/tee (upravlja svojim outputom)
- `SKIP_TEST_FILTER=1` u env (opt-out)
- bilo koja interna greška → fail-open `{}`

## Ušteda
60–90% tokena po test komandi (Bilko E2E/Gradle outputi su desetine hiljada tokena; filtrirano na stotine).

## Wiring
`~/.claude/settings.json` → PreToolUse → matcher `Bash` → `python3 ~/.claude/hooks/test-output-filter.py` (timeout 5s).

## Evidence
`~/system/evidence/105580/` — E2E test 7/7 (hook-e2e-test.txt): non-test netaknut, piped netaknut, pass rc=0 + ≤20 linija, fail rc=1 + kontekst 302→13 linija.