spec-kit 實測:讓 AI 寫程式前應先寫甚麼?
รัน spec-kit จริงในเครื่องเปล่า: ก่อนจะให้ AI เขียนโค้ด ต้องเขียนอะไรก่อน?
作者在沒有 Claude Code 和 Docker 的環境中實測 spec-kit 1.2.3;指定 Claude integration 時因找不到 claude 而中止,之後用 --ignore-agent-tools 檢視生成檔案。
รัน spec-kit จริงในเครื่องเปล่า: ก่อนจะให้ AI เขียนโค้ด ต้องเขียนอะไรก่อน?
โดย Nokka (นก-กา) | ตอนที่ 2 จาก 7 ของชุด "สร้างซอฟต์แวร์ด้วย AI" | ตรวจสอบข้อมูล ณ 23 ต.ค. 2026
บทความนี้เขียนโดย AI (deepseek-v4.1-flash · ผู้ให้บริการโมเดล: ollama-cloud) ผ่าน Hermes Agent ภายใต้การควบคุมและตรวจสอบคุณภาพโดยมนุษย์ - Nokka (นก-กา)
ผมลองรันจริง ไม่ได้อ่านแต่เอกสาร
ตอนที่แล้วผมวางแผนที่ว่าของกลุ่มนี้มีสามชั้น ตอนนี้ผมจะลงมาที่ชั้นแรกซึ่งคนข้ามมากที่สุด
ผมติดตั้ง spec-kit ในเครื่องที่ไม่มี Claude Code และไม่มี Docker แล้วสั่งสร้างโปรเจกต์ตัวอย่างหนึ่งอัน เพื่อดูว่ามันสร้างอะไรให้เราจริง
ผลลัพธ์ที่ได้ทำให้ผมต้องแก้ความเข้าใจของตัวเองหนึ่งจุด ซึ่งจะเล่าในหัวข้อคำสั่ง
สรุปสั้น
- spec-kit ติดตั้งผ่าน uv และมีคำสั่ง
specifyแยกจากชื่อโปรเจกต์ - มันตรวจว่าเครื่องมี coding agent ที่เลือกไว้หรือไม่ ถ้าไม่มีจะหยุดและบอกให้ติดตั้ง
- เมื่อผ่านแล้ว มันสร้างโฟลเดอร์
.specifyสำหรับกระบวนการ และ.claude/skillsสิบรายการสำหรับ agent - เทมเพลต spec บังคับสามส่วน คือ เรื่องราวผู้ใช้กับการทดสอบ, ความต้องการเชิงหน้าที่ และเกณฑ์ความสำเร็จที่วัดได้
- ตัวเลขเวอร์ชันที่ผมได้คือ 1.2.3 และจำนวนไฟล์ที่สร้างต่างจากที่ผมคาดไว้มาก
ติดตั้ง
เครื่องที่ผมใช้มี Python 3.11 กับ uv อยู่แล้ว คำสั่งเดียวคือ
uv tool install specify-cli
specify --version
ผลที่ได้คือ specify 1.2.3 ซึ่งตรงกับเงื่อนไขขั้นต่ำที่ README ระบุไว้ คือ Python 3.11 ขึ้นไปกับ uv [1]
จุดที่คนพลาดบ่อยคือชื่อแพ็กเกจกับชื่อคำสั่งไม่เหมือนกัน แพ็กเกจชื่อ specify-cli แต่คำสั่งที่เรียกใช้ชื่อ specify
สร้างโปรเจกต์ แล้วเจอด่านแรก
ผมสั่งสร้างโปรเจกต์ตัวอย่างโดยระบุว่าใช้ Claude เป็น agent
specify init se-demo --integration claude
สิ่งที่เกิดขึ้นคือมันหยุดทันทีและแจ้งว่า claude not found พร้อมลิงก์วิธีติดตั้ง โดยลิงก์นั้นชี้ไปที่หน้า setup ของ Anthropic [4]
นี่คือด่านที่ผมคิดว่าดี เพราะมันกันคนที่คิดว่าจะได้ผลลัพธ์ทั้งไปป์ไลน์โดยยังไม่มี agent สักตัว
ถ้าต้องการข้ามด่านนี้เพื่อดูโครงสร้างเฉย ๆ มีธง --ignore-agent-tools ซึ่งผมเห็นในผลของ specify init --help บนเครื่องนี้
ผมใช้ธงนี้ในการทดลอง เพราะจุดประสงค์คือดูไฟล์ที่มันสร้าง ไม่ใช่ให้ใครเขียนโค้ดให้
สิ่งที่ได้จริงหลังรันสำเร็จ
โครงสร้างหลักมีสองโฟลเดอร์ (ทั้งหมดนี้ผมเปิดดูไฟล์จริงในโปรเจกต์ทดลอง และที่มาของแต่ละรายการผมระบุไว้ท้ายบรรทัด)
.specify/ เก็บของที่ใช้ทั้งโปรเจกต์
-
memory/constitution.mdยาว 50 บรรทัด เป็นเทมเพลตเปล่าที่รอให้เราเติมหลักการ -
templates/มี spec, plan, tasks, checklist และ constitution template [3] -
scripts/bash/มีสคริปต์หกไฟล์ เช่นcreate-new-feature.sh,setup-plan.sh,setup-tasks.sh,check-prerequisites.sh[3] -
workflows/speckitเก็บนิยามลำดับงาน ไฟล์workflow.ymlอยู่ที่ระดับบนของ repo ไม่ได้อยู่ในโฟลเดอร์ templates [5] -
integrations/เก็บ manifest ของ agent ที่เลือก ซึ่งเกิดจากตอนสั่ง init ในเครื่องผม
.claude/skills/ มีสิบรายการ ได้แก่ specify, plan, tasks, implement, clarify, analyze, checklist, constitution, converge และ taskstoissues
ไฟล์ .specify/init-options.json บันทึกค่าที่ใช้สร้างไว้ทั้งหมด ซึ่งมีประโยชน์มากเวลาทีมอยากรู้ว่าโปรเจกต์นี้ตั้งไว้อย่างไร
{
"ai": "claude",
"ai_skills": true,
"feature_numbering": "sequential",
"integration": "claude",
"script": "sh",
"speckit_version": "1.2.3"
}
คำสั่งจริงชื่ออะไร
ตรงนี้คือจุดที่ผมต้องแก้ความเข้าใจของตัวเอง
ในเอกสารและบทความจำนวนมากเขียนคำสั่งเป็น /speckit.specify แบบมีจุด แต่ของที่ติดตั้งได้จริงในเวอร์ชัน 1.2.3 ในเครื่องผม สร้างโฟลเดอร์ชื่อแบบขีดกลาง คือ speckit-specify, speckit-plan, speckit-tasks, speckit-implement
วิธีที่นับว่าชัวร์คือเปิดดูโฟลเดอร์ .claude/skills/ ในโปรเจกต์ของเราจริง ๆ ไม่ใช่เชื่อบทความบนอินเทอร์เน็ต หรือเชื่อสิ่งที่ผมเคยเขียนไว้เอง
ถ้าคุณใช้ agent อื่น ชื่อและรูปแบบคำสั่งอาจต่างออกไป เพราะมันถูกสร้างจาก manifest ของ integration นั้น
เทมเพลต spec บังคับอะไรบ้าง
เปิดไฟล์ .specify/templates/spec-template.md แล้วดูหัวข้อ จะเห็นว่ามันบังคับสามส่วนหลัก
User Scenarios & Testing (mandatory) แบ่งเป็นเรื่องราวผู้ใช้สามระดับความสำคัญ P1 ถึง P3 พร้อมส่วน Edge Cases
Requirements (mandatory) แยกเป็นความต้องการเชิงหน้าที่ และข้อมูลหลักถ้าฟีเจอร์เกี่ยวกับข้อมูล
Success Criteria (mandatory) ต้องเป็นผลลัพธ์ที่วัดได้
สังเกตว่าคำว่า Testing อยู่ในหัวข้อบังคับตั้งแต่ต้น นี่คือความต่างสำคัญจากเอกสารความต้องการแบบเดิม
มันบังคับให้คุณคิดตั้งแต่แรกว่า "เราจะรู้ได้อย่างไรว่ามันทำงานถูก" ไม่ใช่รอไปคิดตอนเขียนเทสต์
spec ที่ agent อ่าน ต่างจากเอกสารที่คนอ่านตรงไหน
ตอนที่แล้วผมสัญญาไว้ว่าจะตอบคำถามนี้ให้ชัด
เอกสารที่คนอ่านมักเล่าเหตุผลและบริบท เช่น ทำไมเราถึงเลือกแนวทางนี้ และใครเคยลองอะไรแล้วไม่ได้ผล
spec ที่ agent ใช้ทำงานต้องการสิ่งที่ต่างออกไป คือสิ่งที่ตรวจได้
จากแม่แบบที่ผมเปิดดู มีสามอย่างที่ทำหน้าที่นี้โดยตรง [3]
เรื่องราวผู้ใช้ที่จัดลำดับความสำคัญ บอก agent ว่าอะไรต้องทำก่อนและอะไรทำทีหลังได้
เงื่อนไขขอบ บอกว่าอะไรคือพฤติกรรมที่คาดไว้เมื่อข้อมูลผิดปกติ
เกณฑ์ความสำเร็จที่วัดได้ บอกว่าอะไรคือหลักฐานว่าจบงาน
ในมุมมองของผม ถ้าคุณเขียนแค่ความเรียงสวย ๆ ที่ไม่มีสามอย่างนี้ agent จะเดาแทนคุณ และการเดาของมันจะกลายเป็นโค้ดที่คุณต้องมาแก้ทีหลัง
เทมเพลต plan มีด่าน constitution
ไฟล์ plan-template.md มีหัวข้อ Constitution Check อยู่ด้วย
แปลว่าก่อนจะลงมือวางแผน implement มันให้ตรวจว่าแผนนั้นขัดกับหลักการที่เราตั้งไว้ใน memory/constitution.md หรือไม่
ในโปรเจกต์ใหม่ ไฟล์ constitution ยังเป็นเทมเพลตเปล่าที่มีตัวอย่างประกอบ เช่น หลักการแบบ library-first หรือ CLI interface
ถ้าปล่อยว่างไว้ ด่านนี้จะไม่มีอะไรให้ตรวจ ซึ่งทำให้คุณเสียประโยชน์ของมันไปฟรี ๆ
ลำดับงานที่ควรเดิน
จากรายการ skill ที่ได้ ผมเรียงลำดับที่สมเหตุสมผลได้แบบนี้
-
speckit-constitutionตั้งหลักการของโปรเจกต์ก่อน -
speckit-specifyเขียนสเปกของฟีเจอร์แรก -
speckit-clarifyให้ agent ถามคำถามเพื่อปิดจุดกำกวม -
speckit-planวางแผนทางเทคนิค -
speckit-tasksแตกเป็นงานย่อย -
speckit-analyzeตรวจความสอดคล้องระหว่างเอกสารทั้งหมด -
speckit-implementลงมือเขียนโค้ด -
speckit-convergeเก็บงานที่ยังค้างให้จบ -
speckit-taskstoissuesแปลงงานเป็น issue บน GitHub
สามตัวกลางคือ clarify, analyze และ checklist ที่ผมคิดว่าคนมักข้ามมากที่สุด แต่กลับช่วยประหยัดเวลาได้มาก
ต่างจาก OpenSpec ตรงไหน
OpenSpec มี 72,780 ดาว สัญญาอนุญาต MIT และอัปเดตล่าสุด 23 ต.ค. 2026 โดยวางตัวเป็น spec-driven development สำหรับ AI coding assistant [2]
ทั้งสองเครื่องมือแก้ปัญหาเดียวกันคือทำให้ agent มีสเปกก่อนลงมือ แต่แนวทางต่างกัน
spec-kit ให้โครงหนากว่า มี constitution มี workflow และมีสคริปต์ช่วยสร้างไฟล์
OpenSpec เน้นเบาและยืดหยุ่นกว่า เหมาะกับคนที่อยากได้ไฟล์ spec เป็นสัญญากลางในรีโปมากกว่าอยากได้ทั้งระบบ
ไม่มีอันไหนดีกว่ากันแต่ขึ้นกับว่าทีมคุณต้องการโครงแค่ไหน
กับดักที่ผมเจอจากการลองจริง
หนึ่ง การติดตั้งผ่านแต่ยังไม่มี agent ทำให้เข้าใจผิดว่าพร้อมใช้แล้ว ทั้งที่คำสั่งของ speckit จะเรียกใช้ agent ไม่ได้ถ้าในเครื่องไม่มีตัวนั้นจริง
สอง เทมเพลตที่ปล่อยว่างจะทำให้ด่านตรวจกลายเป็นพิธีกรรม
สาม ชื่อคำสั่งเปลี่ยนตามเวอร์ชันและตาม agent ที่เลือก อย่าจดจำจากบทความ ให้ดูจากโปรเจกต์ตัวเอง
สี่ ในประสบการณ์ของผม spec ที่ยาวเกินไปจะทำให้ agent อ่านไม่ครบ และมักได้ผลแย่กว่า spec สั้นที่ชัด
ห้า การเขียน spec หลังเขียนโค้ดเสร็จแล้ว เป็นการเขียนเอกสารย้อนหลัง ไม่ใช่การวางแผน
ถ้าจะลองตามในหนึ่งชั่วโมง
ติดตั้งด้วย uv แล้วสั่ง init ในโฟลเดอร์ทดลอง ใช้ธงข้ามด่าน agent ก่อนก็ได้
จากนั้นเปิด .specify/templates/spec-template.md อ่านให้จบหนึ่งรอบ แล้วเขียนสเปกของฟีเจอร์เล็ก ๆ หนึ่งอันด้วยมือ
ก่อนจะให้ agent แตะโค้ด ขอให้ตรวจว่าสเปกมีเกณฑ์ความสำเร็จที่วัดได้อย่างน้อยหนึ่งข้อ
ถ้าคุณเขียนเกณฑ์ไม่ได้ แปลว่าคุณยังไม่เข้าใจว่าฟีเจอร์นี้สำเร็จหน้าตาเป็นอย่างไร และ agent ก็จะไม่เข้าใจด้วย
แหล่งอ้างอิง
[1] GitHub, "github/spec-kit" README, สืบค้น 23 ต.ค. 2026 (เงื่อนไข Python 3.11+, uv, คำสั่ง uv tool install specify-cli และ specify init พร้อมตัวเลือก --integration). https://github.com/github/spec-kit
[2] GitHub, "Fission-AI/OpenSpec", สืบค้น 23 ต.ค. 2026 (MIT, 72,780 ดาว, อัปเดต 23 ต.ค. 2026, spec-driven development สำหรับ AI coding assistant). https://github.com/Fission-AI/OpenSpec
[3] GitHub, "github/spec-kit: templates/spec-template.md", "templates/plan-template.md" และ "scripts/bash/create-new-feature.sh", สืบค้น 23 ต.ค. 2026 (หัวข้อบังคับในแม่แบบ spec และ plan รวมถึงรายการสคริปต์ bash ที่มากับชุดเครื่องมือ). https://github.com/github/spec-kit/tree/main/templates และ https://github.com/github/spec-kit/tree/main/scripts/bash
[4] Anthropic, "Claude Code setup", สืบค้น 23 ต.ค. 2026 (ลิงก์ติดตั้งที่ spec-kit อ้างถึงเมื่อไม่พบ claude ในเครื่อง). https://docs.anthropic.com/en/docs/claude-code/setup
[5] GitHub, "github/spec-kit: workflows/speckit/workflow.yml", สืบค้น 23 ต.ค. 2026 (นิยามลำดับงานชื่อ Full SDD Cycle ซึ่งอยู่ที่ระดับบนของ repo ไม่ได้อยู่ในโฟลเดอร์ templates). https://github.com/github/spec-kit/blob/main/workflows/speckit/workflow.yml
來源:DEV Community · dev.to