السياق · فصل ٦

تكتب إيه في CLAUDE.md؟

specific rules · .claude/rules · /init · keep it updated
🎯 الهدف: تكتب تعليمات محددة بتغيّر شغل Claude فعلًا، وتحافظ عليها صح مع الوقت.

اسأل نفسك عن كل سطر: لو شلته، Claude هيفترض حاجة غلط؟ لو آه، سيبه. لو لأ، اسأل: هو محتاج يعرف الكلام ده في كل جلسة فعلًا؟

معلومة عن المشروع مكانها CLAUDE.md. خطوات بتكررها كتير مكانها skill. ومهمة مرة واحدة اطلبها في الشات وخلاص.

أمثلة من المتجر

  • الأوامر: الـ package manager هو pnpm، والسيرفر بيشتغل بـ pnpm dev، وأوامر التستات والـ typecheck.
  • الداتابيز (بعد ما نضيفها): استخدم Drizzle لكل حاجة في الداتابيز، والـ schema موجود في src/db/schema، ومتكتبش raw SQL إلا لو اتطلب منك.
  • التصميم (بعد ما نعمل الـ design system): صفحات العميل لازم تبقى شكلها editorial ومركزة على المنتج، واستخدم الـ design system الموجود، ومن غير شكل الـ dashboard، ومن غير purple gradients.

السطور دي مفيدة لأنها بتغيّر طريقة شغل Claude فعلًا.

الكلام العام مش بيفيد

شكله حلو ومش بيعمل حاجة
  • “اكتب كود عالي الجودة”
  • “اتبع الـ best practices”
  • “خلّي الـ UI حلو”
  • “خلّي الصفحة premium”
محدد و Claude يقدر ينفذه
  • “استخدم صور منتجات كبيرة، ومسافات واسعة، و controls قليلة في صفحات المتجر”
  • “two-space indentation”
  • “شغّل pnpm test قبل ما تخلص”
  • “الـ API handlers في src/api/handlers”

كل ما تكون محدد أكتر، كل ما Claude يخمّن أقل.

ومتحطش هيكل المشروع كله، ولا docs الـ API كاملة، جوه الملف. Claude يقدر يقرا الكود بنفسه.

لما الملف يكبر: .claude/rules/

بدل ما تفضل تزوّد في نفس الملف، تقدر تقسّم التعليمات على ملفات جوه .claude/rules/، زي testing.md و database.md و storefront.md و security.md.

وتقدر تربط الـ rule بمسار معين، فمتتحمّلش غير لما Claude يشتغل على الملفات اللي في المسار ده. كده باقي الـ context يفضل نضيف.

ولو الحاجة دي مش rule، لكنها خطوات بتعيدها كل شوية، يبقى مكانها skill، وده هنشرحه في فصل ١١.

ابدأ بـ /init

مش لازم تكتب الملف من الصفر. /init بيقرا المشروع ويعملك CLAUDE.md فيه الـ package manager، والـ framework، وأوامر الـ build والتست. ولو عندك ملف أصلًا، بيقترح تعديلات بدل ما يمسحه.

بس متقبلش اللي كتبه وخلاص، اقراه:

  • لو كتب حاجة Claude يقدر يعرفها لوحده من package.json، اسأل نفسك: تستاهل تاخد من الـ context في كل جلسة؟
  • لو فيه حاجة غلط، صلّحها.
  • ضيف الحاجات اللي Claude مستحيل يعرفها من الكود. هو شايف إنك بتستخدم Tailwind، بس مش عارف إنك بتبني متجر فخم لازم شكله يبقى editorial.

تقدر تتأكد إن الملف اتحمّل من /context، هتلاقيه تحت memory files. أو من /memory.

خلّصت الفصل لما

🧠 اختبر نفسك
١) ليه "خلّي الصفحة premium" تعليمات ضعيفة؟
لأنها مش بتقول لـ Claude يعمل إيه بالظبط. “صور كبيرة ومسافات واسعة” حاجة يقدر ينفذها.
٢) عندك rules للتستات بس. تحطها فين؟
في ملف جوه .claude/rules/ ومربوط بمسار ملفات التستات.
٣) بعد /init، تضيف إيه وتشيل إيه؟
تضيف الحاجات اللي مش باينة من الكود، زي شكل المنتج المطلوب. وتشيل اللي Claude يقدر يعرفه لوحده من package.json لو مش محتاجه في كل جلسة.