Skip to content

Harjoitus 11: Formatoinnin automaatio hookilla

Tavoite

Konfiguroida PostToolUse-hook, joka automaattisesti formatoi koodin, kun Claude muuttaa JavaScript/TS/Python-tiedostoja.

Taustaa

Hookit ovat deterministisiä — ne suoritetaan aina kun tietyt ehdot täyttyvät. Tämä tarkoittaa, että voit varata: "Kun tiedosto muuttuu, aja formatointi."

Tärkeät hook-tapahtumat:

Tapahtuma Kuvaus
PreToolUse Ennen työkalua — voi estää toiminnon
PostToolUse Onnistunut työkalu — voi aja format, testi
PostToolUseFailure Työkalu epäonnistui — recovery, telemetria

Tehtävä

Luo hook, joka:

✅ Kuuntelee Edit, Write, NotebookEdit-työkaluja
✅ Aja format.sh-skripti onnistuneen muokkauksen jälkeen
✅ Konfiguroi .claude/settings.json-ssä

Ratkaisu

1. Skripti: .claude/hooks/format.sh

#!/usr/bin/env bash
# Automaattinen koodin formatointi
npx prettier --write src/**/*.{js,ts,jsx,tsx} 2>/dev/null || true

2. Konfiguurointi: .claude/settings.json

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write|NotebookEdit",
        "hooks": [
          {
            "type": "command",
            "command": ".claude/hooks/format.sh"
          }
        ]
      }
    ]
  }
}

Miten se toimii?

graph LR
    A[Käyttäjä antaa promptin] --> B[Claude tekee Edit-kutsun]
    B --> C[PostToolUse-hook käynnistyy]
    C --> D[format.sh ajettu]
    D --> E[Prettier formatoi koodin]
    E --> F[Käännös valmis]

Esimerkki 11: Formatoinnin automaatio

Kun Claude muuttaa JS/TS/Python-tiedostoa, PostToolUse voi käynnistää formatoinnin. Videossa käytetty sama malli Prettierin kanssa.

VAROITUS 05

Hookit ajetaan automaattisesti ja voivat itse sisältää vahvoja oikeuksia. Versionoikaa hookit, tarkastelkaa ne ja testatkaa erikseen ennen käyttöönottoa.


Lähde: Esimerkki 11 [S1], [S11]