Passa al contenuto principale

Configurazione degli hook per gli agenti

Se il tuo assistente di programmazione AI supporta gli hook del ciclo di vita, configurali per questo repository.

Hook consigliati​

HookComandoScopo
afterFileEditscripts/agent-hooks/format.shFormatta automaticamente i file dopo le modifiche dell'AI
afterFileEditscripts/agent-hooks/yarn-install.shEsegue corepack yarn install quando package.json cambia
afterFileEditscripts/agent-hooks/react-pattern-review.shQuando un diff aggiunge primitive useEffect/memo in about/src/, ricorda all'agente di riconsiderare la scelta con le skill di revisione React
stopscripts/agent-hooks/sync-git-branches.shRipulisce i riferimenti obsoleti ed elimina i branch temporanei di lavoro già integrati
stopscripts/agent-hooks/react-pattern-review.shRiesamina il diff corrente alla ricerca di nuovi effetti/memo React in about/src/ prima del gate finale di verifica
stopscripts/agent-hooks/verify.shBlocca in modo rigido la verifica mirata di build, lint, typecheck e formattazione; mantiene yarn npm audit a scopo informativo ed esegue yarn knip a parte come audit consultivo quando cambiano dipendenze o import

Perché​

  • Formattazione coerente
  • Il lockfile resta sincronizzato
  • Le nuove aggiunte di useEffect/memo nel sito about ricevono un secondo esame esplicito prima che l'agente concluda
  • Problemi di build, lint e tipi rilevanti per il workspace individuati presto, senza imporre a ogni task la build completa multilingua della documentazione
  • Visibilità sulla sicurezza tramite yarn npm audit
  • La deriva di dipendenze e import si può controllare con yarn knip senza trasformarlo in un rumoroso hook di stop globale
  • Un'unica implementazione degli hook condivisa tra Codex e Cursor
  • I branch temporanei di lavoro restano allineati al flusso con worktree del repository

Esempi di script per gli hook​

Hook di formattazione​

#!/bin/bash
# Auto-format JS/TS files after AI edits
# Hook receives JSON via stdin with file_path

input=$(cat)
file_path=$(echo "$input" | grep -o '"file_path"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*:.*"\([^"]*\)"/\1/')

case "$file_path" in
*.js|*.jsx|*.ts|*.tsx|*.mjs|*.cjs|*.json|*.css) corepack yarn exec oxfmt "$file_path" 2>/dev/null ;;
esac
exit 0

Hook di verifica​

#!/bin/bash
# Run targeted build verification, lint, typecheck, format check, and security audit when agent finishes

cat > /dev/null # consume stdin
status=0
corepack yarn build:verify || status=1
corepack yarn lint || status=1
corepack yarn typecheck || status=1
corepack yarn format:check || status=1
echo "=== yarn npm audit ===" && (corepack yarn npm audit || true) # informational
exit $status

Per impostazione predefinita, scripts/agent-hooks/verify.sh esce con un codice diverso da zero quando un controllo obbligatorio fallisce. Imposta AGENT_VERIFY_MODE=advisory solo quando ti serve intenzionalmente il segnale da un albero rotto senza bloccare l'hook. Tieni yarn knip fuori dal gate rigido, a meno che il repository non decida esplicitamente di far fallire la verifica sui problemi consultivi di import e dipendenze.

Gli hook del ciclo di vita non sostituiscono la verifica manuale nel browser. Per le modifiche di UI o visive, esegui comunque i controlli con playwright-cli su chrome, firefox e webkit, più un flusso su viewport mobile in ogni motore quando cambia il comportamento responsive o quello touch.

Hook di installazione Yarn​

#!/bin/bash
# Run corepack yarn install when package.json is changed
# Hook receives JSON via stdin with file_path

input=$(cat)
file_path=$(echo "$input" | grep -o '"file_path"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/.*:.*"\([^"]*\)"/\1/')

if [ -z "$file_path" ]; then
exit 0
fi

if [ "$file_path" = "package.json" ]; then
cd "$(dirname "$0")/../.." || exit 0
echo "package.json changed - running corepack yarn install to update yarn.lock..."
corepack yarn install
fi

exit 0

Configura il collegamento degli hook secondo la documentazione del tuo strumento agente (hooks.json, equivalenti, ecc.).

In questo repository, .codex/hooks/*.sh e .cursor/hooks/*.sh devono restare thin wrapper che delegano alle implementazioni condivise sotto scripts/agent-hooks/.