Learning Opportunities - สกิลที่ช่วยพัฒนาทักษะอย่างมีเจตนาใน Claude Code และ Codex
(github.com/DrCatHicks)- สกิลสำหรับ Claude Code และ Codex ที่ช่วยให้ระหว่างทำ agentic coding ไม่ได้พัฒนาแค่โปรเจ็กต์ แต่ยังช่วยยกระดับ ความเชี่ยวชาญของผู้ใช้ ด้วย
- หลังทำ งานเชิงสถาปัตยกรรม เช่น การสร้างไฟล์ใหม่ การเปลี่ยนสคีมา หรือการรีแฟกเตอร์เสร็จ Claude จะเสนอแบบฝึกการเรียนรู้แบบเลือกทำความยาว 10–15 นาที
- แบบฝึกใช้เทคนิคจากวิทยาศาสตร์การเรียนรู้ เช่น prediction, generation, retrieval practice, spaced repetition และสร้างโจทย์ตัวอย่างที่ทำค้างไว้ครึ่งหนึ่งจากงานจริงในโปรเจ็กต์ของผู้ใช้
- ออกแบบมาเพื่อลดปัญหาที่เครื่องมือเขียนโค้ดด้วย AI อาจก่อให้เกิด เช่น การยอมรับโค้ดที่สร้างมาโดยไม่ไตร่ตรอง ภาพลวงตาว่าตนเองเข้าใจคล่องแล้ว การโหมทำงานยาวนาน การขาด metacognition และการลดลงของการทดสอบตนเอง
- Claude จะถามในลักษณะว่า “อยากลองทำแบบฝึกการเรียนรู้สั้น ๆ ในหัวข้อนี้ไหม? ใช้เวลาประมาณ 10–15 นาที” และหากผู้ใช้ยอมรับ ก็จะเริ่ม แบบฝึกแบบโต้ตอบ
- หลักการออกแบบสำคัญคือ Claude จะไม่ตอบคำถามของตัวเอง แต่จะ รอข้อมูลจากผู้ใช้ โดยตั้งใจให้เป็นโหมดสะท้อนคิดและสำรวจที่ต่างจาก agentic coding แบบรวดเร็ว
- ประเภทของแบบฝึกประกอบด้วย prediction→observation→reflection, generation→comparison, การไล่ตามเส้นทางการทำงาน, การคาดการณ์การดีบัก, การอธิบายให้ผู้พัฒนาใหม่ฟัง, และการทบทวนดึงความจำจากเซสชันก่อนหน้า
- เงื่อนไขการยับยั้งที่เสนอไว้ในตอนนี้คือ จะไม่เสนอโอกาสการเรียนรู้อีกหากในเซสชันเดียวกันผู้ใช้เคยปฏิเสธแบบฝึกไปแล้ว หรือทำแบบฝึกครบ 2 ครั้งแล้ว
- ใน Codex สามารถเพิ่มเข้า marketplace ได้ด้วย
codex plugin marketplace add https://github.com/DrCatHicks/learning-opportunities.gitและมีlearning-opportunities,learning-opportunities-auto,orientรวมอยู่ด้วย - ใน Claude Code ให้เพิ่มผ่าน Claude Code plugin marketplace จากนั้นติดตั้งด้วย
/plugin install learning-opportunities@learning-opportunitiesแล้วรีสตาร์ตเพื่อเปิดใช้งาน learning-opportunities-autoเป็น hook แบบเลือกใช้บน Linux และ macOS ที่ทำให้ Claude พิจารณาเสนอแบบฝึกหลัง git commit และบน Windows ก็ใช้งานได้ด้วยการตั้งค่าเพิ่มเติม- สกิล
orientจะสร้างorientation.mdเมื่อต้องเรียนรู้รีโพซิทอรีใหม่ และให้บทเรียนแนะนำที่อิงจากงานวิจัยด้านความเข้าใจโปรแกรมและการสำรวจโค้ดเบส - เหมาะสำหรับใช้ร่วมกับ Learning-Goal โดยสกิลดังกล่าวถูกแนะนำว่าเป็นตัวช่วยตั้งเป้าหมายการเรียนรู้แบบกึ่งมีโครงสร้างและโต้ตอบได้ด้วยเทคนิค MCII
- สำหรับการทดลองในทีม สามารถใช้ MEASURE-THIS.md ร่วมกันได้ โดยมีทั้งคำถามแบบสำรวจที่ผ่านการตรวจสอบแล้ว คู่มือการตีความผลลัพธ์ เทมเพลต “team boast” สำหรับแชร์กับฝ่ายผู้นำ และ nudges เรื่องความเข้มงวดทางสถิติใน Claude.md
- เผยแพร่ภายใต้สัญญาอนุญาต Creative Commons Attribution 4.0 International License
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ยังไม่ค่อยเข้าใจ Skills เท่าไร แต่พอดูในรีโปแล้วรู้สึกว่า โค้ดและข้อความที่ประดับตกแต่ง ดูเยอะเกินไปเมื่อเทียบกับพรอมป์ต์สั้น ๆ แค่ตัวเดียวใน bash script ที่รันหลังคอมมิต
แก่นจริง ๆ ก็ใกล้เคียงกับการบอกว่า ผู้ใช้เพิ่งคอมมิตไป ดังนั้นถ้ามีไฟล์ใหม่ การเปลี่ยน schema การตัดสินใจด้านสถาปัตยกรรม การ refactor หรือแพตเทิร์นที่ไม่คุ้นเคย ก็ให้เสนอ แบบฝึกหัดการเรียนรู้ 10–15 นาที
ในเชิงแนวคิดควรมองมันไม่ใช่เป็นการหยิบเวทมนตร์ของคนอื่นมาใช้ แต่เป็น ซอฟต์แวร์ที่ค่อย ๆ เติบโต https://alexhans.github.io/posts/series/evals/building-agent...
ใน coding harness มักมี agent skill ชื่อ SkillBuilder อยู่แล้ว จึงสร้างได้ง่ายและพัฒนาต่อไปเรื่อย ๆ ได้
แนะนำให้ทำขึ้นมาเองให้ตรงกับปัญหาของตัวเอง และก็มีตัวอย่างง่าย ๆ ที่ใช้การประเมินเพื่อดันความแม่นยำของระบบอัตโนมัติให้สูงพอ https://alexhans.github.io/posts/series/evals/sketch-to-text...
เพราะงั้นเลยอยากแนะนำให้ใช้ Claude สร้างเครื่องมือแบบคล้าย ๆ กันของตัวเอง ตอนแรกอาจเปลืองโทเค็น แต่หลังจากนั้นเครื่องมือของตัวเองจะช่วยลดโทเค็นและการเรียกใช้ที่ต้องใช้กับงานสำคัญได้มาก
ยังสามารถล็อกการเรียกใช้เครื่องมือให้ปลอดภัยขึ้น ทำให้งานของเอเจนต์ retry ได้ และลด failure mode ลงได้ด้วย ถ้าโน้ตบุ๊กดับระหว่างทำงาน ก็ยังเลี่ยงสถานการณ์ที่ต้องเผาโทเค็นจำนวนมากเพื่อให้เอเจนต์ไล่ฟื้นว่าทำถึงไหนแล้วได้
แปลกใจที่ Skills บางอันไม่ได้เขียนขั้นตอนที่ชัดเจนหรือสิ่งที่ต้องทำเลย แต่แค่ตั้งต้นแบบ คำพูดปลุกใจ เพื่อให้โมเดลเขียนข้อความได้ดีขึ้นในงานบางประเภท
frontend design skill ที่ Claude ใช้ก็แทบจะเป็นแค่การขอให้เลือกฟอนต์ดี ๆ และทำให้ดีไซน์สอดคล้องกัน โดยไม่ได้ลงรายละเอียดว่าจะใช้ฟอนต์อะไร หรือจะจัดชุดสีและเลย์เอาต์อย่างไร
https://github.com/anthropics/claude-code/blob/main/plugins/...
เอเจนต์เขียนโค้ดอาจก่อให้เกิด หนี้จากการทำซ้ำ ได้ ถ้ารับผลลัพธ์จาก coding assistant มาใช้โดยไม่ตรวจว่าถูกไหม ความรู้เกี่ยวกับโค้ดเบสของตัวเองจะค่อย ๆ หายไป
ไฟล์คอนเท็กซ์อย่าง CLAUDE.md, migration protocol, authentication protocol จะทำงานได้ดีก็ต่อเมื่อเราเข้าใจมันมากพอที่จะอัปเดตมันได้อย่างถูกต้อง
เคยมีช่วงที่ยอมรับโค้ดที่เอเจนต์สร้างมาแบบไม่ลืมหูลืมตาอยู่สองชั่วโมง แล้วสุดท้ายก็ลืมไปเลยว่าโค้ดเบสทำงานอย่างไร จนสร้างไฟล์คอนเท็กซ์ใหม่ไม่ได้ หนี้ด้านทักษะ แบบนี้ไม่ปรากฏใน diff และจะโผล่มาให้เห็นตอนที่ต้องเป็นคนนำเอเจนต์เอง
เวลาจะเปลี่ยนฟีเจอร์ใหญ่ ๆ ควรคุยกันในแชตก่อนให้ตรงกันว่า ปัญหาในโดเมนธุรกิจ ที่พยายามแก้อยู่นั้นคืออะไร ก่อนจะให้เอเจนต์ไปเขียนโค้ด เหมือนนั่งคุยกับผู้รับเหมาพัฒนาซอฟต์แวร์ภายนอกเพื่อจัดสิ่งที่ต้องการให้ชัด
จากนั้นก็เขียนเอกสารออกแบบเป็น bullet แบบลำดับชั้นร่วมกับเอเจนต์ลงในไฟล์
.mdจริง ๆ โดยให้เอเจนต์ช่วยสร้างและแก้ไขเป็นส่วนใหญ่ แต่ต้องไล่ตรวจปัญหาและการตัดสินใจที่กำกวมอย่างละเอียด เพื่อให้การตัดสินใจระดับดีไซน์จบตั้งแต่ตรงนี้ต่อจากนั้นก็ให้แปลงสเปกการออกแบบไปเป็นโครงของชุดทดสอบสเปกแบบ BDD และค่อยเติมรายละเอียดระหว่างลงมือทำ
ในขั้น implementation จะเพิ่ม แก้ไข หรือลบ unit test และ integration test ก็ได้ แต่ไฟล์สเปกการออกแบบและโครงสร้างการทดสอบ BDD ที่ต่อยอดมาจากมันควรถูกตรึงไว้ ก่อนเสร็จ BDD tests ต้องถูกเติมด้วยลอจิกที่ตรงกับป้ายกำกับและต้องผ่านทั้งหมด
ถ้าโปรเจ็กต์ใหญ่มาก ก็อาจวนเป็นสปรินต์แล้วทำซ้ำกระบวนการอย่างการนิยามความต้องการทางธุรกิจใหม่ การแก้แบบ การเพิ่มชุด BDD ใหม่อีกครั้ง หรือจะคั่นระหว่างขั้นตอน 2 และ 3 ด้วยการแบ่งดีไซน์เป็น milestone แล้วสร้างและแก้เฉพาะรายการ BDD ของ milestone ปัจจุบันก็ได้
สรุปคือใช้ แนวทางแบบ waterfall กับ LLM นั่นเอง ถ้ากระบวนการทั้งหมดจบได้ภายในหนึ่งชั่วโมง waterfall ก็อาจใช้งานได้สบายมาก
จุดสำคัญคือหลังจบโปรเจ็กต์หรือ milestone ให้เอเจนต์อธิบายโค้ดที่มันเขียนในแชต แต่ห้ามอธิบายสิ่งที่ปรากฏอยู่ในดีไซน์แล้ว
แบบนั้นเราจะเอาคำอธิบายเฉพาะส่วนที่น่าแปลกใจไปแปลงเป็นคอมเมนต์ในโค้ดได้ และผลที่ได้จะไม่ใช่คอมเมนต์ขยะเชิงพิธีการ แต่เป็นคอมเมนต์ที่เหมือนคนจริงเขียน
ถ้าไม่มี benchmark และ evaluation แล้วจะรู้ได้อย่างไรว่ามันให้ผลดีกว่า
/create-skill? การทดสอบแบบพื้น ๆ ไม่ได้ทำให้รู้สึกเชื่อถือได้มีคำอธิบายว่าหลังทำงานด้านสถาปัตยกรรมเสร็จ Claude จะเสนอแบบฝึกหัดทางเลือก 10–15 นาทีที่อิงกับวิทยาศาสตร์การเรียนรู้ซึ่งมีหลักฐานรองรับ โดยใช้เทคนิคอย่างการทำนาย การสร้าง การดึงคืนความจำ และ spaced repetition พร้อมยกตัวอย่างที่ทำค้างไว้ครึ่งหนึ่งจากงานในโปรเจ็กต์ของตัวเอง
ชื่อนี่ชวนสับสนจริง
สำหรับคนที่ยังไม่ได้ลงไปในโพรงกระต่ายนี้ Skills คือ ไฟล์ Markdown แบบมีโครงสร้าง ที่อธิบายว่าจะจัดการงานขอบเขตแคบ ๆ อย่างไร
ตัวอย่างเช่น ถ้าเขียน API endpoint ด้วยวิธีเฉพาะ ก็เขียนขั้นตอนนั้นไว้ใน skill ต่อมาเมื่อเอเจนต์ดู skill นี้แล้วตัดสินว่าเกี่ยวข้องกับคอนเท็กซ์ของแชตปัจจุบัน มันก็จะโหลดขึ้นมาแล้วทำตามคำสั่ง
คล้ายการเรียกใช้เครื่องมือ แต่ไม่ใช่ฟังก์ชันที่เรียกได้ หากเป็นคำแนะนำว่าควรทำ “ทักษะ” นั้นอย่างไร
อย่างน้อยใน Cline ที่ฉันใช้ Skills สามารถนิยามได้ทั้งแบบ global หรือแบบ local ระดับโปรเจ็กต์
เท่าที่ได้ยินมา การโหลด skill อาจมีผลกับคอนเท็กซ์แยกต่างหาก เช่น ยังคงอยู่แม้หลังการบีบอัดคอนเท็กซ์แล้ว
ถ้าโหลดหลาย skill ก็อาจกลายเป็นว่าอยู่ในเซสชันแบบถาวรได้
คิดว่าเข้ากับ subagent ได้ดี ถ้า subagent โหลด skill ไปทำงานให้เสร็จแล้วส่งกลับมาแค่ผลลัพธ์ orchestrator agent ก็ไม่จำเป็นต้องรู้รายละเอียดนั้น
ยังไม่เข้าใจว่า adaptive dynamic textbook approach คืออะไรแน่ ต้องการตัวอย่าง
แต่ประเด็นที่ว่าถ้ารับโค้ดที่สร้างมาแล้วตัวเองเขียนโค้ดน้อยลง ก็จะข้ามการประมวลผลเชิงรุกที่ทำให้เกิดความเข้าใจ อันนี้จริงมาก
ไม่เข้าใจเลยว่าทำไมเวลาคิดไอเดียเจ๋ง ๆ แบบนี้ถึงยังไม่ใส่ลิงก์ เดโมหรือผลลัพธ์ตัวอย่าง มาด้วย เป็นแพตเทิร์นที่เห็นใน HN ทุกวัน
ถ้าอยากดูว่า skill นี้หน้าตาจริง ๆ เป็นอย่างไร ต้องดาวน์โหลดมารันเองเท่านั้นเหรอ? ไม่อยากทำแบบนั้น
เข้าใจไอเดียที่ว่าไม่เพิ่ม skill ตอนที่ไม่เกี่ยวข้องเพื่อเลี่ยงคอนเท็กซ์บวม แต่ถ้าไม่มีคำสั่งชัดใน AGENTS.md ก็ไม่มีอะไรรับประกันว่าเอเจนต์จะใช้ skill นั้น แบบนี้ก็แทบไม่ต่างจากไฟล์ Markdown ที่ถูกอ้างถึงไว้ตรงจุดหนึ่ง
ตอนทำ https://www.agentkanban.io ซึ่งเป็นบอร์ดงานที่ผสานกับ GitHub Copilot ฉันลองมาหลายแบบมากว่าจะวางคำสั่งไว้ตรงไหน
โครงสร้างที่ลึกลงไปอีกหนึ่งชั้นจาก AGENTS.md ทำงานได้ค่อนข้างดี เพราะต้องทำให้เอเจนต์หยิบ ID เฉพาะของงานได้อย่างเสถียร สุดท้ายเลยลงเอยกับวิธีใส่
INSTRUCTION.mdไว้ในไฟล์ที่เครื่องมือเป็นคนจัดการ ซึ่งช่วยลดการปนเปื้อนของ AGENTS.md ได้ด้วยฉันก็ลองใช้ Skills เหมือนกัน แต่โดนข้ามบ่อยเกินไป เลยยากที่จะทำให้เครื่องมือทำงานได้เสถียรเท่ากับวิธีปัจจุบัน
SKILL.mdอยู่ตรงนั้นอยู่แล้ว แค่อ่านดูก็รู้ว่ามันทำอะไรชอบไอเดียนี้มาก เคยให้ Claude ใช้ตำราและเอกสารโอเพนซอร์สมาสร้างตำราแบบสด ๆ ให้
เลยสงสัยว่า skill นี้ขยายไปเป็นด้าน การเรียนรู้และการประยุกต์ใช้ ที่กว้างกว่านี้ได้ไหม หรือว่ามันเฉพาะทางด้านโค้ด
ปฏิกิริยาที่นี่น่าสนใจดี แต่ดูเหมือนคนส่วนใหญ่จะพลาดประเด็นสำคัญไป
สำหรับฉัน บทเรียนสำคัญคือการได้เห็นว่าคนอื่น ใช้ Skills กันอย่างไร แล้วเอามาเรียนรู้ เมื่อวานฉันดูคลาสของ Matt Pocock เรื่องการใช้เอเจนต์ เขาโชว์ Skills โดยใช้ skill ชื่อ “grill-me” เพื่อพัฒนาเอกสารข้อกำหนดผลิตภัณฑ์
ฉันคงไม่ทำตามที่เขาทำเป๊ะ ๆ แต่ก็ได้ไอเดียเกี่ยวกับวิธีสร้าง requirement และลงมือ implement ในแบบของตัวเอง
อย่างที่วิศวกรของ Anthropic พูดไว้ Claude เหมือนวิศวกรที่มีพรสวรรค์แต่ยังขาดความเชี่ยวชาญ ส่วน Skills ก็คือโฟลเดอร์และไฟล์ที่ใช้สะสมความเชี่ยวชาญนั้น
อีกอย่างที่ได้จาก Pocock คือยิ่งคอนเท็กซ์หรือขนาดโทเค็นยาวขึ้น คำตอบก็ยิ่งมีแนวโน้มจะทึ่มลง เพราะฉะนั้น Skills จึงเป็นอีกวิธีหนึ่งในการนำเสนอปัญหาให้ LLM ในรูปแบบที่บีบอัดแล้วเพื่อให้ได้คำตอบที่เหมาะขึ้น
Claude เองก็มีลักษณะพฤติกรรมด้วย ถ้าใครสักคนสร้าง skill ซ้ำ ๆ แบบเดิมไว้ มันอาจถ่ายทอดไปยังผู้ใช้อื่นได้ไม่ดีนัก เพราะแต่ละคนคุยกับ Claude ไม่เหมือนกัน
เพราะงั้นฉันเลยลังเลที่จะเอาโฟลเดอร์ skill ของตัวเองไปแชร์ให้เพื่อนร่วมทีม ตรงกันข้าม ฉันอยากโชว์สิ่งที่ทำไว้เป็นเดโม เพื่อให้แต่ละคนเห็นความเป็นไปได้แล้วไปหาเวิร์กโฟลว์ของตัวเอง
คุณค่าคือการได้เห็นว่าคนอื่นสร้างของกับ Claude อย่างไร แล้วเอามาเลียนแบบในแบบของตัวเอง คล้ายตอนเริ่มหัดเขียนโปรแกรมแล้วคัดโค้ดจากหนังสือ C ของ Kernighan และ Ritchie มาพิมพ์ตาม ลองแก้เพื่อทำความเข้าใจการทำงาน แล้วค่อยดัดแปลงให้ตรงกับเป้าหมายของตัวเองในภายหลัง
อีกเหตุผลที่พูดถึงลักษณะพฤติกรรมก็เพราะผู้เขียนเป็นนักจิตวิทยา เลยน่าสนใจว่ารูปแบบการโต้ตอบกับ Claude ของเขาอาจต่างจากโปรแกรมเมอร์พอสมควร
เห็นมีคนบอกว่าผู้เขียนกับผู้เชี่ยวชาญจากหลายสาขาย้ายออกจาก Twitter ไปนานแล้ว เลยว่าจะติดตั้ง bsky หรือ Mastodon แล้วตามดู คิดว่าการสังเกตว่าผู้เชี่ยวชาญที่ไม่ใช่โปรแกรมเมอร์ใช้ LLM อย่างไรเป็นเรื่องสำคัญ
เป็นไอเดียที่ดีมาก เลยลองสำรวจเล่นดูหลายอย่างเมื่อเช้านี้
ช่วงนี้ใช้ AI มากเกินไปจนรู้สึกเหมือนมี ภาวะสมองไหลออก อย่างแรง และแม้นี่จะไม่ใช่คำตอบสมบูรณ์ แต่คิดว่าแค่ทำแบบฝึกหัดวันละไม่กี่อย่างก็น่าจะช่วยได้มาก