EN
تعلّم المسارات المرجع مقالات المحفوظات
feature

Hooks

أوامر صغيرة تنطلق تلقائيًا في لحظات محددة — مثل تشغيل أداة التنسيق في كل مرة يحفظ فيها Claude ملفًا.

الـ hook إجراء تشغّله الأداة نيابةً عنك عند نقطة محددة: قبل أمر، أو بعد تعديل، أو عند بدء جلسة. استخدمها لفرض قاعدة ("لا تدعه يمسّ branch الـ main أبدًا")، أو لإبقاء الأمور مرتّبة ("نسّق كل ملف يعدّله Claude")، أو لتسجيل النشاط. تضبطها مرة واحدة فتحدث وحدها. هذه ميزة من مسار `Power Track` (الـ terminal) — فالـ hook يشغّل أمر shell ويُضبَط في ملف إعدادات، لذا فهو موجّه للمستخدمين التقنيين وإعداد الفرق، لا لمحادثة سطح المكتب اليومية.

الـ hook أمر تشغّله الأداة نيابةً عنك، تلقائيًا، عند لحظة محدّدة في العمل. اللحظات لها أسماء: يُطلَق PreToolUse hook قبل أن يشغّل Claude أمرًا أو يعدّل ملفًا؛ ويُطلَق PostToolUse hook بعد ذلك؛ وتُطلَق أخرى عند بدء الجلسة أو انتهائها. أنت تختار اللحظة، وتزوّد الأمر، ومن ثَمّ يحدث وحده.

هذه ميزة من مسار Power Track، ويجدر قولها صراحةً: الـ hook يشغّل أمر shell ويُربَط في ملف إعدادات، لذا فهو موجّه للمستخدمين التقنيين وإعداد الفرق — لا لمحادثة Claude Desktop اليومية. نادرًا ما يحتاج المحترف غير التقني إلى ضبط واحد؛ وإذا كان في فريقك مطوّر، فهذا نوع الحاجز الوقائي الذي يضبطه مرة واحدة للجميع.

هذا يمنحك ثلاث مهامّ مفيدة. فرض قاعدة — يمكن لـ PreToolUse hook أن يفحص ما هو على وشك الحدوث ويمنعه («لا تدعه يمسّ branch الـ main أبدًا»)، فيصبح الضابط آليًا، لا شيئًا عليك تذكّره. الترتيب — شغّل أداة التنسيق على كل ملف يعدّله Claude، فيبقى الـ diff نظيفًا دائمًا. التسجيل — سجّل ما حدث، لأثر تدقيق أو لمجرّد راحة البال.

قاعدة عامّة واحدة تُبقي الـ hooks لطيفة: أبقِ الأمر سريعًا. تعمل الـ hooks ضمن المسار، في تدفّق العمل، فيُبطئ hook بطيء كل إجراء مرتبط به. اطّلع على ما أعددته عبر /hooks. وحيث يعمل scheduled agent وفق الساعة، يعمل الـ hook عند حدث — عمل «افعل هذا دائمًا، فور حدوث X» الذي كنت ستنساه لولاه.

مولّد

ابنِ ملف settings.json

اختر قواعد الصلاحيات والـ hooks، ثم انسخ ملف settings.json لمجلّد .claude/ لديك.

Permissions

allow run without asking

ask always confirm first

deny never, full stop

Hooks

.claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(npm run test:*)"
    ],
    "deny": [
      "Read(./.env)",
      "Bash(rm -rf:*)"
    ]
  },
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write ."
          }
        ]
      }
    ]
  }
}

نقطة انطلاق — انسخه إلى مشروعك وعدّله حسب حاجتك.

لماذا يفيد أتمِت أعمال «افعل هذا دائمًا بعد كذا» كي لا تنساها أبدًا.

أمثلة
نسّق كل ملف يعدّله Claude (أمر hook)
After every edit, run `prettier --write` on the changed file.
اطّلع على الـ hooks المُعدّة لديك
/hooks
نصائح وأفضل الممارسات
  • الـ hooks أداة لمسار Power Track / إعداد الفرق — فهي تشغّل أمر shell، لذا فهي للمستخدمين التقنيين، لا لمحادثة سطح المكتب اليومية.
  • الجأ إلى hook للأعمال التي «تُفعَل دائمًا» — التنسيق، الـ linting، التسجيل — والتي قد تنساها.
  • استخدم hook من نوع PreToolUse لمنع الإجراءات المحفوفة بالمخاطر (مثل مسّ main) قبل حدوثها.
  • أبقِ أوامر الـ hook سريعة؛ فهي تعمل ضمن المسار، وبالتالي يُبطئ hook بطيء كل إجراء مرتبط به.

أسئلة يطرحها الناس

ما الفرق بين الـ hook والـ scheduled agent؟
الـ hook يعمل عند *حدث* — قبل أمر، أو بعد تعديل، أو عند بدء جلسة. أما الـ scheduled agent فيعمل وفق *الساعة* — كل صباح، أو كل يوم اثنين. الجأ إلى hook حين ينبغي أن يحدث شيء فور وقوع أمرٍ ما، تلقائيًا.
هل يستطيع الـ hook أن يفعل ما يفعله الـ skill؟
لا. الـ hook يشغّل أمر shell — ولا يستطيع تغيير كيفية تفكير Claude أو كتابته. أما الـ skill فيشكّل سلوك Claude ومعرفته. هما مكمّلان لبعضهما، لا بديلان عن بعضهما.
هل يُبطئ الـ hook عمل Claude؟
قد يفعل إن كان الأمر بطيئًا، لأن الـ hooks تعمل ضمن مسار العمل. أبقِ أوامر الـ hook سريعة — فالبطيء منها يُبطئ كل إجراء مرتبط به.
كيف أطّلع على الـ hooks المُعدّة لديّ؟
شغّل `/hooks` داخل جلسة لعرض الـ hooks المُعدّة حاليًا واللحظات التي تنطلق عندها.
هل أحتاج إلى الـ terminal لاستخدام الـ hooks؟
عمليًا نعم — فالـ hook يشغّل أمر shell ويُضبَط في ملف إعدادات، لذا فهو ميزة تقنية من مسار `Power Track`. نادرًا ما يحتاج إليه مستخدم سطح المكتب غير التقني؛ فالعمل اليومي يجري في المحادثة عبر القبول/الرفض ووضع "Ask permissions".