Agent Skills
(addyosmani.com)- Agent Skills คือสแคฟโฟลดิ้งที่บังคับให้เอเจนต์เขียนโค้ด AI ต้องทำตาม กระบวนการวิศวกรรมระดับซีเนียร์ ผ่านเวิร์กโฟลว์ เพื่อไม่ให้ข้ามขั้นตอนอย่างสเปก การทดสอบ PR ที่รีวิวได้ หรือการตรวจสอบขอบเขตความเชื่อถือ
- สกิล (skill) คือไฟล์ Markdown ที่มี frontmatter โดยมีลักษณะใกล้เคียง เวิร์กโฟลว์ มากกว่าเอกสารอ้างอิง เพราะมีลำดับขั้นตอน หลักฐานที่ต้องมีในจุดตรวจ และเกณฑ์การจบงาน
- สกิล 20 รายการในรีโปประกอบด้วย 6 ช่วงวงจรชีวิตคือ Define, Plan, Build, Verify, Review, Ship และ 7 slash command ได้แก่
/spec,/plan,/build,/test,/review,/ship,/code-simplify - หลักการสำคัญคือ ให้ความสำคัญกับกระบวนการมากกว่าร้อยแก้ว, ตารางต้านการหาเหตุผลเข้าข้างตัวเอง, การยึดการตรวจสอบเป็นเกณฑ์จบงาน, การเปิดเผยแบบค่อยเป็นค่อยไป และวินัยด้านขอบเขต โดย
using-agent-skillsจะเปิดใช้เฉพาะสกิลที่เหมาะกับงานนั้น - ใช้งานได้ผ่านการติดตั้งใน Claude Code marketplace, การใส่ไฟล์ลงใน
.cursor/rules/ของ Cursor, Gemini CLI, Codex, Aider, Windsurf, OpenCode และเครื่องมืออื่น ๆ ที่อ่าน Markdown ได้ พร้อมเผยแพร่ภายใต้ไลเซนส์ MIT
วัตถุประสงค์และโจทย์ปัญหา
- Agent Skills คือสแคฟโฟลดิ้งสำหรับบังคับให้เอเจนต์เขียนโค้ด AI ทำตาม กระบวนการวิศวกรรมระดับซีเนียร์ ที่ปกติจะถูกข้ามไป โดยใช้เวิร์กโฟลว์เป็นตัวบังคับ
- เมื่อถูกขอให้สร้างฟีเจอร์ เอเจนต์เขียนโค้ด AI มักจะเดินไปตามเส้นทางที่สั้นที่สุดเพื่อให้การพัฒนาเสร็จ และโดยปกติจะไม่ทำขั้นตอนอย่างการเขียนสเปก การเขียนเทสต์ก่อน การตรวจสอบขอบเขตความเชื่อถือ หรือการจัด PR ให้รีวิวได้
- งานของวิศวกรระดับซีเนียร์มีหลายส่วนที่ไม่ปรากฏอยู่ใน diff
- เปิดเผยสมมติฐาน
- เขียนสเปก
- แบ่งงานออกเป็นหน่วยที่รีวิวได้
- เลือกดีไซน์ที่น่าเบื่อแต่ปลอดภัย
- ทิ้งหลักฐานว่าผลลัพธ์นั้นถูกต้อง
- จำกัดขนาดการเปลี่ยนแปลงให้อยู่ในระดับที่มนุษย์รีวิวได้จริง
- เหตุผลที่เอเจนต์ข้ามขั้นตอนเหล่านี้ก็คล้ายกับวิศวกรจูเนียร์ คือสัญญาณรางวัลถูกปรับให้เข้ากับ “งานเสร็จ” ไม่ใช่ “งานเสร็จพร้อมมีเอกสารสเปกด้วย”
- รีโป Agent Skills มี stars เกิน 26K แล้ว และไม่ได้หยุดแค่ README แต่ยังอธิบายเหตุผลของการเลือกดีไซน์ การแมปกับ SDLC มาตรฐานและแนวปฏิบัติวิศวกรรมสาธารณะของ Google ตลอดจนแพตเทิร์นที่หยิบไปใช้ได้แม้ไม่ติดตั้ง
ความหมายที่แท้จริงของสกิล
- สกิล (skill) คือไฟล์ Markdown ที่มี frontmatter ซึ่งจะถูกฉีดเข้าไปในคอนเท็กซ์ของเอเจนต์ตามสถานการณ์ โดยมีรูปแบบอยู่กึ่งกลางระหว่างชิ้นส่วน system prompt กับ runbook
- สกิลไม่ใช่เอกสารอ้างอิง และไม่ใช่คลังความรู้ประเภท “ทุกอย่างที่ต้องรู้เกี่ยวกับการทดสอบ”
- สกิลที่มีประโยชน์คือ เวิร์กโฟลว์ ที่เอเจนต์ต้องทำตาม
- มีลำดับขั้นตอน
- สร้างหลักฐานที่จุดตรวจ
- จบด้วยเกณฑ์การสิ้นสุดที่ชัดเจน
- ถ้าใส่บทความ 2,000 คำว่าด้วย best practice ด้านการทดสอบลงในคอนเท็กซ์ เอเจนต์อาจสร้างประโยคที่ดูน่าเชื่อถือ แต่ข้ามการทดสอบจริงไปได้
- แต่ถ้าใส่เวิร์กโฟลว์ที่กำหนดให้เขียนเทสต์ที่ต้องล้มเหลวก่อน จากนั้นรันเพื่อยืนยันว่าล้มเหลว เขียน implementation ขั้นต่ำที่ทำให้ผ่าน ยืนยันว่าผ่าน แล้วค่อยรีแฟกเตอร์ เอเจนต์ก็จะมีงานที่ต้องทำจริง และมนุษย์ก็ตรวจสอบได้
- ความต่างหลักคือ ให้ความสำคัญกับกระบวนการมากกว่าร้อยแก้ว, ให้เวิร์กโฟลว์มากกว่าเอกสารอ้างอิง และให้ขั้นตอนที่มีเกณฑ์จบงานมากกว่าบทความที่ไม่มีเกณฑ์จบงาน
- สาเหตุที่รีโป “AI rules” จำนวนมากไม่ค่อยได้ผลจริง ก็เพราะกฎเหล่านั้นยังเป็นแค่บทความ ไม่ใช่เวิร์กโฟลว์
โครงสร้าง SDLC และ slash command
- สกิล 20 รายการในรีโปถูกจัดเป็น 6 ช่วงวงจรชีวิต และมี 7 slash command วางอยู่ด้านบน
-
ขั้นตอนและคำสั่ง
/spec: ขั้น Define สำหรับตัดสินใจว่าจะสร้างอะไร/plan: ขั้น Plan สำหรับแตกงานออกเป็นส่วนย่อย/build: ขั้น Build สำหรับลงมือทำเป็น vertical slice/test: ขั้น Verify สำหรับพิสูจน์ว่ามันทำงาน/review: ขั้น Review สำหรับจับปัญหาที่หลุดรอดไป/ship: ขั้น Ship สำหรับส่งมอบให้ผู้ใช้อย่างปลอดภัย/code-simplify: คำสั่งทำให้เรียบง่ายที่ใช้ครอบคลุมทั้งโฟลว์- โครงสร้างนี้เป็นโฟลว์แบบเดียวกับ SDLC ขององค์กรวิศวกรรมที่ทำงานได้จริง ต่างกันแค่ศัพท์ที่ใช้ในแต่ละองค์กร
- ที่ Google จะอยู่ในรูป flow แบบ design doc → review → implementation → readability review → launch checklist ส่วนที่ Amazon จะปรากฏในรูปแบบอย่าง working-backwards memo และ bar raiser
- ปัญหาใหม่ของเอเจนต์เขียนโค้ด AI คือเอเจนต์ส่วนใหญ่ข้ามขั้นตอนเหล่านี้ไปเกือบทั้งหมดเป็นค่าเริ่มต้น
- เมื่อขอฟีเจอร์ มักได้กลับมาแค่ implementation โดยไม่มีสเปก แผน เทสต์ การรีวิว หรือเช็กลิสต์ก่อนปล่อย
- สกิลทำให้เอเจนต์ต้องผ่านขั้นตอนที่วิศวกรซีเนียร์บังคับใช้กับตัวเอง และการปล่อยโค้ดโดยไม่มีขั้นตอนเหล่านี้มักนำไปสู่ incident
- ฟีเจอร์ที่ซับซ้อนอาจเปิดใช้สกิล 11 รายการต่อเนื่องกัน ขณะที่การแก้บั๊กเล็ก ๆ อาจใช้เพียง 3 รายการ
- ตัว router
using-agent-skillsจะตัดสินว่าสกิลใดเหมาะกับงานปัจจุบัน และเวิร์กโฟลว์จะขยายตามขอบเขตจริง ไม่ใช่ขอบเขตที่สมมติไว้
หลักการที่ทำให้มันทำงานได้
-
1. ให้ความสำคัญกับกระบวนการมากกว่าร้อยแก้ว
- เวิร์กโฟลว์คือสิ่งที่เอเจนต์ลงมือทำได้ แต่บทความทำไม่ได้
- หลักการเดียวกันนี้ใช้ได้กับทีมมนุษย์ด้วย
- ถ้าคู่มือทีมยาว 200 หน้า มันมักไม่ถูกอ่านในสถานการณ์กดดัน แต่ถ้าเป็นเวิร์กโฟลว์สั้น ๆ ที่มีจุดตรวจ ก็มีโอกาสถูกทำตามจริงมากกว่า
-
2. ตารางต้านการหาเหตุผลเข้าข้างตัวเอง
- หนึ่งในการเลือกดีไซน์ที่โดดเด่นที่สุดของ Agent Skills และเป็นสิ่งที่ทีมอื่นควรหยิบไปใช้ คือ ตารางต้านการหาเหตุผลเข้าข้างตัวเอง (anti-rationalization tables)
- ในแต่ละสกิลจะมีข้ออ้างที่เอเจนต์หรือวิศวกรที่อ่อนล้าอาจใช้เพื่อข้ามเวิร์กโฟลว์ พร้อมคำโต้แย้งที่เขียนเตรียมไว้ล่วงหน้า
- ตัวอย่างเช่น
- “งานนี้ง่ายเกินกว่าจะต้องมีสเปก” → เกณฑ์การยอมรับยังคงจำเป็น 5 บรรทัดโอเค แต่ 0 บรรทัดไม่โอเค
- “เดี๋ยวค่อยเขียนเทสต์ทีหลัง” → ปัญหาหลักอยู่ที่คำว่า “ทีหลัง” ไม่มีคำว่าเดี๋ยวค่อย ต้องเขียนเทสต์ที่ล้มเหลวก่อน
- “เทสต์ผ่านแล้ว งั้น deploy ได้เลย” → เทสต์ที่ผ่านคือหลักฐาน ไม่ใช่ข้อพิสูจน์ ต้องเช็กด้วยว่าได้ตรวจ runtime แล้วหรือยัง ยืนยันพฤติกรรมที่ผู้ใช้เห็นหรือยัง และมีคนอ่าน diff แล้วหรือยัง
- LLM นั้นเก่งในการหาเหตุผลเข้าข้างตัวเอง และสามารถเขียนย่อหน้าที่ดูน่าเชื่อถือเพื่ออธิบายได้ว่า งานบางอย่างไม่ต้องมีสเปก หรือการเปลี่ยนบางอย่างควรถูก merge ได้โดยไม่ต้อง review
- ตารางต้านการหาเหตุผลเข้าข้างตัวเองคือ คำโต้แย้งที่เขียนไว้ล่วงหน้า ต่อคำโกหกที่เอเจนต์ยังไม่ได้พูดออกมาด้วยซ้ำ
- แพตเทิร์นนี้ใช้ได้กับทีมมนุษย์เช่นกัน
- คุณภาพงานวิศวกรรมที่ตกลงมักไม่ได้เกิดจากมีใครตั้งใจทำสิ่งไม่ดี แต่เกิดจากการยอมรับคำอธิบายที่ฟังขึ้นสำหรับการข้ามขั้นตอนที่ไม่อยากทำ
-
3. การตรวจสอบเป็นสิ่งที่ต่อรองไม่ได้
- ทุกสกิลจบลงด้วยหลักฐานที่จับต้องได้
- เทสต์ผ่าน, ผลลัพธ์ build ที่สะอาด, runtime trace ที่แสดงพฤติกรรมตามคาด, การอนุมัติจาก reviewer ล้วนเป็นเกณฑ์จบงาน
- แค่ “ดูเหมือนใช้ได้” ยังไม่เพียงพอ
- นี่เป็นหลักการเดียวกับที่ harness ของ Anthropic ใช้ในการกู้คืนจากความล้มเหลว, การแยก planner/worker/judge ของ Cursor ที่ช่วยจับบั๊กได้จริง และเหตุผลที่ long-running agent ฟื้นตัวกลับมาได้
- เพราะเอเจนต์เป็นเครื่องกำเนิด จึงต้องมีสัญญาณแยกต่างหากไว้ตัดสินว่างานเสร็จหรือยัง และสกิลก็นำสัญญาณนั้นไปฝังไว้ในแต่ละเวิร์กโฟลว์
-
4. การเปิดเผยแบบค่อยเป็นค่อยไป
- ตอนเริ่มเซสชัน จะไม่ใส่สกิลทั้ง 20 รายการลงในคอนเท็กซ์พร้อมกัน
- จะเปิดใช้เฉพาะสกิลที่จำเป็นตามขั้นตอนปัจจุบัน
- เมตาสกิลขนาดเล็ก
using-agent-skillsทำหน้าที่เป็น router เพื่อตัดสินว่าสกิลไหนเหมาะกับงานที่กำลังทำ - นี่คือการนำบทเรียนจาก harness engineering มาใช้ในระดับสกิล
- ทุก token ที่โหลดเข้าคอนเท็กซ์ย่อมไปลดประสิทธิภาพที่ไหนสักแห่ง ดังนั้นควรโหลดเฉพาะสิ่งที่เกี่ยวข้องและปล่อยที่เหลือไว้บนดิสก์
- การเปิดเผยแบบค่อยเป็นค่อยไป คือวิธีใส่คลังสกิล 20 รายการลงในช่อง 5K-token โดยไม่ทำให้คอนเท็กซ์ทั้งหมดปนเปื้อน
-
5. วินัยด้านขอบเขต
- เมตาสกิลจะเข้ารหัสหลักการที่ต่อรองไม่ได้ว่า “แตะเฉพาะสิ่งที่ถูกขอเท่านั้น”
- ไม่ควรรีแฟกเตอร์ระบบข้างเคียง ไม่ควรลบโค้ดที่ยังไม่เข้าใจทั้งหมด และไม่ควรเห็น TODO แล้วตัดสินใจเขียนไฟล์ใหม่ทั้งไฟล์
- เอเจนต์อาจเริ่มจากแก้บั๊กเพียงจุดเดียว แต่กลับพยายาม modernize ไฟล์ที่ไม่เกี่ยวข้องอีก 3 ไฟล์
- วินัยด้านขอบเขต เป็นปัจจัยชี้ขาดที่สุดว่า PR ของเอเจนต์จะ merge ได้ หรือควรถูก revert
- สิ่งนี้สอดคล้องกับแนวปฏิบัติ code review ของ Google ที่ reviewer สามารถบล็อก PR ได้หาก PR เดียวทำมากกว่าหนึ่งอย่าง
ความเชื่อมโยงกับแนวปฏิบัติทางวิศวกรรมของ Google
- Agent Skills สะท้อนแนวปฏิบัติจำนวนมากจาก Software Engineering at Google และวัฒนธรรมวิศวกรรมสาธารณะของ Google
- หลายองค์ประกอบที่ทำให้ซอฟต์แวร์ในระดับ Google ทำงานได้ถูกเอกสารไว้สาธารณะอยู่แล้ว และนั่นก็คือส่วนที่เอเจนต์มักข้ามมากที่สุด
-
การแมประหว่างสกิลกับแนวปฏิบัติ
api-and-interface-design: สะท้อน Hyrum’s Law เพราะทุกพฤติกรรมที่สังเกตได้ของ API สุดท้ายจะมีคนพึ่งพา จึงต้องออกแบบโดยคำนึงถึงจุดนี้test-driven-development: สะท้อน test pyramid~80/15/5และ Beyoncé Rule ซึ่งมีหลักว่า “ถ้าคุณชอบมัน คุณควรใส่เทสต์ให้มัน” และบั๊กถูกจับด้วยเทสต์ ไม่ใช่การเปลี่ยนโครงสร้างพื้นฐาน- DAMP over DRY ในการทดสอบ: ปรัชญาการทดสอบของ Google มองว่าโค้ดเทสต์ควรอ่านเหมือนสเปก แม้ต้องยอมให้ซ้ำบ้าง การทำเทสต์ให้ abstract มากเกินไปคือ anti-pattern ที่รู้จักกันดี
code-review-and-quality: สะท้อนขนาด~100-line PRและป้ายความรุนแรงแบบ Critical / Nit / Optional / FYI โดย PR ขนาดใหญ่มักไม่ได้รับการรีวิวจริงและมีแนวโน้มถูกอนุมัติแบบประทับตรายางcode-simplification: สะท้อน Chesterton’s Fence คือไม่ควรลบสิ่งใดออกจนกว่าจะเข้าใจว่ามันถูกวางไว้เพราะอะไรgit-workflow-and-versioning: สะท้อน trunk-based development และ atomic commitsci-cd-and-automation: สะท้อน Shift Left และ feature flags คือควรจับปัญหาให้เร็วที่สุด และแยกการ deploy ออกจากการ releasedeprecation-and-migration: สะท้อนแนวคิด code-as-liability เพราะทุกบรรทัดที่คงอยู่คือสิ่งที่ต้องดูแลไปตลอด จึงควรเลือกพื้นผิวที่เล็กกว่า- แนวคิดเหล่านี้ไม่ใช่เรื่องใหม่ แต่ไม่ได้ติดตั้งมาเป็นค่าเริ่มต้นในเอเจนต์
- ต่อให้ frontier model เคยอ่านคำว่า “Hyrum’s Law” จากข้อมูลฝึก ก็ไม่ได้หมายความว่ามันจะนำไปใช้โดยอัตโนมัติขณะออกแบบ API ตอนตีสาม
- สกิลทำให้เอเจนต์นำแนวปฏิบัติเหล่านี้ไปใช้ระหว่างการทำงานจริง
วิธีใช้งานจริง
-
วิธีที่ 1: ติดตั้งผ่าน marketplace
- ถ้าใช้ Claude Code สามารถติดตั้งด้วยคำสั่งต่อไปนี้
/plugin marketplace add addyosmani/agent-skills /plugin install agent-skills@addy-agent-skills- เมื่อติดตั้งแล้วจะสามารถใช้ slash command
/spec,/plan,/build,/test,/review,/ship,/code-simplifyได้ - เอเจนต์จะเปิดใช้สกิลที่เกี่ยวข้องโดยอัตโนมัติตามคอนเท็กซ์
- สำหรับผู้ใช้ส่วนใหญ่ แนะนำให้เริ่มต้นด้วยวิธีนี้
-
วิธีที่ 2: ใส่ Markdown ลงในเครื่องมือที่ต้องการ
- สกิลเป็นไฟล์ Markdown ปกติที่มี frontmatter
- ผู้ใช้ Cursor สามารถใส่ไว้ใน
.cursor/rules/ได้ - Gemini CLI มี path สำหรับติดตั้งของตัวเอง
- Codex, Aider, Windsurf, OpenCode และเครื่องมืออื่นที่รับ system prompt ได้ก็สามารถอ่านได้
- สิ่งสำคัญไม่ใช่ตัวเครื่องมือ แต่คือเวิร์กโฟลว์ที่อยู่ข้างใต้
-
วิธีที่ 3: อ่านเหมือนเอกสารสเปก
- ต่อให้ไม่ติดตั้งอะไรเลย สกิลก็ยังเป็นคำอธิบายที่ถูกบันทึกไว้ว่า จะทำวิศวกรรมที่ดีร่วมกับเอเจนต์ AI อย่างไร
- คุณสามารถอ่าน
code-review-and-quality.mdแล้วนำเฟรมเวิร์ก 5 แกนไปใช้กับกระบวนการรีวิวของทีมได้ - อ่าน
test-driven-development.mdแล้วใช้กับข้อถกเถียงประเภท “ควรเขียนเทสต์ก่อนหรือไม่” - อ่านเมตาสกิลแล้วหยิบหลักการ 5 ข้อที่ต่อรองไม่ได้ไปใส่ใน
AGENTS.mdของตัวเองได้ - จุดเริ่มต้นอาจเป็นการเลือกสกิล 4–5 รายการที่ใกล้กับปัญหาที่เจ็บที่สุดในตอนนี้ กำหนดเวิร์กโฟลว์ที่อยากบังคับใช้ แล้วติดตั้งหรือสร้าง runtime ขึ้นมาเองเพื่อบังคับใช้มัน
แพตเทิร์นที่หยิบไปใช้ได้แม้ไม่ติดตั้ง
-
ทำให้การต้านการหาเหตุผลเข้าข้างตัวเองเป็นแนวปฏิบัติของทีม
- ทีมควรเขียนคำโกหกที่พวกเขามักพูดกับตัวเองลงมา
- ตัวอย่างเช่น “เดี๋ยวค่อยแก้เทสต์หลังปล่อย”, “การเปลี่ยนนี้เล็กเกินกว่าจะต้องมี design doc”, “มี monitoring อยู่แล้วจึงไม่เป็นไร”
- ถ้าใส่คำโต้แย้งไว้กับแต่ละประโยค แล้วนำไปไว้ใน
AGENTS.mdหรือวิกิวิศวกรรม ก็จะช่วยลดการถกเถียงและหยุดทางลัดตอนบ่ายวันศุกร์ที่ทุกคนล้าได้
-
เขียนเอกสารภายในให้เป็นกระบวนการมากกว่าร้อยแก้ว
- ถ้าคุณกำลังเขียนเอกสาร 2,000 คำเรื่อง “เราเข้าหา X อย่างไร” นั่นคือการเขียนเอกสารอ้างอิง
- หากเปลี่ยนเป็นเวิร์กโฟลว์ที่มีจุดตรวจ เอกสารอาจเหลือ 400 คำและมีโอกาสถูกทำตามจริงมากขึ้น
- หลักการนี้ใช้ได้กับ onboarding guide, runbook และ agent skills ทั้งหมด
-
ใช้การตรวจสอบเป็นเกณฑ์จบงานที่แข็งแรง
- ขั้นตอนสุดท้ายของทุกงานควรเป็น “การสร้างหลักฐาน”
- ใช้ได้กับเอเจนต์ วิศวกร และงานส่วนบุคคล
- หลักฐานอาจเป็นการรันเทสต์ที่เป็นสีเขียว สกรีนช็อต ล็อก หรือการอนุมัติรีวิว อะไรก็ได้ที่พิสูจน์ว่างานเสร็จแล้ว
- ถ้าไม่มีหลักฐาน งานนั้นยังไม่เสร็จ และคำว่า “ดูเหมือนใช้ได้” ไม่สามารถปิดลูปได้
-
ใช้การเปิดเผยแบบค่อยเป็นค่อยไปกับทุกชุดกฎ
- อย่าเขียนคู่มือ 50 หน้า แต่ควรเขียน router เล็ก ๆ ที่ส่งผู้ใช้ไปยังบทสั้น ๆ ตามสถานการณ์
- สิ่งนี้ใช้ได้กับ
AGENTS.md, runbook, playbook รับมือ incident และเอกสารทุกอย่างที่ต้องอ่านภายใต้ความกดดัน
-
5 หลักการที่ต่อรองไม่ได้สำหรับใส่ใน AGENTS.md
- ต้องเปิดเผยสมมติฐานก่อนเริ่มสร้าง เพราะสมมติฐานผิดที่ถูกเก็บเงียบไว้คือรูปแบบความล้มเหลวที่พบบ่อยที่สุด
- ถ้าความต้องการขัดแย้งกัน ต้องหยุดและถาม ห้ามเดา
- ต้องกล้าคัดค้านเมื่อจำเป็น เอเจนต์หรือวิศวกรไม่ใช่ yes-man
- ควรเลือกวิธีแก้ที่น่าเบื่อและชัดเจน ความฉลาดแพรวพราวมีราคาแพง
- แตะเฉพาะสิ่งที่ถูกขอเท่านั้น
ตำแหน่งของมันภายใน harness
- มองในภาพใหญ่ สกิลเป็นหนึ่งในเลเยอร์ของ agent harness engineering
- harness ครอบคลุมทั้งตัวโมเดลและทุกสิ่งที่สร้างล้อมรอบมัน ส่วนสกิลคือชิ้นส่วนเวิร์กโฟลว์ที่ใช้ซ้ำได้และถูกเปิดเผยเข้าสู่ system prompt แบบค่อยเป็นค่อยไป
- สกิลวางอยู่ข้าง ๆ
AGENTS.md, hooks, tools และ session logAGENTS.md: ทำหน้าที่เป็นชุดกฎที่อัปเดตต่อเนื่อง- hooks: เลเยอร์บังคับใช้แบบ deterministic
- tools: การกระทำที่เอเจนต์สามารถทำได้
- session log: หน่วยความจำที่คงอยู่
- skills: รับผิดชอบกระบวนการวิศวกรรมระดับซีเนียร์
- สกิลสำคัญกับ long-running agents มากกว่าเอเจนต์แบบแชต
- การทำงานยาวนานจะขยายผลของทุกทางลัด
- ในเซสชัน 10 นาที เอเจนต์ที่ข้ามการทดสอบอาจสร้างบั๊กหนึ่งตัว
- แต่ในเซสชัน 30 ชั่วโมง เอเจนต์ที่ข้ามการทดสอบอาจทิ้งงานขุดโบราณคดีเพื่อดีบักในตอนท้าย โดยไม่มีใครจำเจตนาเดิมได้แล้ว
- ยิ่งรันนานเท่าไร สแคฟโฟลดิ้งทางวิศวกรรมระดับซีเนียร์ก็ยิ่งต้องเป็นการบังคับใช้ ไม่ใช่เพียงคำแนะนำ
- ความสามารถในการพกพาของรูปแบบสกิลก็สำคัญเช่นกัน
- ไฟล์
SKILL.mdเดียวกันสามารถใช้ได้ทั้งกับ Claude Code, Cursor ที่ใช้ rules, Gemini CLI, Codex และ harness อื่นที่รับเนื้อหา system prompt ได้ - เมื่อเขียนเวิร์กโฟลว์หนึ่งครั้ง runtime ก็สามารถบังคับใช้มันได้ และนี่คือข้อดีของรูปแบบ Markdown-with-frontmatter เมื่อเทียบกับ bespoke prompt engineering
บทสรุป
- เอเจนต์เขียนโค้ด AI ทำงานเหมือนวิศวกรจูเนียร์ที่มีความสามารถสูงมาก แต่ไม่มีสัญชาตญาณสำหรับงานที่ไม่ปรากฏอยู่ใน diff
- งานวิศวกรรมระดับซีเนียร์อย่างการเปิดเผยสมมติฐาน การควบคุมขนาดการเปลี่ยนแปลง การเขียนสเปก การทิ้งหลักฐาน และการปฏิเสธการ merge การเปลี่ยนที่รีวิวไม่ได้ มีโอกาสสูงที่เอเจนต์จะข้าม หากไม่ทำให้มันข้ามไม่ได้
- งานที่สำคัญขึ้นเรื่อย ๆ คือการเข้ารหัสวินัยเหล่านี้ให้อยู่ในรูปที่เอเจนต์ไม่สามารถใช้คำพูดหาทางเลี่ยงเองได้
- สกิลคือหนึ่งในรูปแบบดังกล่าว และแกนสำคัญก็คือตารางต้านการหาเหตุผลเข้าข้างตัวเอง การเปิดเผยแบบค่อยเป็นค่อยไป การให้ความสำคัญกับกระบวนการมากกว่าร้อยแก้ว การตรวจสอบในฐานะเกณฑ์จบงาน และโครงสร้างที่ทำให้แนวปฏิบัติของ Google ซึ่งใช้งานได้จริง สามารถพกพาไปใช้ที่อื่นได้
- รีโป Agent Skills เผยแพร่ภายใต้ไลเซนส์ MIT และมุมมองสแคฟโฟลดิ้งที่กว้างกว่านั้นจะต่อเนื่องไปใน Agent Harness Engineering และ Long-running Agents
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ใกล้เคียงกับ ยาครอบจักรวาลหลอกลวง มาก อ่านแล้วก็มีประโยชน์และดูน่าเชื่อถือดี แต่สุดท้ายก็ยังเป็นยาครอบจักรวาลหลอกลวงอยู่ดี
เพราะโมเดลแบบตู้สล็อตสามารถพลาด ข้อกำหนดบังคับ ที่เขียนไว้ใน
AGENTS.md,memory.mdและสกิลแบบ Markdown อีกหลายสิบไฟล์ได้ทุกเมื่อ ซึ่งแทบจะเป็นสิ่งที่รับประกันได้เลยแนวทางแบบ harness นี้ทำเหมือนกับว่า LLM ปฏิบัติตามกฎได้อย่างเคร่งครัดและสมบูรณ์แบบ และปัญหามีแค่ว่าเราเขียนกฎให้ชัดและมากพอหรือยังเท่านั้น ซึ่งเป็นความเข้าใจผิดระดับพื้นฐานเกี่ยวกับวิธีทำงานของ LLM
สุดท้ายแล้ว สิ่งที่เชื่อถือไม่ได้ก็คือเชื่อถือไม่ได้ และตัวเลือกที่เชื่อถือได้กว่าเมื่อเทียบกันก็คือ การตรวจทานและกำกับดูแลโดยมนุษย์ เท่านั้น และถ้าเป็นไปได้ก็ควรทำติดกันสองรอบ
ที่เหลือทั้งหมดก็เป็นยาครอบจักรวาลหลอกลวง และพอไปถึงจุดนั้นก็จะตระหนักได้ว่าคำสัญญาเรื่องเพิ่มผลิตภาพก็เป็นแบบเดียวกัน เพราะการอ่านโค้ดและสร้างโมเดลในหัวนั้นยากกว่าการแปลงสิ่งที่มีโมเดลในหัวอยู่แล้วออกมาเป็นโค้ดมาก
การอ่านโค้ดก็ขึ้นกับว่าเป็นโค้ดแบบไหน แต่เหมือนทักษะอื่น ๆ คือถ้าฝึกก็จะง่ายขึ้น เป็นเรื่องปกติมานานแล้วในสถานการณ์ที่ต้องอ่านโค้ดมากกว่าเขียน เช่น เวลาต้องดูแล codebase ใหญ่และซับซ้อนที่มีมานาน
มันจะง่ายขึ้นอีกเมื่อมี โมเดลในหัว เกี่ยวกับโค้ดนั้นอยู่แล้วจากเอกสาร ประสบการณ์ที่ผ่านมา หรือการถามเพื่อนร่วมงาน
เรื่องนี้ทำได้กับเอเจนต์เหมือนกัน ปกติก่อนจะใส่พรอมป์ต์ให้ AI เราก็รู้โครงสร้างโค้ดดีอยู่แล้ว และถ้าแยกงานอย่างระมัดระวัง การรีวิวโค้ดที่สร้างขึ้นมาก็ง่ายมาก รู้สึกเหมือนอ่านหนังสือที่เคยอ่านแล้ว และถ้ามีอะไรผิดก็จะสะดุดตาทันทีจนจับได้ตั้งแต่ต้น ไม่ว่าจะมองทางไหนก็เร็วขึ้นมาก
แต่ในช่วงหลายเดือนที่ผ่านมาได้ลองใช้ spec-kit หรือก็คือการใช้ AI แบบนี้ และในทางปฏิบัติแล้วมัน ดีจนน่าตกใจ กำลังสร้างของดี ๆ อยู่ และปัญหาที่ตั้งเป็นสมมติฐานมาก็ยังไม่เจอ อาจจะเกิดวันหนึ่งก็ได้ เลยยังระวังอยู่
แต่พอได้ใช้เองมาระดับหนึ่งแล้ว ก็โยนทิ้งว่าเป็นแค่ยาครอบจักรวาลหลอกลวงไม่ได้ ทำงานเป็นโปรแกรมเมอร์มามากกว่า 30 ปี และรู้สึกว่าพอจะแยกออกว่าอะไรใช้ได้จริงอะไรใช้ไม่ได้
ต่อไปอยากเห็น harness ที่ไม่ได้แค่ร้องขอแต่ “บังคับ” เช่น ถ้าบอกให้อยู่ในโหมดวางแผน แล้วเอเจนต์ไม่ทำตามขั้นตอนการวางแผนที่กำหนดไว้ก็ฆ่าทิ้งไปเลย ถึงจะไม่สมบูรณ์แบบ แต่ก็ควรดีกว่าวิธีปัจจุบันที่ยังต้องมีคนคั่นกลาง
เขาบอกว่า “สกิลคือไฟล์ Markdown ที่มี frontmatter ซึ่งจะถูก inject เข้าไปในบริบทของเอเจนต์เมื่อเหมาะกับสถานการณ์” แต่คนที่ตัดสินว่านั่นใช่สถานการณ์นั้นหรือไม่ก็คือ LLM
เขายังบอกอีกว่า “มันเป็นชุดขั้นตอนที่เอเจนต์ทำตาม และจบลงด้วย checkpoint ที่สร้างหลักฐานและมีเกณฑ์จบที่ชัดเจน” แต่สิ่งที่ตัดสินว่าจะทำตามขั้นตอนเหล่านั้นหรือไม่ก็ยังเป็น LLM อยู่ดี
$my-skillได้ และถ้าทำแบบนั้นสกิลนั้นก็จะถูก inject เข้าไปในบริบทจริง ๆ หลังจากนั้น LLM ก็จะทำตามสกิลนั้นพอ ๆ กับที่มันทำตามพรอมป์ต์ คำสั่ง หรือส่วนอื่น ๆ ของบริบทรอวันที่ทุกคนจะตระหนักว่าใช้เวลาเกินปีไปกับการลองเล่นเอเจนต์และได้มาแค่ความรู้สึกของ ผลิตภาพปลอม
มันไม่ตรงกับประสบการณ์จริงของผมเลย อยากรู้ว่าประสบการณ์แบบไหนทำให้มั่นใจนักว่า AI coding จะล่มสลายอย่างหลีกเลี่ยงไม่ได้ เป็นความเชื่อเชิงปรัชญาว่า AI ผิดศีลธรรมหรือเปล่า หรือว่าได้ลองสร้างอะไรด้วย AI จริง ๆ และสำรวจมันมากพอจนได้ข้อสรุปที่แรงขนาดนั้น
ผมเขียนโค้ดทุกวันมามากกว่า 30 ปี และทำเป็นอาชีพมากกว่า 20 ปี เห็นกระแสมาแล้วก็ไป และก็เห็นความก้าวหน้าจริงที่เปลี่ยนวิธีทำงานหลายครั้ง ยิ่งสร้างโปรเจกต์ด้วย AI มากเท่าไร ก็ยิ่งมั่นใจว่านี่คือ การเปลี่ยนแปลงที่ต่อเนื่องและเป็นพื้นฐาน ต่อวิธีสร้างซอฟต์แวร์และใช้คอมพิวเตอร์
ผมเห็น AI ดีขึ้น และเห็นตัวเองเก่งขึ้นในการใช้มันให้งานเสร็จด้วย งานพวกนั้นผ่านการทดสอบกับภาระงาน production ในโลกจริงแล้ว คุณอาจไม่ชอบสิ่งที่กำลังเกิดขึ้นและไม่ชอบความรู้สึกของการทำงานกับ AI แต่ไม่ได้แปลว่ามันไม่ได้สร้างคุณค่าจริงหรือไม่ได้ทำงานจริงให้คน
พวกเราเข้า Claude Code เต็มตัวตั้งแต่ประมาณกันยายน และติดตามการปรับปรุงได้สำเร็จ เรากำลัง deploy ฟีเจอร์ที่ใช้งานจริงใน production ทั้งงานฝั่ง infra การทำ business logic รวมถึงทั้ง frontend และ backend
ผมไม่คิดว่าคนพวกนี้กำลังเสียเวลาแบบนั้น แต่ก็เห็นด้วยว่าบทความแนวนี้ส่วนใหญ่ไร้สาระ รวมถึงชิ้นนี้ด้วย ถึงอย่างนั้น AI development ก็เกิดขึ้นแล้วในหลายบริษัททั่วโลก
ผมยังไม่คิดว่า workflow แบบเอเจนต์ไปถึงจุดนั้นแล้ว แต่การทำสกิลเพื่อใช้ตอนเรียกเองแล้วทำงานข้าง ๆ AI นั้นใช้ได้ดีจริง ๆ บริษัทผมช่วงนี้โฟกัสกับ sandboxing และสกิลที่ปลอดภัยมาก
ผมยังไม่คิดว่ามันจับงานพัฒนาฟีเจอร์ได้ดีนัก แต่ review skill กับ Grafana skill ที่เราเขียนไว้ค่อนข้างแข็งแรง
เคยลองใช้ชุดสกิลเอเจนต์ที่ใหญ่กว่านี้มาก่อน แต่มันพยายามทำมากเกินไปจนรู้สึกเสียเวลา บ่อยครั้งจะดีกว่าถ้าเลือกใช้เหมือนชุมชนใช้ Vim แทนที่จะติดตั้งสกิลทั้งชุดแบบ IDE
สกิลเป็นเรื่องเฉพาะตัวมาก แตกต่างกันไปตามนักพัฒนาและแต่ละทีม แทนที่จะลงชุดตั้งค่าของคนอื่นเป็นก้อนใหญ่ ๆ ควรใช้เป็น เอกสารอ้างอิง เพื่อทำชุดตั้งค่าของตัวเองมากกว่า
ถ้ามองจากมุม SEO หรือ LLM optimization ดูเหมือนว่าสกิลพวกนี้จะ ค้นพบได้ยาก ถ้าไม่เปลี่ยนชื่อ: https://agentskills.io/
ถ้า Addy มาเห็น อยากรู้ว่าจะอธิบายว่ามันต่างจาก Superpowers อย่างไร: https://github.com/obra/superpowers
ผมอยู่สาย agent dev มาก่อน superpowers และกังวลว่าเกิน 50% ของกระบวนการที่สร้างเองตอนนี้ถูก superpowers ครอบคลุมไปแล้ว
ผมไม่เชื่อ GitHub stars อีกต่อไปแล้ว อยากให้มีคนบอกหน่อยว่า superpowers ถูกใช้งานจริงแล้วหรือยัง ถ้ามันมีคุณค่าจริง ทำไม Boris ยังไม่รวมแนวคิดนี้เข้าไป?
“ถ้าคุณคิดว่ามีโอกาสแม้แค่ 1% ที่สกิลนั้นจะเกี่ยวข้องกับสิ่งที่กำลังทำอยู่ คุณต้องเรียกใช้สกิลนั้นเสมอ”
ไม่เข้าใจว่าทำไมทุกคนถึงกระตือรือร้นกับการทำลายงานของตัวเองกันขนาดนี้
ของพวกนี้หรือ “สกิล” ไหน ๆ คงไม่ได้ทำแบบนั้นจริง แต่ในเชิงหลักการแล้ว มันดูเหมือน ความ疏離จากแรงงาน กำลังเกิดขึ้นในวงกว้าง
เท่าที่ตามรอยได้ มนุษย์พยายามลดแรงงานที่ต้องใช้เพื่อให้ได้ผลผลิตระดับหนึ่งมาโดยตลอด และนั่นแหละคืออารยธรรม เราควรกลับไปทำเกษตรด้วยจอบด้วยมือเพื่อเพิ่มแรงงานที่ใช้หรือ? ควรกลับไปยุคที่ต้องจุดไฟถนนทีละดวงหรือ?
สังคมที่ตาม automation ไม่ทันจะยากจนลงและสุดท้ายก็ตาย เพราะแม้แต่คนที่เกิดที่นั่นก็ย้ายไปที่ที่มีผลิตภาพสูงกว่า มันเกิดขึ้นในยุโรปตะวันออก กับชาว Amish และในทุกสังคมยากจนที่มีการอพยพ ทำให้ไดั้มากขึ้นด้วยสิ่งที่น้อยลง เป็นเรื่องน่าสนใจเสมอ
ผมสงสัยว่าคุณรู้สึกแบบนี้กับ automation ทุกอย่างที่สร้างขึ้นหรือเปล่า มี sysadmin สายเก่าบางคนที่มองความก้าวหน้าของการทำ infra automation แบบนี้ และไม่ชอบที่สคริปต์กับระบบเข้ามาทำสิ่งที่เมื่อก่อนต้องทำด้วยมือ
ทีมของเราที่บริษัทหนึ่งเคยสร้างระบบ patch อัตโนมัติให้กับ เซิร์ฟเวอร์ 30,000 เครื่อง รวมถึงเอาระบบออกจาก production และใส่กลับเข้าไปโดยอัตโนมัติ กระบวนการทั้งหมดกลายเป็นแบบไม่ต้องแตะมือเลย และเมื่อก่อนเคยมีทีมเฉพาะที่คอยรันกระบวนการนี้ด้วยมือ automation แย่งงานพวกเขาไหม?
ในความหมายหนึ่งก็ใช่ แต่ก็ยังมีงานอื่นที่ต้องทำ และตอนนี้พวกเขาก็ทำงานนั้นได้
นี่แหละเหตุผลที่ผมชอบการเขียนโปรแกรม คอมพิวเตอร์ และเทคโนโลยี เพราะมันทำงานแทนเรา ยูโทเปียของผมคือโลกที่หุ่นยนต์ทำงานหนักทั้งหมดเพื่อให้มนุษย์ไปทำสิ่งที่อยากทำได้ AI กำลังพาเราเข้าใกล้ทางนั้นอีกก้าว แทนที่จะพยายามเก็บงานไว้ให้มากพอเพื่อให้มนุษย์ยุ่งอยู่กับงานที่ไม่อยากทำ ผมอยากโฟกัสกับวิธีทำให้ผลประโยชน์จากการที่หุ่นยนต์แย่งงานไป ไม่ได้ตกอยู่แค่กับเจ้าของที่ร่ำรวย แต่เป็นของทั้งโลก
ตอนนี้ยังไม่ชัดว่าทุกอย่างกำลังวิวัฒน์ไปทางไหน คนเลยกำลังลองส่งข้อมูลของตัวเองให้เอเจนต์สุ่ม ๆ ดู หาวิธีเก็บและเข้าถึงบริบท ใช้พรอมป์ต์ซ้ำ และทดลองหลายแนวทางในการรับมือกับเทคโนโลยีนี้
ส่วนใหญ่ของสิ่งเหล่านี้อาจไร้ประโยชน์ภายในหนึ่งปี เมื่อมันถูกหลอมรวมลึกเข้าไปในโมเดลรุ่นถัดไปอยู่แล้ว ถึงอย่างนั้น การตามให้ทันความก้าวหน้าก็เป็นส่วนหนึ่งของความสนุกในการทำงานด้านนี้เสมอ
ถ้ามีข้อมูลระยะยาวออกมาว่าโดยเฉลี่ยแล้วการเพิ่มผลิตภาพมีข้อจำกัด และถึงจะมีโมเดลชั้นนำรุ่นล่าสุดช่วยอยู่ การทำซอฟต์แวร์คุณภาพดีก็ยังต้องการความพิถีพิถันและความใส่ใจจากมนุษย์ ทั้งฝั่งที่เห็นด้วยและไม่เห็นด้วยก็คงประหลาดใจเล็กน้อย
มันก็แค่งานเดิม แต่มีสว่านไฟฟ้าแทนไขควง บางคนสร้างบ้านที่อยู่ได้หลายร้อยปี บางคนก็ทำไม่ได้
ช่วงนี้ได้ยินคำพูดแบบนี้บ่อยขึ้นเรื่อย ๆ ว่า สิ่งที่ดีต่อการบริหารทีมพัฒนาก็ดีต่อ การบริหาร LLM ด้วย
เช่น test case ที่ดี เอกสารที่ชัดเจนและกระชับ CI/CD best practices และเอกสาร onboarding
การจัดการ LLM กำลังคล้ายกับการจัดการทีมคนมากขึ้นเรื่อย ๆ
อยากรู้ว่ามันดีกว่าหรือแตกต่างจาก spec-kit อย่างไร ปรัชญาดูคล้ายกันมาก และก็สงสัยว่าน่าจะใช้ร่วมกันได้ไหม หรือจริง ๆ แล้วแค่ซ้ำซ้อน?
https://github.com/github/spec-kit
แปลกใจที่บางสกิลยาวขนาดนี้ มีทั้งตาราง รายการ checkbox ตัวอย่างโค้ด และกินพื้นที่หลายหน้า
อยากรู้ว่านี่เป็นเรื่องปกติแค่ไหน เพราะแค่มีไม่กี่อันก็ดูเหมือนจะกินบริบทไปพอสมควรแล้ว
มีการทดลองสนุก ๆ อย่างหนึ่ง ลองขอให้ LLM ใช้สิ่งที่มันคุ้นแบบคลุมเครือดู เช่นขอว่า “write a fib” แทบทุก LLM จะถูก fine-tune ด้วยโค้ดจนแม้สำหรับคนที่ไม่ใช่โปรแกรมเมอร์มันอาจหมายถึง “เขียนคำโกหกเล็ก ๆ” แต่มันกลับตอบเป็น อัลกอริทึมลำดับฟีโบนัชชี
นี่หมายความว่ามีการบีบอัดเกิดขึ้น โดยไม่ต้องอธิบายละเอียดว่าลำดับฟีโบนัชชีคืออะไร ก็สามารถสื่อผลลัพธ์ได้ด้วยโทเคนกำกวมแค่ 3 ตัว
เพราะงั้นเราจึงรู้ว่าความยาวของพรอมป์ต์ไม่ใช่เรื่องสำคัญ สิ่งสำคัญคือคำที่ถูกต้อง ความถี่ และลำดับ พรอมป์ต์ยาวสองหน้ากับพรอมป์ต์สองประโยคอาจให้ผลลัพธ์แบบเดียวกันก็ได้
จนถึงตอนนี้ผมประสบความสำเร็จกับสกิลที่สั้นและโฟกัสชัด เจอกับมันเหมือนเป็นชิ้นส่วนบริบทที่ใช้ซ้ำได้แต่ต้องเล็ก เช่นสองสามย่อหน้าเกี่ยวกับวิธีใช้ Python ในโปรเจกต์ของผม และวิธีรัน unit test
ผมยังมีสกิล “info” สั้น ๆ หลายอันที่ไม่ได้สั่งเอเจนต์ แต่มีแค่ข้อมูลบริบทที่มีประโยชน์ซึ่งดึงขึ้นมาใช้เมื่อจำเป็น
สกิลมากเกินไปก็อาจเป็นปัญหา เพราะสุดท้ายรายการชื่อและคำอธิบายของสกิลก็ต้องเข้าไปอยู่ในบริบท ณ จุดหนึ่งอยู่ดี
แม้ในบริบท LLM เล็กอย่าง 128k ก็ประมาณ 10% และในหน้าต่างบริบท 1M ของโมเดลใหญ่แทบไม่เห็นผลเลย
บางทีผมอาจจะอนุรักษ์นิยมเกินไปในเรื่องนี้ ยังมีอะไรให้สำรวจอีกมาก
“งานส่วนใหญ่ของวิศวกรอาวุโสคือสิ่งที่มองไม่เห็นใน diff”
Agent Skills คือความพยายามของ Addy ที่จะลบงานส่วนนั้นออกไปด้วย ชนแก้วให้ Addy :P