Zum Hauptinhalt springen

Einrichtung der Agent-Hooks

Wenn Ihr KI-Coding-Assistent Lifecycle-Hooks unterstützt, richten Sie diese für dieses Repo ein.

Empfohlene Hooks

HookBefehlZweck
afterFileEditscripts/agent-hooks/format.shDateien nach KI-Bearbeitungen automatisch formatieren
afterFileEditscripts/agent-hooks/yarn-install.shcorepack yarn install ausführen, sobald sich package.json ändert
afterFileEditscripts/agent-hooks/react-pattern-review.shSobald ein Diff in about/src/ neue useEffect- oder Memo-Primitive einführt, den Agenten daran erinnern, die Änderung mit den React-Review-Skills noch einmal zu hinterfragen
stopscripts/agent-hooks/sync-git-branches.shVeraltete Refs bereinigen und bereits integrierte temporäre Task-Branches löschen
stopscripts/agent-hooks/react-pattern-review.shDas aktuelle Diff vor dem abschließenden Verify-Gate erneut auf neue React-Effects/Memos in about/src/ durchsuchen
stopscripts/agent-hooks/verify.shGezielte Build-Verifikation, Lint, Typecheck und Formatprüfung als hartes Gate; yarn npm audit bleibt rein informativ, und yarn knip läuft separat als beratende Prüfung, wenn sich Abhängigkeiten/Importe ändern

Warum

  • Einheitliche Formatierung
  • Die Lockfile bleibt synchron
  • Neue useEffect-/Memo-Ergänzungen in der About-Site erhalten einen ausdrücklichen zweiten Blick, bevor der Agent fertig ist
  • Workspace-relevante Build-, Lint- und Typfehler fallen früh auf, ohne dass bei jeder Aufgabe der vollständige mehrsprachige Docs-Build erzwungen wird
  • Sicherheitstransparenz über yarn npm audit
  • Abhängigkeits- und Import-Drift lässt sich mit yarn knip prüfen, ohne daraus einen lärmenden globalen Stop-Hook zu machen
  • Eine gemeinsame Hook-Implementierung für Codex und Cursor
  • Temporäre Task-Branches bleiben im Einklang mit dem Worktree-Workflow des Repos

Beispielskripte für Hooks

Format-Hook

#!/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

Verify-Hook

#!/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

Standardmäßig endet scripts/agent-hooks/verify.sh mit einem Exit-Code ungleich null, sobald eine erforderliche Prüfung fehlschlägt. Setzen Sie AGENT_VERIFY_MODE=advisory nur dann, wenn Sie bewusst Signale aus einem defekten Stand brauchen, ohne den Hook zu blockieren. Halten Sie yarn knip aus dem harten Gate heraus, solange das Repo nicht ausdrücklich entscheidet, bei beratenden Import- oder Abhängigkeitsbefunden fehlzuschlagen.

Lifecycle-Hooks ersetzen keine manuelle Browser-Verifikation. Führen Sie bei UI- oder visuellen Änderungen weiterhin playwright-cli-Prüfungen in chrome, firefox und webkit durch, dazu in jeder Engine einen Durchlauf im mobilen Viewport, wenn sich Responsiveness oder Touch-Verhalten geändert haben.

Yarn-Install-Hook

#!/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

Die Verdrahtung der Hooks richtet sich nach der Dokumentation Ihres Agent-Tools (hooks.json oder Entsprechendes).

In diesem Repo sollen .codex/hooks/*.sh und .cursor/hooks/*.sh dünne Wrapper bleiben, die an die gemeinsamen Implementierungen unter scripts/agent-hooks/ delegieren.