คือถ้าในคลาสสดรู้สึกว่าเนื้อหาเดินเร็วเกินไป เอกสารนี้คือฉบับที่อ่านตามจังหวะของตัวเองได้ครับ ไม่มีเนื้อหาใหม่เพิ่มเข้ามา เป็นบทเรียนเดิมที่ผมเขียนลงเป็นตัวหนังสือ แล้วก็เก็บคำศัพท์ที่ผ่านไปเร็ว ๆ ในวันนั้นมาอธิบายไว้ให้ครบด้วย
เข้าใจความต้องการ → แตกงานออกเป็นงานย่อยที่จัดการได้ → ลงมือทำไปทีละงาน ไม่ว่าเราอยากไปให้ถึงอะไร ถ้าเราเข้าใจความต้องการของตัวเองแล้วแตกงานย่อยออกมาให้จัดการได้ การบริหารเป้าหมายก็ง่ายขึ้นเยอะ ไม่ว่าจะเป็นการเขียนบทความลง Facebook งานการตลาด การทบทวนวรรณกรรม การเขียนเปเปอร์ การทำสไลด์นำเสนอ หรือการซื้อขายของมือสองออนไลน์ ผมว่าทุกอย่างมันต้องผ่าน process นี้หมด เพราะงั้นเวิร์กช็อปนี้ผมถึงเลือกสอน workflow นี้ ไม่ใช่ชุดเทคนิคการเขียนโค้ดครับ
พอเราใช้ process นี้ การเอา AI agent เข้ามาช่วยก็ไม่ได้จำกัดอยู่แค่การเขียนโค้ด เพราะหน้าที่ของ agent คือลงมือทำงานย่อยแต่ละชิ้น ซึ่งคำถามว่า agent จะช่วยเราได้จริงไหม มันขึ้นอยู่กับสองข้อนี้
สองข้อนี้ไม่เกี่ยวกับการเขียนโปรแกรมเลย นั่นเองคือเหตุผลทั้งหมดที่ workflow นี้ใช้ได้ดีกับงานที่ไม่มีโค้ดอยู่เลยเหมือนกัน แล้วก็อยากย้ำไว้ตรงนี้ว่า AI ไม่ได้ทำให้เราไม่ต้องคิดนะครับ แต่มันลดระยะห่างระหว่าง “คิดได้” กับ “ลงมือทำ” ลงไปเยอะมาก
point A คือปัญหา และ point B คือทางออก ปัญหาหนึ่งมักมีหลายวิธีในการแก้ และไอเดียตั้งต้นของเราอาจไม่ใช่วิธีที่ดีที่สุด ตรงนี้แหละที่ grilling มีไว้รับมือโดยตรง เพราะมันชวนให้เรามองเส้นทางอื่นก่อนจะลงแรงเดินเส้นใดเส้นหนึ่ง
ผมว่าสิ่งที่ต้องทำให้เป็นจริง ๆ คือการแตกงาน ว่าจาก point A ไป point B ต้องผ่านอะไรบ้าง ซึ่งตรงนี้เองที่ skills ต่าง ๆ เริ่มมีบทบาทมาก
คำทั้งหมดที่ผ่านไปเร็ว ๆ ในวันนั้น ผมอธิบายไว้ที่นี่ด้วยภาษาบ้าน ๆ ถ้าอ่านประโยคไหนในเอกสารนี้แล้วสะดุด คำที่ยังไม่คุ้นน่าจะอยู่ในรายการนี้แหละครับ ศัพท์พวกนี้ผมคงคำภาษาอังกฤษไว้ตามที่ทุกท่านจะเจอในเครื่องมือจริง
zsh หรือ bash พูดง่าย ๆ Terminal คือหน้าต่าง ส่วน shell คือโปรแกรมที่คอยฟังอยู่ข้างในหน้าต่างนั้น| มันก็คือวิธีต่อเครื่องมือเล็ก ๆ หลายชิ้นให้กลายเป็นเครื่องมือที่ใหญ่ขึ้น และเป็นวิธีที่เราใช้ pipe เครื่องมือกับข้อมูลอื่น ๆ เข้ากับ agent ด้วย/name แล้ว agent จะโหลดคำสั่งชุดนั้นขึ้นมาทำตาม /grilling คือ slash command ส่วน grilling คือ skill ที่อยู่เบื้องหลังมัน/to-specskill ที่เปลี่ยน SOP ให้เป็น spec ที่ลงมือทำได้ คือเปลี่ยนความเข้าใจของเราให้กลายเป็นรายการสิ่งที่ต้องเป็นจริงเมื่องานเสร็จแล้ว/to-issueskill ที่แตก spec ออกเป็น Issue แต่ละชิ้น โดยแต่ละชิ้นมีขนาดพอให้ agent หนึ่งตัวทำจนเสร็จได้/implementเรายื่น Issue หนึ่งชิ้นให้ agent แล้วมันลงมือทำงานนั้น เป็นขั้นที่เห็นผลชัดที่สุด แต่มันก็ดีได้ไม่เกินคุณภาพของเอกสารที่ยืนอยู่เบื้องหลัง/goคำสั่งที่ไล่ทำงานทั้งคิว ไม่ใช่ทีละ Issue คือปล่อยให้ agent หยิบงานชิ้นถัดไปมาทำต่อไปเรื่อย ๆ โดยที่เราไม่ต้องเลือกให้ทีละชิ้น/go กับ loop ซึ่งก็คือการที่ agent ไล่ทำ Issue ไปเรื่อย ๆ ตอนที่เราไม่ได้นั่งอยู่หน้าคีย์บอร์ด วิธีนี้ควรใช้ตอนที่แตกงานย่อยไว้เรียบร้อยดีแล้วเท่านั้นนะครับ/setup-matt-pocock-skills ทำหน้าที่ติดตั้ง skills แล้วก็วางแนวคิดร่วมอย่าง Issue ให้เรียบร้อย รันครั้งเดียวต่อโปรเจกต์ และข้ามได้เลยถ้า repo นั้นตั้งค่าไว้อยู่แล้วMatt Pocock เป็นนักการศึกษาและวิศวกรสาย TypeScript ผู้สร้าง Total TypeScript และเป็นผู้เขียนร่วมกับ Taylor Bell ในหนังสือ Total TypeScript เขาเผยแพร่ agent skills ที่ workflow นี้ตั้งอยู่บนไว้อย่างเปิดเผยใน repo mattpocock/skills บน GitHub ผมว่าเขาวางระบบได้ดีมาก เราเลยยืม workflow ของเขามาใช้ ไม่ได้ยืมเนื้อหาวิชาของเขา และไม่มีอะไรที่เราทำกันในเวิร์กช็อปที่ต้องใช้ TypeScript เลยครับ
ข้อควรระวังเรื่องชื่อคำสั่ง ชื่อ slash command ที่อยู่ในเอกสารนี้คือชื่อที่เราใช้กันในเวิร์กช็อป ผมยังไม่ได้ตรวจยืนยันว่าตรงกับชื่อต้นทางใน repo ของ Matt Pocock ทุกตัวหรือเปล่า ถ้าเจอว่าไม่ตรง ขอให้ยึดชื่อที่ skill ติดตั้งมาให้จริงในเครื่องของเราเป็นหลักนะครับ
process นี้มีหกขั้น แต่ละขั้นรับสิ่งหนึ่งเข้ามาแล้วส่งสิ่งหนึ่งออกไป ซึ่งสิ่งที่ส่งออกไปก็กลายเป็นข้อมูลตั้งต้นของขั้นถัดไป ห่วงโซ่นี้แหละคือตัววิธีการทั้งหมดครับ
/setup → /grilling → /wayfinder → SOP → /to-spec → /to-issue → /implement → /goตัวอย่างนี้ไม่มีโค้ดอยู่แม้แต่บรรทัดเดียว ประโยคที่เราเริ่มต้นคือ “ฉันอยากทำให้เพจ Facebook ของฉันโตขึ้น” ลองสังเกตดูนะครับว่าประโยคนี้เปลี่ยนไปยังไงเมื่อไหลผ่าน pipeline เพราะพอถึงขั้นที่ 6 มันจะกลายเป็นงานที่ทำเสร็จแล้วห้าชิ้น และไม่มีคำว่า “โตขึ้น” เหลืออยู่ในนั้นอีกเลย
/setup-matt-pocock-skillsขั้นนี้ติดตั้ง skills แล้วก็วางแนวคิดร่วมอย่าง Issue เอาไว้ ขั้นถัด ๆ ไปจะได้มีที่วางงาน ปกติทำครั้งเดียวจบครับ ถ้าเราทำงานอยู่บน repo ที่ตั้งค่าไว้เรียบร้อยแล้ว ก็ข้ามขั้นนี้ไปได้เลย
/grillingเราอยู่ที่ point A แล้วอยากไปให้ถึง point B ซึ่งไอเดียตั้งต้นของเราอาจไม่ใช่วิธีที่ดีที่สุด grilling ก็คือการนั่งสัมภาษณ์กันระหว่างเรากับ AI agent โดยซักถามทีละคำถาม จนกระทั่งทั้งสองฝ่ายเข้าใจปัญหาอย่างลึกซึ้ง แล้วก็ปิดท้ายด้วยการสรุปลงในเอกสารกลาง ไม่ว่าจะเป็น CONTEXT.md หรือ AGENT.md สิ่งหนึ่งที่เป็นปัญหามากในยุคนี้ก็คือ เวลาเราทำโปรเจกต์อะไรขึ้นมาเยอะ ๆ เราไม่เคยรู้เลยว่าเราไม่รู้อะไร หรือที่เรียกว่า unknown unknowns นั่นเอง ซึ่ง grilling มีไว้ดึงสิ่งนั้นออกมาครับ
/wayfinderWayfinder คือการทำ grilling ให้ครบทุกหมวดของโปรเจกต์ เราจะได้เข้าใจทุกด้านของงานและไม่เหลือส่วนไหนที่ยังไม่ได้ตรวจ tool ตัวนี้ผมใช้บ่อยมาก เพราะมันช่วย visualize เส้นทางออกมาเลยว่า จาก A ไป B ต้องทำอะไรบ้าง พอเส้นทางชัดก็ลงมือได้ทันที ไม่ต้องเสียพลังไปกับการคิดว่าจะเริ่มตรงไหนดี หลักคิดคร่าว ๆ คือ โปรเจกต์ที่ซับซ้อนน้อยใช้ grilling อย่างเดียวก็พอ ส่วนโปรเจกต์ที่ซับซ้อนสูงกว่านั้นเหมาะกับ Wayfinder
พอ Wayfinder กับ Grilling เสร็จ เราจะมีเอกสารกลางที่ทำหน้าที่เหมือน SOP ขององค์กร คือความเข้าใจที่ตกลงกันแล้ว เขียนไว้เป็นลายลักษณ์อักษร แล้วทุกขั้นถัดจากนี้ก็อ่านจากเอกสารนั้น ขั้นนี้ไม่ใช่คำสั่งนะครับ แต่เป็นการเปลี่ยนแปลงของสิ่งที่เราถืออยู่ในมือ เราเริ่มจากไอเดียในหัว แล้วตอนนี้เรามีเอกสารที่คนอื่นหยิบไปทำต่อได้เลย
CONTEXT.md ซึ่งก็คือ SOP ของงานชิ้นนี้/to-spec แล้วต่อด้วย /to-issueเราแปลง SOP นี้ให้เป็นงานที่ลงมือทำได้ด้วย /to-spec แล้วแตกงานย่อยออกเป็น Issue แต่ละชิ้นด้วย /to-issue โดยแต่ละ Issue มีขนาดพอให้ agent หนึ่งตัวทำจนเสร็จได้จริง ตรงนี้แหละคือหัวใจ เพราะสิ่งที่ต้องทำให้เป็นจริง ๆ คือการแตกงาน ว่าจาก point A ไป point B ต้องผ่านอะไรบ้าง
/implementพอเรามีงานย่อยพวกนี้แล้ว เราก็สั่งให้ AI ลงมือทำได้เลย ใช้คำสั่ง /implement แล้ว agent จะทำงานบน Issue หนึ่งชิ้นตั้งแต่ต้นจนจบ
ถ้าเราอยากให้ agent จัดการงานหลายชิ้นในคราวเดียว ก็ใช้คำสั่งอย่าง /go หรือ loop ได้ครับ ซึ่งเรียกรวมกันว่าโหมด Away From Keyboard
/go เราเริ่มจาก “ฉันอยากทำให้เพจ Facebook ของฉันโตขึ้น” และจบด้วยงานที่ทำเสร็จแล้วห้าชิ้น ซึ่งเล็งไปที่ leads 30 รายต่อเดือนgrilling คือจุดที่จับความเข้าใจผิดได้ถูกที่สุด ระหว่างที่ทำ grilling เราอาจรู้สึกว่ามันช้า แต่เอาจริง ๆ มันเป็นส่วนที่ถูกที่สุดของ process ทั้งหมด ความเข้าใจผิดที่เราจับได้ตอน grilling ปกติแก้ได้ด้วยประโยคเดียว ส่วนความเข้าใจผิดเรื่องเดียวกันถ้าไปเจอตอน /implement ก็คือต้องทำงานนั้นใหม่ทั้งหมด ผมว่าการเปลี่ยนจาก unknown unknowns ให้กลายเป็น known unknowns ค่อนข้างสำคัญในยุคนี้เลยนะครับ เพราะงั้นผมขอให้ทุกท่านมองการสัมภาษณ์ว่าเป็นส่วนหนึ่งของงาน ไม่ใช่พิธีการที่มาก่อนงานจริง
คุณภาพของผลลัพธ์มาจากเอกสารกลาง เพราะ /implement เป็นขั้นที่ผลลัพธ์ปรากฏให้เห็น เลยเข้าใจได้ง่ายว่ามันน่าจะเป็นขั้นที่สำคัญที่สุด แต่เอาจริง ๆ คุณภาพของผลลัพธ์มาจากคุณภาพของเอกสารกลาง และคุณภาพของเอกสารนั้นก็มาจากความซื่อตรงในคำตอบที่เราให้ไว้ตอน grilling ถ้า SOP ไม่ชัด Issue ที่ได้มาจากมันก็ไม่ชัดตามไปด้วย แล้ว agent ก็จะส่งความไม่ชัดนั้นต่อไปถึงผลลัพธ์ตรง ๆ เลยครับ
นั่นเองคือเหตุผลที่ผมเลือกสอนทุกท่านให้ใช้ Terminal แทนที่จะอยู่ใน Claude Chat หรือ Claude Artifacts ไม่ใช่เพราะอยากให้ดูเป็นสายเทคนิคนะครับ แต่ทั้งสี่ข้อต่อไปนี้คือความสามารถที่เราจะเสียไปเมื่ออยู่ในหน้าต่างแชท
Terminal ช่วยให้เราต่อ API และเครื่องมือต่าง ๆ เข้ากับ AI agent ได้ง่ายมาก ซึ่งก็คือเงื่อนไขข้อที่สองจากหน้าแรกสุด และเป็นจุดที่ทำให้งานที่ไม่ใช่โค้ดเป็นไปได้ piping ที่เขียนด้วยเครื่องหมาย | ก็คือผลลัพธ์ของสิ่งหนึ่งกลายเป็นข้อมูลตั้งต้นของสิ่งถัดไป เพราะงั้นอะไรที่มี API ก็ต่อเข้ามาให้ agent เอื้อมถึงได้ ส่วนหน้าจอแชทให้เราใช้ได้แค่ tool ที่หน้าจอนั้นตัดสินใจจะมอบให้ ซึ่ง Terminal ไม่ได้จำกัดเราไว้แบบนั้น
ผู้ให้บริการ model จะเปลี่ยนไปเรื่อย ๆ ถ้า workflow ของเราอยู่ใน CLI เราก็มีอิสระที่จะเปลี่ยนไปใช้ LLM agent ตัวอื่นได้ง่ายขึ้นในอนาคต รวมถึงเปลี่ยนไปใช้ local model หรือ open model ที่รันบนเครื่องของเราเอง ซึ่งการเปลี่ยนนั้นเป็นแค่การแก้ค่า config ไม่ใช่การเรียนรู้ใหม่ทั้งหมด skills ของเรา ไฟล์ CONTEXT.md ของเรา และ Issue ของเรา จะยังอยู่ครบหลังสลับ กลับกัน ทุกอย่างที่เราสร้างไว้ในผลิตภัณฑ์แชทของบริษัทใดบริษัทหนึ่ง ก็เป็นไปตามชะตากรรมของผลิตภัณฑ์นั้น
อย่างที่ผมสาธิตให้ดูในคลาส การเชื่อมต่อไปยังโทรศัพท์มือถือและเครื่องอื่น ๆ ทำได้ง่ายกว่ามากผ่าน Terminal เพราะ Terminal เป็นรากฐานหลักของการใช้งานคอมพิวเตอร์ computer use ซึ่งก็คือ agent ที่ควบคุมเครื่องได้จริง ไม่ใช่แค่พูดถึงมัน ก็ถูกสร้างขึ้นบนชั้นเดียวกันนี้ ถ้าเราเริ่มสูงขึ้นไปหนึ่งชั้นในกล่องแชท การเชื่อมต่อทุกอย่างที่ว่ามาก็ต้องรอให้คนอื่นยื่นมาให้เรา
เหตุผลที่คนเคยหลีกเลี่ยง Terminal คือการต้องจำคำสั่ง ซึ่งเหตุผลนั้นหมดความจำเป็นไปแล้วครับ ทุกวันนี้การใช้ CLI ง่ายขึ้นเยอะ เพราะ AI agent พวกนี้ช่วยควบคุม Terminal ให้เราได้ ทำให้ทำงานได้ลื่นขึ้นโดยไม่ต้องจำคำสั่งซับซ้อนเหมือนเมื่อก่อน เราแค่บอกผลลัพธ์ที่ต้องการ แล้วมันจะผลิตคำสั่งออกมาให้ ผมเลยอยากชวนให้ทุกท่านทำความคุ้นเคยกับเครื่องมือพวกนี้ตั้งแต่ตอนนี้ ในตอนที่มันเรียนรู้ได้ง่ายกว่าช่วงเวลาไหนที่ผ่านมา
ยาวไปไม่อ่าน สรุปก็คือ: เราเข้าใจความต้องการ แตกงานออกเป็นงานย่อยที่จัดการได้ แล้วลงมือทำไปทีละงาน งานย่อยพวกนั้นก็คือ Issue ความเข้าใจของเราก็คือเอกสาร และเอกสารนั้น ไม่ใช่ /implement คือสิ่งที่ตัดสินว่าผลลัพธ์จะดีแค่ไหน grilling คือจุดที่การเข้าใจผิดถูกที่สุด ส่วน Terminal คือสิ่งที่ทำให้ agent ต่ออยู่กับทุกอย่างที่เหลือ แล้วก็ทำให้เรายังมีอิสระที่จะย้ายผู้ให้บริการได้ครับ
/setup-matt-pocock-skills ในโฟลเดอร์ใหม่ ไม่ต้องอ่านล่วงหน้าก็ได้ ขอแค่ติดตั้งให้เรียบร้อยก่อนCONTEXT.md ของตัวเอง ถ้าคนที่ไม่รู้เรื่องมาก่อนหยิบไปอ่าน เขาจะได้ผลลัพธ์ที่ถูกต้องไหม ผมว่านั่นคือการตรวจคุณภาพอย่างเดียวที่คุ้มจะทำก่อนเดินหน้าต่อ/to-spec แล้ว /to-issue แล้ว /implement กับ Issue เพียงชิ้นเดียว ขอให้ทำให้จบหนึ่งรอบตั้งแต่ต้นจนจบก่อนจะลอง /go เพราะ AFK ควรใช้ตอนที่แตกงานย่อยไว้เรียบร้อยดีแล้วเท่านั้นเป้าหมายของการลองรอบแรกไม่ใช่ผลลัพธ์ที่ดีเลิศ แต่คือการได้สัมผัสความต่างระหว่างประโยคที่เราเริ่มต้น กับเอกสารที่เราได้มาในตอนจบครับ
Resource room — ผมโพสต์เนื้อหาส่วนใหญ่จากเวิร์กช็อปไว้ที่นั่นแล้ว ถ้าอยากกลับไปดูหรืออ่านซ้ำ ก็ลองเริ่มจากที่นั่นก่อนได้ครับ
Discord channel — ถ้าผมตกหล่นอะไรไปจากเอกสารนี้ หรือทุกคนมีข้อค้นพบเพิ่มเติม ก็มาแบ่งปันกันได้ที่นั่นเลยครับ ผมว่าสิ่งที่ทุกคนค้นพบจากปัญหาจริงของตัวเอง มีค่าต่อกลุ่มมากกว่าตัวอย่างที่ผมยกไว้ข้างต้นเยอะ