Skip to content

سير العمل

تغطي هذه الدليل أنماط سير العمل الشائعة لـ 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أرشفة تغييرات متعددةالوضع الموسع، العمل المتوازي

الخطوات التالية

  • الأوامر - مرجع الأوامر الكامل مع الخيارات
  • المفاهيم - نظرة معمقة في المواصفات والمصنوعات والمخططات
  • التخصيص - إنشاء سير عمل مخصص