الـ Hooks والأتمتة
استخدم Hooks في Claude Code لتشغيل أوامر shell تلقائيًا قبل تعديلات Claude وبعدها — مما يتيح التنسيق التلقائي والاختبار وإشعارات الفريق.
استخدم Hooks في Claude Code لتشغيل أوامر shell تلقائيًا قبل تعديلات Claude وبعدها — مما يتيح التنسيق التلقائي والاختبار وإشعارات الفريق.
الـ Hooks هي أوامر shell تُشغّلها Claude Code في نقاط محددة من دورة حياته. تتيح لك إضافة أدواتك الخاصة — مدققات الكود، المنسّقات، منفّذو الاختبارات، روبوتات Slack — دون تعديل سلوك Claude الأساسي.
فكّر فيها كـ Git hooks (pre-commit، post-merge) لكن لدورة حياة استخدام الأدوات في Claude Code.
| النوع | متى يُشغَّل | الاستخدام الشائع |
|---|---|---|
| PreToolUse | قبل أن يكتب Claude أو يقرأ أو ينفّذ أي شيء | تشغيل مدقق، التحقق من هدف التغيير |
| PostToolUse | بعد أن ينجز Claude استدعاء أداة | تنسيق الملف، تشغيل الاختبارات المتأثرة |
| Notification | عند إرسال Claude رسالة محادثة | تسجيل إلى Slack، إطلاق التنبيهات |
| Stop | عند انتهاء Claude من المهمة | تأكيد التغييرات، إرسال ملخص |
توجد الـ Hooks في .claude/hooks.json داخل جذر مشروعك:
{
"hooks": [
{
"event": "PostToolUse",
"match": { "tool": "write_file" },
"command": "npx eslint --fix {{file}}",
"description": "إصلاح مشاكل ESLint تلقائيًا بعد كتابة Claude للملف"
}
]
}يُستبدل placeholder الـ {{file}} في وقت التشغيل بمسار الملف الذي كتبه Claude للتو.
شغّل Prettier على كل ملف يلمسه Claude:
{
"hooks": [
{
"event": "PostToolUse",
"match": { "tool": "write_file" },
"command": "npx prettier --write {{file}}",
"description": "تنسيق الملف بـ Prettier بعد تعديل Claude"
}
]
}الآن عند تشغيل /fix وكتابة Claude للإصلاح على القرص، يعمل Prettier تلقائيًا. كودك منسّق دائمًا بدون خطوة منفصلة.
امنع Claude من تأكيد كود مكسور:
{
"hooks": [
{
"event": "PreToolUse",
"match": { "tool": "bash", "command_contains": "git commit" },
"command": "yarn test --run",
"description": "تشغيل مجموعة الاختبارات قبل أي git commit"
}
]
}إذا خرجت yarn test بكود غير صفري، تُلغي Claude Code الـ commit وتُبلّغ بالفشل.
أرسل رسالة عند انتهاء Claude من مهمة طويلة:
{
"hooks": [
{
"event": "Stop",
"command": "curl -s -X POST $SLACK_WEBHOOK_URL -d '{\"text\": \"Claude Code أنهى المهمة في {{cwd}}\"}'",
"description": "إشعار Slack عند انتهاء Claude"
}
]
}مفيد جدًا للمهام الطويلة التي تُشغّلها وتتركها.
| العنصر النائب | القيمة |
|---|---|
| {{file}} | المسار المطلق للملف الذي يُكتب أو يُقرأ |
| {{cwd}} | مجلد العمل الحالي |
| {{tool}} | اسم الأداة التي استدعاها Claude |
| {{event}} | نوع حدث الـ Hook (PreToolUse، PostToolUse، إلخ) |
يمكنك تعريف أي عدد تشاء من الـ Hooks. تُشغَّل بالترتيب:
{
"hooks": [
{
"event": "PostToolUse",
"match": { "tool": "write_file" },
"command": "npx prettier --write {{file}}",
"description": "تنسيق"
},
{
"event": "PostToolUse",
"match": { "tool": "write_file" },
"command": "npx eslint --fix {{file}}",
"description": "مراجعة الكود"
},
{
"event": "Stop",
"command": "yarn test --run",
"description": "مجموعة الاختبارات بعد جميع التغييرات"
}
]
}تُشغّل الـ Hooks أوامر shell اعتباطية. راجع كل hook قبل إتباع .claude/hooks.json في مستودع مشترك. يمكن لـ hook خبيث أن يُسرّب ملفات أو يعدّل حالة النظام. تعامل مع الـ Hooks بنفس حذرك مع سكريبتات خطوط CI.
لمتابعة نشاط الـ Hooks أثناء التشغيل، شغّل Claude Code في وضع verbose:
claude --debugيُسجَّل تنفيذ الـ Hook مع الأمر وكود الخروج والمخرجات. إذا فشل hook بصمت، --debug سيُظهر لك السبب.
اتبع .claude/hooks.json في التحكم بالإصدار. كل من يستنسخ المشروع يحصل على نفس الـ Hooks تلقائيًا — بدون إعداد لكل مطوّر.
تحوّل الـ Hooks Claude Code من مساعد تفاعلي إلى خط أنابيب آلي. المجموعة الابتدائية الموصى بها هي: التنسيق عند الكتابة (PostToolUse + Prettier) والاختبار قبل الـ Commit (PreToolUse + منفّذ الاختبارات). الوحدة الأخيرة تتناول MCP — البروتوكول الذي يتيح لك توسيع Claude Code بأدوات خارجية كقواعد البيانات والمتصفحات وواجهات API.