إعداد المشروع (config.yaml)
كل حقل في openspec/config.yaml: المخطط والسياق والقواعد التي يخطط لها هذا المشروع.
الموقع
يحتفظ كل مشروع OpenSpec بملف الإعداد الخاص به في openspec/config.yaml، في جذر المشروع.
الحقول
| المفتاح | النوع | مطلوب | التأثير |
|---|---|---|---|
schema | string | نعم | مخطط سير العمل الذي تتبعه تغييرات هذا المشروع |
context | string | لا | يُحقن في كل مُخرَج وتطبيق وأرشفة |
rules | map: معرف المُخرَج ← قائمة من السلاسل النصية | لا | قواعد إضافية تُضاف إلى الإرشادات المضمنة لمُخرَج واحد |
operations | map: عملية ← قائمة إرشادات | لا | إرشادات استشارية لأعمال التطبيق والأرشفة |
store | string | لا | جذر OpenSpec الاحتياطي عندما يكون مجلد openspec/ للإعداد فقط |
references | list | لا | متاجر تتم فهرسة مواصفاتها في التعليمات |
الحقول غير الصالحة لا تتسبب أبدًا في فشل أمر ما. يتم التحقق من صحة كل حقل بشكل مستقل، وتُسقط القيمة السيئة مع تحذير. الملف الذي لا يمكن قراءته أو ليس YAML صالحًا يتم تجاهله مع تحذير، باستثناء openspec validate الذي يخرج بالرمز 1 ليتم اكتشافه من قبل CI.
ما يجب كتابته في هذه الحقول مغطى في إعداد المشروع.
schema
مخطط سير العمل الذي يتبعه كل تغيير في هذا المشروع. القيم الصالحة هي spec-driven أو اسم مخطط يعرّفه المشروع. شغّل openspec schemas لسرد أسماء المخططات المتاحة.
context
نص حر يُحقن في تعليمات كل مُخرَج ويُزوَّد به التطبيق والأرشفة. الحد الأقصى هو 50KB، والقيمة الأكبر تُتجاهل مع تحذير.
rules
قواعد إضافية لمُخرَج واحد، تُضاف إلى الإرشادات المضمنة في المخطط:
rules:
proposal:
- Keep proposals under 500 wordsمعرفات المُخرَجات غير مقيدة بالأسماء المضمنة، لذا تعمل المُخرَجات من المخططات المخصصة كمفاتيح.
operations
إرشادات استشارية حول كيفية إجراء أعمال التطبيق والأرشفة، منفصلة عن قواعد المُخرَجات:
operations:
apply:
guidance:
- Keep test summaries conciseفقط apply و archive يتم قراءتهما.
store
معرف متجر يُستخدم كجذر لـ OpenSpec، ويُستشار فقط عندما يكون مجلد openspec/ للإعداد فقط (بدون specs/ أو changes/). هو بمثابة خيار احتياطي وليس تجاوزًا أبدًا. السلم الكامل هو تحديد الجذر.
references
معرفات متاجر تستند إليها أعمال هذا المشروع. تتم إضافة فهرس بمواصفات كل متجر (المعرف، الملخص، أمر الجلب) إلى مخرجات التعليمات. محتوى المواصفات لا يُضمَّن أبدًا، وتحديد الجذر لا يتأثر أبدًا. الإدخال هو إما معرف متجر أو map يحتوي على id ومصدر استنساخ اختياري remote:
references:
- platform-specs
- id: billing-specs
remote: git@github.com:acme/billing-specs.gitمثال
ملف config.yaml معبأ:
schema: spec-driven
context: |
Designs and tasks must cover Windows, macOS, and Linux
Write all artifacts in Spanish
rules:
proposal:
- Keep proposals under 500 words
- Always state what is out of scope
tasks:
- Break tasks into chunks of max 2 hours
operations:
apply:
guidance:
- Keep test summaries concise
archive:
guidance:
- Summarize the archive outcome before finishingأسماء قديمة
يُقرأ openspec/config.yml كاسم مستعار عندما لا يوجد config.yaml. عندما يوجد كلا الملفين، يُفضَّل config.yaml ويُتجاهل config.yml. الأمر openspec init يُنشئ config.yaml.