Skip to content

Harjoitus 25: Exit code -ajattelu

Tavoite

Ymmärtää, miksi exit-koodit ja JSON-validointi ovat tärkeitä automaatiossa, eikä luonnollisen kielen tulkinnan perusteella.

Taustaa

Kun automatisoitu agentti päättää toimenpiteet:

❌ "Luonnollisen kielen" analyysi → epätarkka ja rajaton
✅ JSON + validaatio → tarkka, rajallinen ja testattavissa

Esimerkiksi tämä on väärin:

# Viallista:
claude -p "Onko tämä build OK?" → "Joo, näyttää hyvältä."

Mutta tämä on oikein:

# Hyvin:
claude -p \
  "Return JSON: {status: 'ok'|'fail', error?: string}" \
  --output-format json | jq -r '.status' | grep 'ok'
# exit 0 = OK, exit 1 = FAIL

Tehtävä

Muuta tämä skripti täysin validoituksi JSON-analyysiksi:

# Alkuperä (puutteellinen):
cat results.txt | claude -p "Onko virheit?"

Ratkaisu

Vaihe 1: Määritä tarkka JSON-rakenne

cat results.txt | claude -p \
  "Return ONLY valid JSON. Fields: status (OK|FAIL), error_count (int), first_error (string|null), recommendations (array)" \
  --output-format json > analysis.json

Vaihe 2: Validoi JSON

# Tarkista että JSON on kelvollinen
jq '.status' analysis.json || exit 1

Vaihe 3: Päätöksenteko exit-codella

# Kokonaiskäsky:
RESULT=$(jq -r '.status' analysis.json)
if [ "$RESULT" = "FAIL" ]; then
    echo "🔴 Build FAILED — tarkista analysis.json"
    exit 1
fi
echo "✅ Build OK"
exit 0

Esimerkkikäyttö

$ cat errors.txt | claude -p "..." --output-format json | jq '.status'
"FAIL"
$ echo "Exit code: $?"
1

Miksi tämä on tärkeä?

Esimerkkimenetelmä Ongelma
Tekstivastaus "joo" Ei ole konekäsiteltävissä
Epävalidi JSON Ei voi tarkistua raketta
Ei exit-codea CI ei tietää, onko se OK vai ei

ADVANCED-VINKKI 10

Käytä --bare-tilannetta silloin, kun haluat erittäin nopean script-ajon ja tiedät tarkasti mitä tarvitset. Se ohittaa hooks, skills, plugins, MCP, auto-memory ja CLAUDE.md- autodiscoveryn.


Lähde: Esimerkki 25 [S1], [S18]