Skip to content

GitHub Actions: أرسل إشارة @ في طلب السحب ودع Claude يعمل بنفسه

📚 دليل السلسلة: الدرس السابق 43 سير عمل Git علمك كيفية جعل Claude يساعدك محلياً في إدارة الفروع وكتابة الالتزام وفتح طلبات السحب — وكل ذلك كان يتم وأنت جالس أمام الكمبيوتر وهو بجانبك. هذا الدرس يرفعه إلى السحاب: بمجرد تهيئته، يمكنك كتابة @claude في المشكلات (issues) أو طلبات السحب (PR) على GitHub، ليتولى هو العمل تلقائياً من تحليل الكود وتعديل الملفات وفتح طلب السحب، كل ذلك دون الحاجة لفتح كمبيوترك. وهذا هو Claude Code GitHub Actions (منصة أتمتة تدفقات العمل لـ GitHub).

تخيل هذا السيناريو في الساعة الحادية عشرة ليلاً: لقد استلقيت بالفعل للنوم، لتظهر رسالة في مجموعة عمل الفريق.

أحد الزملاء: "هل راجعت طلب السحب (PR) الخاص بالمهندس X؟ معلق منذ يوم كامل، ويجب أن يرتفع للإنتاج غداً." أنت: "لقد نمت، سألقي نظرة عليه صباح الغد." هو: "... غداً صباحاً سيكون الوقت قد فات!"

في مثل هذه اللحظات، إذا كنت قد هيأت Claude Code GitHub Actions للمستودع مسبقاً، فستوفر على نفسك الكثير من الليالي المشابهة: فقبل أن تستيقظ، ستجد مراجعة (review) تلقائية من Claude جاهزة في قسم التعليقات — تشير بالتحديد لسطور برمجية تحتوي على مخاطر مؤشرات فارغة (null pointers) وتعاملاً غير مكتمل مع الحالات الخاصة. وبذلك يستطيع الزميل التعديل والدمج بناءً عليها فوراً.

ببساطة، كل ما تحدثنا عنه حول Claude Code في الدروس الأربعين السابقة يتطلب وجودك وفتح الطرفية ومراقبتك له أثناء العمل. وجاء درس GitHub Actions ليحل مشكلة أخرى: وهي إخراج Claude من كمبيوترك وجعله يستقر في خوادم GitHub، لتستدعيه للعمل بكلمة @claude بسيطة. وتستمر مهامه في معالجة المشكلات ومراجعة الأكواد وإصلاح الأخطاء سواء كنت مسافراً، أو نائماً، أو في اجتماع.

بعد قراءة هذا الدرس، ستحصل على:

  • شرح مبسط لـ Claude Code GitHub Actions، وما علاقته بنسخة Claude Code التي تستخدمها محلياً
  • آلية عمل استدعاء @claude — أين تكتبها، وكيف يعرف متى يستجيب
  • كيف يبدو ملف workflow YAML الأدنى للتشغيل، وظيفة كل سطر، لتنسخه وتستخدمه مباشرة
  • ثلاث حالات استخدام عملية: المراجعة التلقائية للكود، التعديل التلقائي بناءً على المشكلات، والمهام الدورية
  • كيفية إدخال مفتاح API والبيانات الحساسة بأمان في GitHub، والخط الأحمر الذي لا يمكن تجاوزه
  • تطبيق عملي مع خطوات تشغيل ونتائج متوقعة: تثبيت وتجربة الميزة في مستودعك الخاص في 5 دقائق

01 افهم أولاً: ما هو "Claude Code المستقر في خوادم GitHub"

الخلاصة أولاً: نسخة GitHub Actions من Claude Code هي نقل نسخة Claude Code المحلية الخاصة بك لتشغيلها في خوادم GitHub — ليصبح المحفز لتشغيلها هو أحداث المستودع (فتح طلب سحب، كتابة تعليق، أو توقيت محدد) بدلاً من كتابة الأوامر في طرفيتك المحلية.

تذكر الدروس الأربعين السابقة، كان استخدام Claude Code يسير كالتالي: تفتح الطرفية على جهازك، وتكتب claude للبدء في التحدث معه ومراقبة تعديلاته للملفات. وكان شرط عمله هو "وجودك ومراقبتك" — لتوافق على عملياته وتوجهه.

أما GitHub Actions فيزيل هذا الشرط تماماً. وتعرفه الوثائق الرسمية ببساطة:

يجلب Claude Code GitHub Actions الأتمتة المعتمدة على الذكاء الاصطناعي إلى تدفقات عمل GitHub الخاصة بك. وبمجرد الإشارة إلى @claude في أي طلب سحب أو مشكلة (issue)، يستطيع Claude تحليل الكود الخاص بك، وإنشاء طلبات سحب، وبناء الميزات، وإصلاح الأخطاء — وكل ذلك باتباع معايير مشروعك المعتمدة.

تشبيه: تعيين زميل للعمل في نوبة ليلية لا ينام أبداً. في فريقك، يراقب المطورون الأكواد نهاراً، ويزول التركيز ليلاً. والآن قمت بتعيين زميل ليلى — لا يحتاج للحضور ولا مكتب له ولا راتب شهري (تدفع بحسب الاستهلاك فقط)، وبمجرد أن يكتب أحد الزملاء إشارة @ له في المجموعة "ساعدني في مراجعة طلب السحب هذا" أو "أصلح هذا الخطأ"، يستيقظ للعمل ويلصق النتائج فور الانتهاء. وتستمر أنت في نومك ويستمر هو في عمله. ونسخة GitHub Actions من Claude هي بمثابة هذا الزميل الليلي، ولكنه يسكن في خوادم GitHub.

وهناك نقطة حيوية يجب ألا تخلط فيها: فهذا ليس منتجاً جديداً، بل يعتمد في أساسه على Claude Code. وتوضح الوثائق الرسمية ذلك — حيث تم بناؤه فوق Claude Agent SDK (والذي سنشرحه في الدرس 45)، ويلتزم بقراءة ملف CLAUDE.md الموجود في جذر مستودعك أثناء العمل (وهو كتيب إرشادات المشروع المشروح في الدرس 18). وهذا يعني أن القواعد والأساليب والتعليمات التي وضعتها لمشروعك يرثها ويلتزم بها هذا الزميل الليلي بالكامل، تماماً كما تفعل النسخة المحلية.

وبمجرد تهيئته، يمكنك القيام بالمهام التالية في مستودعك:

  • عند فتح طلب سحب (PR) دون وجود من يراجعه — دعه يراجعه تلقائياً ويضع ملاحظاته سطراً بسطر
  • عند وجود مشكلة (issue) واضحة التفاصيل دون وجود وقت لكتابتها — اكتب تعليقاً @claude قم ببناء هذا ليقوم بإنشاء فرع وكتابة الكود وفتح طلب سحب تلقائياً
  • عند تعطل البناء المستمر (CI) ليلاً دون تدخل بشري — دعه يحلل الأخطاء ويحاول إصلاحها

💡 خلاصة القول في جملة واحدة: نسخة GitHub Actions من Claude Code هي نسخة Claude Code المنقولة لخوادم GitHub لتعمل بناءً على أحداث المستودع؛ وتعمل دون الحاجة لوجودك مع الالتزام التام بملف CLAUDE.md ومعايير مشروعك، مثل زميل ليلى لا ينام.


02 إشارة @claude: كيف تناديه وكيف يعرف أنه المقصود بالعمل

الاستخدام الأساسي — كتابة تعليق يحتوي على @claude في المشكلات أو طلبات السحب لتفعيل عمله. وسنفصل في هذا القسم أين تكتبها وماذا تكتب وكيف يستجيب.

تشبيه: الإشارة لزميل العمل المناوب في المجموعة لتسليمه مهمة. ففي مجموعة الفريق، تسير المحادثات والرسائل العادية دون تدخل، ولكن بمجرد كتابة إشارة @ لزميل العمل المناوب متبوعة بطلب محدد، فإنه يدرك "أن هذا الطلب يخصه" ويبدأ بالعمل عليه. وتعمل إشارة @claude بنفس الطريقة — فهو يراقب بصمت دون تدخل، وإذا لم تشر إليه فلن يتحرك؛ وبمجرد الإشارة إليه، يعتبر هذا التعليق بمثابة مهمة برمجية موجهة إليه.

أين تكتبها بالتحديد؟ تذكر الوثائق الرسمية الأماكن المتاحة، وكلها نستخدمها في عملنا اليومي:

  • قسم تعليقات طلب السحب (issue comment)
  • تعليقات المراجعة على السطور البرمجية لطلب السحب (pull request review comment)
  • وصف أو تعليقات المشكلة (issue)

وماذا تكتب في الطلب؟ تحدث معه بلغة واضحة ومحددة كما تفعل مع زملائك المطورين. مثل هذه الأمثلة:

text
@claude 按这个 issue 的描述把功能实现了
@claude 这个接口的用户认证该怎么做
@claude 把用户面板组件里那个 TypeError 修了

وهي تعني "قم ببناء الميزة الموصوفة في هذه المشكلة" و "كيف نهيئ توثيق المستخدم لهذه الواجهة" و "أصلح خطأ TypeError في وحدة لوحة المستخدم". وسيقوم تلقائياً بتحليل السياق — قراءة المشكلة، قراءة الأكواد المرتبطة، وقراءة ملف CLAUDE.md — ثم يتخذ الإجراء المناسب: يعدل الملفات ويفتح طلب سحب إذا تطلب الأمر التعديل، أو يجيب على سؤالك.

وهنا نربط مع القاعدة الذهبية المذكورة في الدرس 15 — كلما كان التوجيه محدداً، قل احتمال انحراف العمل. فعندما تطلب من زميلك "ألقِ نظرة على طلب السحب" تختلف النتيجة تماماً عن قولك "راجع طلب السحب وتأكد من سلامة التعامل مع العمليات المتزامنة وحقن SQL". ويعمل @claude بنفس الطريقة، فطلب المراجعة العام يعود بملاحظات عامة، وتحديد "البحث عن ثغرات حقن SQL" يوجه تركيزه وجهده بالكامل لهذا الجانب.

وهناك فخ شائع جداً للمبتدئين، نبهت عليه الوثائق الرسمية في قسم استكشاف الأخطاء:

تأكد من كتابة @claude (باستخدام علامة @) وليس /claude.

سيناريو متكرر: بعد تهيئة الأداة بحماس، تكتب تعليقاً في طلب السحب /claude review this وتنتظر لخمس دقائق دون حركة، لتظن أن المشكلة في مفاتيح الأمان وتقضي وقتاً طويلاً في فحصها. لتكتشف في النهاية كتابتك للشرطة المائلة بدلاً من علامة @ — فالأمر /claude هو أمر مائل تستخدمه في طرفيتك المحلية (الدرس 36)، ولا يملك أي معنى في تعليقات GitHub. فالمحفز في السحاب هو علامة @claude (رمز @) وليس الشرطة المائلة. تذكر هذا جيداً لتوفير نصف ساعة من البحث عن أسباب المشاكل.

الطرفية المحلية (الدروس 43 السابقة)GitHub Actions (هذا الدرس)
المحفز للتشغيلتشغيله يدوياً عبر كتابة claudeأحداث المستودع (تعليق، فتح طلب سحب، توقيت)
كيفية توجيه العملالتحدث المباشر، أو الأوامر المائلة /كتابة تعليق يحتوي على @claude (رمز @!)
هل يتطلب وجودك؟نعم، لمراقبته واعتماد عملياتهلا، يعمل في السحاب تلقائياً ودون تدخل
مكان التشغيلجهاز الكمبيوتر الخاص بكبيئة تشغيل runner التابعة لخوادم GitHub
من يوافق على العملياتتوافق عليها بنفسك خطوة بخطوةتتم الأتمتة وفقاً للأذونات المحددة مسبقاً

💡 خلاصة القول في جملة واحدة: اكتب تعليقاً يحتوي على @claude متبوعاً بطلبك المحدد لتوجيه العمل إليه في المشكلات أو طلبات السحب؛ وسيقوم بقراءة السياق وملف CLAUDE.md تلقائياً؛ وتجنب كتابتها مائلة /claude — فالمحفز في السحاب هو رمز @ وليس الشرطة المائلة.


03 التثبيت: تثبيت "تطبيق GitHub" التلقائي هو الخيار الأسهل

لكي يستجيب @claude لطلباتك، يجب تثبيت ثلاثة عناصر في مستودعك أولاً — تطبيق GitHub App (لإعطاء Claude صلاحيات القراءة والكتابة في مستودعك)، ومفتاح الأمان (API key الخاص بك)، وملف التهيئة workflow (لتوجيه GitHub بموعد استدعاء Claude).

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

bash
/install-github-app

وانتبه — أن الأمر /install-github-app هو أمر مائل تكتبه داخل محادثة claude المحلية على جهازك (نعم، هو أحد الأوامر المائلة المشروحة في الدرس 36، ويختلف تماماً عن إشارة @claude في السحاب المشروحة في القسم السابق، فلا تخلط بينهما). سيقوم هذا الأمر بفتح معالج تثبيت يوجهك خطوة بخطوة، وتقول الوثائق الرسمية عنه:

يساعدك هذا الأمر في إعداد تطبيق GitHub ومفاتيح الأمان المطلوبة لتشغيله بسهولة.

حيث يقوم بتهيئة العناصر الثلاثة معاً تلقائياً: تثبيت تطبيق GitHub App، وإضافة مفتاح ANTHROPIC_API_KEY بأمان في المستودع، وكتابة ملف التهيئة التجريبي في المسار .github/workflows/. وما عليك سوى متابعة الخطوات والموافقة.

ولكن هناك شرطان أساسيان يجب توفرهما أولاً، نبهت عليهما الوثائق الرسمية:

  • يجب أن تملك صلاحيات مدير المستودع (admin) لتثبيت تطبيق GitHub وإضافة مفاتيح الأمان.
  • يعمل هذا التثبيت السريع لمستخدمي Claude API المباشرين. وإذا كنت تستخدم Amazon Bedrock أو Google Vertex AI فراجع الأقسام المخصصة لها.

بالمصطلحات البسيطة: أولاً، يجب أن تكون مديراً للمستودع (تملك صلاحيات admin)، وإلا فلن تتمكن من تثبيت التطبيق أو إضافة مفاتيح الأمان — وتعتبر هذه قيوداً أمنية من جانب GitHub وليس من جانب Claude. ثانياً، تخدم هذه الطريقة السريعة مستخدمي "واجهة API المباشرة لـ Claude"؛ فإذا كانت شركتك تعتمد على خدمات السحاب مثل AWS Bedrock أو Google Vertex AI (النماذج الخارجية المشروحة في الدرس 05)، فيجب اتباع خطوات التثبيت اليدوية الموضحة في نهاية الوثائق.

وما هي الصلاحيات التي يطلبها تطبيق GitHub App عند التثبيت؟ تذكر الوثائق الرسمية ثلاث صلاحيات أساسية، وكلها تتطلب القراءة والكتابة:

  • Contents: القراءة والكتابة (لتعديل ملفات المستودع وكتابة الأكواد)
  • Issues: القراءة والكتابة (للتفاعل والرد على المشكلات)
  • Pull requests: القراءة والكتابة (لفتح طلبات السحب ودفع التعديلات)

تشبيه: منح بطاقة دخول لزميل العمل تحدد الغرف المسموح له بزيارتها. وهذه الصلاحيات الثلاث هي بمثابة الغرف المسموح له بدخولها — غرفة "مستودع الكود" لتعديل الأكواد، وغرفة "المشكلات" للمناقشة، وغرفة "طلبات السحب" لدفع التعديلات البرمجية. وبدون إعطائه بطاقة الدخول لن يستطيع القيام بأي عمل؛ وزيادة الصلاحيات قد يهدد الأمن. وتعتبر هذه الصلاحيات الثلاث هي الحد الأدنى اللازم لعمله، وهي ما يطلبها التطبيق افتراضياً.

وإذا فشل تشغيل أمر /install-github-app لسبب ما (مثل مشاكل في الشبكة أو الأذونات)، يمكنك التثبيت يدوياً بالكامل: اذهب إلى https://github.com/apps/claude لتثبيت التطبيق، واذهب لإعدادات مستودعك لإضافة مفتاح الأمان، وانسخ ملف التهيئة من المستودع الرسمي من المسار examples/claude.yml. ولكن يفضل استخدام المسار التلقائي لتوفير الجهد — فالطريقة التلقائية أسرع بكثير وتوفر عناء البحث عن الملفات البرمجية المطلوبة يدوياً.

يتطلب هذا التثبيت تواصل خوادم GitHub وخوادم Claude، وإذا كانت الشبكة المحلية مقطوعة أو بطيئة، فقد تواجه عوائق في التثبيت، فاستخدم شبكة تدعم الوصول للمواقع المحجوبة قبل البدء.

💡 خلاصة القول في جملة واحدة: الطريقة الأسهل لتثبيت الأداة هي تشغيل أمر /install-github-app في محادثة claude المحلية، ليتولى تثبيت التطبيق وتهيئة مفاتيح الأمان وملف التهيئة تلقائياً؛ بشرط أن تملك صلاحيات مدير المستودع واستخدام واجهة API المباشرة لـ Claude؛ ويطلب التطبيق ثلاث صلاحيات أساسية فقط: Contents و Issues و Pull requests.


04 ملف workflow YAML: جدول العمل والمهام للزميل المناوب

بعد التثبيت، الملف الذي يحدد "ما هي الأحداث التي تستدعي استيقاظ Claude وبدء العمل" هو ملف التهيئة — وهو ملف YAML يستقر في المسار .github/workflows/. وسنفصل في هذا القسم السطور البرمجية لهذا الملف لنفهمها جيداً.

تشبيه: جدول المهام والورديات لزميل العمل. وملف التهيئة workflow هو بمثابة هذا الجدول، ويحدد أمرين أساسيين: موعد أو مناسبة بدء العمل (on: المحفزات)، والمهام المطلوب إنجازها عند بدء العمل (steps: الخطوات). وبدون هذا الجدول، لن يعرف زميل العمل متى يتحرك أو ماذا يفعل.

لنستعرض ملف التهيئة الأصغر الذي توفره الوثائق الرسمية لـ "الاستجابة لتعليقات @claude":

yaml
name: Claude Code
on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
jobs:
  claude:
    runs-on: ubuntu-latest
    steps:
      - uses: anthropics/claude-code-action@v1
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          # Responds to @claude mentions in comments

لا تقلق من لغة YAML، فهي تتكون من أربعة أقسام أساسية، وسنشرح كل منها ببساطة:

القسم الأول name: اسم ملف التهيئة، ويمكنك اختيار أي اسم تريده، ويظهر هذا الاسم في صفحة Actions على موقع GitHub.

القسم الثاني on (موعد بدء العمل): تحديد المحفزات. وهنا حددنا "عند إنشاء تعليق في مشكلة" (issue_comment مع النوع created) و "عند إنشاء تعليق على سطر برمجي في طلب سحب" (pull_request_review_comment مع النوع created) — وهذا يعني أن كتابة أي تعليق جديد في هذه الأماكن يقوم بتفعيل هذا الملف.

القسم الثالث jobs (المهام المطلوبة): تحديد مهمة باسم claude تشير لـ runs-on: ubuntu-latest وتعني "تشغيل المهمة على أحدث خوادم Ubuntu التي يوفرها موقع GitHub" — لضمان بقاء أكوادك وأعمالك بالكامل داخل بيئة خوادم GitHub الآمنة (وهو ما توضحه معايير الأمان الرسمية).

القسم الرابع steps (خطوات العمل بالتفصيل): خطوة أساسية واحدة — تشير لـ uses: anthropics/claude-code-action@v1 وتعني "استخدام الأداة الرسمية التي وفرتها شركة Anthropic بالإصدار الأول v1". ويتم تمرير مفتاح الأمان ANTHROPIC_API_KEY تحت حقل with (وسنشرح حماية مفتاح الأمان في القسم التالي). والسطر الأخير هو تعليق توضيحي يشير لكون هذا الملف مخصصاً للاستجابة لإشارات @claude في التعليقات.

والميزة الأروع هنا: هي أن هذا الملف لا يحتوي على أي شرط برمجى يطالبه بالتأكد من وجود كلمة @claude في التعليق. ولماذا؟ لأن الإصدار الأول v1 يتعرف على وضع التشغيل تلقائياً. وتوضح الوثائق الرسمية ذلك:

تتعرف الأداة تلقائياً بناءً على التهيئة المحددة على وضع التشغيل، سواء كان تفاعلياً (الاستجابة لإشارات @claude في التعليقات) أو أوتوماتيكياً (التشغيل المباشر بناءً على التوجيه الممرر).

بمعنى آخر: إذا مررت معامل prompt للتهيئة، فسيعمل بالوضع "الأوتوماتيكي" — ويعمل فوراً لتنفيذ التوجيه المكتوب (مثل عملية مراجعة الأكواد التلقائية في القسم التالي)؛ وإذا لم تمرر معامل prompt، فسيعمل بالوضع "التفاعلي" — ليبقى صامتاً حتى تتم الإشارة إليه بـ @claude في التعليقات. وبما أن التهيئة المصغرة أعلاه لا تحتوي على حقل prompt، فإنها تعمل بالوضع التفاعلي وتنتظر إشارتك.

⚠️ وهذا هو الفخ الأكبر لمن قام بالترقية من النسخ التجريبية القديمة (beta). حيث كانت النسخ القديمة تتطلب تحديد mode: "tag" يدوياً، وتمرير التوجيه عبر حقل direct_prompt؛ وقام الإصدار الأول v1 بإلغاء هذه الحقول — فتم الاستغناء عن حقل mode (للتعرف التلقائي)، وتعديل اسم حقل direct_prompt إلى prompt. فإذا رأيت تهيئات قديمة تحتوي على رموز مثل @beta أو حقول مثل mode: أو direct_prompt في مواقع الإنترنت، فاستبدلها بتهيئة v1 المعتمدة وتجنب النسخ العشوائي.

وكيف نقوم بتمرير المعاملات مثل --max-turns أو --model (التي استخدمناها محلياً سابقاً)؟ يوفر ملف التهيئة حقلاً موحداً باسم claude_args لذلك — ويمكنك تمرير أي من معاملات Claude Code CLI عبره:

yaml
- uses: anthropics/claude-code-action@v1
  with:
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
    prompt: "Your instructions here"          # اختياري: توجيهك البرمجى للأتمتة
    claude_args: "--max-turns 5 --model claude-sonnet-4-6"  # اختياري: معاملات CLI المخصصة

وتذكر الوثائق الرسمية أهم المعاملات التي يمكن تمريرها في حقل claude_args:

المعاملوظيفتهالقيمة الافتراضية
--max-turnsالحد الأقصى لجولات المحادثة (لمنع الهدر واللف التكراري)10
--modelتحديد نموذج العمل المستخدم (مثل claude-opus-4-8)Sonnet افتراضياً
--allowedToolsالأسلحة والأدوات المسموح باستخدامها (مفصولة بفاصلة)
--mcp-configمسار ملف إعدادات MCP المستخدم (الدرس 22)
--debugتفعيل سجلات التصحيح لعرض التفاصيل وتتبع الأخطاءمغلق

وننبه على حقيقة تذكرها الوثائق الرسمية بوضوح: أن Claude Code GitHub Actions يعتمد على نموذج Sonnet افتراضياً؛ وإذا أردت استخدام نموذج Opus 4.8، فيجب عليك كتابة المعامل --model claude-opus-4-8 صراحة في حقل claude_args. وتكفي قدرات Sonnet لعمليات المراجعة وإصلاح الأخطاء البسيطة؛ ويمكنك الترقية لـ Opus عند تكليفه بمهام إعادة هيكلة معقدة أو عمليات استنتاج صعبة (وتظل قواعد اختيار النموذج المشروحة في الدرس 30 صالحة للتطبيق هنا أيضاً).

💡 خلاصة القول في جملة واحدة: ملف التهيئة workflow هو بمثابة جدول عمل لـ Claude — ويحدد حقل on موعد التشغيل، وتحدد خطوة claude-code-action@v1 طبيعة المهمة؛ ويتعرف الإصدار v1 على وضع التشغيل تلقائياً (أوتوماتيكي بوجود prompt وتفاعلي بانتظار @claude عند غيابه)؛ ويمكن تمرير المعاملات عبر حقل claude_args.


05 ثلاث حالات استخدام عملية: المراجعة التلقائية، التعديل التلقائي، والمهام الدورية

لا يقتصر العمل على مجرد الاستجابة لإشارة @claude في التعليقات. وسنعرض في هذا القسم ثلاث تهيئات جاهزة لأشهر ثلاثة سيناريوهات عملية، مع توضيح وظيفة وتهيئة كل منها.

الحالة الأولى: مراجعة تلقائية للأكواد مع كل طلب سحب (تعمل تلقائياً دون استدعاء)

تعتبر هذه الحالة هي الأكثر استخداماً، وبطلة السيناريو الليلي المذكور في البداية. حيث تعمل المراجعة التلقائية فور فتح طلب السحب أو دفعه للتعديل، دون الحاجة لتدخلك أو كتابة تعليق.

yaml
name: Code Review
on:
  pull_request:
    types: [opened, synchronize]
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: "Review this pull request for code quality, correctness, and security."
          claude_args: "--max-turns 5"

وعند مقارنتها بالتهيئة المصغرة في القسم السابق، نجد فارقين أساسيين: تعديل محفزات التشغيل لتصبح أحداث طلب السحب pull_request عند الفتح opened أو التحديث بطلب جديد synchronize؛ وإضافة حقل prompt للتوجيه. وكما أشرنا سابقاً، فإن وجود حقل prompt يحول طريقة العمل للوضع الأوتوماتيكي فور حدوث المحفز، ليتوجه Claude لمراجعة جودة الكود وصحته وسلامته الأمنية ونشر تعليقاته، دون انتظار كتابة تعليق أو إشارة. ومع كل تعديل يدفعه الفريق، تظهر ملاحظات المراجعة التلقائية في التعليقات.

وإذا كنت تريد حلاً متكاملاً لـ "مراجعة الأكواد التلقائية" دون الحاجة لكتابة ملفات تهيئة workflow بنفسك، فتوفر شركة Anthropic خدمة مخصصة باسم Code Review (لمستخدمي خطط العمل والمنظمات Team / Enterprise)، وبمجرد تفعيلها يراجع كل طلب سحب تلقائياً ويصنف الملاحظات بحسب خطورتها مع إمكانية توجيهه بملف REVIEW.md. ونحن نركز في هذا الدرس على تشغيل Claude داخل بيئة البناء المستمر (CI) الخاصة بك، وتلك الخدمة هي مسار آخر نذكره هنا للعلم فقط.

الحالة الثانية: تعديل الكود تلقائياً بناءً على المشكلات (تفعيل عبر @claude)

تعتمد هذه الحالة على التهيئة المصغرة المخصصة لـ "الاستجابة لـ @claude" المشروحة في القسم السابق، ويكمن الفارق في التوجيه الذي تكتبه في التعليق. بعد كتابة تفاصيل المشكلة بوضوح، أضف تعليقاً:

text
@claude 按这个 issue 的描述把功能实现了

سيقرأ Claude وصف المشكلة، ويتصفح الكود، ويراجع ملف CLAUDE.md، ثم ينشئ فرعاً جديداً ويكتب الأكواد البرمجية المطلوبة ويفتح طلب سحب (PR) لتقوم بمراجعته. لقد قمت بإضافة ميزة تصدير البيانات بصيغة CSV لأداة برمجية داخلية بهذه الطريقة — كتبت التفاصيل والتنسيق المطلوب في المشكلة، وأرسلت إشارة @ له، ليعود بعد عشرين دقيقة ومعه طلب سحب جاهز يحتوي على الأكواد المطلوبة، فراجعته ودمجته، دون أن أفتح محرر الأكواد بنفسي طوال العملية.

وينطبق نفس الأمر على إصلاح الأخطاء:

text
@claude 把用户面板组件里那个 TypeError 修了

ليقوم بتحديد مسببات الخطأ وإصلاحها وتحديث الفرع أو فتح طلب سحب جديد.

الحالة الثالثة: المهام الدورية (العمل بناءً على توقيت محدد)

لا تتطلب هذه الحالة حدوث حدث في المستودع، بل تعمل بناءً على جدول زمني محدد — مثل توليد خلاصة يومية في الساعة التاسعة صباحاً للالتزامات البرمجية والمشكلات المفتوحة بالأمس.

yaml
name: Daily Report
on:
  schedule:
    - cron: "0 9 * * *"
jobs:
  report:
    runs-on: ubuntu-latest
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          prompt: "Generate a summary of yesterday's commits and open issues"
          claude_args: "--model opus"

ويعني ضبط on: schedule مع حقل cron: "0 9 * * *" تشغيل المهمة يومياً في الساعة التاسعة صباحاً (بالتوقيت العالمي الموحد UTC)، لتقوم بتوليد التقرير المطلوب بناءً على توجيه prompt. وتعتبر هذه المهام الدورية والتقارير أفضل مكان لإسناد العمل لهذا الزميل الليلي.

مقارنة سريعة بين الحالات الثلاث لتوضيح الفروق في التهيئة والتشغيل:

الحالةمحفز التشغيل (on)هل نمرر prompt؟وضع التشغيلالسيناريو النموذجي
مراجعة تلقائيةpull_request (فتح أو تحديث طلب السحب)نعمأوتوماتيكي (يعمل فوراً)مراجعة سلامة وجودة الكود مع كل تعديل
تعديل الكودissue_comment (كتابة تعليق يحتوي على @claude)لاتفاعلي (ينتظر الإشارة)تحويل المشكلة لفرع برمجى، أو إصلاح الأخطاء
مهمة دوريةschedule (توقيت محدد عبر cron)نعمأوتوماتيكي (يعمل فوراً)توليد تقارير يومية، أو فحص دوري

وتذكر القاعدة الأساسية التي تربط بينها: تمرير حقل prompt = أتمتة وعمل فوري؛ غياب حقل prompt = انتظار إشارة @claude في التعليقات. وحدد طبيعة المهمة التي تريدها لتختار التهيئة المناسبة لها.

💡 خلاصة القول في جملة واحدة: الحالات الثلاث الأكثر استخداماً هي — المراجعة التلقائية لطلبات السحب (بوجود prompt للعمل التلقائي)، و تعديل الكود بناءً على المشكلات (بانتظار إشارة @claude في التعليق)، و المهام الدورية (توقيت cron مع prompt لتوليد التقارير)؛ وجوهرها يكمن في طريقة التهيئة لتحديد محفزات العمل ونوعه.


06 حماية مفاتيح الأمان: خط أحمر لا يمكن تجاوزه

لاحظت بالتأكيد وجود هذا السطر البرمجي في كل تهيئات workflow السابقة:

yaml
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

وسنفصل في هذا القسم الممارسات الأمنية لحماية هذا السطر — فهو الجزء الأهم الذي لا يحتمل التساهل أو الخطأ. لقد قمنا بتهيئة مفتاح ANTHROPIC_API_KEY محلياً على أجهزتنا في الدرس 04، وأشرنا إلى أن تفاصيل تهيئته في بيئات البناء المستمر (CI) سنشرحها في الدرس 44، وهو ما نقوم به الآن.

ونضع التحذير الرسمي المظلل باللون الأحمر كما ورد في الوثائق دون تغيير:

لا تقم أبداً بكتابة مفتاح API بشكل مباشر وتضمينه في ملفات مستودعك.

لماذا يعتبر هذا السطر خطاً أحمر؟ لأن مستودعات GitHub — وخصوصاً العامة منها — يستطيع أي شخص تصفحها والوصول إليها. فإذا قمت بكتابة المفتاح الفعلي المبتدئ بـ sk-ant-xxxx مباشرة داخل ملف YAML ورفعته للمستودع، فكأنك قمت بلصق الرقم السري لبطاقتك المالية على لوحة الإعلانات العامة: ويستطيع أي متسلل سحب المفتاح واستخدامه بشكل مكثف للطلبات، وتأتي الفاتورة المالية بالكامل على حسابك الخاص. وتحدث هذه السرقات يومياً على موقع GitHub بواسطة برمجيات زحف (crawlers) تبحث عن المفاتيح طوال الوقت.

والتصرف الصحيح والوحيد: هو استخدام GitHub Secrets، وتجنب كتابة المفتاح الصريح. وتوضح الخطوات الرسمية ذلك:

  • أضف مفتاح API الخاص بك كـ Secret للمستودع تحت اسم ANTHROPIC_API_KEY.
  • أشر إليه في ملف التهيئة بالشكل التالي: anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

تشبيه: وضع المفاتيح داخل خزنة أمنية مشفرة، وكتابة طريقة جلبها فقط في المستند. وتعتبر خدمة GitHub Secrets بمثابة الخزنة الأمنية المدمجة في مستودعك — حيث تحفظ مفاتيحك مشفرة ولا تظهر في السجلات أو الواجهات البرمجية. والجملة ${{ secrets.ANTHROPIC_API_KEY }} التي تكتبها في ملف YAML ليست المفتاح الفعلي، بل هي توجيه أمني "اذهب للخزنة واجلب المفتاح المسمى ANTHROPIC_API_KEY لاستخدامه في هذه الخطوة". وبذلك تصبح كتابة ورفع ملف التهيئة آمنة تماماً لخلوها من البيانات الحقيقية.

وكيف تضع المفتاح في هذه الخزنة الأمنية؟ بالطريقة اليدوية: اذهب لإعدادات مستودعك Settings ← Secrets and variables ← Actions، واضغط على New repository secret، واكتب في حقل الاسم ANTHROPIC_API_KEY وضَع مفتاحك الفعلي في حقل القيمة (الذي جلبته من Claude Console كما شرحنا في الدرس 04). وإذا استخدمت معالج التثبيت التلقائي /install-github-app في البداية، فقد قام بهذه الخطوة بالنيابة عنك.

وهذه الإجراءات الأمنية تتماشى مع المبادئ الأمنية المشروحة في الدرس 21. ففي السحاب، يقرأ Claude محتويات المشكلات وتعليقات طلبات السحب تلقائياً ليعمل بناءً عليها، وهذه المحتويات يستطيع أي زائر خارجي كتابتها. ولذلك ننصح بشدة بالالتزام بأفضل الممارسات الأمنية التالية:

❌ ممارسات خطيرة✅ ممارسات آمنة وموصى بها
كتابة المفتاح الصريح مباشرة داخل ملف YAML ورفعهحفظ المفتاح في GitHub Secrets والإشارة إليه بالمتغير المشفر
إعطاء Claude صلاحيات واسعة جداً في المستودع لتسهيل العملقصر الصلاحيات على الحد الأدنى (Contents / Issues / PR للعمل)
دمج طلبات السحب التي يفتحها Claude تلقائياً ودون مراجعةمراجعة وتأكد من الأكواد في طلب السحب بنفسك أولاً
السماح للزوار الخارجيين في المستودعات العامة باستدعاء @claudeالحذر من حقن التوجيهات، وتضييق شروط التفعيل في المشاريع الحساسة

ونؤكد بشكل خاص على قاعدة "مراجعة وتأكد من طلب السحب بنفسك قبل الدمج" — فتعديلات Claude مهما كانت جيدة هي بمثابة "مساهمة من مطور برمجى"، وليست معفية من الفحص البشري. وتقول الوثائق الرسمية: "راجع مقترحات وتعديلات Claude بعناية قبل الموافقة على الدمج". والالتزام بقاعدة: مراجعة الأكواد التي يفتحها Claude في طلبات السحب كأنها أكواد كتبها متدرب حديث العهد يضمن لك الحماية، وتجنب الموافقة العمياء لمجرد صياغتها الجيدة.

💡 خلاصة القول في جملة واحدة: حماية المفاتيح تتلخص في قاعدة واحدة — تجنب كتابة المفتاح الصريح في الأكواد تماماً، واحفظه في GitHub Secrets (الخزنة الأمنية المشفرة) وأشر إليه بـ ${{ secrets.ANTHROPIC_API_KEY }} في ملف التهيئة؛ مع الالتزام بقواعد الصلاحيات الدنيا ومراجعة الأكواد قبل الدمج والحذر من حقن التوجيهات لضمان أمان العمليات السحابية.


07 العمل: تثبيت وتجربة الميزة في مستودعك الخاص في 5 دقائق

الكلام بدون تطبيق لا يكفي للفهم. سنقوم الآن بتثبيت الأداة وتجربتها في مستودع GitHub خاص بك والتحقق من عملها. اختر مستودعاً تملك صلاحيات إدارته وتخصصه للتجارب (لا تجرب على مستودع الإنتاج الفعلي للعمل)، ولا تتطلب الخطوات تهيئة بيئة معقدة.

الشروط المسبقة: صلاحيات مدير المستودع، استخدام واجهة API المباشرة لـ Claude (وليس Bedrock أو Vertex)، وتثبيت Claude Code محلياً. وتتطلب الخطوات تواصل خوادم GitHub وخوادم Claude، فاستخدم شبكة تدعم الوصول للمواقع المحجوبة عند تعطل الخطوات.

الخطوة الأولى: تشغيل أمر التثبيت في طرفية Claude المحلية

انتقل لمجلد مستودعك التجريبي في الطرفية، وشغل claude للدخول للمحادثة، ثم اكتب:

text
/install-github-app

المتوقع: يفتح معالج التثبيت ويوجهك لصفحة المتصفح لمنح الصلاحيات — اختر المستودع التجريبي لـ Claude GitHub App، ووافق على الصلاحيات الثلاث المطلوبة (Contents و Issues و Pull requests للقراءة والكتابة)، ثم يوجهك لتهيئة مفتاح ANTHROPIC_API_KEY في Secrets الخاصة بالمستودع. تابع الخطوات حتى تظهر لك رسالة نجاح التثبيت وكتابة ملف التهيئة بنجاح.

الخطوة الثانية: التأكد من كتابة ملف التهيئة workflow

تصفح ملفات مستودعك وتأكد من وجود هذا الملف الجديد:

text
.github/workflows/claude.yml

المتوقع: وجود الملف وبداخله محتويات التهيئة المصغرة المشروحة في القسم 04 (on: issue_comment مع خطوة claude-code-action@v1). وجود هذا الملف يعني إتمام تهيئة جدول العمل. وإذا لم تجده، فأعد تشغيل أمر /install-github-app في الطرفية لمتابعة الخطوات التي لم تكتمل.

الخطوة الثالثة: التأكد من تهيئة مفتاح الأمان في الخزنة

اذهب لإعدادات مستودعك على موقع GitHub تحت مسار Settings → Secrets and variables → Actions.

المتوقع: ظهور متغير باسم ANTHROPIC_API_KEY في قائمة Repository secrets (يظهر الاسم فقط وتظل القيمة مخفية ومشفرة). وجود الاسم يعني حفظ المفتاح بنجاح.

الخطوة الرابعة: فتح مشكلة (issue) تجريبية وإرسال إشارة @ لـ Claude

افتح مشكلة جديدة في مستودعك، واكتب أي عنوان تريده، وضَع في الوصف طلباً محدداً وبسيطاً مثل:

text
@claude 在 README 末尾加一行 "Hello from Claude Code GitHub Actions",然后开个 PR

المتوقع:

  • اذهب لصفحة Actions في مستودعك، وستجد ملف تهيئة باسم Claude Code قد بدأ في التشغيل (علامة الدوران) أو انتهى بنجاح (علامة الصح الخضراء).
  • انتظر لدقيقة أو دقيقتين (ليقوم خادم التشغيل بتحميل الأكواد والبدء بالعمل)، وسيقوم Claude بكتابة رد في تعليقات المشكلة ليعلمك، وفتح طلب سحب (PR) جديد يحتوي على السطر المضاف لملف README.
  • رؤية طلب السحب المفتوح تلقائياً يعني نجاح اتصال السلسلة بالكامل.

وإذا طال الانتظار دون حدوث شيء، فراجع أسباب المشاكل الشائعة: هل كتبت @claude برمز @ أم بالشرطة المائلة (يجب استخدام رمز @)، وهل تم تثبيت التطبيق بنجاح، وهل مفتاح الأمان موجود في Secrets، وهل تم إيقاف Actions في إعدادات المستودع بالخطأ. وغالباً ما تكون المشكلة في كتابة الشرطة المائلة بدلاً من رمز @.

الخطوة الخامسة: مراجعة ودمج طلب السحب (تجنب الدمج الأعمى)

افتح طلب السحب المفتوح تلقائياً، وراجع الفروق (diff) بعناية كأنك تراجع تعديلات مطور برمجى، وتأكد من اقتصار التعديل على إضافة السطر المطلوب لملف README دون لمس ملفات أخرى. ووافق على الدمج بعد الاطمئنان.

بتشغيل هذه الخطوات الخمس، تكون قد مررت بالمسار الكامل لتكامل السحاب "تثبيت التطبيق ← تهيئة المفتاح ← وضع جدول العمل ← إرسال مهمة عبر @claude ← الفتح التلقائي لطلب السحب ← المراجعة والدمج البشري" بنفسك. وستتبع نفس الخطوات مستقبلاً لتهيئة أي مستودع، مع تعديل محفزات ملف التهيئة workflow أو التوجيهات البرمجية لتناسب متطلبات العمل.

💡 خلاصة القول في جملة واحدة: يتكون التطبيق العملي من خمس خطوات — تشغيل أمر /install-github-app للتثبيت التلقائي، والتأكد من وجود ملف claude.yml، والتأكد من تهيئة Secrets، و فتح مشكلة وإرسال إشارة @claude بطلب بسيط، ومراجعة الأكواد ودمج طلب السحب بنفسك؛ وتجربتك للمسار بنفسك تثبت الفهم البرمجي للميزة.


08 خلاصة

نقلنا في هذا الدرس أداة Claude Code إلى السحاب — ليتحول من مساعد يعمل بوجودك ومراقبتك إلى مساعد يعمل تلقائياً بمجرد إرسال إشارة @claude بناءً على أتمتة GitHub Actions.

لنلخص أهم النقاط المشروحة في الدرس:

ما تريد فهمهالأداة أو المسارالنقاط الرئيسية
طبيعة الميزةClaude Code مستقر في خوادم GitHubيعمل بناءً على أحداث المستودع دون حاجته لوجودك، ويلتزم بملف CLAUDE.md
كيفية استدعائهكتابة تعليق يحتوي على @claude والطلبيستجيب لـ رمز @ في التعليقات، ولا يتعرف على الشرطة المائلة /claude
كيفية التثبيتتشغيل /install-github-app محلياًيتطلب صلاحيات مدير المستودع وواجهة API المباشرة؛ ويحصل على ثلاث صلاحيات أساسية
قواعد التشغيلملف YAML في مجلد .github/workflows/يحدد حقل on موعد الاستيقاظ، وتمرر معاملات CLI عبر حقل claude_args؛ ويتعرف v1 على وضع العمل تلقائياً
السيناريوهاتمراجعة PR / تعديل الكود / مهام دوريةيمرر prompt للعمل التلقائي، ولا يمرر prompt لانتظار الاستدعاء بـ @claude
حماية البياناتاستخدام GitHub Secretsيمنع كتابة المفاتيح الصريحة تماماً، وأشر للمفتاح بالمتغير المشفر ${{ secrets.* }}

يجب أن تكون قادراً الآن على: شرح الفوارق بين نسخة Claude Code المحلية والنسخة السحابية المعتمدة على GitHub Actions، وكتابة إشارات استدعاء صحيحة باستخدام @claude في تعليقات GitHub لتوجيه المهام إليه، وقراءة وتعديل ملفات تهيئة workflow YAML المصغرة، واختيار التهيئة المناسبة بحسب متطلباتك (المراجعة التلقائية، أو التعديل بناءً على المشكلات، أو المهام الدورية)، وحماية مفتاح API الخاص بك بأمان في GitHub Secrets، وتثبيت وتجربة الميزة بالكامل في مستودع تجريبي خاص بك للتأكد من عملها. وتعتبر هذه الأتمتة السحابية هي الخطوة الأساسية لترقية Claude من مساعد محلي على جهازك الشخصي إلى زميل عمل يخدم الفريق بأكمله على مدار الساعة.

بتهيئة Actions بنجاح، لن تضطر للسهر ليلاً لمراجعة طلبات السحب المتأخرة — فالزميل الليلي يتولى مراجعتها وتجهيز الملاحظات، لتراجعها أنت صباحاً بهدوء.

وتجدر الإشارة إلى أنه: إذا كان فريقك يعتمد على GitLab بدلاً من GitHub، فيوفر Claude تكاملاً مماثلاً مع بيئة GitLab CI/CD (يمر بمرحلة تجريبية حالياً)، ويسير بنفس الفلسفة — حيث تضيف الإعدادات لملف .gitlab-ci.yml وتهيء متغيرات الدخول المشفرة وتستدعيه عبر تعليقات @claude. وفهمك لمسار GitHub المشروح في هذا الدرس يسهل عليك تطبيق نفس المبادئ على GitLab بالاستعانة بالوثائق الرسمية.


الدرس القادم 45 "Claude Agent SDK" — أشرنا في هذا الدرس إلى أن أتمتة GitHub Actions مبنية في أساسها على Claude Agent SDK. وبعبارة أخرى، فإن قدرة @claude على قراءة الأكواد والتعديل وفتح طلبات السحب يدعمها من الخلف مكتبة برمجية تتيح لك تضمين واستخدام قدرات Claude Code برمجياً داخل أي تطبيق أو نظام. وتعتبر أداة GitHub Actions مجرد غلاف جاهز ومبسط لهذه القدرات. الدرس القادم سيكشف لنا هذا الغطاء البرمجي: إذا كنت تريد بناء أتمتة تتجاوز حدود المشكلات وتطلبات السحب لـ @claude — مثل بناء بوت خدمة عملاء ذكي خاص بك، أو معالجة آلاف الملفات برمجياً، أو ربط Claude بأنظمة شركتك الداخلية، فكيف تكتب الأكواد لبرمجة وقيادة Claude بنفسك؟ فكر في الأمر: يوفر لك GitHub Actions نظام تشغيل ومحفزات جاهزة، ولكن عند رغبتك في تحديد متى يعمل Claude برمجياً وأين يرسل النتائج بعد الانتهاء، ستحتاج حتماً للغوص طبقة أعمق برمجياً.


قراءات موصى بها