اسأل نفسك عن كل سطر: لو شلته، 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”
- “استخدم صور منتجات كبيرة، ومسافات واسعة، و 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.