# Bash

يُشغِّل أمر صدفة داخل دليل عمل دائم ويُعيد stdout/stderr الخاص به. يُستحسن حصره في العمليات التي لا تستطيع أي أداة مخصصة في Claude Code التعبير عنها، مثل تشغيل git أو npm أو docker أو سكربتات البناء.

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

- تنفيذ عمليات git (`git status`، `git diff`، `git commit`، `gh pr create`)
- تشغيل مديري الحِزم وأدوات البناء (`npm install`، `npm run build`، `pytest`، `cargo build`)
- إطلاق عمليات طويلة الأمد (خوادم التطوير، المراقبات) في الخلفية باستخدام `run_in_background`
- استدعاء واجهات سطر الأوامر الخاصة بمجال معين (`docker`، `terraform`، `kubectl`، `gh`) التي لا يوجد لها مكافئ مدمج
- تسلسل خطوات متعاقبة باستخدام `&&` عندما يكون الترتيب مهماً

## المعاملات

- `command` (سلسلة، مطلوب): أمر الصدفة المضبوط المراد تنفيذه.
- `description` (سلسلة، مطلوب): ملخص قصير بصيغة المبني للمعلوم (5-10 كلمات للأوامر البسيطة؛ مزيد من السياق للمُتسلسلة أو المبهمة).
- `timeout` (رقم، اختياري): المهلة بالمللي ثانية، حتى `600000` (10 دقائق). الافتراضي `120000` (دقيقتان).
- `run_in_background` (قيمة منطقية، اختياري): عندما تكون `true`، يعمل الأمر منفصلاً وستتلقى إشعاراً عند الاكتمال. لا تُضف `&` بنفسك.

## أمثلة

### مثال 1: فحص حالة المستودع قبل الالتزام
أطلق `git status` و`git diff --stat` بوصفهما استدعاءي `Bash` متوازيين في الرسالة نفسها لجمع السياق بسرعة، ثم كوِّن الالتزام في استدعاء تالٍ.

### مثال 2: تسلسل خطوات بناء متعاقبة
استخدم استدعاءً واحداً مثل `npm ci && npm run build && npm test` حتى لا تُنفَّذ كل خطوة إلا بعد نجاح سابقتها. استخدم `;` فقط إذا أردت عمداً أن تعمل الخطوات اللاحقة حتى بعد الإخفاقات.

### مثال 3: خادم تطوير طويل الأمد
استدعِ `npm run dev` مع `run_in_background: true`. ستُخطر عندما ينتهي. لا تستقصِ بحلقات `sleep`؛ شخِّص الإخفاقات بدلاً من إعادة المحاولة عمياء.

## ملاحظات

- يستمر دليل العمل بين الاستدعاءات، لكن حالة الصدفة (المتغيرات المُصدَّرة ودوال الصدفة والاختصارات) لا تستمر. فضِّل المسارات المطلقة وتجنب `cd` إلا إذا طلب المستخدم ذلك.
- فضِّل الأدوات المخصصة على مكافئاتها في الصدفة: `Glob` بدلاً من `find`/`ls`، و`Grep` بدلاً من `grep`/`rg`، و`Read` بدلاً من `cat`/`head`/`tail`، و`Edit` بدلاً من `sed`/`awk`، و`Write` بدلاً من `echo >` أو heredocs، والنص العادي للمساعد بدلاً من `echo`/`printf` للمخرجات المعروضة على المستخدم.
- ضع علامات اقتباس مزدوجة حول أي مسار يحتوي على مسافات (مثل `"/Users/me/My Project/file.txt"`).
- للأوامر المستقلة، أجرِ عدة استدعاءات `Bash` متوازية داخل رسالة واحدة. اربط بـ `&&` فقط عندما يعتمد أمر على آخر.
- المخرج الذي يتجاوز 30000 حرف يُقطع. عند التقاط سجلات كبيرة، أعد توجيهها إلى ملف ثم اقرأه بأداة `Read`.
- لا تستخدم أبداً أعلاماً تفاعلية مثل `git rebase -i` أو `git add -i`؛ فلا يمكنها استقبال مدخلات عبر هذه الأداة.
- لا تتخطَّ خطافات git (`--no-verify`، `--no-gpg-sign`) أو تُجري عمليات مدمرة (`reset --hard`، `push --force`، `clean -f`) إلا إذا طلب المستخدم ذلك صراحةً.
