ตัวอย่างและสูตรปฏิบัติ
การเปลี่ยนแปลงจริง ตั้งแต่ต้นจนจบ แต่ละสูตรปฏิบัติจะแสดงคำสั่งที่คุณจะพิมพ์และผลตอบกลับที่คุณจะเห็น เพื่อให้คุณจับคู่สถานการณ์ของคุณกับรูปแบบที่กำหนดแล้วคัดลอกใช้ได้ สูตรปฏิบัติเหล่านี้ใช้คำสั่ง core เริ่มต้น (propose, explore, apply, sync, archive) หากชุดคำสั่งขยายช่วยได้ จะมีการระบุไว้
ข้อควรจำก่อนเริ่มต้น: คำสั่ง Slash เช่น /opsx:propose ใช้ใน แชทผู้ช่วย AI ของคุณ และคำสั่ง openspec ใช้ใน เทอร์มินัล ของคุณ หากคุณยังไม่เคยใช้ ให้อ่าน วิธีทำงานของคำสั่ง ก่อน ในบันทึกบทสนทนาต่อไปนี้ You: และ AI: เป็นส่วนของแชท และบรรทัดที่ขึ้นต้นด้วย $ เป็นส่วนของเทอร์มินัล
ยังไม่แน่ใจว่าจะสร้างอะไร? สูตรปฏิบัติส่วนใหญ่จะให้ประโยชน์มากขึ้นหากคุณเริ่มต้นด้วย
/opsx:exploreเพื่อคิดทบทวนก่อน สูตรปฏิบัติ 3 แสดงการใช้งานจริง และคู่มือ สำรวจก่อนเริ่ม อธิบายเหตุผลทั้งหมด
สูตรปฏิบัติ 1: ฟีเจอร์ขนาดเล็ก เส้นทางเร็ว
เวลาที่ควรใช้: คุณรู้ว่าต้องการอะไร และเป็นงานที่จำกัดขอบเขต สูตรปฏิบัตินี้เป็นสูตรที่ใช้บ่อยที่สุด
ทั้งหมดมีเพียง 3 คำสั่ง: propose (เสนอ) build (สร้าง) และ archive (เก็บถาวร)
text
You: /opsx:propose add-logout-button
AI: สร้าง openspec/changes/add-logout-button/ เรียบร้อย
✓ proposal.md — เหตุผลและรายละเอียด
✓ specs/ — ความต้องการใหม่และสถานการณ์ที่เกี่ยวข้อง
✓ design.md — แนวทางทางเทคนิค
✓ tasks.md — รายการตรวจสอบการนำไปปฏิบัติใช้
พร้อมสำหรับการนำไปปฏิบัติใช้แล้ว รัน /opsx:apply.ตอนนี้อ่านแผนการทำงาน เปิดดู proposal และ delta spec (ข้อกำหนดที่เปลี่ยนแปลง) นี่คือช่วงเวลาที่ OpenSpec ถูกสร้างมาเพื่อ: จับข้อสมมติฐานที่ผิดในขณะที่ยังคงเป็นเพียงหนึ่งย่อหน้า ไม่ได้เป็น 400 บรรทัดของโค้ด แก้ไขอาร์ติแฟคต์ใดๆ โดยตรงหากมีอะไรผิดพลาด จากนั้นดำเนินการต่อ
text
You: /opsx:apply
AI: กำลังดำเนินงานตามรายการงาน...
✓ 1.1 เพิ่มปุ่มออกจากระบบในส่วนหัว
✓ 1.2 ล้างเซสชันเมื่อคลิก
✓ 1.3 เพิ่มกล่องโต้ตอบยืนยัน
งานทั้งหมดเสร็จสมบูรณ์!
You: /opsx:archive
AI: กำลังเก็บถาวร add-logout-button...
✓ ผนวกข้อกำหนดเข้าไปยัง openspec/specs/auth/spec.md
✓ ย้ายไปยัง openspec/changes/archive/2026-06-22-add-logout-button/
เสร็จสมบูรณ์ พร้อมสำหรับการเปลี่ยนแปลงถัดไปเพียงเท่านี้ พฤติกรรมการออกจากระบบปัจจุบันเป็นส่วนหนึ่งของข้อกำหนดของคุณแล้ว และการเปลี่ยนแปลงนี้ถูกเก็บถาวรพร้อมบริบททั้งหมดเรียบร้อย
สูตรปฏิบัติ 2: แก้ไขบั๊ก
เวลาที่ควรใช้: มีบางอย่างที่เสียหาย และคุณต้องการบันทึกการแก้ไขเป็นการเปลี่ยนแปลงพฤติกรรมที่กำหนดเจตนา ไม่ใช่เป็นคอมมิตที่ไม่ทราบสาเหตุ
การแก้ไขบั๊กทำงานเหมือนฟีเจอร์เป๊ะๆ ความแตกต่างอยู่ที่วิธีที่คุณจัดทำข้อเสนอ: อธิบายพฤติกรรมที่ ถูกต้อง ไม่ใช่แค่ "แก้ไขบั๊ก"
text
You: /opsx:propose fix-login-redirect-loop
AI: สร้าง openspec/changes/fix-login-redirect-loop/ เรียบร้อย
ข้อเสนอบันทึกพฤติกรรมที่เสียหายปัจจุบันและพฤติกรรมที่กำหนดไว้เรียบร้อย
delta spec ทำการแก้ไข (MODIFIES) ความต้องการเกี่ยวกับการเปลี่ยนเส้นทาง (redirect) เพื่อให้มีความแม่นยำและสามารถทดสอบได้
พร้อมสำหรับการนำไปปฏิบัติใช้แล้วเนื่องจากการแก้ไขนี้จะถูกบันทึกเป็นความต้องการที่ MODIFIED ร่วมกับสถานการณ์ใหม่ ผู้คนคนต่อไป (หรือเซสชัน AI ถัดไป) จะเห็นไม่เพียงว่าคุณแก้ไขมันแล้ว แต่ยังเห็นความหมายของ "ถูกต้อง" ด้วย จากนั้นใช้ /opsx:apply และ /opsx:archive ตามปกติ
เคล็ดลับ: สำหรับการแก้ไข สถานการณ์ที่ดีคือการทดสอบการถดถอย (regression test) ในรูปแบบข้อความ "กำหนดให้ ผู้ใช้ที่ออกจากระบบแล้ว เมื่อ ผู้ใช้ส่งข้อมูลประจำตัวที่ถูกต้อง แล้ว ผู้ใช้จะเข้าสู่หน้าแดชบอร์ดและไม่ถูกเปลี่ยนเส้นทางอีก" เขียนสิ่งนี้ไว้ และการนำไปปฏิบัติใช้จะมีเป้าหมายที่ชัดเจน
สูตรปฏิบัติ 3: สำรวจก่อนเริ่มดำเนินการ
เวลาที่ควรใช้: คุณมีปัญหา แต่ยังไม่มีแผนการทำงาน คุณไม่แน่ใจว่าจะสร้างอะไร หรือวิธีไหนที่ถูกต้อง
เริ่มต้นด้วย /opsx:explore คำสั่งนี้เป็นพาร์ทเนอร์ในการคิดค้นที่ไม่มีการกำหนดโครงสร้างและไม่สร้างอาร์ติแฟคต์ใดๆ มันจะอ่านโค้ดเบสของคุณและช่วยให้คุณตัดสินใจ
text
You: /opsx:explore
AI: คุณต้องการสำรวจอะไร?
You: Page loads feel slow but I don't know where the time goes.
AI: ให้ฉันดูสิ... ฉันพบสาเหตุที่เป็นไปได้ 3 รายการ:
1. ภาพขนาดใหญ่ที่ไม่ได้รับการปรับแต่งบนรายการสินค้า
2. การดึงข้อมูลแบบซิงโครนัสที่บล็อกการเรนเดอร์
3. การเรนเดอร์ซ้ำที่เกิดจากการเปลี่ยนแปลงของคอนเท็กซ์ (context)
ควรจัดการอันไหนก่อน?
You: The data fetching one.
You: /opsx:propose optimize-product-list-fetching
AI: สร้างการเปลี่ยนแปลงนี้เรียบร้อย พร้อมข้อเสนอที่ได้รับข้อมูลจากสิ่งที่เราพบเมื่อก่อน
พร้อมสำหรับการนำไปปฏิบัติใช้แล้วการสำรวจช่วยให้ความคิดของคุณชัดเจน ก่อน ที่คุณจะใช้การเปลี่ยนแปลงกับมัน เมื่อความเข้าใจเป็นรูปธรรมแล้ว เสนอการเปลี่ยนแปลง และ AI จะนำบริบทนี้ไปใช้ต่อ
สูตรปฏิบัติ 4: จัดการสองการเปลี่ยนแปลงพร้อมกัน
เวลาที่ควรใช้: คุณกำลังดำเนินการฟีเจอร์อยู่กลางทาง และการแก้ไขด่วนได้แทรกเข้าไปก่อนในลำดับความสำคัญ
การเปลี่ยนแปลงแต่ละรายการอยู่ในโฟลเดอร์แยกกัน ดังนั้นการทำงานพร้อมกันจึงไม่เกิดความขัดแย้ง เริ่มต้นแก้ไขบั๊ก นำไปใช้งานได้ทันที แล้วกลับไปทำฟีเจอร์ต่อจากจุดที่คุณหยุดไว้
text
You: I'm partway through add-dark-mode, but I need to fix a login bug now.
You: /opsx:propose fix-login-redirect
AI: สร้าง openspec/changes/fix-login-redirect/ เรียบร้อย พร้อมสำหรับการนำไปปฏิบัติใช้.
You: /opsx:apply
AI: นำการแก้ไขไปปฏิบัติใช้เรียบร้อย งานทั้งหมดเสร็จสมบูรณ์.
You: /opsx:archive
AI: ✓ เก็บถาวร fix-login-redirect เรียบร้อย.
You: Back to dark mode.
You: /opsx:apply add-dark-mode
AI: กำลังดำเนินการ add-dark-mode ต่อ เริ่มจากงาน 2.3: อัปเดตส่วนหัว...การระบุชื่อการเปลี่ยนแปลงใน /opsx:apply add-dark-mode คือวิธีที่คุณชี้ให้ AI รู้ถึงการเปลี่ยนแปลงที่เฉพาะเจาะจงเมื่อมีการเปลี่ยนแปลงที่ใช้งานอยู่หลายรายการ เนื่องจากงานมีการติดตามความคืบหน้าใน tasks.md AI จึงทราบว่าคุณหยุดอยู่จุดใดอย่างแม่นยำ
เมื่อมีการเปลี่ยนแปลงหลายรายการเสร็จพร้อมกัน คำสั่งขยาย /opsx:bulk-archive จะเก็บถาวรทั้งหมดไว้ด้วยกัน และแก้ไขข้อขัดแย้งของข้อกำหนดโดยตรวจสอบสิ่งที่ถูกนำไปปฏิบัติใช้จริง ดูเพิ่มเติมที่ เวิร์กโฟลว์
สูตรปฏิบัติ 5: รีแฟกเตอร์โดยไม่มีการเปลี่ยนแปลงพฤติกรรม
เวลาที่ควรใช้: คุณกำลังปรับโครงสร้างโค้ด และพฤติกรรมที่มองเห็นจากภายนอกควรคงไม่เปลี่ยนแปลง
นี่เป็นกรณีที่น่าสนใจ เพราะการรีแฟกเตอร์ที่ไม่มีการเปลี่ยนแปลงพฤติกรรมเลย ไม่มีอะไรให้เพิ่มเข้าไปในข้อกำหนดของคุณ สัญญาพฤติกรรมไม่เปลี่ยนแปลง ใช้เฉพาะส่วนของการนำไปปฏิบัติใช้ที่เปลี่ยนเท่านั้น ดังนั้นงานทั้งหมดอยู่ในส่วนของ design และ tasks และส่วนต่างของข้อกำหนด (spec delta) จึงว่างเปล่าหรือไม่มีอยู่
text
You: /opsx:propose refactor-payment-module
AI: สร้างการเปลี่ยนแปลงนี้เรียบร้อย ข้อเสนอระบุเป้าหมาย (แยกโมดูลการชำระเงิน ไม่มีการเปลี่ยนแปลงพฤติกรรม) และ design จับโครงสร้างใหม่ไว้ ไม่มีการเปลี่ยนแปลงข้อกำหนดใดๆ เพราะพฤติกรรมคงไม่เปลี่ยนแปลง พร้อมสำหรับการนำไปปฏิบัติใช้แล้วระบุว่าส่วนต่างของข้อกำหนดว่างเปล่าโดยตรงโดยตั้งค่า skip_specs: true ในไฟล์ .openspec.yaml ของการเปลี่ยนแปลง:
yaml
schema: spec-driven
skip_specs: trueหากไม่มีเครื่องหมายนี้ openspec validate จะปฏิเสธการเปลี่ยนแปลงที่มีส่วนต่างเป็นศูนย์ (เพื่อให้เฝ้าระวังไม่ลืมขั้นตอนของข้อกำหนด) หากมีเครื่องหมายนี้ การตรวจสอบจะผ่าน และ openspec status จะแสดงขั้นตอนของข้อกำหนดเป็นการข้ามโดยชัดเจน ไม่ใช่สถานะรอดำเนินการ หากการรีแฟกเตอร์ในที่สุดมีการเปลี่ยนแปลงพฤติกรรม ลบ skip_specs ออกจาก .openspec.yaml และเขียนข้อกำหนดส่วนต่าง — การตรวจสอบจะถือว่ามีข้อขัดแย้งระหว่างเครื่องหมายกับไฟล์ข้อกำหนด ดังนั้นเครื่องหมายที่ล้าสมัยจะไม่ซ่อนอยู่โดยเงียบๆ
การเก็บถาวรการเปลี่ยนแปลงที่มีเครื่องหมายนี้ไม่ต้องการแฟล็กเพิ่มเติม (เนื่องจากไม่มีส่วนต่างให้ผนวก) แยกกันจากนี้ แฟล็ก --skip-specs จะบอกคำสั่งในเทอร์มินัลให้ข้ามขั้นตอนของข้อกำหนดโดยชัดเจน:
bash
$ openspec archive refactor-payment-module --skip-specsแฟล็กนี้มีประโยชน์สำหรับเครื่องมือ CI และการเปลี่ยนแปลงที่เกี่ยวกับเอกสารเพียงอย่างเดียว หลักการคือ: ข้อกำหนดอธิบายพฤติกรรม ดังนั้นหากพฤติกรรมไม่เปลี่ยนแปลง ข้อกำหนดก็ไม่ควรเปลี่ยนแปลงด้วย ดูเพิ่มเติมที่ แนวคิดพื้นฐาน
สูตรปฏิบัติ 6: การควบคุมทีละขั้น (คำสั่งขยาย)
เวลาที่ควรใช้: การเปลี่ยนแปลงที่ซับซ้อนหรือมีความเสี่ยงสูง ที่คุณต้องการตรวจสอบอาร์ติแฟคต์แต่ละรายการก่อนดำเนินการต่อ
คำสั่งหลัก /opsx:propose จะร่างทุกอย่างพร้อมกัน หากคุณต้องการดำเนินการทีละขั้น เปิดใช้งานคำสั่งขยาย:
bash
$ openspec config profile # เลือกเวิร์กโฟลว์ขยาย
$ openspec update # นำไปใช้กับโปรเจกต์นี้ตอนนี้คุณสามารถสร้างโครงสร้างพื้นฐานและสร้างเพิ่มเติมทีละขั้นได้:
text
You: /opsx:new add-2fa
AI: สร้าง openspec/changes/add-2fa/ เรียบร้อย พร้อมสร้าง: proposal.
You: /opsx:continue
AI: สร้าง proposal.md เรียบร้อย พร้อมใช้งาน: specs, design.
You: /opsx:continue
AI: สร้าง specs/auth/spec.md เรียบร้อย พร้อมใช้งาน: design.ตรวจสอบอาร์ติแฟคต์แต่ละรายการเมื่อสร้างเสร็จ แก้ไขได้อย่างอิสระ และดำเนินการต่อเมื่อคุณพอใจ หากคุณต้องการร่างส่วนที่เหลือทั้งหมดพร้อมกัน /opsx:ff จะกระโดดข้ามไปยังอาร์ติแฟคต์วางแผนที่เหลือทั้งหมด ก่อนเก็บถาวร /opsx:verify จะตรวจสอบว่าการนำไปปฏิบัติใช้ตรงกับข้อกำหนดจริงหรือไม่ ดูเพิ่มเติมที่ เวิร์กโฟลว์
สูตรปฏิบัติ 7: เรียนรู้เวิร์กโฟลว์ทั้งหมดด้วยการปฏิบัติเอง
เวลาที่ควรใช้: คุณติดตั้ง OpenSpec เรียบร้อยและต้องการ สัมผัส เวิร์กโฟลว์ด้วยโค้ดของคุณเอง ไม่ใช่ใช้ตัวอย่างจำลอง
เปิดใช้งานคำสั่งขยาย (ดูสูตรปฏิบัติ 6) แล้ว:
text
You: /opsx:onboard
AI: ยินดีต้อนรับสู่ OpenSpec! ฉันจะนำคุณผ่านการเปลี่ยนแปลงทั้งหมด
โดยใช้โค้ดเบสจริงของคุณ ฉันจะสแกนหาการปรับปรุงขนาดเล็กและปลอดภัย
ที่เราสามารถทำร่วมกัน.../opsx:onboard จะหาการปรับปรุงจริง (ขนาดเล็ก) สร้างการเปลี่ยนแปลงสำหรับมัน นำไปปฏิบัติใช้ และเก็บถาวร พร้อมบรรยายทุกขั้นตอน ใช้เวลา 15 ถึง 30 นาที และทิ้งการเปลี่ยนแปลงจริงให้คุณสามารถเก็บหรือลบทิ้งได้ เป็นวิธีเรียนรู้ที่ง่ายที่สุด ดูเพิ่มเติมที่ คำสั่ง
ตรวจสอบงานของคุณจากเทอร์มินัล
ทุกเมื่อ จากเทอร์มินัลของคุณ คุณสามารถตรวจสอบสถานะของทุกอย่างได้:
bash
$ openspec list # การเปลี่ยนแปลงที่ใช้งานอยู่
$ openspec show add-dark-mode # รายละเอียดของการเปลี่ยนแปลงหนึ่งรายการ
$ openspec validate add-dark-mode # ตรวจสอบโครงสร้าง
$ openspec view # แดชบอร์ดแบบโต้ตอบเครื่องมือเหล่านี้ใช้สำหรับอ่านและตรวจสอบเท่านั้น การเสนอและสร้างการเปลี่ยนแปลงยังคงทำผ่านคำสั่ง Slash ในแชท รายละเอียดทั้งหมดใน คู่มือ CLI
สิ่งที่ควรทำต่อไป
- สำรวจก่อนเริ่ม: วิธีเริ่มต้นที่แนะนำเมื่อคุณไม่แน่ใจ
- เวิร์กโฟลว์: รูปแบบที่กล่าวถึงข้างต้น พร้อมคำแนะนำในการตัดสินใจว่าควรใช้แต่ละรูปแบบเมื่อใด
- คำสั่ง: รายละเอียดของคำสั่ง Slash ทุกคำสั่ง
- เริ่มต้นใช้งาน: คำแนะนำอย่างเป็นทางการสำหรับการทำการเปลี่ยนแปลงครั้งแรก
- แนวคิดพื้นฐาน: เหตุผลที่ส่วนต่างๆ สวมเข้ากันได้อย่างลงตัว