سير مراجعة PR باستخدام Claude Code لفحص قابلية القراءة، الصواب، والحالات الطرفية مسبقًا، ثم توليد قائمة مراجعة للمراجع وأسئلة يجب طرحها.

text\nYou are doing a pre-review of a pull request.\n\nContext\n- Repo/service: <name>\n- Goal of change: <1-2 sentences>\n- Constraints: <perf, security, backward compatibility, etc>\n\nInput\n- PR description:\n<...>\n- Diff (unified diff):\n<...>\n\nOutput format\n1) Summary (max 4 bullets)\n2) Readability notes (nits + suggested rewrites)\n3) Correctness risks (what could break, and why)\n4) Edge cases to test (specific scenarios)\n5) Reviewer checklist (5-10 checkboxes)\n6) Questions to ask the author before merge (3-7)\n\nRules\n- Cite evidence by quoting the relevant diff lines and naming file + function/class.\n- If unsure, say what info you need.\n\n\nللتغييرات عالية المخاطر (المصادقة، المدفوعات، الأذونات، الهجرات)، أضف تفكيرًا صريحًا بالفشل وخطة التراجع:\n\ntext\nExtra focus for this review:\n- Security/privacy risks, permission bypass, data leaks\n- Money/credits/accounting correctness (double-charge, idempotency)\n- Migration safety (locks, backfill, down path, runtime compatibility)\n- Monitoring/alerts and rollback plan\nReturn a “stop-ship” section listing issues that should block merge.\n\n\nفي عمليات إعادة الهيكلة، اجعل "عدم تغيير السلوك" قاعدة صارمة:\n\ntext\nThis PR is a refactor. Assume behavior must be identical.\n- Flag any behavior change, even if minor.\n- List invariants that must remain true.\n- Point to the exact diff hunks that could change behavior.\n- Suggest a minimal test plan to confirm equivalence.\n\n\nإذا أردت مسحًا سريعًا، أضف حدًا مثل "أجب ضمن 200 كلمة". إذا أردت عمقًا، اطلب "حتى 10 نتائج مع السبب."\n\n## حوّل النواتج إلى قائمة تحقق للمراجع\n\nتصبح ملاحظات Claude مفيدة عندما تحولها إلى قائمة تحقق قصيرة يمكن للبشر إغلاقها. لا تعيد صياغة الـ diff. التقط المخاطر والقرارات.\n\nاقسم البنود إلى فئتين حتى لا يتحول النقاش إلى جدالات تفضيلية:\n\nيجب الإصلاح (حظر الدمج)\n- [ ] الصواب: النتيجة المتوقعة مكتوبة في جملة واحدة وتطابق التذكرة\n- [ ] الحالات الطرفية: المدخلات الفارغة/null ومسارات الخطأ معالجَة أو رُفضَت بوضوح\n- [ ] سلامة البيانات: الكتابات والهجرات آمنة للبيانات الحالية والشيفرة القديمة\n- [ ] الاختبارات: اختبار واحد على الأقل يغطي السلوك الرئيسي واختبار واحد يغطي أخطر فشل\n- [ ] القابلية للمراقبة: سجلات/مقاييس كافية لتصحيح سريع (معرف الطلب، معرف المستخدم، معرف المهمة)\n\nمن الجيد أن تتوفر (متابعات)\n- [ ] قابلية القراءة: أعد تسمية أكثر معرف مربك أو أضف تعليقًا قصيرًا يشرح "لماذا"\n- [ ] الاتساق: طابق الأنماط الموجودة للأخطاء، التسمية، وتخطيط الملفات\n- [ ] الأداء: لاحظ تغييرات المسارات الساخنة وهل تؤثر على المقياس الحالي\n- [ ] التوثيق: حدّث الوثائق المضمنة إذا أضيف خيار/علم جديد\n\nسجّل أيضًا جاهزية النشر: ترتيب النشر الأكثر أمانًا، ما يجب مراقبته بعد النشر، وكيف تلغي التغيير.\n\n## أسئلة لطرحها قبل الدمج\n\nالمراجعة المسبقة تفيد فقط إذا انتهت بمجموعة صغيرة من الأسئلة التي تجبر على الوضوح.\n\n### السلوك والصواب\n\n- أي سلوك مرئي للمستخدم يتغير، وما الذي يجب أن يبقى كما هو؟\n- إذا كان هذا "بدون تغيير سلوكي"، ما الدليل أن المخرجات متطابقة؟\n- ما أسوأ فشل محتمل في الإنتاج، وأين سيظهر (الواجهة، الـ API، البيانات)؟\n- ما الافتراضات التي تضعها الشيفرة عن المدخلات، الترتيب، الوقت، أو استدعاءات الشبكة؟\n- هل تُبتلع أخطاء أو تُحوّل إلى قيم افتراضية صامتة؟\n\n### الحالات الطرفية، الاختبارات، والعمليات\n\n- ما أسوأ المدخلات الحقيقية (فارغة، ضخمة، تالفة، مكررة)، وماذا يجب أن يحدث؟\n- أي تدفق شائع قد يفعّل هذا مرتين (محاولات، نقرة مزدوجة، مهام خلفية)، وهل هذا آمن؟\n- أي اختبار يثبت السلوك الرئيسي، وأي اختبار يغطي أخطر حالة طرفية؟\n- إذا كان اختبار مفقودًا، هل صعب كتابته أم أن الشيفرة صعبة للاختبار؟\n- ماذا ستحتاج العمليات: سجلات ومقاييس وتنبيهات افادة وخطوات تراجع؟\n\nإذا لم تستطع الإجابة بعبارات بسيطة، أوقف الدمج وشدّد النطاق أو أضف دليلًا.\n\n## المصائد الشائعة (وكيف تتجنبها)\n\nمعظم الإخفاقات مشكلات عملية، لا نموذجية.\n\n- إلصاق diffs ضخمة بلا تركيز. اطلب مراجعة على 1 إلى 3 مناطق خطرة وألصق فقط القطع ذات الصلة مع التواقيع التي تعتمد عليها.\n- تخطي النية والسلوك المتوقع. بدون هدف، تتيه المراجعة. أضف سطرين: ماذا تغير، وما الذي يجب ألا يتغير.\n- الثقة بالتخمينات الواثقة. اطلب اقتباسات إلى الـ diff. إذا لم يستطع الاقتباس، عاملها كفرضية يجب اختبارها.\n- الانشغال بخلاف الجوهر (bikeshedding). اطلب "يجب الإصلاح" مقابل "جيد أن يتوفر"، وقيّد ملاحظات الأسلوب.\n- تجاهل معايير الفريق. إذا لدى فريقك توافقات (إرجاع مبكر، أنواع أخطاء، تنسيق التسجيل)، أدرجها.\n\nإذا أضاف PR نقطة إنهاء الدفع (checkout) جديدة، لا تلصق الخدمة كلها. ألصق المعالج، التحقق، كتابة قاعدة البيانات، وأي تغيّر في المخطط. ثم اذكر: "الهدف: منع الشحن المزدوج. غير الأهداف: إعادة تسمية." ستحصل على تعليقات أقل، وأسهل في التحقق.\n\n## مثال واقعي: مراجعة مسبقة لPR صغير\n\nPR صغير حقيقي: إضافة حقل "اسم العرض" إلى شاشة الإعدادات. يمس التحقق (الخادم) ونص الواجهة (العميل). صغير بما يكفي للتفكير، لكنه يحتوي أماكن يختبئ فيها خطأ.\n\nإليك أمثلة لقطع diff تلصقها (بالإضافة إلى 2-3 جمل سياق مثل السلوك المتوقع وأي تذاكر ذات صلة):\n\ndiff\n- if len(name) == 0 { return error("name required") }\n+ if len(displayName) < 3 { return error("display name too short") }\n+ if len(displayName) > 30 { return error("display name too long") }\n\n\ndiff\n- <TextInput label="Name" value={name} />\n+ <TextInput label="Display name" value={displayName} helperText="Shown on your profile" />\n\n\nأمثلة على النتائج التي تريدها:\n\n- قابلية القراءة: يُستعمل "displayName" مقابل "name" بشكل مختلط عبر الملفات. اختر مصطلحًا واحدًا حتى لا تحتاج التغييرات المستقبلية للترجمة الذهنية.\n- الصواب: الخادم يتحقق من الطول، لكن العميل لا. يمكن للمستخدمين كتابة 1 أو 2 حرفًا ولن يروا الخطأ إلا بعد الإرسال.\n- حالة طرفية: السلاسل المكوّنة من مسافات فقط تمرّ len(displayName) لكنها تبدو فارغة. قصّ الفراغات قبل التحقق.\n\nحوّل ذلك إلى قائمة تحقق:\n\n- التسمية متسقة عبر API، حقول قاعدة البيانات، وتسميات الواجهة.\n- الفحوصات على جهة العميل تطابق قواعد الخادم (الحد الأدنى/الحد الأقصى، إلزامي).\n- يتم قص المدخل (وسلوك Unicode/الرموز التعبيرية مقبول).\n- رسائل الخطأ واضحة ومتطابقة بين الخادم والواجهة.\n\n## فحوصات سريعة، قياس، والخطوات التالية\n\nتنجح مراجعة Claude Code PR عندما تنتهي بعدد قليل من الفحوصات السريعة:\n\n- السلوك: ما الذي يتغير للمستخدم، وما يجب ألا يتغير\n- الاختبارات: ما المغطى، ما المفقود، وما قد يترنح\n- السجلات والأخطاء: الفشل واضح ورسائل مفيدة\n- الأداء: حلقات جديدة، استعلامات N+1، أحجام حمولة كبيرة، استدعاءات شبكة إضافية\n- الأمان: التحقق، فحوصات المصادقة، الأسرار، القيم الافتراضية الخطرة\n\nلتعرف ما إذا كان الأسلوب يؤتي ثماره، راقب مقياسين بسيطين لمدة 2 إلى 4 أسابيع: وقت المراجعة (من الفتح إلى أول مراجعة ذات مغزى، ومن الفتح إلى الدمج) وإعادة العمل (التزامات متابعة بعد المراجعة، أو عدد التعليقات التي تطلب تغييرات فعليًا).\n\nالتوحيد يفوق القوالب المثالية. اختر قالبًا واحدًا، اشترط حزمة سياق قصيرة (ما تغيّر، لماذا، كيف تختبر)، واتفق على معنى "تم".\n\nإذا كان فريقك يبني ميزات عبر التطوير القائم على الدردشة، يمكنك تطبيق نفس السريان داخل Koder.ai: ولّد التغييرات، صدّر الشيفرة المصدرية، ثم أرفق قائمة المراجعة المسبقة إلى PR ليبقى تركيز المراجعة البشرية على الأجزاء الأعلى مخاطرة.