# PushNotification

يُرسل إشعارًا على سطح المكتب من جلسة Claude Code الحالية. إذا كان التحكم عن بُعد متصلًا، يُرسَل الإشعار أيضًا إلى هاتف المستخدم، ليسترعي انتباهه من أي مكان يتواجد فيه ويعيده إلى الجلسة.

## متى يُستخدم

- اكتملت مهمة طويلة الأمد بينما كان المستخدم على الأرجح بعيدًا عن الطرفية
- اكتمل بناء البرنامج أو تشغيل الاختبارات أو النشر، والنتيجة جاهزة للمراجعة
- وُصل إلى نقطة قرار تستلزم مدخلات المستخدم قبل المتابعة
- ظهر خطأ أو عائق لا يمكن حله بشكل مستقل
- طلب المستخدم صراحةً إشعاره عند اكتمال مهمة معينة أو تحقق شرط محدد

## متى لا يُستخدم

لا ترسل إشعارًا لتحديثات التقدم الروتينية أثناء تنفيذ مهمة، ولا لتأكيد إجابة سؤال طرحه المستخدم للتو وهو ينتظر ردًا واضحًا. لا ترسل إشعارًا عند انتهاء مهمة قصيرة — إذا أرسل المستخدم المهمة للتو وهو ينتظر، فالإشعار لا قيمة له ويُضعف الثقة في الإشعارات المستقبلية. مِل بشدة نحو عدم الإرسال.

## المعاملات

- `message` (سلسلة نصية، مطلوب): نص الإشعار. احتفظ به أقل من 200 حرف؛ تقوم أنظمة التشغيل للهواتف المحمولة باقتصاص السلاسل الأطول. ابدأ بما سيتصرف المستخدم بناءً عليه: "build failed: 2 auth tests" أكثر فائدة من "task complete".
- `status` (سلسلة نصية، مطلوب): يُضبط دائمًا على `"proactive"`. هذا معرِّف ثابت ولا يتغير.

## أمثلة

### المثال الأول: الإشعار عند اكتمال تحليل طويل

طُلب إجراء مراجعة شاملة للاعتماديات على مستوى المستودع واستغرق تشغيلها عدة دقائق. غادر المستخدم مكانه. عند جاهزية التقرير:

```
message: "اكتملت مراجعة الاعتماديات: 3 ثغرات CVE عالية الخطورة في lodash وaxios وjsonwebtoken. التقرير: audit-report.txt"
status: "proactive"
```

### المثال الثاني: الإشارة إلى نقطة قرار أثناء العمل المستقل

خلال إعادة هيكلة متعددة الخطوات، اكتُشف أن وحدتين لهما واجهات متعارضة ولا يمكن دمجهما دون قرار تصميمي:

```
message: "توقفت إعادة الهيكلة: واجهات الرمز في AuthService وUserService متعارضة. يلزم قرارك قبل المتابعة."
status: "proactive"
```

## ملاحظات

- مِل بشدة نحو **عدم** الإرسال. الإشعار يقاطع المستخدم بصرف النظر عما يفعله. عامله كتكلفة يجب تبريرها بقيمة المعلومة.
- ابدأ بمحتوى قابل للتنفيذ. يجب أن تُخبر الكلمات الأولى المستخدم بما حدث وبما يجب فعله إن وُجد — لا بتسمية حالة عامة.
- احتفظ بـ `message` أقل من 200 حرف. ستقتص أنظمة التشغيل المحمولة السلاسل الأطول، مما قد يُفقد الجزء الأهم إذا كان في النهاية.
- إذا أشارت النتيجة إلى أن الإرسال لم يتم لأن التحكم عن بُعد غير متصل، فهذا سلوك متوقع. لا حاجة لإعادة المحاولة أو أي إجراء إضافي؛ إشعار سطح المكتب المحلي يُطلَق على أي حال.
- تجنب إغراق المستخدم بالإشعارات. إذا أُرسلت إشعارات بكثرة لأحداث ثانوية، سيبدأ المستخدم في تجاهلها. احتفظ بهذه الأداة للحظات التي يكون فيها احتمال كبير بأن المستخدم قد ابتعد وسيرغب في معرفة النتيجة الآن.
