سير العمل
تغطي هذه الدليل أنماط سير العمل الشائعة لـ OpenSpec ومتى يتم استخدام كل منها. للإعداد الأساسي، انظر البدء. للرجوع إلى الأوامر، انظر الأوامر.
الفلسفة: الإجراءات، وليس المراحل
تُجبرك سير العمل التقليدية على اجتياز مراحل: التخطيط، ثم التنفيذ، ثم الانتهاء. لكن العمل الحقيقي لا يتناسب تمامًا مع هذه الصناديق.
يتبع OPSX نهجًا مختلفًا:
text
Traditional (phase-locked):
PLANNING ────────► IMPLEMENTING ────────► DONE
│ │
│ "Can't go back" │
└────────────────────┘
OPSX (fluid actions):
proposal ──► specs ──► design ──► tasks ──► implementالمبادئ الأساسية:
- الإجراءات، وليس المراحل - الأوامر هي أشياء يمكنك القيام بها، وليست مراحل عالقًا فيها
- التبعيات هي مُمَكِّنات - إنها تُظهر ما هو ممكن، وليس ما هو مطلوب لاحقًا
التخصيص: يتم تشغيل سير عمل OPSX بواسطة مخططات تُحدد تسلسل المخرجات. راجع التخصيص للحصول على تفاصيل حول إنشاء مخططات مخصصة.
وضعيان
المسار الافتراضي السريع (core profile)
التركيبات الجديدة تستخدم core بشكل افتراضي، والذي يوفر:
/opsx:propose/opsx:explore/opsx:apply/opsx:sync/opsx:archive
التدفق النموذجي:
text
/opsx:propose ──► /opsx:apply ──► /opsx:sync ──► /opsx:archiveسير العمل الموسع/الكامل (اختيار مخصص)
إذا كنت تريد أوامر البناء والهيكلة الصريحة (/opsx:new، /opsx:continue، /opsx:ff، /opsx:verify، /opsx:bulk-archive، /opsx:onboard)، قم بتمكينها باستخدام:
bash
openspec config profile
openspec updateأنماط سير العمل (الوضع الموسع)
ميزة سريعة
عندما تعرف ما تريد بناءه وتحتاج فقط إلى التنفيذ:
text
/opsx:new ──► /opsx:ff ──► /opsx:apply ──► /opsx:verify ──► /opsx:archiveمثال محادثة:
text
أنت: /opsx:new add-logout-button
AI: تم إنشاء openspec/changes/add-logout-button/
جاهز لإنشاء: proposal
أنت: /opsx:ff
AI: جارٍ إنشاء جميع التخطيطات...
✓ proposal.md
✓ specs/
✓ design.md
✓ tasks.md
جاهز للتنفيذ!
أنت: /opsx:apply
AI: جارٍ العمل على المهام...
✓ تمت إضافة زر تسجيل الخروج إلى الرأس
✓ تم تنفيذ مسح الجلسة
✓ تمت إضافة مربع حوار التأكيد
اكتملت جميع المهام!
أنت: /opsx:archive
AI: ✓ تم دمج المواصفات
✓ تم أرشفة التغييرالأفضل لـ: الميزات الصغيرة إلى المتوسطة، إصلاحات الأخطاء، التغييرات المباشرة.
استكشافي
عندما تكون المتطلبات غير واضحة أو تحتاج إلى التحقيق أولاً:
text
/opsx:explore ──► /opsx:new ──► /opsx:continue ──► ... ──► /opsx:applyمثال محادثة:
text
أنت: /opsx:explore
AI: ماذا تريد استكشافه؟
أنت: أريد تحسين أداء تحميل الصفحة لكنني لست متأكدًا
أين تكمن العوائق.
AI: دعني أساعد في التحقيق...
[يحلل أحجام الحزم، يحدد الاستعلامات البطيئة، يراجع
أنماط عرض المكونات]
وجدت ثلاثة عوائق رئيسية:
1. صور كبيرة غير محسّنة
2. جلب بيانات متزامن في ProductList
3. إعادة العرض الناتجة عن تغييرات السياق
أيها تريد معالجته أولاً؟
أنت: لنعالج مشكلة جلب البيانات.
أنت: /opsx:new optimize-product-list-fetching
AI: تم إنشاء التغيير. جاهز لإنشاء: proposal
أنت: /opsx:continue
AI: جارٍ إنشاء الاقتراح بناءً على استكشافنا...
[يكتب اقتراحًا يتضمن رؤى التحقيق]
جاهز لإنشاء: specs, design
أيهما تريد بعد ذلك؟
أنت: /opsx:continue
AI: جارٍ إنشاء المواصفات...الأفضل لـ: تحسين الأداء، التصحيح، القرارات المعمارية، المتطلبات غير الواضحة.
تغييرات متوازية
العمل على تغييرات متعددة في وقت واحد:
text
التغيير أ: /opsx:new ──► /opsx:ff ──► /opsx:apply (قيد التنفيذ)
│
تبديل السياق
│
التغيير ب: /opsx:new ──► /opsx:ff ──────► /opsx:applyمثال محادثة:
text
أنت: أنا أعمل على add-dark-mode لكن اضطررت لإصلاح خطأ
أنت: /opsx:new fix-login-redirect
AI: تم إنشاء openspec/changes/fix-login-redirect/
أنت: /opsx:ff
AI: ✓ تم إنشاء تخطيطات التخطيط
أنت: /opsx:apply
AI: جارٍ العمل على fix-login-redirect...
[ينفذ الإصلاح]
اكتملت جميع المهام!
أنت: /opsx:archive
AI: ✓ تم أرشفة fix-login-redirect
أنت: لنعد إلى الوضع الداكن
أنت: /opsx:apply add-dark-mode
AI: جارٍ استئناف add-dark-mode...
الاستئناف من المهمة 2.3: تحديث الرأس...الأفضل لـ: تدفقات العمل المتوازية، المقاطعات العاجلة، التعاون بين الفريق.
عندما يكون لديك تغييرات مكتملة متعددة، استخدم /opsx:bulk-archive:
text
أنت: /opsx:bulk-archive
AI: تم العثور على 3 تغييرات مكتملة:
- add-dark-mode (جميع المهام منجزة)
- fix-login-redirect (جميع المهام منجزة)
- update-footer (جميع المهام منجزة)
جارٍ التحقق من تعارضات المواصفات...
⚠ كلا التغييرين add-dark-mode و update-footer يؤثران على specs/ui/
جارٍ فحص قاعدة الكود للحل...
كلا التغييرين منفذان. سيتم التطبيق بالترتيب الزمني.
هل تريد أرشفة جميع التغييرات الثلاثة؟
أنت: نعم
AI: ✓ تم أرشفة add-dark-mode
✓ تم أرشفة fix-login-redirect
✓ تم أرشفة update-footer
تم دمج المواصفات بالترتيب: add-dark-mode → update-footerالأرشفة المجمعة تكتشف عندما تؤثر تغييرات متعددة على نفس المواصفات وتحل التعارضات بالتحقق مما تم تنفيذه فعليًا.
إكمال التغيير
تدفق الإكمال الموصى به:
text
/opsx:apply ──► /opsx:verify ──► /opsx:archive
│ │
يتحقق من يطلب المزامنة
التنفيذ إذا لزم الأمرالتحقق: تحقق من عملك
/opsx:verify يتحقق من التنفيذ مقابل مستنداتك عبر ثلاثة أبعاد:
text
أنت: /opsx:verify
AI: جارٍ التحقق من add-auth...
الاكتمال
✓ تم التحقق من جميع المهام الـ 12 في tasks.md
✓ جميع المتطلبات في المواصفات لها كود مقابل
⚠ السيناريو "انتهاء مهلة الجلسة بعد عدم النشاط" غير مختبر
الصحة
✓ التنفيذ يطابق نية المواصفات
✓ الحالات الحدية من السيناريوهات معالجة
✓ حالات الخطأ تطابق تعريفات المواصفات
التماسك
✓ قرارات التصميم منعكسة في هيكل الكود
✓ اصطلاحات التسمية متسقة مع design.md
⚠ التصميم يذكر "مُدار بالأحداث" لكن التنفيذ يستخدم الاستطلاع
ملخص
─────────────────────────────
مشاكل حرجة: 0
تحذيرات: 2
جاهز للأرشفة: نعم (مع تحذيرات)
توصيات:
1. إضافة اختبار لسيناريو انتهاء مهلة الجلسة
2. النظر في إعادة الهيكلة ليكون مُدارًا بالأحداث كما هو مصمم، أو تحديث design.mdما يتحقق منه التحقق:
| البعد | ما يتحقق منه |
|---|---|
| الاكتمال | جميع المهام منجزة، جميع المتطلبات منفذة، السيناريوهات مغطاة |
| الصحة | التنفيذ يطابق نية المواصفات، الحالات الحدية معالجة |
| التماسك | قرارات التصميم منعكسة في الكود، الأنماط متسقة |
التحقق لن يمنع الأرشفة، لكنه يظهر المشاكل التي قد تريد معالجتها أولاً.
الأرشفة: إنهاء التغيير
/opsx:archive يكمل التغيير وينقله إلى الأرشيف:
text
أنت: /opsx:archive
AI: جارٍ أرشفة add-auth...
حالة المستندات:
✓ proposal.md موجود
✓ specs/ موجود
✓ design.md موجود
✓ tasks.md موجود (12/12 مهمة مكتملة)
مواصفات الدلتا: لم تتم مزامنتها بعد إلى الرئيسي
→ هل تريد المزامنة الآن؟
أنت: نعم
AI: ✓ تمت مزامنة المواصفات إلى openspec/specs/auth/spec.md
✓ تم النقل إلى openspec/changes/archive/2025-01-24-add-auth/
تم أرشفة التغيير بنجاح.الأرشفة ستطلب إذا لم تتم مزامنة المواصفات. لن تمنع بسبب المهام غير المكتملة، لكنها ستتحذرك.
متى تستخدم ماذا
/opsx:ff مقابل /opsx:continue
| الموقف | الاستخدام |
|---|---|
| متطلبات واضحة، جاهز للبناء | /opsx:ff |
| استكشاف، تريد مراجعة كل خطوة | /opsx:continue |
| تريد التكرار على الاقتراح قبل المواصفات | /opsx:continue |
| ضغط وقت، تحتاج للتحرك بسرعة | /opsx:ff |
| تغيير معقد، تريد السيطرة | /opsx:continue |
قاعدة عامة: إذا كنت تستطيع وصف النطاق الكامل مقدمًا، استخدم /opsx:ff. إذا كنت تكتشف أثناء العمل، استخدم /opsx:continue.
متى تحدّث مقابل تبدأ من جديد
سؤال شائع: متى يكون تحديث تغيير موجود مقبولًا، ومتى يجب أن تبدأ تغييرًا جديدًا؟
حدّث التغيير الحالي عندما:
- نفس النية، تنفيذ مُحسّن
- النطاق يتضيق (الإصدار الأولي أولاً، الباقي لاحقًا)
- تصحيحات مدفوعة بالتعلم (قاعدة الكود ليست كما توقعتها)
- تعديلات التصميم بناءً على اكتشافات التنفيذ
ابدأ تغييرًا جديدًا عندما:
- النية تغيرت جذريًا
- النطاق امتد إلى عمل مختلف تمامًا
- يمكن تمييز التغيير الأصلي بأنه "منجز" بشكل مستقل
- التصحيحات ستسبب ارتباكًا أكثر من الوضوح
text
┌─────────────────────────────────────┐
│ هل هذا هو العمل نفسه؟ │
└──────────────┬──────────────────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
▼ ▼ ▼
نفس النية؟ >50% تداخل؟ هل يمكن أن يكون
نفس المشكلة؟ نفس النطاق؟ الأصلي "منجزًا" بدون
│ │ هذه التغييرات؟
│ │ │
┌────────┴────────┐ ┌──────┴──────┐ ┌───────┴───────┐
│ │ │ │ │ │
نعم لا نعم لا لا نعم
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
تحديث جديد تحديث جديد تحديث جديدمثال: "إضافة الوضع الداكن"
- "نحتاج أيضًا لدعم السمات المخصصة" → تغيير جديد (النطاق امتد)
- "كشف تفضيلات النظام أصعب مما توقعته" → تحديث (نفس النية)
- "لنرسل المفتاح أولاً، نضيف التفضيلات لاحقًا" → تحديث ثم أرشفة، ثم تغيير جديد
أفضل الممارسات
حافظ على التغييرات مركّزة
وحدة منطقية واحدة من العمل لكل تغيير. إذا كنت تقوم بـ "إضافة ميزة X وأيضًا إعادة هيكلة Y"، فكر في تغييرين منفصلين.
لماذا هذا مهم:
- أسهل للمراجعة والفهم
- سجل أرشيف أنظف
- يمكن شحنه بشكل مستقل
- تراجع أبسط إذا لزم الأمر
استخدم /opsx:explore للمتطلبات غير الواضحة
قبل الالتزام بتغيير، استكشف مساحة المشكلة:
text
أنت: /opsx:explore
AI: ماذا تريد استكشافه؟
أنت: كيف يجب أن نتعامل مع تحديد المعدل لواجهة برمجة التطبيقات الخاصة بنا؟
AI: دعني أحقق في إعدادك الحالي والخيارات...
[يبحث في قاعدة الكود، ي考虑 الأنماط]
أرى ثلاثة نهج يمكننا اتخاذها:
1. مبني على الوسيط (بسيط، لكل نقطة نهاية)
2. مدعوم بـ Redis (قابل للتوسع، حالة مشتركة)
3. دلو رموز لكل مستخدم (عادل، معقد)
حزمة التكنولوجيا الحالية تشير إلى #1 أو #2. ما هو نطاقك؟الاستكشاف يوضح التفكير قبل إنشاء المستندات.
تحقق قبل الأرشفة
استخدم /opsx:verify للتحقق من أن التنفيذ يطابق المستندات:
text
أنت: /opsx:verify
AI: جارٍ التحقق من add-dark-mode...
✓ جميع المهام في tasks.md محددة
✓ المتطلبات في المواصفات لها كود مقابل
✓ قرارات التصميم منعكسة في التنفيذ
جاهز للأرشفة!يكتشف عدم التطابق قبل إغلاق التغيير.
سمِّ التغييرات بوضوح
الأسماء الجيدة تجعل openspec list مفيدًا:
text
جيد: تجنب:
add-dark-mode feature-1
fix-login-redirect update
optimize-product-query changes
implement-2fa wipمرجع الأوامر السريع
للحصول على تفاصيل الأوامر والخيارات الكاملة، انظر الأوامر.
| الأمر | الغرض | متى يُستخدم |
|---|---|---|
/opsx:propose | إنشاء تغيير + تخطيط المصنوعات | المسار الافتراضي السريع (الملف الشخصي core) |
/opsx:explore | التفكير في الأفكار | متطلبات غير واضحة، تحقيق |
/opsx:new | بدء هيكل تغيير | الوضع الموسع، التحكم الصريح في المصنوعات |
/opsx:continue | إنشاء المصنوع التالي | الوضع الموسع، إنشاء المصنوعات خطوة بخطوة |
/opsx:ff | إنشاء جميع مصنوعات التخطيط | الوضع الموسع، نطاق واضح |
/opsx:apply | تنفيذ المهام | جاهز لكتابة الكود |
/opsx:verify | التحقق من صحة التنفيذ | الوضع الموسع، قبل الأرشفة |
/opsx:sync | دمج مواصفات الدلتا | الوضع الموسع، اختياري |
/opsx:archive | إتمام التغيير | اكتملت جميع الأعمال |
/opsx:bulk-archive | أرشفة تغييرات متعددة | الوضع الموسع، العمل المتوازي |