لما تطلب من الـ AI يراجع الكود اللي هو نفسه كتبه، غالبًا هيقولك كله تمام. Cloudflare نشرت الـ skill اللي بدأت بيها تدور على الثغرات في الكود بتاعها، مجانية ومفتوحة المصدر (MIT): بتخلي الـ coding agent يرسم خريطة للكود، ويشغّل صيادين معزولين بالتوازي، وكل ثغرة يلاقوها يراجعها agent جديد خالص شغلته يثبت إنها غلط. الدليل ده بيشرح تسطبها بأمر واحد، تشغلها بجملة، تقرا التقرير بأحكامه الـ 3، ولو مش بتستخدم coding agent، تطبّق نفس القاعدة بإيدك في أي شات.
الطريقة كلها في 5 خطوات
سطّبها
بأمر npx واحد من الترمينال.
افتح الريبو
في coding agent زي Claude Code.
اطلب الـ audit
بجملة بالإنجليزي.
صيادين ومراجع
كل ثغرة محتملة ليها agent جديد يحاول يكذبها.
اقرا التقرير
كل ثغرة بحكم من 3 بس.
ليه مينفعش الـ AI يراجع كوده بنفسه
لو قلت لنفس الـ agent اللي كتب الكود إنه يراجعه، الرد غالبًا هيبقى مطمّن: الكود سليم، مفيش مشاكل. هو بيصحح ورقته بإيده، ومحدش حاول يثبت العكس.
Review the login code you just wrote for security issues.القاعدة جوه الـ skill: الـ agent اللي بيراجع الثغرة، عمره ما يكون هو اللي لقاها.
قبل ما تبدأ، محتاج 3 حاجات
- coding agent
- بيستخدم tools، وبيشغّل sub-agents بالتوازي، زي Claude Code مثلًا.
- Node.js
- للـ validators اللي بتراجع ملفات النتايج.
- sandbox
- عشان يشغّل كود الريبو فعلًا: من غير network، وبيكتب في فولدرات محددة بس. من غيره، الثغرة اللي محتاجة تشغيل بتفضل needs_validation ومبتتأكدش.
بيعمل إيه جوه: 6 مراحل
كل مرحلة بـ agents معزولين عن بعض، واللي بيلاقي مش هو اللي بيحكم.
الخريطة
الكود بياخد input منين، وفين حدود الثقة اللي محدش المفروض يعديها. بتتكتب في architecture.md و coverage-ledger.json.
الصيد
صيادين معزولين، كل واحد في جزء من الكود، ونقاد بيدوروا على الحتت اللي محدش غطاها.
المراجعة
كل ثغرة محتملة بتروح لـ agent جديد خالص، شغلته يثبت إنها مش حقيقية.
الحكم
كل نتيجة بتاخد حكم من 3 في findings.json، والملف بيتراجع أوتوماتيك على schema.
مراجعة تانية
agents جديدة بتراجع كل ادعاء في النتايج على الكود نفسه.
التقرير
REPORT.md و FINDINGS-DETAIL.md و NEEDS-VALIDATION.md، من النتايج اللي اتراجعت بس.
سطّبها بأمر واحد
من الترمينال، وانت جوه فولدر المشروع.
للمشروع ده
الأمر زي ما هو في الـ README بتاع Cloudflare. لو سألك تسطبها لأنهي agent، اختار اللي بتشتغل عليه.
npx skills add https://github.com/cloudflare/security-audit-skill --skill security-auditلكل المشاريع على جهازك
npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit --global
اطلب الـ audit بجملة واحدة
افتح الـ agent جوه الريبو، واكتب جملة من دول.
طلب audit مباشر بيشغّل الست مراحل ويطلع تقارير. سؤال أمان عادي بياخد نصيحة بس، إلا لو طلبت تقارير.
لو محددتش فولدر، النتايج بتتحفظ برا الريبو بتاعك، في فولدر security-audit-skill في الـ home.
security audit this codebase
find security vulnerabilities in ./src
do a security review, output to ~/audits/my-projectمتعملش كده، واعمل كده
- متسيبوش يشغّل كود الريبو على جهازك وهو مفتوح على النت. شغّله في sandbox من غير network.
- متخليش النتايج جوه الريبو وتعملها commit بالغلط. سيبها في الفولدر الافتراضي برا الريبو.
- متعتبرش اللي لسه needs_validation ثغرة مؤكدة. صلّح الـ confirmed الأول، وبعدين اتحقق من الباقي بنفسك.
اقرا النتيجة: 3 أحكام بس
كل ثغرة محتملة بتطلع بحكم واحد، ومعاه السبب.
- confirmed
- ليها تتبع كامل في الكود، ونتيجة اتشافت فعلًا. دي تصلحها الأول.
- needs_validation
- فاضل فيها معلومة واحدة محددة متحسمتش، وملهاش severity لسه. راجعها بنفسك.
- rejected
- اللي راجعها أثبت إنها مش ثغرة، فمتضيعش وقتك عليها.
الـ severity عندهم احتمال الهجوم في حجم الضرر، مش مجرد مخالفة لـ checklist معينة.
شغّلها أكتر من مرة
الـ runs بتكمّل على بعض، مش بتبدأ من الصفر.
في تجارب Cloudflare، run واحد لقى حوالي نص الثغرات اللي لقوها كل الـ runs مع بعض. كل run جديد بيقرا الخريطة والنتايج اللي قبله، يدور في الحتت اللي متغطتش، ويراجع الكود اللي اتغير.
لو في طبقة حماية بتمنع الهجوم، غياب طبقة تانية مش ثغرة. الـ skill بتكتبها ملاحظة تحسين.
مش بتستخدم coding agent؟ طبّق القاعدة بإيدك
ده مش الـ skill، بس نفس فكرتها: شات جديد خالص يراجع اللي شات تاني قاله.
- افتح شات جديد، مش اللي كتب الكود أو لقى الثغرات، وارفع الملف.
- اطلب منه يكذّب كل ثغرة، مش يأكدها.
- اللي اتنفى يطلع من القايمة، وتركز في الباقي.
You did not write this code. Another AI says it has these issues:
1. SQL injection in POST /login
2. Auth bypass on /admin
For each one, try to prove it is NOT real. Trace the input from where
it enters to where it is used. Answer per issue: confirmed,
needs validation (name the one missing fact), or rejected, and why.