Claude Code turi hook’ų sistemą — tai shell komandos, kurios automatiškai vykdomos tam tikrais momentais sesijos metu. Skirtingai nuo instrukcijų CLAUDE.md faile, hook’ai garantuotai įvykdomi kiekvieną kartą.

Šiame įraše sukonfigūruosime hook’ą, kuris automatiškai aktyvuos Python virtualią aplinką kiekvienoje Claude Code sesijoje.

Kaip veikia hook’ai?

Hook’ai konfigūruojami settings.json faile. Kiekvienas hook’as turi:

  • Įvykį (event) — kada jis paleidžiamas
  • Komandą (command) — ką jis vykdo

Pagrindiniai įvykiai:

Įvykis Kada iššaunamas
SessionStart Sesijos pradžioje
PreToolUse Prieš įrankio vykdymą
PostToolUse Po įrankio vykdymo
Notification Kai Claude laukia įvesties

Konfigūracijos failai

Hook’us galima konfigūruoti dviejuose lygiuose:

Failas Galioja
~/.claude/settings.json Visiems projektams
.claude/settings.json Tik konkrečiam projektui

Venv aktyvavimo hook’as

Atsidarome globalų nustatymų failą:

vim ~/.claude/settings.json

Pridedame hooks bloką:

{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "if [ -f \"$CLAUDE_PROJECT_DIR/.venv/bin/activate\" ]; then echo \"source $CLAUDE_PROJECT_DIR/.venv/bin/activate\" > \"$CLAUDE_ENV_FILE\"; fi"
          }
        ]
      }
    ]
  }
}

Kas čia vyksta?

  1. SessionStart — hook’as paleidžiamas kiekvienai naujai sesijai.
  2. $CLAUDE_PROJECT_DIR — aplinkos kintamasis, nurodantis dabartinio projekto direktoriją.
  3. $CLAUDE_ENV_FILE — specialus failas, kurio turinys vykdomas prieš kiekvieną Bash komandą sesijoje.
  4. Tikrinama ar egzistuoja .venv/bin/activate — jei taip, source komanda įrašoma į $CLAUDE_ENV_FILE.
  5. Jei projektas neturi .venv — nieko nevyksta.

Rezultatas: kiekviena Bash komanda, kurią Claude vykdo sesijoje, automatiškai naudoja projekto virtualią aplinką.

Patikrinimas

Paleisk naują Claude Code sesiją projekte su .venv:

cd ~/Work/my-python-project
claude

Sesijoje paprašyk Claude paleisti:

which python

Turėtum matyti kelią į .venv/bin/python, o ne sisteminį Python.


Šaltiniai