أمثلة Hooks للتطوير — hooks-development

مجانًا

أربع وصفات Hooks لـ Claude Code تحيط تعديلات Claude على ملفاتك بخطوات ثابتة: نسخة احتياطية من الملف قبل تعديله، وسطر في سجل التغييرات، وفحص وتنسيق حسب نوع الملف بعده. في الحزمة بطاقة لكل وصفة تحدد حدثها والأدوات التي تطلقها، وسكربتاتها الكاملة في مجموعة أمثلة Hooks، وتفعيلها يدوي في إعدادات مشروعك.

  • مجاني، ولا يتطلب أي دفع
  • تنزيل فوري بعد إتمام الطلب
  • مشترياتك محفوظة في حسابك

حين يعدّل Claude Code ملفات كثيرة في جلسة واحدة، ثم يتضح أن أحد التعديلات أفسد شيئًا، تحتاج أن تعرف أي الملفات لمسها، وأن تجد الملف كما كان قبلها. هذه أربع وصفات Hooks تترك، بعد تفعيلها، أثرًا ثابتًا على القرص كلما عدّل Claude ملفًا بأداة Edit: نسخة من الملف قبل التعديل، وسطرًا في سجل بعده، وفحصًا وتنسيقًا تلقائيًا. كُتبت لنظام Hooks في Claude Code، فلا تعمل في claude.ai، ولم تُكتب لـ Codex.

قبل التعديل وبعده: البطاقات الأربع

  • file-backup: تعمل عند PreToolUse بالمطابِق Edit|MultiEdit، فتحفظ نسخة من الملف قبل أن ينفّذ Claude تعديله.
  • change-tracker: تعمل عند PostToolUse بالمطابِق نفسه، وتضيف الملف المعدَّل إلى سجل نصي بسيط.
  • lint-on-save: تعمل عند PostToolUse، ومطابِقها وحده يشمل Write، وتشغّل أداة الفحص (linter) على ملفات JavaScript وTypeScript.
  • smart-formatting: تعمل عند PostToolUse بمطابِق file-backup نفسه، وتختار المنسّق من نوع الملف.

البطاقات ملفات Markdown في plugin/hooks، نقلتُها كما وردت في المصدر، وهي تصف الوصفة دون نص السكربت؛ السكربتات الكاملة للأربع في مجموعة أمثلة Hooks، ومنها أخذتُ تفاصيل المثال التالي.

مثال: Claude يعدّل src/api/client.ts

قبل أن يطبّق Claude التعديل، يقرأ file-backup مسار الملف من الحقل tool_input.file_path في بيانات الحدث، وينسخه إلى المجلد .claude/backups باسمه مضافًا إليه التاريخ والوقت والامتداد .bak. بعد التعديل يكتب change-tracker في .claude/changes.log سطرًا فيه الوقت وكلمة Modified ثم المسار، ويشغّل lint-on-save الأمر npx eslint --fix على الملف لأن امتداده ts، ويعيد smart-formatting تنسيقه بالأمر npx prettier --write. ويشغّل Claude Code الثلاث في وقت واحد، لا بالترتيب. وفي ملف Python يصبح المنسّق python3 -m black، وفي ملف Go يصبح gofmt -w.

خطوات التفعيل

  • ثبّت jq، فالسكربتات تقرأ به بيانات الحدث، ثم ما تحتاجه من ESLint وPrettier وBlack وgofmt. وعلى ويندوز تحتاج Git Bash.
  • انسخ السكربت الذي تريده من المجموعة إلى ملف داخل مشروعك، مثل .claude/hooks/file-backup.sh.
  • في .claude/settings.json أضف تحت المفتاح hooks الحدث والمطابِق المكتوبين في البطاقة، وأمرًا من النوع command نصّه bash .claude/hooks/file-backup.sh، لأن السكربتات بلا سطر #! (shebang). وبعد الحفظ يعرض لك الأمر /hooks الوصفات المسجّلة. صيغة الإعداد الكاملة في توثيق Hooks الرسمي.
  • أضف .claude/backups و.claude/changes.log إلى .gitignore حتى لا تدخل النسخ والسجل في commits.

أرفقتُ في الحزمة دليلًا عربيًا بخطوات البداية، وفهرسًا بأسماء الملفات، ونص الترخيص.

ما لا تغطيه هذه الوصفات

  • لا تضم الحزمة ملف hooks.json، لذا لن يفعّل Claude Code شيئًا منها إن ثبّتها كإضافة.
  • أداة MultiEdit لا تظهر بين أدوات Claude Code في توثيقه الحالي، فالمطابِق Edit|MultiEdit في file-backup وchange-tracker وsmart-formatting يلتقط Edit وحدها. وإذا أعاد Claude كتابة ملف كامل بأداة Write فلا نسخة ولا سطر في السجل ولا تنسيق؛ أضف Write إلى المطابِق إن أردت ذلك.
  • تحفظ file-backup النسخة باسم الملف وحده دون مجلده، فتجتمع نسخ index.ts من مجلدات مختلفة في مكان واحد لا يميّزها إلا الوقت، ولا يحذف السكربت النسخ القديمة.
  • سجل change-tracker يذكر أي ملف تغيّر ومتى، لا ما تغيّر فيه.
  • يرمي lint-on-save رسائل الخطأ إلى /dev/null وينتهي بـ || true، فيصلح ما يقبل الإصلاح التلقائي ولا يُبلغ Claude بالأخطاء الباقية. ولملفات Python يشغّل Black، وهو منسّق لا أداة فحص.
  • تذكر بطاقة lint-on-save المتغير CLAUDE_TOOL_FILE_PATH، لكن سكربتها الكامل لا يستخدمه.

الوصفات من مجتمع BuildWithClaude بترخيص MIT، وحقوقها لـ davepoon.