Lewati ke konten utama

Penyiapan Hook Agen

Jika asisten pemrograman AI Anda mendukung hook siklus hidup, konfigurasikan hook berikut untuk repo ini.

Hook yang Direkomendasikan

HookPerintahTujuan
afterFileEditscripts/agent-hooks/format.shMemformat berkas secara otomatis setelah AI menyunting
afterFileEditscripts/agent-hooks/yarn-install.shMenjalankan corepack yarn install ketika package.json berubah
afterFileEditscripts/agent-hooks/react-pattern-review.shKetika sebuah diff menambahkan primitif useEffect/memo di about/src/, mengingatkan agen untuk menimbang ulang lewat skill peninjauan React
stopscripts/agent-hooks/sync-git-branches.shMemangkas ref usang dan menghapus branch tugas sementara yang sudah terintegrasi
stopscripts/agent-hooks/react-pattern-review.shMemindai ulang diff saat ini untuk mencari effect/memo React baru di about/src/ sebelum gerbang verifikasi akhir
stopscripts/agent-hooks/verify.shGerbang keras untuk verifikasi build tertarget, lint, typecheck, dan pemeriksaan format; jaga yarn npm audit tetap bersifat informasi dan jalankan yarn knip terpisah sebagai audit penasihat saat dependensi/impor berubah

Alasannya

  • Pemformatan yang konsisten
  • Lockfile tetap sinkron
  • Penambahan useEffect/memo baru di situs about mendapat pemeriksaan kedua secara eksplisit sebelum agen selesai
  • Masalah build/lint/tipe yang relevan dengan workspace tertangkap lebih awal tanpa memaksa build dokumentasi multi-locale penuh pada setiap tugas
  • Visibilitas keamanan lewat yarn npm audit
  • Penyimpangan dependensi/impor dapat diperiksa dengan yarn knip tanpa menjadikannya stop hook global yang berisik
  • Satu implementasi hook bersama untuk Codex maupun Cursor
  • Branch tugas sementara tetap selaras dengan alur kerja worktree repo

Contoh Skrip Hook

Hook Format

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

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

Secara bawaan, scripts/agent-hooks/verify.sh keluar dengan kode bukan nol ketika sebuah pemeriksaan wajib gagal. Setel AGENT_VERIFY_MODE=advisory hanya ketika Anda memang sengaja butuh sinyal dari tree yang rusak tanpa memblokir hook. Jauhkan yarn knip dari gerbang keras kecuali repo secara eksplisit memutuskan untuk menggagalkan build karena masalah impor/dependensi yang sifatnya penasihat.

Hook siklus hidup tidak menggantikan verifikasi browser secara manual. Untuk perubahan UI atau visual, tetap jalankan pemeriksaan playwright-cli di chrome, firefox, dan webkit, ditambah alur viewport mobile pada setiap engine ketika responsivitas atau perilaku sentuh ikut berubah.

Hook Yarn Install

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

Atur penyambungan hook sesuai dokumentasi alat agen yang Anda pakai (hooks.json, padanannya, dan sebagainya).

Di repo ini, .codex/hooks/*.sh dan .cursor/hooks/*.sh harus tetap menjadi pembungkus tipis yang mendelegasikan ke implementasi bersama di bawah scripts/agent-hooks/.