---
name: mobile-supply-chain-security
description: >-
  دقّق سلسلة توريد تطبيق Flutter/Android وحزم npm المساندة: ملفات القفل،
  الإصدارات، الحزم المهجورة أو الضعيفة، Gradle/plugins، الأسرار، التراخيص،
  وSBOM. استخدمها عند إضافة dependency أو قبل إصدار أو عند مراجعة تنبيه CVE
  أو سلامة أدوات البناء.
compatibility: ZCode وClaude Code؛ التدقيق المحلي للوكيل، وأي استعلام شبكة أو تثبيت وفق عقد المالك.
---

# أمن سلسلة توريد الهاتف

**النوع:** مهارة داخلية خاصة بالمشروع.

## الحدود

1. ابدأ بـ`AGENTS.md` و`npm run c:state` مرة واحدة في الجلسة.
2. لا تثبّت أو تحدّث dependency أثناء التدقيق دون طلب صريح.
3. أي dependency جديدة تُقيد بإصدار دقيق أو حد مشروع مقصود، وتراجع ضد
   typosquatting وسمعة المصدر والصلاحيات.
4. أوامر الشبكة وفحص السجلات الخارجية ينفذها المالك؛ يمكن للوكيل تحليل
   manifests وlockfiles وcache محليًا.
5. لا تطبع سرًا مكتشفًا؛ سجّل النوع والمسار والقيمة مقنّعة.

## الجرد

راجع حسب الموجود:

- `apps/mobile/pubspec.yaml` و`pubspec.lock`.
- Gradle wrapper وplugins وrepositories وAndroid manifest.
- `package.json` وlockfile الفعلي؛ لا تفترض أن كل npm dependency يدخل APK.
- GitHub Actions وأي scripts تنفذ أثناء build/install.
- binary assets أو jars أو SDKs مضمّنة يدويًا.

اربط كل dependency بمستهلك وسبب. الحزمة غير المستخدمة سطح خطر وكلفة بناء.

## فئات التدقيق

### سلامة المصدر والإصدار

- lockfile موجود ومتوافق مع manifest.
- لا repository غير موثوق أو HTTP أو مصدر Git غير مثبت بمرجع ثابت.
- Gradle wrapper checksum/version ومصادر plugins معروفة.
- لا install script غامض أو تنزيل binary وقت البناء بلا تحقق.

### الثغرات والصيانة

- فرّق بين package مباشر ومتعدٍ، وبين code reachable وغير مستخدم.
- تحقق من النسخة المتأثرة والمدى والإصلاح؛ اسم CVE وحده لا يكفي.
- قيّم أثر التحديث على Android min/target SDK وFlutter APIs قبل اقتراحه.
- عند غياب قاعدة ثغرات حديثة، اكتب «غير متحقق شبكيًا» بدل «آمن».

### الأسرار والبيانات

- service role، private keys، signing material، tokens امتيازية = حرج.
- Supabase anon key معرّف عميل عام، وليس سرًا بحد ذاته؛ راجع RLS والحد بدل
  الإبلاغ الكاذب.
- لا أسرار في assets أو Gradle properties الملتزمة أو logs أو sourcemaps.

### التراخيص وSBOM

أنشئ inventory قابلًا للتتبع: الاسم، النسخة، النوع، المصدر، الرخصة،
الاستخدام، وحالة الثغرات. لا تخمّن رخصة عند غيابها. SBOM وصف، لا ضمان أمن.

## الأولوية والإصلاح

رتّب حسب: سر امتيازي، تنفيذ build غير موثوق، ثغرة قابلة للوصول، dependency
مهجورة حرجة، ثم الدين الصياني. اقترح أصغر تحديث متوافق واختبارات regression،
ولا تجمع ترقية كبيرة مع إصلاح أمني صغير بلا ضرورة.

## توافق الوكلاء

- **ZCode وClaude Code:** أدوات التحليل المحلية متبادلة؛ اختلاف اسم الأداة
  لا يغير الأدلة المطلوبة.
- مهارات Claude الخاصة بالإصدارات والتحديثات تبقى محفوظة، ولا تستدعى لتعديل
  الإصدارات إلا بطلب المالك.
- لا تجعل خدمة SaaS خارجية شرطًا؛ سلّم أوامر المالك عند الحاجة إلى قاعدة CVE
  حديثة دون إرسال كود أو أسرار.

## بوابة ما قبل التسليم

- [ ] جرد manifests وlockfiles وbuild scripts مكتمل للنطاق.
- [ ] فُصل المباشر عن المتعدي والقابل للوصول عن النظري.
- [ ] لم يُعرض anon key بوصفه secret امتيازيًا.
- [ ] لا سر مطبوع في التقرير.
- [ ] القيود الشبكية معلنة ولم يُدّع حداثة CVE بلا تحقق.
- [ ] لا dependency عُدلت أثناء تدقيق قراءة فقط.
