المدونة

ملف تعليمات واحد لـ Claude Code وCodex وCursor في 2026

Markdown

مصدر واحد للحقيقة من أجل Claude Code وCodex وCursor في 2026: متى يقرأ Claude Code ملف AGENTS.md بنفسه، واستيراد @AGENTS.md إلى CLAUDE.md، والرابط الرمزي، و/init.

قراءة المقال كاملًا

للاطلاع على معلومات عن الخدمة، راجع وثائق Ailoot.

ما الذي يتغير عند استخدام Claude Code وCodex وCursor معًا؟

الخلاصة الأساسية

في 2026، لا يقتصر الإعداد المعتاد لمبرمج يعمل بأسلوب vibe coding على أداة واحدة، بل يشمل 3–5 أدوات. Claude Code هو الأداة الرئيسية، وCodex للمهام المستقلة الطويلة، وCursor للتعديلات السريعة في بيئة التطوير المتكاملة. لكل أداة ملف تعليمات خاص بها: CLAUDE.md وAGENTS.md و.cursorrules. إذا أبقيت هذه الملفات متزامنة يدويًا، فستعدّل سطرًا واحدًا في خمسة مواضع، وتنسى تحديث Cursor، وبعد أسبوع سيعطي Claude وCodex نتيجتين مختلفتين للموجّه نفسه.

في المثال الموضح، Claude Code هو الأداة الرئيسية، بينما يُستخدم Codex وCursor لمهام محددة. يحتوي CLAUDE.md لدي على نحو 250 سطرًا من التعليمات: ما الذي ينبغي قراءته وبأي ترتيب، وما الذي يجب عدم لمسه، والأوامر المستخدمة للنشر، وقواعد تنسيق الالتزامات. عندما جرّبت Codex CLI على المشروع للمرة الأولى، لم يكن يعرف أيًا من هذه القواعد: نفّذ git push --force، وتفحّص .env، وأعاد تسمية الملفات بلا اكتراث.

نسخت CLAUDE.md يدويًا إلى AGENTS.md في البداية. وبعد أسبوعين، اكتشفت أن المشروع يحتوي بالفعل على أربع نسخ من التعليمات نفسها: في CLAUDE.md وAGENTS.md و.cursorrules و.windsurf/rules/. وكان الاختلاف بينها بسيطًا. هذه ليست مشكلة خاصة بـ Claude أو Cursor؛ بل هي الفخ الأساسي لأي نظام له مصادر متعددة للحقيقة. أناقش هذه المشكلة بتفصيل أكبر في دليل العمل متعدد الوكلاء.

في يونيو 2026، قدّمت وثائق ذاكرة Claude Code من Anthropic حلًا واحدًا: ملف مشترك مع استيراد. ومنذ سبتمبر 2026، يقرأ Claude Code ملف AGENTS.md بنفسه إذا لم يتضمن المشروع ملف CLAUDE.md، ويصبح الاستيراد ضروريًا عندما تكون لديك قواعد خاصة بـ Claude. أشرح أدناه متى يكفي ملف AGENTS.md واحد، وكيفية إعداد استيراد، وكيفية فصل القواعد المشتركة عن القواعد الخاصة بـ Claude.

هل يقرأ Claude Code ملف AGENTS.md بنفسه؟

الخلاصة الأساسية

نعم، ابتداءً من الإصدار 2.1.277 الذي صدر في 18 سبتمبر 2026، ولكن فقط إذا لم يوجد CLAUDE.md أو .claude/CLAUDE.md أو CLAUDE.local.md في دليل العمل أو في أي دليل أعلى منه. إذا وُجد CLAUDE.md، فسيقرأ Claude Code ذلك الملف وحده افتراضيًا، ويُضمّن AGENTS.md بسطر @AGENTS.md داخل CLAUDE.md أو باستخدام رابط رمزي. يتغير السلوك في /config، ضمن Project instructions. قبل سبتمبر، لم يكن Claude Code يقرأ AGENTS.md إطلاقًا، وكان الاستيراد هو الطريقة الوحيدة.

قبل سبتمبر 2026، كانت الإجابة «لا». ظل الطلب رقم #6235، الذي طالب بدعم AGENTS.md، مفتوحًا منذ أغسطس 2025، وأُغلق في 17 أغسطس 2026. كانت وثائق الذاكرة تشير طوال ذلك الوقت إلى حل واحد: إنشاء CLAUDE.md وإدراج AGENTS.md فيه بوصفه استيرادًا. وابتداءً من الإصدار 2.1.277، تقول الوثائق شيئًا مختلفًا:

يمكن لـ Claude Code قراءة AGENTS.md بوصفه تعليمات للمشروع، لذا يعمل المستودع المُعد مسبقًا لوكلاء آخرين من دون CLAUDE.md أو استيراد أو إعداد.

— Anthropic, https://code.claude.com/docs/en/memory#agents-md

تعتمد الملفات التي يقرأها Claude Code تحديدًا على الملفات الموجودة في المشروع:

الملفات في المشروعما يقرأه Claude Code
AGENTS.md، من دون CLAUDE.md أو CLAUDE.local.md في دليل العمل أو أي دليل أعلى منهAGENTS.md
AGENTS.md وCLAUDE.md (أو CLAUDE.local.md) في دليل العمل أو أي دليل أعلى منهCLAUDE.md فقط
CLAUDE.md يتضمن السطر @AGENTS.mdCLAUDE.md، وملف AGENTS.md المضمّن فيه عبر الاستيراد

في هذا الفحص، تُحتسب ملفات CLAUDE.md و.claude/CLAUDE.md وCLAUDE.local.md الموجودة في دليل العمل وأي دليل أعلى منه. أما ملف ~/.claude/CLAUDE.md الشخصي، والملف الذي تديره المؤسسة، والقواعد الموجودة في .claude/rules/، فلا تُحتسب؛ إذ تُحمّل بالتوازي مع AGENTS.md.

عندما لا يكون هناك CLAUDE.md، يقرأ Claude Code عند بدء التشغيل جميع ملفات AGENTS.md و.claude/AGENTS.md الموجودة في دليل العمل والأدلة الأعلى منه، ويحمّل ملف AGENTS.md الموجود في دليل فرعي عند فتح ملف في ذلك الدليل. وتعمل أيضًا استيرادات @path داخل AGENTS.md. لا يقرأ Claude Code ملفات AGENTS.local.md أو AGENTS.override.md أو محتويات دليل .agents/.

المأزق هنا هو أن CLAUDE.local.md الشخصي يُحتسب أيضًا. إذا أنشأت واحدًا للاحتفاظ بقواعد لم تلتزم بها بعد، فسيتوقف Claude Code بصمت عن قراءة AGENTS.md. والإعداد أدناه هو الحل.

يتغير السلوك في /config، ضمن Project instructions:

الإعدادما يقرأه Claude Code
claude-md-or-agents-md (الافتراضي)CLAUDE.md، أو AGENTS.md إذا لم يوجد هو ولا CLAUDE.local.md
claude-md-and-agents-mdكلا الملفين: في كل دليل، CLAUDE.md أولًا ثم AGENTS.md
claude-mdCLAUDE.md فقط
managed-onlyملف CLAUDE.md المؤسسي المُدار والذاكرة التلقائية فقط

إذا أردت الاحتفاظ بـ CLAUDE.local.md من دون فقدان AGENTS.md، فاضبط claude-md-and-agents-md. لن تحدث قراءة مزدوجة: إذا كان AGENTS.md مضمنًا بالفعل عبر سطر @AGENTS.md أو رابط رمزي، فلن يحمّله Claude Code مرة ثانية، بصرف النظر عن الإعداد.

يمكنك التحقق مما إذا كان الملف قد جرى تحميله باستخدام الأمر /memory: ابتداءً من الإصدار 2.1.280، يظهر مسار AGENTS.md في القائمة. في الإصدارات الأقدم من 2.1.277، وفي الجلسات التي عُطّلت فيها إضافة agents-md المدمجة، لا يقرأ Claude Code إلا CLAUDE.md، ولا يظهر بند Project instructions في /config. قبل الإصدار 2.1.281، تصرفت جلسات Amazon Bedrock والجلسات التي عُطّلت فيها بيانات القياس عن بُعد بالطريقة نفسها. وقد لا يُحمّل AGENTS.md في أول جلسة بعد التحديث من إصدار أقدم؛ لكنه يعمل بدءًا من الجلسة التالية.

ماذا يعني هذا للإعداد الذي يستخدم ملفًا واحدًا؟ إذا لم تكن لديك قواعد خاصة بـ Claude، فيمكنك الاستغناء عن CLAUDE.md: يكفي AGENTS.md، وسيقرأه Claude Code وCodex وCursor. أما إذا كانت لديك قواعد من هذا النوع (وضع التخطيط للأدلة الحساسة، والمهارات، والخطافات)، فستحتاج إلى CLAUDE.md، وسيتوقف Claude Code عن قراءة AGENTS.md بنفسه. عندئذٍ أدرج AGENTS.md داخل CLAUDE.md باستخدام السطر @AGENTS.md؛ ويعمل هذا الإعداد كما كان قبل سبتمبر. كما أنه مفيد مع إصدارات Claude Code الأقدم. أشرح ذلك بالتفصيل أدناه.

كيف تستورد @AGENTS.md داخل CLAUDE.md؟

الخلاصة الأساسية

يلزم الاستيراد عندما يحتوي المشروع على CLAUDE.md: فوجوده يعني أن Claude Code لا يقرأ AGENTS.md بنفسه افتراضيًا. لإعداده، اكتب السطر @AGENTS.md في أعلى ملف CLAUDE.md. عند بدء جلسة Claude Code، يُدرج محتويات AGENTS.md مكان هذا السطر ويقرأ الناتج كنص واحد. ويمكنك إضافة قسم «Claude Code» أسفل الاستيراد، يتضمن قواعد تنطبق على Claude وحده. تعمل الاستيرادات بالمسارات النسبية والمطلقة، ويمكن تعشيقها حتى أربعة مستويات.

مثال عملي بسيط من الوثائق الرسمية:

@AGENTS.md

## Claude Code

Use plan mode for changes under `src/billing/`.

إليك ما يحدث. السطر الأول، @AGENTS.md، هو توجيه للاستيراد. عندما يحلل Claude Code ملف CLAUDE.md عند بدء الجلسة، يعثر على هذا الاستيراد ويضع كامل محتويات AGENTS.md مكانه. بعد ذلك يأتي العنوان ## Claude Code: إنه مجرد markdown، لكنه يؤدي وظيفة قسم «إضافات خاصة بـ Claude». وتحته قاعدة تنطبق على Claude Code وحده: استخدام plan mode للتغييرات في دليل billing. لا يفتح Codex CLI أو Cursor هذا الملف إطلاقًا؛ بل يستخدمان ملف AGENTS.md العادي.

اقتباس من الوثائق يشرح كيفية عمل الاستيرادات:

يمكن لملفات CLAUDE.md استيراد ملفات إضافية باستخدام الصيغة @path/to/import. وتُوسّع الملفات المستوردة وتُحمّل في السياق عند بدء الجلسة مع ملف CLAUDE.md الذي يشير إليها.

— Anthropic, https://code.claude.com/docs/en/memory

بعض التفاصيل العملية:

  • المسارات النسبية والمطلقة. المسار @AGENTS.md نسبي إلى الملف الذي يحتوي على الاستيراد. أما @/Users/me/shared/rules.md أو @~/.claude/personal.md فهما مساران مطلقان. أستخدم @~/.claude/personal.md للتفضيلات الشخصية التي لا أريد وضعها في المستودع.
  • عمق من أربع قفزات. يمكن أن يستورد AGENTS.md الملف @docs/coding-style.md، ويمكن أن يستورد coding-style.md ملفًا آخر، حتى أربعة مستويات. وهذا يكفي لأي بنية واقعية.
  • علامات backtick تمنع الاستيراد. إذا ورد في النص `@README`، فهذه مجرد إشارة إلى الاسم وليست استيرادًا. وهذا مفيد عند شرح طريقة عمل الاستيرادات للقراء من دون تفعيل أحدها.
  • الموافقة على الملفات خارج المشروع. إذا أشار الاستيراد إلى ملف خارج دليل العمل، مثل @~/.claude/personal.md، يعرض Claude Code في المرة الأولى مربع حوار يسرد تلك الملفات. إذا رفضت، تظل الاستيرادات الخارجية معطّلة ولا يظهر مربع الحوار مجددًا. ولا يؤدي @AGENTS.md في جذر المشروع إلى عرض مربع حوار. وهذا يحميك من تحميل ملف غير ذي صلة إلى السياق عن طريق الخطأ.

بعد أن انتقلت إلى هذا الإعداد في المشروع المذكور، تقلّص CLAUDE.md لدي من 250 سطرًا إلى 60: @AGENTS.md وخمس إلى سبع قواعد تخص Claude Code وحده (وضع التخطيط للأدلة الحساسة، وما لا ينبغي لمسه في منطقة الإدارة، وكيفية صياغة الالتزامات). أما كل ما هو مشترك فيوجد في AGENTS.md الذي يقرأه Codex وCursor.

متى تختار رابطًا رمزيًا ومتى تختار استيرادًا؟

الخلاصة الأساسية

تقدم Anthropic آليتين: الاستيراد باستخدام @AGENTS.md أو الرابط الرمزي ln -s AGENTS.md CLAUDE.md. الرابط الرمزي أبسط؛ فهو مجرد اسم مستعار ولا يتطلب تغيير الملفات. لكن له ثلاث عيوب: يتطلب Windows امتيازات المسؤول، ولا يمكنك إضافة قواعد خاصة بـ Claude إلى CLAUDE.md، وأحيانًا يعرض Git الرابط الرمزي كعنصر غريب في diff. الاستيراد هو النهج الشامل. إذا لم تكن لديك قواعد خاصة بـ Claude، فلن تحتاج إلى أي منهما ابتداءً من الإصدار 2.1.277، لأن Claude Code سيقرأ AGENTS.md بنفسه.

تعرض الوثائق خيار الرابط الرمزي هكذا:

ln -s AGENTS.md CLAUDE.md

ثم تقدم فورًا تحذيرًا صريحًا بشأن Windows:

إذا كنت أنت أو أي شخص يستنسخ المستودع يعمل على Windows، فاستخدم استيراد @AGENTS.md. يتطلب إنشاء رابط رمزي هناك امتيازات المسؤول أو Developer Mode، وإذا لم يكن core.symlinks مفعّلًا، فسيستنسخ Git الرابط الملتزم به كملف نصي عادي، تاركًا ملف CLAUDE.md من سطر واحد بدلًا من التعليمات الموجودة في تلك النسخة.

— Anthropic, https://code.claude.com/docs/en/memory

جدول المقارنة:

المعياراستيراد @AGENTS.mdرابط رمزي ln -s
يعمل على Windows من دون امتيازات المسؤولنعملا (يتطلب Developer Mode)
إضافة قواعد خاصة بـ Claude ممكنةنعم، أسفل الاستيرادلا، فالملف مطابق
يظهر في Git كملف markdown عادينعمكرابط (حسب core.symlinks)
استيراد ملفات متعددة ممكننعم، حتى أربع قفزاتلا، واحد مقابل واحد
التخزين المؤقت/الإبطال في Claude Codeالسلوك المعتاد لـ CLAUDE.mdيعمل، لكن للروابط الرمزية مشكلات جانبية في البيانات الوصفية
الخيار الافتراضيمناسب للجميعفقط إذا لم يكن الاستخدام عبر منصات مختلفة مهمًا

أستخدم الاستيرادات في المشروع المذكور. وهذه أسبابي:

  1. الفريق يستخدم أنظمة مختلفة. أستخدم Mac؛ وفي المثال، ينقسم الفريق بالتساوي تقريبًا بين مستخدمي Windows وMac. إذا ظهر رابط رمزي في المستودع، فسيُستنسخ لمستخدمي Windows الذين لا يملكون Developer Mode كملف نصي عادي يحتوي على سطر واحد، AGENTS.md. وهذا يسبب أخطاء غريبة: تعمل القواعد أحيانًا ولا تعمل أحيانًا أخرى، ولا يتضح السبب.
  2. أريد قواعد خاصة بـ Claude. يحتوي CLAUDE.md لدي، أسفل @AGENTS.md، على قسم «Claude Code» مع قواعد مثل استخدام --effort high لمهام الهندسة المعمارية، وتشغيل npm run build قبل git push، وعدم استدعاء /api/v1/deploy يدويًا. لا يفهم Codex هذه الأوامر.
  3. تصحيح الأخطاء أسهل. عندما يحدث خطأ، أفتح CLAUDE.md وأرى الاستيراد والتعديلات التي أضفتها. لا يحمل الرابط الرمزي إشارة إلى أن «هذا أُضيف هنا». لمزيد من المعلومات عن تصحيح إعدادات Claude Code، راجع دليل الوضع الآمن.

إذا لم تكن لديك قواعد خاصة بـ Claude، فلن يعود الرابط الرمزي ضروريًا ابتداءً من الإصدار 2.1.277: احذف CLAUDE.md وسيقرأ Claude Code AGENTS.md بنفسه. احتفظ بالرابط الرمزي فقط إذا كان أحد أعضاء الفريق يستخدم إصدارًا أقدم من 2.1.277 ولا يستطيع التحديث. وإذا كانت لديك قواعد خاصة بـ Claude، فالاستيراد أكثر ملاءمة في تسع حالات من عشر.

ماذا يقرأ Codex وCursor وCopilot وWindsurf وGemini CLI؟

الخلاصة الأساسية

تقرأ كل أداة ملفها الخاص، وأحيانًا أكثر من ملف. يقرأ Claude Code ملف CLAUDE.md، ومنذ سبتمبر 2026 يقرأ أيضًا AGENTS.md إذا لم يتضمن المشروع CLAUDE.md. يقرأ Codex CLI الملفين AGENTS.md وAGENTS.override.md. يقرأ Cursor الصيغة الأقدم .cursorrules أو الصيغة الأحدث .cursor/rules/*.mdc، ومنذ صيف 2026 يقرأ أيضًا AGENTS.md. يقرأ Copilot الملف .github/copilot-instructions.md أو ملفات .github/instructions/*.instructions.md. يقرأ Windsurf الصيغة الأقدم .windsurfrules أو الصيغة الأحدث .windsurf/rules/. يقرأ Gemini CLI الملف GEMINI.md. وقد اعتمد Aider وCline بالفعل AGENTS.md.

خريطة للأدوات السبع الرئيسية (استنادًا إلى الوثائق الرسمية لكل أداة):

الأداةملف التعليمات الرئيسيالبدائلهل تقرأ AGENTS.md؟
Claude CodeCLAUDE.md~/.claude/CLAUDE.md، ./.claude/CLAUDE.md، سياسة مُدارةنعم، إذا لم يتضمن المشروع CLAUDE.md (منذ 2.1.277)، وإلا فمن خلال استيراد
Codex CLI (OpenAI)AGENTS.mdAGENTS.override.mdنعم (أصليًا)
Cursor.cursor/rules/*.mdc.cursorrules (مهمل)نعم
GitHub Copilot.github/copilot-instructions.md.github/instructions/*.instructions.mdمن خلال الإضافات
Windsurf.windsurf/rules/.windsurfrules (مهمل)نعم
Gemini CLIGEMINI.md-لا
Aider وCline وopencodeAGENTS.md-نعم (أصليًا)

ما النتيجة؟ إذا احتوى المستودع على AGENTS.md (بالإضافة إلى CLAUDE.md يتضمن استيرادًا عند الحاجة إلى قواعد خاصة بـ Claude)، فستحصل خمس أدوات من أصل سبع تلقائيًا على تعليمات محدّثة. ويمكن ترك Cursor وWindsurf، اللذين يملكان ملفات أصلية خاصة بهما، كما هما (AGENTS.md يُقرأ أيضًا بواسطتهما)، أو إضافة استيراد @AGENTS.md إليهما؛ لكن الصيغة تختلف ولا تحظى بالدعم دائمًا.

أبسط استراتيجية لمشروع جديد:

  1. ضع كل القواعد المشتركة في AGENTS.md؛ فـ 95% من القواعد تنتمي إليه.
  2. أنشئ CLAUDE.md إذا احتجت إلى قواعد خاصة بـ Claude: ضع @AGENTS.md في السطر الأول، ثم أضف قسمًا لقواعد Claude وحده. إذا لم تكن هناك قواعد من هذا النوع، فلا حاجة إلى CLAUDE.md؛ فمنذ الإصدار 2.1.277 يقرأ Claude Code ملف AGENTS.md بنفسه.
  3. احتفظ بـ .cursor/rules/ لـ Cursor في الحالات النادرة التي تحتاج فيها إلى أمر خاص بـ Cursor (@Codebase و@Docs).
  4. اتبع النهج نفسه مع Windsurf: تخلّص من .windsurfrules القديم؛ واستخدم .windsurf/rules/ الجديد فقط عند الحاجة إلى أنماط تناسب صيغته.

يمنحك هذا النهج 80% من الفائدة مقابل 20% من الجهد. ومن واقع خبرتي، عندما كنت أنظم الفرق المختلطة في «Antigravity»، كان الاحتفاظ بأكثر من مصدرين للحقيقة (المصدر المشترك وقواعد Claude وحده) يصبح مرهقًا. إذا أضاف أحد أعضاء الفريق قاعدة إلى .cursorrules ونسي AGENTS.md، فلن يتفق Cursor وCodex بعد أسبوع.

كيف يلتقط /init في Claude Code ملف AGENTS.md موجودًا بالفعل؟

الخلاصة الأساسية

ينشئ /init ملف CLAUDE.md مما هو موجود بالفعل في المستودع، ويوفر 20–30 دقيقة من العمل اليدوي. افتراضيًا، يلتقط قواعد Cursor (.cursor/rules/ و.cursorrules) وقواعد Copilot (.github/copilot-instructions.md)، بينما يقرأ AGENTS.md و.windsurfrules و.clinerules في وضع CLAUDE_CODE_NEW_INIT=1. ويبدأ الوضع نفسه تدفقًا تفاعليًا متعدد المراحل: يطرح أسئلة، ويستكشف الشيفرة عبر subagent، ويقترح خطة قبل الكتابة. منذ سبتمبر 2026، أصبح لـ /init جانب سلبي في المشروع الذي يحتوي على AGENTS.md: إذ يعطّل ملف CLAUDE.md الجديد قراءة AGENTS.md مباشرة، فتتوزع القواعد على ملفين.

تصف Anthropic الأمر /init في وثائقها كما يلي:

تقرأ عملية تشغيل /init ملفات تعليمات الأدوات الأخرى وتنقل الأجزاء ذات الصلة إلى ملف CLAUDE.md الذي تنشئه: قواعد Cursor من .cursor/rules/ أو .cursorrules، وقواعد Copilot من .github/copilot-instructions.md، ومع CLAUDE_CODE_NEW_INIT=1 تقرأ أيضًا AGENTS.md و.devin/rules/ و.windsurf/rules/ أو .windsurfrules و.clinerules.

— Anthropic, https://code.claude.com/docs/en/memory

ما معنى ذلك عمليًا؟ كان في المستودع الذي وصفته ملف .cursorrules من فترة تجربتي لـ Cursor (نحو 80 سطرًا)، وملف AGENTS.md (120 سطرًا جمعته يدويًا). عندما شغّلت claude /init، أخذ الأمر الملفين، وأزال القواعد المتشابهة، وأنشأ ملف CLAUDE.md منظمًا في دقيقة. راجعته لاحقًا وأجريت تعديلات بسيطة: أزلت العناصر القديمة وأضفت بنية بعناوين. كان ذلك أسرع من إعادة كتابته من الصفر.

يُفعّل متغير بيئة الوضع التفاعلي الذي يقرأ فيه /init ملف AGENTS.md أيضًا:

CLAUDE_CODE_NEW_INIT=1 claude

بعد بدء /init، يطرح Claude سلسلة من أسئلة التوضيح: ما العناصر المراد إعدادها (CLAUDE.md وskills وhooks)، وما حزمة التقنيات التي يستخدمها المشروع، وما الأوامر التي ينبغي استخدامها للاختبارات. ثم يستكشف subagent قاعدة الشيفرة، قارئًا package.json وREADME.md وملفات الإعداد، ويملأ الأجزاء الناقصة. وفي النهاية، يعرض مقترحًا يمكنك تعديله قبل حفظه. لمزيد من المعلومات عن إعداد Claude Code عند بدء مشروع، راجع الدليل المنفصل.

والآن إلى الجانب السلبي. إذا كان المشروع يحتوي بالفعل على ملف AGENTS.md نشط، فسينشئ /init بجانبه ملف CLAUDE.md يحتوي على نسخة من قواعده. ومنذ ذلك الحين، لن يقرأ Claude Code افتراضيًا سوى CLAUDE.md، فتعود المشكلة إلى وجود مصدرين للحقيقة: تحدّث أنت AGENTS.md بينما يواصل Claude العمل من النسخة القديمة. وينفذ الأمر /import شيئًا مشابهًا؛ إذ يضيف نسخة واحدة من AGENTS.md إلى CLAUDE.md. للحفاظ على مصدر واحد، ضع استيراد @AGENTS.md في السطر الأول من CLAUDE.md بعد /init، واحذف من CLAUDE.md كل ما يكرر محتوى AGENTS.md.

يمثل /init نقطة البداية المناسبة لمشروع جديد أو مشروع تنقله من Cursor أو Copilot. لا حاجة إلى البحث عبر الإنترنت عن «أفضل قالب لـ CLAUDE.md»؛ إذ تأخذ Anthropic محتويات المستودع في الحسبان بالفعل. إذا كان المشروع يحتوي مسبقًا على AGENTS.md نشط ولا توجد قواعد خاصة بـ Claude، فلا داعي إلى /init: سيقرأ Claude Code AGENTS.md بنفسه.

كيف تفصل التعليمات المشتركة عن التعليمات الخاصة بـ Claude؟

الخلاصة الأساسية

ضع القواعد التي يفهمها أي وكيل ذكاء اصطناعي في AGENTS.md: ما الذي لا ينبغي لمسه، وكيفية تسمية الفروع، وأن .env يحتوي على سر، والأوامر المستخدمة للاختبارات. وضع القواعد الخاصة بـ Claude Code في CLAUDE.md (أسفل الاستيراد): وضع التخطيط، والمهارات، والخطافات، ومراجع المهارات، وأسماء النماذج بحسب الإصدار. التمييز بسيط: إذا بدأت القاعدة بـ «ينبغي لـ Claude»، فهي تنتمي إلى CLAUDE.md. وإذا بدأت بـ «ينبغي للأداة»، فهي تنتمي إلى AGENTS.md.

أفصل بينها وفق هذا المبدأ. القواعد المشتركة التي أضعها في AGENTS.md:

  • ما لا ينبغي لمسه في الشيفرة. مجلدات .env وnode_modules وprisma/migrations (عبر prisma migrate فقط) و.next/ و.git/.
  • كيفية تسمية الأشياء. الفروع: feat/ وfix/ وchore/. الالتزامات: بادئات feat: وfix: وdocs: تتبعها عبارة وصفية قصيرة. ملفات المكونات بأسماء kebab-case.
  • أوامر الاختبار وlint. npm run build وnpm run lint وnpm test. والأمر الواجب تشغيله قبل git push.
  • المبادئ المعمارية. ما يوضع في src/lib/ وما يوضع في src/components/ وأين يوجد منطق الأعمال وأين توجد واجهة المستخدم.
  • الأمان. لا تلتزم بالأسرار مطلقًا. ادخل إلى قاعدة بيانات الإنتاج عبر prod-psql فقط. واتصل بالإنتاج عبر SSH باستخدام الاسم المستعار prod، لا root@IP.

قواعد Claude الخاصة التي أضعها في CLAUDE.md (أسفل @AGENTS.md):

  • وضع التخطيط. استخدم plan mode لإجراء تغييرات في الأدلة الحساسة (مثل src/billing/).
  • مستوى الجهد. استخدم --effort high لمهام الهندسة المعمارية وmedium للعمل المعتاد.
  • Skills. أي وكلاء ذكاء اصطناعي ومهارات ينبغي تشغيلها في مواقف مختلفة. مثلًا: «عند العمل على دليل، شغّل المهارة build-masterskaya-guide».
  • ذاكرة Claude. ما ينبغي وضعه في الذاكرة التلقائية وما ينبغي وضعه في CLAUDE.local.md. لمزيد من المعلومات عن ذاكرة Claude، راجع دليل Memory وCLAUDE.md.
  • Hooks. إذا احتوى .claude/settings.json على hooks مهيأة، فاشرح في CLAUDE.md وظيفتها (لا يعرف Codex وCursor عنها ولا يحتاجان إلى ذلك).
  • Skills والأوامر. قائمة بأوامر slash التي أستخدمها كثيرًا (/init و/cd و/memory و/plan).

ليس الحد الفاصل واضحًا دائمًا. فمثلًا، «لا تنفذ git push --force على main مطلقًا» قاعدة مشتركة بوضوح، لذا توضع في AGENTS.md. أما «عند تنفيذ git push على فرع hot، استخدم وضع التخطيط أولًا» فهي خاصة بـ Claude Code، لذا توضع في CLAUDE.md. اختبرها بهذا السؤال: «إذا أزلت Claude Code غدًا وأبقيت Codex وحده، فهل تظل هذه القاعدة سارية؟». إذا كانت الإجابة نعم، فضعها في AGENTS.md. وإذا كانت لا، فضعها في CLAUDE.md.

ما الذي يوضع في AGENTS.md، وما الذي يوضع في CLAUDE.md أو .claude/rules؟

الخلاصة الأساسية

في المشروع الكبير، لا يكفي ملف AGENTS.md واحد؛ إذ يكبر أكثر من اللازم، ويضيف كل وكيل مواد غير ضرورية إلى سياقه. الحل هو دليل .claude/rules/ يضم ملفات منفصلة حسب الموضوع، مع واجهة YAML أمامية paths: لتفعيل القواعد بحسب المسار. مثلًا، لا تنطبق قاعدة API إلا عندما يعمل Claude في src/api/. وهذا يوفر مساحة كبيرة في نافذة السياق. والمكافئ في Cursor هو .cursor/rules/، وفي Windsurf هو .windsurf/rules/.

إذا تجاوزت القواعد 200 سطر، فقد حان وقت تقسيمها. توصي وثائق Anthropic باستهداف 200 سطر لكل ملف، لأن ملفات CLAUDE.md الطويلة تبدأ بفقدان الالتزام بها تدريجيًا ومن دون تنبيه: يبدو أن Claude يقرأها، لكنه يتبعها بمعدل أقل.

بنية لمشروع كبير تناسبني:

my-project/
├── AGENTS.md                    # 100-150 lines, shared
├── CLAUDE.md                    # 30-50 lines: @AGENTS.md + Claude-only
└── .claude/
    ├── CLAUDE.md                # alternative to root file, same file
    └── rules/
        ├── api.md               # with paths: ['src/api/**']
        ├── components.md        # with paths: ['src/components/**']
        ├── testing.md           # without paths, always active
        └── security.md          # without paths, always active

يمكن أن يحتوي كل ملف في .claude/rules/ على واجهة أمامية:

---
paths:
  - "src/api/**/*.ts"
---

# API rules
- Every endpoint validates input with zod
- Errors use the standard `{error, code}` format
- OpenAPI comments are required

لا يحمّل Claude هذه القواعد إلا عند العمل على ملفات تطابق هذا النمط. إذا عدّل src/components/Button.tsx، فلن تُضاف قواعد API إلى السياق. وبذلك لا تُستهلك نافذة السياق إلا بما هو ذو صلة. ويعمل دليل .claude/rules/ أيضًا من دون CLAUDE.md: إذا لم يتضمن المشروع سوى AGENTS.md، تُحمّل قواعده إلى جانبه ولا تعطل القراءة المباشرة لـ AGENTS.md.

يدعم Cursor وWindsurf النهج نفسه عبر الدليلين .cursor/rules/ و.windsurf/rules/. ويمكن لمعيار AGENTS.md الإشارة إلى هذين الدليلين، لكن الصيغة المشتركة بين الأدوات لم تستقر بالكامل بعد. من الأسلم وضع القواعد المشتركة في AGENTS.md وتكرار القواعد المحددة بحسب المسار في .claude/rules/ و.cursor/rules/؛ فهذه حالات خاصة نادرة، وليست معظم القواعد.

مواضع مفيدة لملف CLAUDE.md (من الأوسع نطاقًا إلى الأضيق):

المستوىالموقعالغرض
سياسة مُدارة/Library/Application Support/ClaudeCode/CLAUDE.md (Mac)، /etc/claude-code/CLAUDE.md (Linux)قواعد الشركة، وIT/DevOps
المستخدم~/.claude/CLAUDE.mdتفضيلات شخصية لجميع المشاريع
المشروع./CLAUDE.md أو ./.claude/CLAUDE.mdقواعد فريق المشروع
محلي./CLAUDE.local.md (ضمن .gitignore)تفضيلات شخصية لمشروع محدد

قد يحتوي ملف ~/.claude/CLAUDE.md مثلًا على قاعدتين: «أجب باللغة التي يفضلها المستخدم» و«اكتب Ailoot بهذه الطريقة بالضبط». تنطبق هذه القواعد على كل مشروع، لذا لا حاجة إلى تكرارها في كل مستودع.

من هذه المستويات الأربعة، لا يعطل القراءة المباشرة لـ AGENTS.md سوى CLAUDE.md على مستوى المشروع وCLAUDE.local.md. ولا يعيقها ملف ~/.claude/CLAUDE.md الشخصي أو السياسة المُدارة؛ إذ يقرأهما Claude Code بالتوازي مع AGENTS.md.

ماذا تفعل إذا كان AGENTS.md في مشروعك قديمًا بالفعل؟

الخلاصة الأساسية

إذا كان AGENTS.md قد أُعد في 2025 لـ Codex أو Aider ولم يُحرر منذ ذلك الحين، فافتح المشروع في Claude Code واطلب من Claude تحرير الملف. AGENTS.md وثيقة متجددة، ومواصفة Linux Foundation يجري تحديثها. القاعدة الأساسية لإبقائه محدّثًا هي أن تجيب كل قاعدة عن السؤال: «ما الذي سئمت من تكراره على Claude/Codex؟». إن لم تفعل، فأرشفها.

في المشروع الذي وصفته، كان لدي ملف AGENTS.md من مايو 2025: 180 سطرًا، وكثير منها قديم (يذكر نقاط نهاية Anthropic API التي تغيرت منذ ذلك الحين؛ وأمثلة على صيغة claude --tools التي لم تعد موجودة؛ وقواعد عن ~/.claude/projects/ تستند إلى بنية قديمة).

الخطة التي استخدمتها لتحديثه:

  1. راجعه باستخدام claude في وضع التخطيط. أفتح المستودع، وأشغّل claude --safe-mode، ثم أطلب: “أعِد قراءة AGENTS.md واقترح قائمة بالعناصر القديمة أو المكررة. لا تعدّل الملف؛ اكتفِ بسردها.” حصلت خلال دقيقتين على قائمة تضم 23 عنصرًا للمراجعة.
  2. أزل العناصر القديمة بوضوح. من أصل 23 عنصرًا، كان 9 قديمًا بوضوح: صياغة الأوامر، ونقاط النهاية، وأسماء الخيارات. حذفت تلك الأسطر.
  3. ادمج المكررات. كان هناك 6 عناصر أخرى تكرر المعنى نفسه بصيغ مختلفة («لا تفرض الدفع»، و«لا تستخدم --force مطلقًا»، و«تجنب git push -f»). جمعتها في سطر واحد.
  4. أضف عناصر جديدة. أضفت ما لاحظت أن Claude/Codex يخطئان فيه باستمرار خلال الشهر الماضي، وفق قاعدة «سطر واحد لكل نمط خطأ». نتج عن ذلك 8 عناصر جديدة.
  5. شغّل subagent لإجراء مراجعة أخيرة. طلبت مراجعة من Claude بالتوجيه: “اعثر على التناقضات والالتباسات والتكرارات.” وجد ثلاث صيغ يمكن توضيحها، فأصلحتها.

بعد ساعة، أصبح AGENTS.md بطول 110 أسطر ومحدّثًا، وكنت أعرف محتوى كل سطر فيه. وكان من السهل إنشاء CLAUDE.md من 30 سطرًا انطلاقًا منه. كما أصبح Codex أكثر حرصًا بوضوح على الاختبارات بعد ذلك؛ وأظن أن بعض قراراته «الغريبة» كانت ناتجة عن اتباعه بحسن نية تعليمات قديمة.

المبادئ الأساسية للحفاظ على ملف AGENTS.md حيًّا:

  • كل قاعدة تعالج خطأً متكررًا. إذا لم تخطر لي قاعدة ما خلال الشهر، فلا فائدة من الإبقاء عليها.
  • اكتب القواعد بصيغة أوامر، لا نظريات. «استخدم مسافتين» قاعدة. أما «ينبغي أن يكون نمط الشيفرة أنيقًا» فليست قاعدة.
  • التفاصيل أفضل من العموميات. «شغّل npm run build قبل git push» قاعدة. أما «اختبر تغييراتك» فليست قاعدة.

ما الذي لا يعمل إطلاقًا مع هذا الإعداد؟

الخلاصة الأساسية

لا يجعل استيراد @AGENTS.md الأدوات المختلفة تتصرف كأداة واحدة. لكل أداة خصائصها: لا يعرف Codex CLI شيئًا عن .claude/rules/ أو hooks. ولدى Cursor محرك إكمال تلقائي خاص به لا يقرأ CLAUDE.md أثناء إكمال النص. ويتبع Copilot ملف .github/copilot-instructions.md، ولا تكفيه القواعد الموجودة في AGENTS.md وحده. ليست الفكرة «ملف واحد = سلوك واحد»، بل «مصدر واحد للقواعد الأساسية، ثم إضافات خاصة بكل أداة».

بعض الأمور التي تعلمتها بالطريقة الصعبة خلال ستة أشهر من العمل بهذا الإعداد:

1. لا يستخدم الإكمال التلقائي في Cursor ملف AGENTS.md. عندما يقترح Cursor إكمال سطر في المحرر، فإنه لا يقرأ AGENTS.md في الوقت الفعلي؛ إذ يعمل محرك سريع منفصل. لا تؤثر قواعد AGENTS.md إلا عندما ترسل طلبًا في الدردشة داخل Cursor. وهذا يعني أن كتابة «لا تستخدم var، بل استخدم const» في AGENTS.md لن تؤثر في الإكمال التلقائي؛ بل يجب ضبط ذلك عبر ESLint أو إعداد TypeScript.

2. لا تعمل hooks الخاصة بـ Claude Code في AGENTS.md مع Codex. إذا كان .claude/settings.json يحتوي على hook من نوع PreToolUse معدًّا لمنع إجراء معين، فهذه المعلومة مفيدة لـ Claude وحده. لا يعرف Codex hooks؛ وبالنسبة إليه، «الأداة تقرر بنفسها». من المنطقي كتابة «لا تفعل X» في AGENTS.md، و«هناك hook يمنع X فعليًا» في CLAUDE.md أسفل الاستيراد.

3. Copilot و.github/copilot-instructions.md. يقرأ GitHub Copilot ملفه الخاص، وما زال لا يقرأ AGENTS.md جيدًا. إذا كان فريقك يستخدم Copilot بنشاط، فأضف ملف .github/copilot-instructions.md منفصلًا يضم نسخة مختصرة من القواعد، أو استخدم Copilot Extensions التي تتعرف على AGENTS.md. يتغير هذا بسرعة، وقد يختلف الوضع بعد ثلاثة إلى ستة أشهر.

4. لا يتتبع Git الرابط الرمزي بوصفه تغييرًا في CLAUDE.md. إذا نفذت ln -s AGENTS.md CLAUDE.md ثم حدّثت AGENTS.md بعد أسبوع، فسيعرض Git فرقًا في AGENTS.md وحده. هذا طبيعي، لكن قد لا يلاحظ زميل يراجع طلب السحب أن CLAUDE.md قد تحدّث أيضًا عبر الرابط الرمزي. الحل: اكتب صراحةً في وصف طلب السحب: «تم تحديث AGENTS.md؛ ويرى Claude Code الملف نفسه عبر الرابط الرمزي».

5. يصعب تصحيح الاستيرادات العميقة. إذا استورد AGENTS.md الملف @docs/coding-style.md، واستورد هذا الملف @docs/typescript.md، وتعارضت قاعدة مع أخرى، فسيصعب تصحيح المشكلة. أحصر الاستيرادات في مستوى واحد (CLAUDE.md → AGENTS.md) ولا أُعشّشها أكثر. توفر Anthropic hook باسم InstructionsLoaded يسجل الملفات التي تم تحميلها؛ وهو مفيد لتصحيح الإعدادات متعددة الطبقات. ملاحظة: يعمل هذا hook مع AGENTS.md المضمّن عبر استيراد أو رابط رمزي، لكنه لا يعمل مع AGENTS.md الذي قرأه Claude Code بنفسه.

المصادر

إعداد vibe coding كامل لأمسية واحدة: نسخة AI + دماغ ثانٍ + هندسة السياق.

تعرّف على Ailoot.

المزيد من التفاصيل

أسئلة شائعة

متى أستخدم الاستيراد بدل رابط رمزي؟

استخدم @AGENTS.md في CLAUDE.md إذا احتجت إلى إضافات خاصة بـ Claude أو كان زملاؤك يستخدمون Windows. يجعل الرابط الرمزي الاسمين يشيران إلى المحتوى نفسه، فلا يمكنه الاحتفاظ بقسم مستقل خاص بـ Claude.

كيف أتحقق من تحميل التعليمات المشتركة؟

نفّذ /memory وافحص ملفات التعليمات المدرجة. إذا كان CLAUDE.md أو CLAUDE.local.md يمنع تحميل AGENTS.md مباشرة في إعدادك، فأضف الاستيراد أو اختر إعداد تحميل الملفين، ثم ابدأ جلسة جديدة.

جميع المقالات