الوحدة 3 — CLAUDE.md والقواعد والذاكرة: تعليم Claude معالم المشروع
بيّنت الوحدة 2 لماذا يُعيد Claude قراءة CLAUDE.md عند كلّ /compact. هذه الوحدة تستخلص التبعات: ما يجب كتابته فيه، وما يجب إخراجه إلى قواعد محدَّدة النطاق، وما نتركه لـالذاكرة التلقائيّة التي يُغذّيها Claude وحده. على Kiosque، نستبدل ملفّ CLAUDE.md المولَّد بـ/init بملفّ متين يصمد لثلاث إعادات صياغة.
آليّتان متكاملتان
كلّ جلسة تبدأ بسياق فارغ. آليّتان تملآنه: ملفّات CLAUDE.md التي تكتبها أنت (تعليمات، قواعد، تُحمَّل عند كلّ جلسة — مشروع، مستخدم، مؤسّسة)، والذاكرة التلقائيّة التي يكتبها Claude (دورك، تفضيلاتك، ما تُصحّحه غالبًا، وقائع لا يستنبطها Claude من الشيفر ة).
كلاهما مجرّد سياق، لا إعدادات تنفيذيّة. تعليمة تظلّ توصية قد يتجاهلها نموذج إن كانت مبهمة أو متناقضة. لحظر شيء بشكل حتميّ — رفض الكتابة على .env، فرض lint — يجب hook PreToolUse (الوحدة 9). الثلاثيّة: CLAUDE.md لما يجب أن يعرفه Claude، skills لما يجب أن يعرف فعله عند الطلب، hooks لما يجب أن يحدث مهما كان.
تراتبيّة ملفّات الذاكرة
يمكن أن تعيش ملفّات CLAUDE.md في عدّة مستويات. ترتيب التحميل يمضي من الأوسع إلى الأخصّ — كلّ مستوى يُضاف، ولا يُبدّل الآخر.
| النطاق | الموقع | الاستعمال |
|---|---|---|
| سياسة مؤسّسة | macOS /Library/Application Support/ClaudeCode/CLAUDE.md، Linux/WSL /etc/claude-code/CLAUDE.md، Windows C:\Program Files\ClaudeCode\CLAUDE.md | تعليمات تُديرها IT أو DevOps، معايير أمن، التزامات قانونيّة |
| المستخدم | ~/.claude/CLAUDE.md | تفضيلات شخصيّة تسري على كلّ المشاريع |
| المشروع (مشترك) | ./CLAUDE.md أو ./.claude/CLAUDE.md | اصطلاحات الفريق، أوامر البناء، قرارات المعماريّة. يُودَع في git |
| محلّيّ (شخصيّ) | ./CLAUDE.local.md | عناوين sandbox الخاصّة بك، بيانات اختبار. يُضاف إلى .gitignore |
يُحمّل Claude Code CLAUDE.md وCLAUDE.local.md من مسارك الجاري ومن كلّ المجلّدات فوقه، من أعلى الشجرة إلى أسفلها. ملفّات المجلّدات الفرعيّة لا تُحمَّل إلّا عند الطلب — حين يقرأ Claude ملفًّا داخل ذلك المجلّد. هذا السلوك ثمين في monorepo: لا يدخل apps/back/CLAUDE.md السياقَ ما دمنا لم نمسّ backend.
ملفّ CLAUDE.md يتجاوز 4 ميبيبايت يُتجاهَل؛ وملفّ يتجاوز 200 سطر أو 25 كيلوبايت يستهلك سياقًا كبيرًا ويُخفِض الالتزام. القاعدة الافتراضيّة هي البقاء دون 200 سطر.
كتابة تعليمات فعّالة
التعليمات اللفظيّة تفشل: «نسّق بشكل صحيح»، «اختبر شيفرتك». التعليمات القابلة للتحقّق تنجح: «استعمل مسافتين للإزاحة»، «شغّل make test قبل الالتزام»، «مُعالجات API تعيش في app/api/handlers/». أضف إلى CLAUDE.md كلّما ارتكب Claude الخطأ نفسه مرّتين أو حين تلتقط code review شيئًا كان ينبغي أن يعرفه. جملة قصيرة، ووقيعة واحدة لكلّ سطر، خير من فقرة كثيفة.
ما لا يجب وضعه: شجرة المجلّدات، قائمة التبعيّات، المعماريّة (يستنبطها Claude)؛ الإجراءات المتعدّدة الخطوات (تلك skill، الوحدة 6)؛ ما يخصّ مجلّدًا فرعيًّا (تلك قاعدة محدَّدة النطاق)؛ tokens أو أسرار (الملفّ يُودَع في git).
.claude/rules/: التقسيم بالموضوع، التحديد بالمسار
يسمح مجلّد .claude/rules/ بتقسيم CLAUDE.md إلى ملفّات موضوعيّة. كلّ .md تحت هذا المجلّد يُحمَّل تكراريًّا بأولويّة .claude/CLAUDE.md إن لم يحمل frontmatter. ملفّ لكلّ موضوع (api.md، front.md، security.md) يبقى أسهل صيانةً من ملفّ CLAUDE.md ضخم.
فائدته الأكبر تأتي من frontmatter paths:: قاعدة محدَّدة النطاق لا تُحمِّل محتواها إلّا حين يقرأ Claude ملفًّا يطابقها.
---
paths:
- "app/**/*.py"
- "tests/**/*.py"
---
# Règles API
- Toute route FastAPI valide ses entrées via Pydantic.
- Les réponses d'erreur suivent le format `{code, message, details}`.
- Les migrations SQLAlchemy sont générées avec `alembic`.
- Aucun accès direct à la session hors du dependency-injection.
تتبع الأنماط الصيغة المعتادة لـglob: **/*.ts وsrc/api/**/*.ts وsrc/**/*.{ts,tsx} مع توسيع الأقواس المعقوفة (ميزانيّة 1 000 نمط بعد التوسيع و4 ميبيبايت لكلّ قاعدة). النمط غير القابل للقراءة كتعبير bracket لم يعد يحجب منذ v2.1.207: لا يطابق شيئًا، وتظلّ القاعدة تعمل على البقيّة.
تنطبق القواعد حين يقرأ Claude ملفًّا يطابقها، لا في كلّ استدعاء أداة. منذ v2.1.198، تعمل المطابقة كذلك عبر مسار symlink.
استيرادات @chemin
يمكن لملفّ CLAUDE.md استيراد ملفّات أخرى بصيغة @chemin (نسبيّ إلى الملفّ المستورِد أو مطلق). تُبسَط الاستيرادات عند الإطلاق، بعمق أقصى قدره أربعة.
Voir @README pour la vue d'ensemble et @package.json pour les scripts.
## Conventions détaillées
- Style Python : @docs/conventions-python.md
- Style front : @docs/conventions-front.md
الاستيرادات داخل ملفّ ذي نطاق مشروع، حين يستقرّ مسارها خارج مسار العمل (مثل @~/notes.md)، حسّاسة: أوّل مرّة، يفتح Claude Code صندوق موافقة؛ الرفض يُعطّلها بصمت. ملفّات ذاكرة نطاق المستخدم تُحمِّل استيراداتها بلا حوار. لمشاركة القواعد ذاتها بين مشاريع ، يقوم symlink بالغرض: ln -s ~/shared-claude-rules .claude/rules/shared.
AGENTS.md والتوافق
يقرأ Claude Code CLAUDE.md، لا AGENTS.md. خياران إن كان مستودعك يستعمل AGENTS.md: ملفّ CLAUDE.md يستورده (@AGENTS.md)، أو symlink ln -s AGENTS.md CLAUDE.md. يقرأ /init علاوة على ذلك .cursor/rules/ و.cursorrules و.github/copilot-instructions.md. مع CLAUDE_CODE_NEW_INIT=1، يُضيف أيضًا AGENTS.md و.devin/rules/ و.windsurf/rules/ و.clinerules. يُحضِر أمر /import [codex|gemini] (v2.1.213+) إعدادات وكيل آخر بمرور واحد.
الذاكرة التلقائيّة
الذاكرة التلقائيّة مفعَّلة افتراضيًّا. كلّما تعلَّم Claude شيئًا متينًا، كتبه بنفسه في ~/.claude/projects/<projet>/memory/. أربعة أنواع من الملاحظات مؤشَّرة بحقل type: user (دورك، تفضيلاتك)، feedback (تصحيحات قدَّمتها لـClaude، مقاربات ص دَّقتها)، project (قرارات، مواعيد، وقائع لا يستنبطها Claude من الشيفرة)، reference (أين نجد معلومة خارج المشروع). لا يكتب Claude في كلّ جلسة؛ بل يُقرّر مع الجريان إن كانت الحقيقة تستحقّ الحفظ ويتجنّب ما تعرضه الشيفرة أصلًا.
يحوي المجلّد فهرسًا MEMORY.md — الشيء الوحيد الذي يُحمَّل في كلّ جلسة (200 سطر أو 25 كيلوبايت) — وملفًّا لكلّ موضوع (user_role.md، feedback_testing.md) يُقرأ عند الطلب. منذ v2.1.214، تحصل كلّ ملاحظة على حقل modified بصيغة ISO 8601 عند إعادة الكتابة.
للتعطيل: "autoMemoryEnabled": false في settings.json للمشروع، أو عالميًّا CLAUDE_CODE_DISABLE_AUTO_MEMORY=1. يُغيِّر مفتاح autoMemoryDirectory الموقعَ (مسار مطلق أو ~/...). ذاكرة الجلسة الرئيسيّة لا تُحمَّل في الوكلاء الفرعيّين — إلّا لـfork، الذي يرث المحادثة الأمّ. يمكن لوكيل فرعيّ أن تكون له ذاكرته الخاصّة عبر حقل memory في frontmatter الخاصّ به (الوحدة 10).
/init و/memory و/doctor
ثلاثة أوامر تُغطّي دورة الحياة كاملة:
/initيُولّدCLAUDE.mdمبدئيًّا بتحليل المستودع. معCLAUDE_CODE_NEW_INIT=1، يقترح النسخة التفاعليّة أيضًا skills وhooks وملفّات ذاكرة شخصيّة، ويقرأ إعدادات محتملة منAGENTS.mdأو.cursor/rules/. هي مسوّدة: تُنقَّح قبل الالتزام./memoryيعرض ملفّاتكCLAUDE.mdوCLAUDE.local.mdوملفّات الذاكرة لكلّ النطاقات، بما فيها ما لم يُنشأ بعد. اختر عنصرًا لفتحه في محرِّرك؛ إن لم يكن موجودًا، يُنشئه/memoryأوّلًا. يُعطي الأمر أيضًا مبدّل الذاكرة التلقائيّة ووصولاً مباشرًا إلى مجلّد الذاكرة./doctor(البديل/checkup) يُجري تشخيصًا كاملاً ويقترح إصلاحات: تثبيتات مكرّرة،PATH، إعدادات غير قابلة للقراءة، skills غير مستعملة، خوادم MCP خاملة،CLAUDE.mdثقيل جدًّا. منذ v2.1.206، يُنحِّف ملفّCLAUDE.mdمُودَعًا في git: يقطع ما يستنبطه Claude من الشيفرة (شجرة المجلّدات، التبعيّات) ويُبقي المزالق، والمنطق، والاصطلاحات التي تختلف عن الافتراضيّات. يُهاجر البقيّة إلى skills أوCLAUDE.mdمُدمَجة تُحمَّل عند الطلب.