الجودة التي لا تظهر في لقطة الشاشة: ستة معايير تفصل «صفحة تعمل» عن عمل محترف

الوكيل يكتب كودًا «يعمل» في أحسن الظروف، والمحترف يُقاس بالظروف الأخرى. ستة معايير قابلة للاختبار في ثلاثين ثانية: البنية الدلالية، وإمكانية الوصول، والحالات الأربع، وتحصين المدخلات، والاستجابة الحقيقية، ورموز التصميم؛ لكلٍّ منها قاعدة واختبار وأمر إصلاح جاهز.

فريق INTXA 12 دقيقة قراءة حُدِّث في 23 سبتمبر 2026

عرفنا كيف نجعل الصفحة جميلة، وكيف نشغّل الوكيل في Cursor. المرحلة التالية أصعب: المعايير التي لا تظهر في لقطة الشاشة. البنية، والوصول، والحالات، والأمان، والاستجابة، والاتساق التقني. هذه بالضبط ما يفرّق بين من «يصنع صفحات» ومن يُقال له: «تعال اعمل معنا».

6معايير غير مرئية
30 ثلاختبار كل معيار
17عطلًا في صفحة «تبدو سليمة»

الذكاء الاصطناعي يكتب كودًا «يعمل»، و«يعمل» ليس «محترفًا»#

اطلب من أي وكيل صفحة تسجيل، وسيعطيك في نصف دقيقة شيئًا يعمل ويبدو جيدًا في اللقطة. المشكلة أن الكود الافتراضي يختبر نفسه في أفضل الظروف: مستخدم يكتب صحيحًا، وشاشة كبيرة، وبيانات موجودة، وفأرة في يده. وحين تخرج من هذه الظروف تسقط الصفحة.

المعايير الستة هي «الظروف الأخرى». وأهم ما فيها أنها قابلة للاختبار في ثلاثين ثانية؛ ليست أذواقًا ولا آراء. لكل معيار أدناه: قاعدة، واختبار تجريه بنفسك، وأمر إصلاح جاهز للوكيل.

الجولة صفر: شخّص بعينك قبل أن تسأل الوكيل#

أول قاعدة في مراجعة الجودة: لا تطلب إصلاح شيء لم تره بنفسك. أجرِ هذه التجارب الخمس، وكلٌّ منها ثانيتان.

  1. أغلق الفأرة واستخدم Tab فقط

    هل تستطيع الوصول إلى زرّ «تسجيل» والضغط عليه؟

  2. اضغط «تسجيل» والحقول فارغة

    ما الذي ظهر ليشرح المشكلة؟ وهل ظهر شيء أصلًا؟

  3. اضغط «تسجيل» ببيانات صحيحة

    هل أخبرتك الصفحة بما حدث؟ وبعد كم من الوقت؟

  4. صفِّ على مستوى لا يوجد فيه أحد

    ماذا ترى في الجدول؟

  5. صغّر المتصفّح إلى عرض 390px

    هل تنسحب الصفحة يمينًا ويسارًا؟

سجّل كل عطل في ملف bugs.md بصيغة: ما فعلته ← ما توقّعته ← ما حدث فعلًا. هذا الملف ما ستعطيه للوكيل في الجولات القادمة؛ فالأمر المبني على ملاحظتك أقوى دائمًا من «راجع الصفحة وانظر ما فيها».

ست جولات، معيار في كل جولة#

في كل جولة: اقرأ القاعدة، وأجرِ الاختبار، وابحث عن الأعراض في ملفك، ثم أعطِ الأمر للوكيل واقرأ الفرق قبل القبول.

المعايير الستة

العنصر الصحيح للوظيفة الصحيحة. عنصر div بلا معنى؛ وحين تستعمله زرًّا أو عنوانًا تنزع المعنى من الصفحة: محركات البحث لا تفهم، وقارئ الشاشة لا يرى، ولوحة المفاتيح لا تصل. الفرق بين <div class="btn"> و<button> ليس شكليًّا؛ فالثاني يأتي بسلوك كامل مجانًا.

القاعدة: كل عنصر تفاعلي button أو a، وكل قسم في مكانه: header وmain وsection وform. عنوان h1 واحد، وتسلسل العناوين متدرّج.

الاختبار: عطّل CSS كلها من أدوات المطوّر. إن بقي المحتوى مفهومًا مرتّبًا كمستند فبنيتك سليمة؛ وإن صار كومة نصوص متساوية فبنيتك ديكور لا هيكل.

أعراض شائعة: عناوين مزيّفة بأصناف مثل class="h1" بترتيب مقلوب. أزرار وتصفيات مصنوعة من div وspan بـ onclick. لا main ولا form. عنوان الصفحة «Document» بلا وصف. الاتجاه مضبوط بـ CSS بدل خاصية dir.

أمر الجولة الأولى
حوّل بنية الصفحة إلى HTML دلالي دون أي تغيير في الشكل النهائي: الترويسة header، والمحتوى main، والأقسام section، وحقول التسجيل form. حوّل كل عنصر تفاعلي (تسجيل، مسح، أزرار التصفية) إلى button حقيقي بنوع type مناسب. استبدل العناوين المزيّفة بـ h1/h2/h3 فعلية بتسلسل هرمي لا تُتخطّى فيه مرتبة، وh1 واحد فقط. أضف dir="rtl" وlang="ar" على عنصر html، وعنوانًا وصفيًّا وmeta description. لا تغيّر أي قيمة لون أو مسافة؛ الشكل يبقى كما هو تمامًا.

جدول الجلسة#

نحو مئة دقيقة، وكل جولة بالإيقاع نفسه: اختبار (دقيقتان)، ثم أمر (دقيقة)، ثم تنفيذ ومراجعة الفرق (ست دقائق)، ثم إعادة اختبار ونقاش (ثلاث دقائق).

الجولةالمعياراختبار القبول السريعالوقت
0التشخيص بالعينخمس تجارب وملف bugs.md10 د
1البنية الدلاليةعطّل CSS، والمستند ما زال مفهومًا12 د
2إمكانية الوصولتنقّل بـ Tab حتى النهاية وسجّل بلوحة المفاتيح12 د
3الحالات الأربعتصفية فارغة، وعشر ضغطات، ورسالة نجاح12 د
4تحصين المدخلاتوسم HTML في الاسم يظهر نصًّا12 د
5الاستجابة واللمس390px بصفر تمرير أفقي وأزرار 48px12 د
6رموز التصميمتغيير متغيّر واحد يغيّر الصفحة كلها12 د
7المراجعة والمقارنةالأصل بجوار المُصلَح، وأمر المراجعة الشامل15 د

أمر مراجعة الجودة الشامل#

الجولات الست تحوّلت إلى أمر واحد. ليس بديلًا عن فهم المعايير، بل اختصار بعد أن تفهمها. استخدمه حين تعمل الصفحة وظيفيًّا وقبل أن تقول «انتهيت»، وتوقّع أن يعود إليك بقائمة طويلة؛ فهذا يعني أنه يعمل، لا أن عملك سيّئ.

أمر المراجعة الشامل
راجع هذه الصفحة على المعايير الستة التالية، وقبل أن تعدّل أي شيء اكتب لي تقريرًا بكل مخالفة وجدتها مصنّفة بحسب المعيار ودرجة خطورتها، ثم انتظر موافقتي:
1. البنية الدلالية: عناصر HTML مناسبة لوظائفها، وheader/main/section/form، وأزرار button حقيقية لا div، وتسلسل عناوين سليم بـ h1 واحد، وlang وdir وtitle وmeta description.
2. إمكانية الوصول: label مربوط لكل حقل، وحلقة تركيز ظاهرة عبر ‎:focus-visible‎، ووصول كامل بلوحة المفاتيح، ورسائل خطأ نصية مربوطة بـ aria-describedby، وaria-live لتغيّرات الحالة، وتباين 4.5:1.
3. الحالات الأربع: فارغة بخطوة تالية، وتحميل مع تعطيل الزرّ، وخطأ برسالة وإعادة محاولة، ونجاح بتأكيد مرئي.
4. تحصين المدخلات: textContent بدل innerHTML لكل قيمة من المستخدم، وتحقّق من النوع والطول والنطاق والصيغة.
5. الاستجابة: max-width لا عرض ثابت، ولا 100vw، وأهداف لمس 48px، وجداول تتحوّل إلى بطاقات، وصفر تمرير أفقي على 390px.
6. رموز التصميم: متغيّرات CSS في ‎:root‎ لكل القيم، وصفر أرقام سحرية أو أنماط inline، واحترام prefers-reduced-motion.

التكليف: طبّق الستة على مشروعك أنت#

التدريب كان على «مريض» جاهز. التكليف أن تكتشف أن مشروعك من التكليف السابق فيه الأمراض نفسها.

fixed

الصفحة بعد الجولات الست

النسخة المُصلَحة من الصفحة المريضة.

audit.md

تقرير المراجعة

كل عطل، والمعيار الذي يخالفه، وكيف أُصلح.

مشروعك

المشروع السابق بعد المراجعة

مشروعك بعد تمريره على أمر المراجعة الشامل.

اختبارات القبول النهائية

اختبر فهمك

كتب مستخدم <b>تجربة</b> في خانة الاسم فظهر بخط عريض في الجدول. ما السبب؟

اختبر فهمك

ما الذي يثبت أن رموز التصميم في صفحتك سليمة؟

اختبر فهمك

لماذا تُمنع 100vw في الحاويات؟