جاري التحميل...
جاري التحميل...
ابنِ شريط حالة مخصّصًا واحترافيًا في Claude Code يعرض أهم المعلومات للمطورين.
# المهمة: إنشاء شريط حالة احترافي للمطورين في Claude Code
## الدور
أنت مبرمج أنظمة تنشئ سكربت شريط حالة مخصصًا وعالي الكفاءة لـ Claude Code.
## المطلوب تسليمه
سكربت Python بملف واحد (`~/.claude/statusline.py`) يعرض معلومات حرجة للمطورين في سطر الحالة داخل Claude Code.
## مواصفات الإدخال
اقرأ JSON من stdin بالبنية التالية:
```json
{
"model": {"display_name": "Opus|Sonnet|Haiku"},
"workspace": {"current_dir": "/path/to/workspace", "project_dir": "/path/to/project"},
"output_style": {"name": "explanatory|default|concise"},
"cost": {
"total_cost_usd": 0.0,
"total_duration_ms": 0,
"total_api_duration_ms": 0,
"total_lines_added": 0,
"total_lines_removed": 0
}
}
```
## متطلبات الإخراج
### التنسيق
* اطبع سطرًا واحدًا بالضبط إلى stdout
* استخدم أكواد ألوان ANSI 256-color: `\033[38;5;Nm` مع لوحة ألوان محسّنة لتباين عالٍ
* استخدم قصًّا ذكيًا للنص: عرض النص المرئي ≤ 80 حرفًا، ولا تُحتسب أكواد هروب ANSI ضمن الحد
* استخدم رموز Unicode: ● (نظيف)، + (مضاف)، ~ (معدّل)
* لوحة الألوان: برتقالي 208، أزرق 33، أخضر 154، أصفر 229، أحمر 196، رمادي 245 (مجرّبة على الطرفيات ذات الخلفية الداكنة والفاتحة)
### ترتيب المعلومات حسب الأولوية من اليسار إلى اليمين
1. الأساس: اسم النموذج (برتقالي)
2. السياق: الاسم الأساسي لمجلد المشروع basename (أزرق)
3. حالة Git:
* اسم الفرع (أخضر)
* نظيف: ● (رمادي خافت)
* معدّل: ~N (أصفر، N = عدد الملفات)
* مضاف: +N (أصفر، N = عدد الملفات)
4. البيانات الوصفية (رمادي خافت):
* الملفات غير الملتزم بها: !N (أحمر، N = العدد من `git status --porcelain`)
* نسبة API: A:N% (N = `api_duration / total_duration * 100`)
### مثال على الإخراج
\033[38;5;208mOpus\033[0m \033[38;5;33mIsaacLab\033[0m \033[38;5;154mmain\033[0m \033[38;5;245m●\033[0m \033[38;5;245mA:12%\033[0m
## القيود التقنية
### الأداء (حرج)
* زمن التنفيذ: < 100ms (يُستدعى كل 300ms)
* استمرارية الكاش: خزّن كاش حالة Git في `/tmp/claude_statusline_cache.json` (ينتهي السكربت بعد كل تشغيل، لذلك يجب أن يستمر الكاش على القرص)
* مدة صلاحية الكاش TTL: حدّث أعداد ملفات Git فقط عندما يكون عمر الكاش > 5 ثوانٍ أو يتغيّر وقت تعديل `.git/index`
* تحسين منطق Git:
* اسم الفرع: اقرأ `.git/HEAD` مباشرة (بدون subprocess)
* أعداد الملفات: استدعِ `subprocess.run(['git', 'status', '--porcelain'])` فقط عند انتهاء صلاحية الكاش
* المكتبة القياسية فقط: لا تستخدم أي حزم خارجية (استخدم فقط `sys`, `json`, `os`, `pathlib`, `subprocess`, `time`)
### التعامل مع الأخطاء
* خطأ في تحليل JSON → أعِد سلسلة فارغة `""`
* الحقول الناقصة → احذف ذلك القسم (ولا يتعطل السكربت)
* عدم العثور على مجلد Git → احذف قسم Git بالكامل
* أي استثناء → أعِد سلسلة فارغة `""`
## هيكلة الكود
* ملف واحد، < 100 سطر
* التعامل مع ترميز UTF-8 لضمان إخراج Unicode موثوق
* دالة واحدة كحد أقصى لكل مسؤولية (التحليل، Git، التنسيق)
* يلزم استخدام Type hints لكل الدوال
* Docstring لكل دالة يشرح الغرض منها
## خطوات الدمج
1. احفظ السكربت في `~/.claude/statusline.py`
2. شغّل `chmod +x ~/.claude/statusline.py`
3. أضف التالي إلى `~/.claude/settings.json`:
```json
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.py",
"padding": 0
}
}
```
4. اختبره يدويًا: `echo '{"model":{"display_name":"Test"},"workspace":{"current_dir":"/tmp"}}' | ~/.claude/statusline.py`
## قائمة التحقق
* يعمل السكربت بدون حزم خارجية (باستثناء استدعاء واحد لـ `git status --porcelain` عند تحديث الكاش)
* عرض النص المرئي ≤ 80 حرفًا (مع استبعاد أكواد ANSI من الحساب)
* تظهر الألوان بوضوح على خلفيات الطرفية الداكنة والفاتحة
* زمن التنفيذ < 100ms في مساحة عمل نموذجية (ينبغي أن تكون الاستدعاءات المعتمدة على الكاش < 20ms)
* يتعامل بسلاسة مع عدم وجود مستودع Git
* يُنشأ ملف الكاش في `/tmp` ويحترم مدة TTL
* تُحدّث أعداد ملفات Git عند تغيّر وقت تعديل `.git/index` أو بعد مرور 5 ثوانٍ
## سياق اتخاذ القرارات
هذا شريط حالة بأسلوب احترافي للمطورين. يعطي الأولوية لـ:
* معلومات Git تفصيلية لتعزيز الانتباه عند التبديل بين الفروع
* مراقبة كفاءة API لدعم التطوير الواعي بالتكلفة
* كثافة بصرية عالية لعرض أكبر قدر من المعلومات بأقل عدد ممكن من الأحرفوكيل ذكاء اصطناعي يؤتمت نقل بيانات العملاء من جداول البيانات إلى الأنظمة البرمجية باستخدام سكربتات Playwright، ثم ينفّذ اختبارات تحقق للتأكد من سلامة النظام ودقته.
مصفوفة عملية لتحليل المفاضلة بين خيارين أو أكثر بمنهجية استراتيجية ومنطقية متعددة الأبعاد.