جدول المحتويات
تسأل Claude Code هل قرأ CLAUDE.md، فيجيب بنعم، لكنه يتخطى الاختبارات التي حددتها. عندها ميّز بين تعليمات لم تصل إلى النموذج أصلاً، وتعليمات وصلته لكنه لم يلتزم بها. فالرد «قرأته» لا يثبت أيّاً من الحالتين.
والأمر نفسه في .cursor/rules الخاص بـCursor، و.github/copilot-instructions.md الخاص بـGitHub Copilot، وAGENTS.md الخاص بـCodex CLI؛ إذ يختلف موضع التحميل وشروط التطبيق من أداة إلى أخرى. تحميل الملف والتزام النموذج بتعليماته مسألتان منفصلتان.
باختصار، الإجراء ثلاث مراحل. أولاً، تحقق من أن التعليمات تُحمّل. والقاعدة التي تُحمّل ولا تُتّبع، أعد صياغتها جملةً يمكن التحقق لاحقاً من الالتزام بها. وما يجب تنفيذه في كل مرة دون استثناء، انقله إلى Hooks أو CI. وتوضح وثائق Claude Code أيضاً أن CLAUDE.md «سياق وليس إعداداً مفروضاً»، وتنصح باستخدام الخطافات إذا أردت إيقاف عملية بغض النظر عن تقدير Claude.
يتناول المقال بالترتيب خمسة أمور ينبغي فحصها، منها التحميل واستعادة التعليمات بعد ضغط المحادثة وتعارض التعليمات، ثم خطوات عزل السبب، وأمثلة لإعادة صياغة القواعد.
لماذا تُتجاهل القواعد
وكيف تضع ضوابط للتحقق
1. لماذا يتجاهل الذكاء الاصطناعي القواعد: خمسة أمور للفحص
1. ملف طويل تضيع فيه القواعد
توصي وثائق Claude Code بإبقاء كل ملف CLAUDE.md دون 200 سطر، وتعلل ذلك بأن «الملفات الأطول تستهلك سياقاً أكبر وتقلل الالتزام». والسطر 200 ليس موضعاً يتوقف عنده التحميل؛ فملف CLAUDE.md الذي يصل حجمه إلى 4 MiB يُحمّل كاملاً (ويُتخطى الملف الأكبر من 4 MiB). ما يحدث مع الملف الطويل ليس توقف القراءة في منتصفه، بل أن يُقرأ كله ثم يضعف الالتزام بكل قاعدة فيه.
2. الضغط التلقائي في الجلسات الطويلة
يضغط أمر /compact في Claude Code المحادثة، لكن ملف CLAUDE.md في جذر المشروع يُعاد تحميله من القرص وإدراجه في السياق بعد الضغط. أما ملفات CLAUDE.md في المجلدات الفرعية والقواعد الخاصة بمسارات محددة فتُعاد قراءتها عند قراءة الملفات المعنية. ووفق الوثائق، فالتعليمة التي اختفت بعد الضغط إما أنها ① أُعطيت في المحادثة فقط، أو ② موجودة في ملف CLAUDE.md في مجلد فرعي لم يُعد تحميله بعد، أو ③ موجودة في قاعدة خاصة بمسار لم يُقرأ ملف مطابق لها بعد. إذا أردت الاحتفاظ بما قررته في المحادثة، فأضفه إلى CLAUDE.md.
3. تعارض التعليمات ونطاقها
إذا اجتمعت «اختبر قبل إنشاء الكوميت» و«تخطّ الاختبارات هذه المرة»، فاختيار التعليمة التي تنطبق يعود إلى تقدير النموذج. وتوضح وثائق Claude Code أنه عند تناقض قاعدتين قد يختار Claude إحداهما اعتباطاً. قارن دورياً تعليمات المشروع والتعليمات الشخصية والخاصة بالمجلدات لإزالة التناقضات، وإذا سمحت باستثناء فاكتب «من يأمر به وكيف». وإذا أردت إيقاف العملية نفسها، فاستخدم إعدادات الأذونات أو Hooks بدلاً من CLAUDE.md. ولكي يبحث Claude عن التعليمات المتعارضة أو المتقادمة بدلاً منك، استخدم /doctor prompt-audit (طريقة عمله وما وجده في هذا الموقع).
4. قواعد غامضة أو متناقضة
مع التعليمات الذاتية أو المجردة مثل «اكتب بلطف» أو «تعامل مع الأمر بما يناسب»، يضع الذكاء الاصطناعي تفسيره الخاص، وقد يختلف عما تتوقعه. اجعل المطلوب قابلاً للتحقق من الالتزام به، مثل «اكتب في ثلاثة أسطر كحد أقصى» أو «عند استخدام Slack API، استخدم chat.postMessage» (أمثلة إعادة الصياغة في القسم 3).
5. ملفات قواعد متضخمة أو مبعثرة
الرابط العادي من CLAUDE.md إلى SPEC.md لا يعني بالضرورة تحميل الملف المرتبط كاملاً عند البدء. يوسّع Claude Code استيرادات @path عند البدء، لكن محتواها يستهلك السياق أيضاً. فصل الملفات لتنظيمها يختلف عن تحميلها عند الحاجة فقط. وإذا تعارضت نسخ القواعد، فحدّد المصدر المعتمد ونطاق التطبيق.
متى تُحمَّل ملفات CLAUDE.md وAGENTS.md الموضوعة في المجلدات الفرعية (ويختلف ذلك بين Claude Code وCodex)، وكيف تجعل الذكاء الاصطناعي يلتزم بالقواعد في المستودع الأحادي عبر فحوص تلقائية، نتناوله بالتفصيل في مقال ملفات CLAUDE.md وAGENTS.md في المجلدات الفرعية.
تستند مواصفات Claude Code الواردة حتى الآن إلى وثائق الذاكرة الرسمية في Claude Code (حتى 21 سبتمبر 2026).
2. كيف تتحقق من تطبيق القواعد
ابدأ بفحص الوضع الحالي. اطرح هذه الأسئلة على الذكاء الاصطناعي وراجع ردوده:
| السؤال | ما الذي تتحقق منه |
|---|---|
| «اسرد جميع قواعد CLAUDE.md في نقاط.» | إذا غابت قاعدة، فتحقق عبر /context مما إذا كان ملفها محمّلاً |
| «قبل كتابة الشيفرة، حدّد قواعد CLAUDE.md التي ستلتزم بها.» | يذكّر بالقواعد المهمة قبل العمل. أما الالتزام بها فيظهر في الفروق بعد العمل |
| «اسرد الأفعال في الجولات الخمس الماضية التي قد تكون خالفت CLAUDE.md.» | اعتبر التقرير الذاتي مجرد قرينة، وأكّد النتيجة بمقارنتها بسجل الأوامر ورموز الخروج والملفات الناتجة |
رد الذكاء الاصطناعي بـ«قرأته» أو «فهمت» ليس دليلاً على التحميل ولا على التطبيق. الدليل هو عرض التحميل ونتائج التنفيذ.
أربع خطوات لعزل السبب
- افحص نقطة الدخول. في Claude Code، انظر هل يظهر CLAUDE.md المعني والقواعد في قسم Memory files ضمن
/context. إن لم تظهر، فافحص موضع الملف وإعدادات الاستبعاد (claudeMdExcludes). وإذا كان AGENTS.md يُحمّل مباشرة، فلن يظهر في هذه القائمة. ومع الإعداد الافتراضي، انظر هل يظهر عند البدء السطرno CLAUDE.md found; AGENTS.md loaded: …(أما AGENTS.md المستورد من CLAUDE.md فيظهر في القائمة). - فعّل شروط تطبيق القاعدة. للقواعد الخاصة بمسارات، اطلب من الوكيل قراءة ملف مطابق. إن لم يقرأه منذ الضغط، فقواعده لم يُعد تحميلها. وإذا أردت سجلاً بما حُمّل ومتى، فيمكنك تسجيل تحميل CLAUDE.md والقواعد بخطّاف
InstructionsLoaded(لا يعمل مع AGENTS.md المحمّل مباشرة). - جرّب مهمة صغيرة بلا ضرر. اطلب تعديل عينة يمكن الاستغناء عنها، بقواعد مثل «سمّ الملف قبل تغييره» و«اذكر أمر الاختبار ورمز الخروج بعد التنفيذ». لا تجعل حذف بيانات الإنتاج أو النشر تجربةً. وإذا اختبرت بعبارة سرية، فاكتبها في ملف التعليمات فقط ولا تضعها في السؤال.
- تحقق من النتيجة بصورة مستقلة. افحص الفروق بحثاً عن تغييرات غير متوقعة، وتأكد من تنفيذ الاختبارات المذكورة فعلاً ومن كفاية نطاق الفحص. سجّل الإعدادات وإصدار الأداة والملفات المستهدفة وقت التجربة، وأعد التجربة إذا تغير أي منها.
مثلاً، إذا حُمّلت قاعدة «اختبر قبل إنشاء الكوميت» ولم تُشغَّل الاختبارات، فلن يحل نقل الملف المشكلة. ما يحتاج إلى إصلاح هو صياغة القاعدة (انظر أمثلة إعادة الصياغة في القسم التالي) وآلية الفحص. واشتراط فحوص CI قبل الدمج يمنحك دليلاً مستقلاً عن تقرير الذكاء الاصطناعي نفسه.
إذا غاب CLAUDE.md المعني عن عرض التحميل، فصحّح موضع بدء الجلسة والإعدادات قبل زيادة التشديد في النص. وإذا استمرت المخالفات بعد تأكيد التحميل، فراجع دقة التعليمات وطريقة التحقق. يمنعك هذا الترتيب من تفسير كل إخفاق بأنه «نسيان الذكاء الاصطناعي».
3. حلول سريعة تجرّبها في خمس دقائق
1. افصل القواعد الدائمة عن التفاصيل التي تُقرأ عند الحاجة
ابدأ بالتوصية الرسمية لـClaude Code، وهي أقل من 200 سطر، لكن قلّل التكرار والشرح غير الضروري بدلاً من ملاحقة عدد الأسطر. مثلاً:
- القواعد الأساسية (10–20 سطراً) ← بداية CLAUDE.md
- مواصفات الخدمات التفصيلية ← ملفات SPEC-xxx.md منفصلة
- السجل والخلفية ← مجلد docs/
بعد نقل التفاصيل إلى ملف آخر، اذكر في ملف نقطة الدخول ما يجب قراءته قبل كل نوع من المهام. إذا استوردت كل ما يلزم لكل جلسة، فلن يقل سياق البدء بمجرد تقسيم الملفات. استخدم قواعد المسارات أو المهارات لتحميل التعليمات المشروطة عند الحاجة فقط.
2. أعد صياغة القواعد جملاً يمكن التحقق من الالتزام بها
إذا كانت القاعدة تُحمّل ولا تُتّبع، فانظر أولاً هل تذكر «ما الذي يُعد التزاماً بها». توصي وثائق Claude Code أيضاً بكتابة التعليمات بدقة تكفي للتحقق منها، وتضرب مثلاً: «شغّل npm test قبل الكوميت» بدلاً من «اختبر تغييراتك». وإذا خطوت خطوة أبعد وكتبت أيضاً ما يحدث عند الإخفاق وشروط الاستثناء، تصبح القواعد كما يلي.
| قبل إعادة الصياغة | بعد إعادة الصياغة | ما يمكن الحكم عليه لاحقاً |
|---|---|---|
| اختبر قبل إنشاء الكوميت | قبل الكوميت، شغّل npm test وتأكد من أن رمز الخروج 0. إذا أخفق، فلا تنشئ الكوميت واذكر أسماء الاختبارات التي أخفقت. لا تتخطَّ الاختبارات إلا إذا طلب المستخدم ذلك صراحة | الأمر المنفَّذ، ورمز الخروج، وسبب التخطي |
| نسّق الشيفرة | المسافة البادئة مسافتان | تظهر المخالفة بمجرد النظر إلى الفروق |
| نظّم الملفات | ضع معالجات API في src/api/handlers/ | يمكن الحكم من موضع كل ملف جديد |
| اكتب رسائل كوميت واضحة | ابدأ السطر الأول بأحد feat: أو fix: أو docs:، ولا تتجاوز 50 حرفاً | يمكن الحكم على كل كوميت في السجل على حدة |
بعد إعادة الصياغة، يمكن الحكم على الالتزام من الفروق وسجل الأوامر ورموز الخروج. وما دامت القاعدة قابلة للحكم، فستصبح كما هي شرطاً للفحص عندما تنقلها لاحقاً إلى Hooks أو CI (القسم 4).
3. أضف علامات للأولوية
تساعد علامات الأهمية البشر والذكاء الاصطناعي على فهم المقصود. لكن العلامات نفسها لا تفرض التنفيذ. يمكنك تعريفها هكذا:
- CRITICAL: قد تتسبب المخالفة بحادث في بيئة الإنتاج
- MUST: مطلوب دائماً
- SHOULD: متوقع في الأحوال المعتادة
- NICE TO HAVE: اختياري إذا سمح الوقت
تحدّد عبارة «CRITICAL: الاستعلامات المدمرة في قاعدة بيانات الإنتاج تتطلب موافقة مسبقة» العملية وشرط الموافقة. أما منع العمليات غير المصرح بها فعلياً فيحتاج أيضاً إلى إعدادات أذونات أو فحوص تسبق التنفيذ.
4. ذكّر بالقواعد في المحادثة
أضف في بداية الجلسة «اذكر أهم ثلاث قواعد قبل بدء العمل.» يذكّر التصريح بالقواعد، أما الالتزام بها فيظهر في النتائج بعد العمل.
5. أدرج شروط الإكمال في الخطة
أدرج «التحقق من القواعد» في تتبع مهام وكيل الذكاء الاصطناعي، ووضّح شروط إكمال كل خطوة. اطلب الأمر ورمز الخروج والنطاق الذي لم يُختبر، بدلاً من عبارة «تم الاختبار» وحدها. وإذا وُضعت علامة الاكتمال وخانة الأدلة فارغة، فلا تعتبر الخطوة مكتملة.
4. ضوابط طويلة الأمد: Hooks والمراجعة والمهارات
حوّل الشروط القابلة للتقييم إلى سكربتات، واضبط أذونات العمليات من الإعدادات. Hooks وCI ومراجعة الذكاء الاصطناعي والمهارات تؤدي أدواراً مختلفة. تسميتها جميعاً «فرضاً آلياً» تحجب ما لا تفحصه.
1. فرض الفحوص باستخدام Claude Code Hooks
تتيح ميزة Hooks في Claude Code تشغيل سكربتات قبل استدعاءات أدوات محددة أو بعدها. ويمكن بها بناء آلية يوقف فيها النظام العملية حتى لو نسي الذكاء الاصطناعي القاعدة.
مثلاً، يمكن لخطّاف PreToolUse أن:
- يكشف الأوامر الخطرة (
rm -rfوgit push --force) قبل تشغيل أداةBashويمنعها - يفحص أذونات الملف المستهدف أو حالة قفله قبل تشغيل أداة
Edit - يشغّل اختبارات المشروع قبل إنشاء الكوميت ويمنعه إذا أخفقت
إذا أردت أن يمنع خطّاف PreToolUse العملية، فاجعله يعيد رمز الخروج 2 أو JSON الرفض المناسب. إذا أعاد اختبار فاشل الرمز 1 مع نص عادي فقط، فهذا خطأ غير مانع وتستمر العملية. يعمل PostToolUse بعدها، فلا يمثل آلية للتراجع عن عملية اكتملت بالفعل.
لا يمنع الخطّاف إلا ما يقيّمه سكربته عند الحدث المحدد في الإعدادات. مراقبة Edit وحدها لا تشمل الكتابة عبر الصدفة. كما أن مطابقة سلاسل نصية خطرة لا تغطي كل الحالات. اجمع الخطّافات مع الأذونات والعزل وCI، واختبر مدخلات ينبغي قبولها وأخرى ينبغي رفضها.
2. توزيع المسؤوليات على وكلاء فرعيين
استخدم قدرات الوكلاء الفرعيين في Claude Agent SDK أو Cursor لإنشاء وكيل مخصص لتدقيق القواعد. قد تكشف مراجعة وكيل آخر لشيفرة الوكيل الرئيسي نواقص من زاوية مختلفة. لكن يمكن أن يرتكب الاثنان الخطأ نفسه أو يغفلا المسألة نفسها.
زوّد المراجع بالقواعد التي عليه فحصها والفروق والأدلة التي تنتظرها (أسماء الاختبارات أو رموز الخروج). طابق الملاحظات التي يعيدها مع الملفات الفعلية أو نتائج الاختبارات، وتعامل مع ما يخرج عن نطاقه على أنه غير متحقق منه.
3. استدعاء الإجراءات المتكررة عبر المهارات
في Claude Code، يمكنك وضع إجراء متكرر في .claude/skills/precommit/SKILL.md واستدعاؤه بأمرك الخاص /precommit. هذا مثال تنشئه أنت، وليس أمراً مدمجاً. ما زالت الملفات في المجلد القديم .claude/commands/ تعمل، لكن الوثائق الحالية تدمجها في المهارات. استدعاء الإجراء يختلف عن اجتياز جميع الفحوص، فانظر في النتائج عند انتهائه.
تجد مواضع الملفات وطريقة الاستدعاء في وثائق المهارات الرسمية. ضع الإجراء وشروط اجتيازه في المهارة، واطلب أدلة على تنفيذ الخطوات.
4. كشف المخالفات بسكربتات آلية
استخدم grep في CI أو خطّاف يسبق الكوميت لكشف الأنماط المحظورة. من أمثلتها:
- بقاء
console.logفي شيفرة الإنتاج - مفاتيح API مكتوبة مباشرة في الشيفرة
- غياب تعليقات حقوق النشر في بداية الملفات
لا تفحص السكربتات قواعد لم تُنفذ فيها ولا ملفات خارج نطاقها. اختبر الأمثلة الصحيحة والمخالفات وحالات فشل الجلب، واعرض عدد العناصر المفحوصة والمتروكة. فإذا تعذرت قراءة ملفين من عشرة مثلاً، فإن نجاح الثمانية الأخرى لا يعني «اجتياز جميع الملفات».
5. أفضل الممارسات حسب الأداة
نصائح لتصميم قواعد وكلاء الذكاء الاصطناعي
راجع وثائق قواعد Cursor وتعليمات GitHub Copilot المخصصة ودليل AGENTS.md من OpenAI لمعرفة شروط كل أداة. تستخدم تعليمات Copilot الخاصة بالمسارات ملفات *.instructions.md، ويختلف دعمها من ميزة إلى أخرى. وحد Codex البالغ 32 KiB هو حد افتراضي مجمّع بالبايت، وليس بعدد الأحرف أو الأسطر.
المبدأ المشترك هو «الإيجاز والدقة ووضوح الأولويات». تختلف أسماء الملفات ومواضعها بين الأدوات، لكن مبادئ الكتابة متشابهة.
6. ثلاثة أنماط خاطئة في تصميم القواعد
1. «اتبع أفضل الممارسات من فضلك»
الطلب وحده لا يعرّف «أفضل الممارسات». حدّد الأساليب التي يعتمدها مشروعك وكيفية التحقق منها. ولعبارة «اختبر بما يناسب»، سمّ أوامر الاختبار المطلوبة وخطوة سير العمل التي يجب إيقافها إذا أخفقت (أمثلة إعادة الصياغة في القسم 3).
2. تكرار القاعدة نفسها في ملفات متعددة
إذا وُضعت اصطلاحات الكوميت نفسها في CLAUDE.md وSPEC.md وREADME.md، فقد تتعارض النسخ الثلاث بعد التحديث. اختر مصدراً معتمداً واحداً واربط به من الملفات الأخرى.
3. كتابة «يجب قطعاً» في كل موضع
التشديد بالقدر نفسه على كل شرط يصعّب توصيل الأولويات. خصّص «CRITICAL» للشروط ذات العواقب الجسيمة فعلاً، واستخدم لغة عادية للباقي. تذكّر أن الإفراط في التشديد يفقده قيمته.
الخلاصة
عندما لا تُتّبع القواعد، افحص بالترتيب: شروط التحميل ← النطاق ← تعارض التعليمات ← نتائج التنفيذ. يُعاد إدراج CLAUDE.md الجذري بعد الضغط، لذا فالتعليمات التي تختفي بعد الضغط إما أُعطيت في المحادثة فقط، أو توجد في ملفات CLAUDE.md متداخلة أو قواعد خاصة بمسارات لم يُعد تحميلها بعد.
- لا تُحمّل: صحّح موضع الملف وإعدادات الاستبعاد وشروط تحميل AGENTS.md
- تُحمّل ولا تُتّبع: أعد صياغة القاعدة جملةً يمكن التحقق لاحقاً من الالتزام بها
- يجب تنفيذها في كل مرة: افحصها بواسطة Hooks أو CI، وحدّد العمليات المسموح بها من إعدادات الأذونات
دليل الاكتمال هو نتائج التنفيذ والمخرجات، لا الرد «قرأته».
الأسئلة الشائعة
س1. ما الطول المثالي لملف CLAUDE.md؟
التوجيه الرسمي هو أقل من 200 سطر لكل ملف، وتوضح الوثائق أن الملفات الأطول تستهلك سياقاً أكبر وتقلل الالتزام. وتجاوز 200 سطر لا يعني توقف التحميل في المنتصف (يُحمّل الملف كاملاً حتى 4 MiB). أبقِ القواعد المطلوبة في كل مرة فقط، وانقل القواعد التي تخص ملفات معينة إلى قواعد المسارات. أما الملفات المفصولة باستيرادات @path فتُحمّل هي أيضاً عند البدء، فلا يقل حجم السياق.
س2. هل أستخدم .cursorrules أم .cursor/rules/*.mdc في Cursor؟
للإعداد الجديد، استخدم .cursor/rules/*.mdc. اجعل لكل ملف قاعدة واحدة، مع أنماط glob لتحديد نطاقها. أما الصيغة القديمة .cursorrules فهي ملف واحد قد يصعب تنظيمه عندما يكبر.
س3. هل تزيد القواعد الطويلة صرامة التنفيذ؟
الطول وحده لا يجعل القواعد أشد صرامة، والوثائق الرسمية نفسها تذكر أن الملفات الطويلة تقلل الالتزام. إن أضفت شيئاً، فأضف شروطاً قابلة للتحقق وأمثلة محددة، واحذف التكرار والتناقض.
س4. ماذا لو استخدمت أدوات متعددة مثل Claude Code وCursor في مشروع واحد؟
اجمع القواعد المشتركة في مصدر معتمد واحد هو AGENTS.md، وافصل إعدادات كل أداة في نقطة دخولها. يدعم Codex وCursor ملف AGENTS.md. ومنذ v2.1.277، يقرأ Claude Code أيضاً AGENTS.md مباشرة إذا لم يوجد أي من CLAUDE.md أو .claude/CLAUDE.md أو CLAUDE.local.md في مجلد العمل أو المجلدات الأعلى منه. وإذا وُجد أحدها، فافتراضياً يُقرأ هو وحده، حتى إن مجرد إضافة CLAUDE.local.md الشخصي يوقف قراءة AGENTS.md. وفي المشاريع التي تستخدم CLAUDE.md أيضاً، اكتب فيه سطراً واحداً هو @AGENTS.md لاستيراده (ويمكن أيضاً ضبط Project instructions في /config على claude-md-and-agents-md لقراءة الملفين معاً). ولا تعمل القراءة المباشرة في الجلسات التي تمر عبر مزود خارجي مثل Amazon Bedrock أو التي عُطّل فيها القياس عن بُعد، ولا في أول جلسة بعد التثبيت أو التحديث، ولا في البيئات التي أُوقفت فيها الخطافات بإعدادات مثل disableAllHooks؛ فاستخدم الاستيراد فيها. ويمكنك معرفة المسار الذي قُرئ به الملف باتباع الخطوة الأولى في القسم 2.
س5. هل يمكن أن يقول الذكاء الاصطناعي «قرأته» من دون أن يكون قد قرأه؟
الرد ليس دليلاً على القراءة ولا على عدمها. افحص عرض التحميل باتباع خطوات التشخيص في القسم 2، وقارنه بالفروق ونتائج الاختبارات وسجل التنفيذ.