Trust is earned.
Make the AI prove it.
الثقة بتنكسب — خلّيه يثبتها
الذكاء الاصطناعي صار يكتب بعصريّة وحدة كود أكثر من اللي بتقدر تراجعه بأسبوع كامل. والفرق بين ديمو بيبهر وبرمجية فعلاً بتنشرها هو شغلة وحدة: التحقق. هالفصل بيحوّل «شكله صح» إلى «هو صح» — باختبارات، وحلقات تصحيح مشدودة، ومراجعة تلقائية.
AI can write more code in an afternoon than you could review in a week. This chapter turns "it looks right" into "it is right" — with tests, tight debugging loops, and automated review.
Why verification is non-negotiable ليش التحقق مش قابل للنقاش
مش لأن الذكاء الاصطناعي ضعيف بالبرمجة — بل بسبب طبيعة الـLLM نفسها.
LLMs are probabilistic · نماذج احتمالية
الموديل بيتنبأ بالتكملة الأكثر معقولية — والمعقول مش دايماً الصحيح. نفس السلاسة اللي بتخلي كود كلود سهل القراءة، هي اللي بتخلي أخطاءه النادرة تبيّن واثقة من حالها. احتمال الخطأ ما بيوصل صفر أبداً، فبتهندس على هالأساس.
"Looks right" proves nothing · «شكله صح» ما بيثبت شي
المراجعة البشرية بتلقط الستايل والبنية والزلّات الواضحة. بس بتفوّت بثبات أخطاء الـoff-by-one ، ومعالجة الحالات الحدّية الغلط، والمنطق الخاطئ بخفاء — بكود الذكاء الاصطناعي وكود البشر. القراءة اختبار ضعيف. التشغيل اختبار قوي.
The fix is closing the loop · الحل: سكّر الحلقة
الجواب مش إنك ما تثق — الجواب هو التغذية الراجعة. أعطِ كلود طريقة يفحص فيها شغله (اختبارات، compiler ، تطبيق شغّال) ورح يكرر مقابل الواقع بدل ما يخمّن. الحلقات المتحقق منها هي اللي بتحوّل الذكاء الاصطناعي من autocomplete إلى مهندس.
TDD with an AI pair الاختبارات أولاً — مع شريك ذكي
الـTDD انخترع للبشر، بس مع الذكاء الاصطناعي بيصير أقوى بكتير: الاختبارات بتتحوّل لمواصفة دقيقة قابلة للتنفيذ، بيقدر كلود يكرر عليها بدون ما تكون إنت جوّا اللوب.
Describe the behavior · اوصف السلوك
احكي شو لازم الكود يعمل بلغة المدخلات والمخرجات — بما فيها الحالات البشعة: إدخال فاضي، إدخال ضخم، unicode ، تزامن، وأنماط الفشل. السلوك أولاً، والتنفيذ ولا مرة. إذا ما بتقدر تحدد شو يعني «صح»، ما حدا رح يقدر يتحقق منه.
Have Claude write the failing tests FIRST · الاختبارات الفاشلة أولاً
اطلب صراحة: «اكتب الاختبارات قبل أي تنفيذ». الاختبارات المكتوبة أولاً بتشفّر المواصفة؛ أما المكتوبة بعدين فبتشفّر اللي الكود صدف إنه بيعمله — بالأخطاء وكل شي. هالترتيب هو الخدعة كلها.
Watch them fail (red) · شوفها بتفشل (أحمر)
شغّل الاختبارات وتأكد إن كل اختبار جديد بيفشل. اختبار بينجح قبل ما الميزة توجد أصلاً، هو اختبار ما بيختبر شي. الأحمر مش مشكلة — الأحمر دليل إن اختباراتك فعلاً بتقدر تكشف غياب السلوك اللي بدك إياه.
Implement until green · نفّذ لحد الأخضر
هلق خلّي كلود يكتب التنفيذ ويشغّل الاختبارات بعد كل تغيير — مع قاعدة صارمة وحدة: الاختبارات ما بتتغير. إذا في اختبار غلط فعلاً، هاي محادثة معك إنت، مش تعديل صامت. الأخضر معناه المواصفة تحققت.
Refactor with a safety net · أعد الهيكلة وتحتك شبكة
مع اختبارات خضراء، الـrefactoring بيصير بلا خوف — غيّر الأسماء، أعد الهيكلة، حسّن الأداء، وشغّل الاختبارات بعد كل خطوة. هون بتبيّن قيمة سرعة الذكاء الاصطناعي فعلاً: تنظيفات جريئة كانت تحسّسك بالخطر صارت روتين، لأن الشبكة بتمسك أي تراجع فوراً.
# Step 1–2: behavior first, tests first > I need slugify(title): lowercase, spaces → hyphens, strip punctuation, collapse repeated hyphens, trim to 60 chars without cutting a word mid-way. Write the FAILING tests first — include empty string, emoji, all-punctuation, and a 200-char title. Do not write the implementation yet. # Step 3: red — confirm the tests can fail $ pytest test_slugify.py 7 failed — perfect: the spec exists, the behavior doesn't. # Step 4: implement until green > Now implement slugify until every test passes. Do not modify the tests. Run pytest after each change. $ pytest test_slugify.py 7 passed — green. Step 5: refactor freely; the net is up.
The debugging loop حلقة تصحيح الأخطاء
الأخطاء ما بتنصلّح بالمزاج الحلو — بتنصلّح بحلقة منضبطة. وكلود ممتاز بهالحلقة لما تطعمه أدلة حقيقية بدل ملخصات.
Reproduce — give Claude the error verbatim · أعد الإنتاج
الصق الأمر اللي شغّلته بالضبط، والمخرجات بالضبط، والخطأ كامل — منسوخ، مش معاد كتابته. وفي Claude Code الأحسن من هيك: اطلب من كلود يشغّل الأمر الفاشل بنفسه، لتكون إعادة الإنتاج من أول يد. خطأ بتقدر تعيد إنتاجه عند الطلب هو خطأ نصه مصلّح أصلاً.
Isolate — let it read and hypothesize · اعزل وافترض
خلّي كلود يقرأ الكود المعني ويكوّن فرضيات مرتّبة قبل ما يعدّل أي شي. اطلبها صراحة: «اعطيني أقوى ثلاث مشتبهين وكيف رح تأكد كل واحد». سطر log إضافي أو سكربت إعادة إنتاج صغير بيغلب الإصلاحات التخمينية كل مرة.
Fix — the smallest change that works · أصغر تغيير بيزبط
بعد ما يتأكد السبب، اطلب الإصلاح الصغير الموجّه — مش إعادة كتابة للملف اللي صدف إن الخطأ ساكن فيه. الفروقات الصغيرة بتنراجع وبتنرجع، وما بتهرّب أخطاء جديدة مع الدوا. وإذا الـrefactor فعلاً لازم، اعمله كخطوة منفصلة ومختبرة لحالها.
Regression-test — make it impossible to come back · خلّي رجعته مستحيلة
قبل ما تسكّر الحلقة، خلّي كلود يضيف الاختبار اللي كان رح يمسك هالخطأ — وتأكد إنه بيفشل على الكود القديم وبينجح على الجديد. كل جلسة تصحيح لازم تترك الاختبارات أقوى باختبار واحد على الأقل. هيك الأكواد بتصير أوثق مع الوقت، مش أقل.
Automated code review مراجعة كود تلقائية
Claude Code جاي ومعه مراجع جاهز. أمر /code-review بيفحص الـdiff الشغّال عندك، وكل ملاحظة بتنتحقق بشكل عدائي قبل ما تنبلّغ — يعني اللي بيوصلك إشارة، مش ضجيج.
Review your working diff · راجع تعديلاتك
شغّله جوّا الجلسة قبل ما تعمل commit. كلود بيقرأ تغييراتك غير المحفوظة، بيصطاد العيوب الحقيقية — أخطاء منطق، حالات حدّية، هفوات أمنية — وكل ملاحظة مرشّحة بتنتحدى وبتنتحقق قبل ما توصلك. سريع لدرجة إنك تشغّله على كل تغيير.
استخدمه لما: تكون لسا مخلّص ميزة أو إصلاح وبدك نظرة ثانية صارمة على الـdiff اللي قدامك. خلّيها عادة، زي حفظ الملف.
Ultrareview — the multi-agent pass · جولة الوكلاء المتعددين
Ultrareview بيطلق مراجعة سحابية متعددة الوكلاء لفرع كامل أو PR على GitHub — فكرة Ultracode مطبّقة على المراجعة. مراجعين متوازيين بيمشطوا التغيير من زوايا مختلفة، ومتحققين عدائيين بيأكدوا كل ملاحظة قبل ما تنبلّغ.
استخدمه لما: تكون الرهانات بتستاهل التوكنز — فرع كبير قبل الدمج، PR حساس أمنياً، كود ورثته عن غيرك، أو أي شي بيكلف فيه الخطأ الفايت أكثر من المراجعة نفسها.
# Everyday: review the uncommitted diff in this session > /code-review # High stakes: multi-agent cloud review of the whole branch or PR > /code-review ultra
Verification beyond tests تحقق أبعد من الاختبارات
مجموعة الاختبارات شاهد واحد. التحقق الجاد بيستدعي كم شاهد — كل واحد بيمسك صنف أخطاء بيفوت على الباقيين.
Actually run it · شغّله فعلياً
أطلق التطبيق. اضرب الـendpoint بنفسك من الواجهة. اكبس الزر بإيدك. اختبارات الوحدات ممكن تنجح كلها بينما الشي الحقيقي بيقع عند الإقلاع بسبب env var ناقص أو import خربان. جملة «كلود، شغّل السيرفر واطلب /api/users — فرجيني الرد» بتنهي الجدل.
Lint & typecheck · الفحص الثابت
التحليل الثابت تحقق ببلاش — بيركض بثواني وبيمسك أصناف كاملة من الأخطاء (أخطاء إملائية، أنواع غلط، مسارات ميتة) قبل ما أي شي ينفّذ أصلاً. اطلب من كلود يشغّل الـlinter والـtypechecker بعد كل تغيير ويصلّح اللي بيعلّموا عليه، كل مرة.
Hooks: verification on autopilot · تحقق على الطيار الآلي
الـhooks في Claude Code بتقدر تشغّل اختباراتك أو الـlinter أو المنسّق تلقائياً بعد كل تعديل ملف — فالتحقق ما بيظل خطوة حدا لازم يتذكرها؛ بيصير قانون من قوانين المشروع. كلود بيشوف الفشل فوراً وبيصلّحه قبل ما يكمّل.
Screenshots for UI work · لقطات شاشة للواجهات
بأي شغل بصري، «الكود شكله صح» ما بتعني شي. خلّي كلود يشغّل الصفحة أو التطبيق وياخذ screenshot ، وبعدين يحكم على البكسلات نفسها: التخطيط، المسافات، الوضع الداكن، عرض الموبايل. كلود بيقرأ الصور — بيقدر ينقد عرضه بنفسه ويكرر.
Second-model review · مراجعة بعيون تانية
للكود الحرج، جيب عيون مستقلة: جلسة جديدة — أو موديل مختلف — بتراجع بدون أي ذاكرة إنها هي اللي كتبته. النقاط العمياء للمؤلف ما بتنتقل معها. وهاد بالضبط النمط اللي Ultrareview بيأتمته بوكلاء تحقق عدائيين.
Adversarial self-review · مراجعة ذاتية عدائية
اقلب دور كلود: «إنت هلق مراجع عدائي. لاقيلي مدخلات بتكسر هالكود». لما تطلب من الموديل يهاجم شغله، بتطلع حالات حدّية ما كانت أي قراءة ودّية رح تطلّعها — race conditions ، ترميزات غريبة، قيم على الحدود. رخيصة، وفعّالة بوحشية.
The shipping checklist قائمة فحص النشر
ثماني بوابات بين «كلود بيقول خلصت» و«فعلاً انشرت». امشي عليها كلها — أو الأحسن، خلّي كلود نفسه يمشي على القائمة ويفرجيك الدليل على كل بند.
✅ Ready to ship when… · جاهز للنشر لما…
- مجموعة الاختبارات كاملة بتنجح — مشغّلة طازة وبحالة نظيفة، مش من ذاكرة آخر مرة كانت خضراء.
- كل سلوك جديد إله اختبار — وكل خطأ متصلّح إله اختبار الانحدار اللي كان رح يمسكه.
- قريت الـdiff كامل سطر سطر، وبتقدر تشرح ليش كل تغيير موجود.
- الحالات الحدّية انفحصت عن قصد: إدخال فاضي، ضخم، مشوّه، متزامن، unicode ، وغير مصرّح.
- الـlinter والـtypechecker راجعين نظاف — صفر تحذيرات جديدة، مش «تقريباً نظيف».
- ولا سر بالكود: لا API keys ولا tokens ولا كلمات مرور ولا روابط خاصة بأي مكان بالـdiff.
/code-reviewركض على الـdiff النهائي — و Ultrareview على أي شي عالي الرهان — والملاحظات انحلّت، مش انطنشت.- الوثائق والتعليقات وملف CLAUDE.md بتعكس الواقع الجديد — الجلسة الجاية (بشر أو ذكاء اصطناعي) ما رح تنضلّل.
Fix a bug the right way · صلّح خطأ بالطريقة الصح
اختار أي خطأ صغير — بمشروعك، أو اطلب من كلود يزرع واحد بسكربت تجريبي. وبعدين شغّل الحلقة كاملة من هالفصل:
1. أعد إنتاجه والصق الخطأ الحرفي بالضبط.
2. اطلب من كلود ثلاث فرضيات مرتّبة قبل أي تعديل.
3. طبّق أصغر إصلاح بيخلّيه ينجح.
4. ضيف اختبار الانحدار — وتأكد إنه بيفشل على الكود القديم.
5. اختم بـ /code-review على الـdiff.
لما الحلقة تصير أوتوماتيك عندك، بتكون هضمت الفصل فعلاً.
You made it — all five chapters · وصلت لآخر الطريق
من أول تنصيب، لاختيار الموديلات، لضبط الجهد، لسير عمل برمجة حقيقي — وهلق التحقق. صارت معك العدة الكاملة. ما عدت بس تستخدم الذكاء الاصطناعي؛ صرت توجّهه، وتخلّيه يثبت شغله.
مشروع تخرّج يليق فيك: ارجع على الفصل الثالث وأطلق Ultracode بتدقيق حقيقي على واحد من مشاريعك — وبعدين تحقق من نتائجه بكل اللي تعلمته هون.