Перейти до основного вмісту

Налаштування хуків для агентів

Якщо ваш AI-асистент для програмування підтримує хуки життєвого циклу, налаштуйте для цього репозиторію наведені нижче.

Рекомендовані хуки

ХукКомандаПризначення
afterFileEditscripts/agent-hooks/format.shАвтоматично форматувати файли після правок AI
afterFileEditscripts/agent-hooks/yarn-install.shЗапускати corepack yarn install, коли змінюється package.json
afterFileEditscripts/agent-hooks/react-pattern-review.shКоли діф додає примітиви useEffect/memo в about/src/, нагадати агентові переглянути рішення за допомогою навичок рев’ю React
stopscripts/agent-hooks/sync-git-branches.shПрибирати застарілі рефи та видаляти вже інтегровані тимчасові гілки задач
stopscripts/agent-hooks/react-pattern-review.shПовторно просканувати поточний діф на нові ефекти й мемо React у about/src/ перед фінальним гейтом перевірки
stopscripts/agent-hooks/verify.shЖорстко гейтити цільову перевірку збірки, лінт, перевірку типів і форматування; тримати yarn npm audit інформаційним, а yarn knip запускати окремо як дорадчий аудит при змінах залежностей чи імпортів

Навіщо

  • Послідовне форматування
  • Lock-файл лишається синхронізованим
  • Нові додавання useEffect/memo на сайті about отримують явний повторний огляд перед завершенням роботи агента
  • Проблеми збірки, лінту й типів, релевантні для робочої області, виявляються рано, без примусової повної багатомовної збірки документації на кожній задачі
  • Видимість проблем безпеки через yarn npm audit
  • Дрейф залежностей та імпортів можна перевіряти через yarn knip, не перетворюючи це на шумний глобальний stop-хук
  • Одна спільна реалізація хуків і для Codex, і для Cursor
  • Тимчасові гілки задач лишаються узгодженими з процесом робочих дерев у репозиторії

Приклади скриптів для хуків

Хук форматування

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

Хук перевірки

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

За замовчуванням scripts/agent-hooks/verify.sh завершується з ненульовим кодом, коли обов’язкова перевірка падає. Встановлюйте AGENT_VERIFY_MODE=advisory лише тоді, коли ви свідомо хочете отримати сигнал зі зламаного дерева, не блокуючи хук. Тримайте yarn knip поза жорстким гейтом, доки репозиторій явно не вирішить падати на дорадчих проблемах з імпортами чи залежностями.

Хуки життєвого циклу не замінюють ручної перевірки в браузері. Для змін в UI чи візуальної поведінки все одно запускайте перевірки playwright-cli у chrome, firefox і webkit, а також сценарій із мобільним вьюпортом у кожному рушії, коли змінилася адаптивність або поведінка дотиків.

Хук встановлення залежностей 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

Налаштовуйте підключення хуків згідно з документацією вашого агентського інструмента (hooks.json, аналог тощо).

У цьому репозиторії .codex/hooks/*.sh і .cursor/hooks/*.sh мають лишатися тонкими обгортками, які делегують роботу спільним реалізаціям у scripts/agent-hooks/.