การตั้งค่าโครงการ (config.yaml)
ทุกฟิลด์ของ openspec/config.yaml: schema, บริบท และกฎที่โครงการนี้วางแผนไว้
ตำแหน่ง
โครงการ OpenSpec แต่ละโครงการเก็บไฟล์ config ไว้ที่ openspec/config.yaml ในไดเรกทอรีรากของโครงการ
ฟิลด์
| คีย์ | ชนิดข้อมูล | บังคับ | ผลกระทบ |
|---|---|---|---|
schema | string | ใช่ | workflow schema ที่การเปลี่ยนแปลงของโครงการนี้เป็นไปตาม |
context | string | ไม่ | ถูกแทรกเข้าไปในทุก artifact, apply และ archive |
rules | map: ID artifact → รายการ string | ไม่ | กฎเพิ่มเติมที่เพิ่มเข้าไปในคำแนะนำในตัวของ artifact หนึ่ง |
operations | map: operation → รายการคำแนะนำ | ไม่ | คำแนะนำเชิงที่ปรึกษาสำหรับงาน apply และ archive |
store | string | ไม่ | OpenSpec root สำรองเมื่อ openspec/ นี้เป็นเพียง config |
references | list | ไม่ | Store ที่ spec ถูกจัดทำดัชนีเข้าสู่คำแนะนำ |
ฟิลด์ที่ไม่ถูกต้องจะไม่ทำให้คำสั่งล้มเหลว แต่ละฟิลด์จะถูกตรวจสอบแยกกัน และค่าที่ไม่ถูกต้องจะถูกทิ้งพร้อมกับคำเตือน ไฟล์ที่อ่านไม่ได้หรือไม่ใช่ YAML ที่ถูกต้องจะถูกเพิกเฉยพร้อมกับคำเตือน ยกเว้นโดย openspec validate ซึ่งจะออกด้วยรหัส 1 เพื่อให้ CI ตรวจจับได้
สิ่งที่ควรเขียนในฟิลด์เหล่านี้อธิบายไว้ใน การตั้งค่าโครงการ
schema
workflow schema ที่การเปลี่ยนแปลงทั้งหมดในโครงการนี้เป็นไปตาม ค่าที่ถูกต้องคือ spec-driven หรือชื่อ schema ที่โครงการกำหนดขึ้น รัน openspec schemas เพื่อแสดงรายการชื่อ schema ที่มีอยู่
context
ข้อความอิสระที่ถูกแทรกเข้าไปในคำแนะนำของทุก artifact และส่งให้กับ apply และ archive ขีดจำกัดคือ 50KB และค่าที่ใหญ่กว่านั้นจะถูกเพิกเฉยพร้อมกับคำเตือน
rules
กฎเพิ่มเติมสำหรับ artifact หนึ่ง ซึ่งเพิ่มเข้าไปในคำแนะนำในตัวของ schema:
rules:
proposal:
- Keep proposals under 500 wordsID artifact ไม่ถูกจำกัดเฉพาะชื่อในตัว ดังนั้น artifact จาก schema ที่กำหนดเองจึงใช้เป็นคีย์ได้
operations
คำแนะนำเชิงที่ปรึกษาสำหรับวิธีการดำเนินงาน apply และ archive ซึ่งแยกจากกฎของ artifact:
operations:
apply:
guidance:
- Keep test summaries conciseอ่านเฉพาะ apply และ archive เท่านั้น
store
store id ที่ใช้เป็น OpenSpec root ซึ่งจะถูกใช้เฉพาะเมื่อไดเรกทอรี openspec/ นี้เป็นเพียง config (ไม่มี specs/ หรือ changes/) เป็นการสำรอง ไม่ใช่การแทนที่ ลำดับการทำงานเต็มอยู่ที่ การหา root
references
store id ที่ spec ของโครงการนี้อ้างอิงอยู่ ดัชนีของ spec ของแต่ละ store (id, สรุป, คำสั่ง fetch) จะถูกเพิ่มเข้าไปในผลลัพธ์คำแนะนำ เนื้อหาของ spec จะไม่ถูกฝังแนบ และการหา root จะไม่ถูกกระทบ รายการแต่ละรายการเป็น store id หรือ map ที่มี id และแหล่ง clone เพิ่มเติมที่เลือกได้ชื่อ 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