قانونها رو توی AGENTS.md ننویس؛ از هوک استفاده کن
خلاصهٔ کاملتر
تیم Evil Martians یه نکتهی کاربردی برای کسایی که با ایجنتهای کدنویسی کار میکنن داره: بهجای اینکه قانونهایی مثل «همیشه لینتر را اجرا کن» رو داخل فایل AGENTS.md بنویسی و امیدوار باشی ایجنت رعایتشون کنه، بهتره از agent hooks و مدیرهای pre-commit استفاده کنی. این روش هم قابلاعتمادتره، هم سریعتر و هم توکن کمتری مصرف میکنه؛ چون بهجای متقاعدکردن مدل، اجرای چکها بهصورت قطعی و خودکار تضمین میشه.
مراحل کار سادهست. اول nano-staged رو نصب میکنی (یا برای پروژههای غیر-JS از lefthook استفاده میکنی). بعد یه فایل .nano-staged.json میسازی و برای هر نوع فایل لینتر مناسب رو تعیین میکنی:
{
"*": "oxfmt --no-error-on-unmatched-pattern",
"**/*.{js,ts,jsx,tsx}": "oxlint",
"**/*.css": "stylelint --fix"
}قدم بعدی اضافهکردن یه هوک به Claude Code در فایل .claude/settings.json است. این هوک از نوع Stop است؛ یعنی وقتی ایجنت کارش رو تموم کرد، اجرا میشه و اگه لینت شکست بخوره، خروجی غیرصفر میده تا ایجنت مجبور بشه مشکل رو حل کنه:
{
"hooks": {
"Stop": [
{ "hooks": [ { "type": "command", "command": "./node_modules/.bin/nano-staged --unstaged --quiet --bail || exit 2" } ] }
]
}
}نویسندهها پیشنهاد میکنن چون nano-staged رو همینجوری اضافه کردی، husky رو هم نصب کنی تا همین چکها موقع git commit هم اجرا بشن. ایدهی کلی اینه: کارهایی که جواب قطعی دارن (مثل لینت) رو به ماشین بسپار، نه به قضاوت احتمالی مدل.
نکات کلیدی:
- نوشتن قانون لینت داخل AGENTS.md غیرقابلاعتماده؛ ایجنت ممکنه نادیدهاش بگیره
- agent hooks همراه nano-staged یا lefthook لینترها را بهصورت قطعی اجرا میکنن
- یه هوک Stop در Claude Code بعد از هر کار لینت را اجرا و در صورت خطا ایجنت را مجبور به اصلاح میکنه
- اضافهکردن husky همون چکها را موقع commit هم اعمال میکنه




