TERRA RPC

กำลังเตรียมกระดาน…

Agent Dev Thai Academyprinciples · patterns · architecture
หลักสูตร · ใช้ kanly ให้ agent มีกติกา
0/5
kanly · สี่กระดาน กติกาของ agent หลาย terminal

สิ่งที่ขาดคือกติกา ไม่ใช่ตัวรันเพิ่ม

แปดบทก่อนหน้าสอนว่าโค้ด ของรอบตัว AI และงานที่ไม่ใช่โค้ด ควรอยู่ตรงไหน บทนี้คือตอนที่คุณเปิด Claude Code หลาย terminal ข้ามหลาย repo พร้อมกัน แต่ละตัวเห็นแค่ repo ของตัวเอง ปัญหาไม่ใช่ AI เขียนโค้ดเก่งแค่ไหน มันคือแต่ละตัวจะรู้ได้ยังไงว่าอีกตัวเพิ่งเปลี่ยนอะไร ใครตัดสินว่าเสร็จ และใครเป็นคนตรวจ

kanly คือชุด skill ที่ Isagi เขียนขึ้นมาคุมเรื่องนี้ ทุกตัวเป็นไฟล์ markdown ธรรมดา สี่กระดานนี้สอนสิ่งที่โพสต์ของเพจเล่าไว้ handoff ส่งงานข้าม repo, contract ประกาศเส้นชัยก่อนปล่อย loop, review ให้คนที่ไม่ได้เขียนเป็นคนตรวจ และไฟล์ชุดเดียวที่ทุก terminal อ่าน คู่กับหลักฐานก่อนคำว่าเสร็จ ซ้ายคือ terminal ที่มีกติกา ขวาคือ terminal ที่ปล่อยให้แต่ละตัวรู้เอาเอง กดถัดไปแล้วนับว่าฝั่งไหนเชื่อเรื่องที่ไม่จริงกี่เรื่อง ขั้นสุดท้ายลากมันไปไว้ในไฟล์ที่ทุกตัวอ่าน บทจะถูกนับว่าเรียนจบเมื่อคุณไปถึงขั้นสุดท้ายของรูป

1
ตอนที่ 1 · อีก terminal ไม่รู้ว่าคุณเปลี่ยนหลังบ้านตัดช่องข้อมูลทิ้งไปแล้ว อีก terminal ยังสร้างหน้ามารับมันอยู่ เพราะไม่มีใครบอก
เรื่องย่อ

คุณเปิด Claude Code สามหน้าต่าง หลังบ้าน หน้าเว็บ และอีก repo หนึ่ง แต่ละ terminal เห็นแค่ repo ของตัวเอง เช้านี้ terminal หลังบ้านเปลี่ยนคำตอบของหน้ารายการ และตัดช่องสถานะที่ไม่ใช้ทิ้ง

terminal หน้าเว็บไม่รู้ว่าอีกฝั่งเพิ่งเปลี่ยนอะไร พอ session ยาวขึ้น พอ /compact กินความจำ AI ก็เดาจาก context เก่า บนฝั่งขวา คุณกลายเป็นคนกลาง ก๊อป context จากหน้าต่างหนึ่งไปแปะอีกหน้าต่างทั้งวัน และบางวัน terminal หนึ่งแก้ไฟล์ อีกตัวเขียนทับ

ซ้าย terminal ที่เปลี่ยนเขียนไฟล์ handoff สั้น ๆ ก่อนจบงาน เปลี่ยนอะไร อีกฝั่งต้องทำอะไรต่อ มี breaking change ไหม contract ใหม่หน้าตาเป็นยังไง อีก terminal อ่านไฟล์นี้ก่อนเริ่มงานรอบถัดไป ขวา ทุกเรื่องอยู่ในแชทของ terminal ที่เปลี่ยน คุณจะสั่งงานสามงาน แล้วนับว่าฝั่งไหนมีเรื่องที่สอง terminal เชื่อไม่ตรงกันกี่เรื่อง

กล่องบนกระดานนี้ · 4
ส่วนทำอะไรทำไม
ไฟล์ handoffเปลี่ยนอะไร อีกฝั่งต้องทำอะไรต่อ มี breaking change ไหม contract ใหม่หน้าตาเป็นยังไงแค่ส่วนที่เปลี่ยน ไม่ต้องเล่าทั้งเรื่อง และไม่ต้องหวังว่า AI จะจำเอง
handoff verifyเทียบ contract ที่ handoff ประกาศไว้ กับโค้ดจริงในอีก repoออกมาเป็นสี่กอง MATCH, DRIFT, MISSING และ UNDOCUMENTED
หน้าเว็บ · หน้ารายการterminal ที่ต้องทำตามเปิด session ใหม่ อ่าน handoff ก่อนเริ่มงาน
แชทของ terminal หลังบ้านที่ที่ทุกเรื่องอยู่ ถ้าไม่มีไฟล์กลางterminal อื่นมองไม่เห็นแชทนี้
1
Hand off across repos · อีก terminal ไม่รู้ว่าคุณเปลี่ยนคุณจะสั่ง AI ว่าอะไร
1
Hand off across repos · อีก terminal ไม่รู้ว่าคุณเปลี่ยน
ตอนที่ 1 · สถานการณ์

คุณเปิด Claude Code สามหน้าต่าง หลังบ้าน หน้าเว็บ และอีก repo หนึ่ง แต่ละ terminal เห็นแค่ repo ของตัวเอง เช้านี้ terminal หลังบ้านเปลี่ยนคำตอบของหน้ารายการ และตัดช่องสถานะที่ไม่ใช้ทิ้ง

หลังบ้านตัดช่องข้อมูลทิ้งไปแล้ว อีก terminal ยังสร้างหน้ามารับมันอยู่ เพราะไม่มีใครบอก

ส่งต่อผ่านไฟล์ handoff
รู้อยู่ในแชทตัวเดียว

แตะกล่องเพื่อหาไฟล์บนกระดาน

ส่งต่อผ่านไฟล์ handoff
รู้อยู่ในแชทตัวเดียว
ส่งต่อผ่านไฟล์ handoff
ไฟล์ handoff · หลังบ้าน ส่งถึง หน้าเว็บ
ยังไม่มี handoff · ยังไม่มีอะไรเปลี่ยน
terminal หลังบ้าน · เห็นแค่ repo ของตัวเอง
หลังบ้าน · คำตอบของหน้ารายการrepo หลังบ้านส่งหน้ารายการ
รูปคำตอบของหน้ารายการช่องสถานะในแต่ละแถว
ไฟล์ handoff · อีก terminal อ่านก่อนเริ่มงาน
terminal หน้าเว็บ · เห็นแค่ repo ของตัวเอง
หน้าเว็บ · หน้ารายการrepo หน้าเว็บอ่านหน้ารายการมาโชว์
หน้ารายการอ่านคำตอบป้ายสถานะในแต่ละแถว
รู้อยู่ในแชทตัวเดียว
แชท · terminal หลังบ้าน
แชทยังว่าง · ยังไม่ได้สั่ง
terminal หลังบ้าน · เห็นแค่ repo ของตัวเอง
หลังบ้าน · คำตอบของหน้ารายการrepo หลังบ้านส่งหน้ารายการ
รูปคำตอบของหน้ารายการช่องสถานะในแต่ละแถว
ไฟล์ handoff · อีก terminal อ่านก่อนเริ่มงาน
ไม่มีไฟล์กลาง · หน้าเว็บไม่รู้ว่าอีกฝั่งเปลี่ยน
terminal หน้าเว็บ · เห็นแค่ repo ของตัวเอง
หน้าเว็บ · หน้ารายการrepo หน้าเว็บอ่านหน้ารายการมาโชว์
หน้ารายการอ่านคำตอบป้ายสถานะในแต่ละแถว
ขั้นสุดท้าย · ลากเรื่องมาแยกเป็นไฟล์ handoffตรงนี้+ ไฟล์ handoffลากทุกเรื่องในแชทของ terminal หลังบ้าน ไปไว้ในไฟล์ handoff

กล่อง = ที่ที่เรื่องหนึ่งอยู่ repo ของ terminal หนึ่งตัว แชทของมัน หรือไฟล์ handoffเรื่องชิ้น = สิ่งที่ terminal หนึ่งรู้ หรือต้องทำ หนึ่งเรื่อง= ชิ้นที่ลากไปไฟล์ handoffได้ ในขั้นสุดท้าย

เขียว: ที่ AI เขียนหรือแก้ประ: ที่ต้องเปิดอ่านใหม่แดง: สอง terminal เชื่อไม่ตรงกัน

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ทั้งสองฝั่งมีหลังบ้านที่ส่งหน้ารายการ กับหน้าเว็บที่อ่านมันมาโชว์ พร้อมป้ายสถานะในแต่ละแถว ตอนนี้สองฝั่งเห็นตรงกัน ซ้ายมีที่สำหรับไฟล์ handoff ขวาไม่มีไฟล์กลาง ทุกอย่างที่ terminal หนึ่งรู้ อยู่ในแชทของมันเอง

ขั้นที่ 1เปลี่ยนคำตอบของหน้ารายการ และตัดช่องสถานะทิ้ง

ซ้าย terminal หลังบ้านแก้เสร็จ แล้วเขียนไฟล์ handoff สี่ข้อ แค่ส่วนที่เปลี่ยน ขวา แก้เท่ากัน แต่ทุกเรื่องอยู่ในแชทของ terminal หลังบ้าน หน้าเว็บยังไม่รู้อะไรเลย

ขั้นที่ 2เปิด terminal หน้าเว็บ ทำตัวกรองตามสถานะ

ซ้าย พิมพ์ /handoff check ตอนเปิด AI อ่าน handoff ก่อนเริ่ม เปลี่ยนหน้ารายการตามรูปใหม่ แล้วบอกคุณว่าช่องสถานะไม่อยู่ใน contract แล้ว ตัวกรองนี้ทำไม่ได้ ขวา AI เดาจาก context เก่า สร้างตัวกรองรับช่องที่ถูกตัดไปแล้ว หน้ารายการยังอ่านรูปเดิม ไม่ตรงกัน 3 เรื่อง

ขั้นสุดท้ายก่อน ship เช็กว่าสองฝั่งยังตรงกัน

ซ้าย รัน handoff verify มันเทียบ contract ใน handoff กับโค้ดจริงของหน้าเว็บ หน้ารายการ MATCH ป้ายสถานะ DRIFT ยังอ้างช่องที่ตัดไปแล้วหนึ่งบรรทัด ชี้ไฟล์ ชี้บรรทัด แก้ก่อน ship ขวา ไม่มีอะไรให้เทียบ คุณเปิดแชทหลังบ้าน ก๊อปไปแปะในหน้าเว็บ ไม่ตรงกันยังอยู่ครบ 3 เรื่อง

หลักการ ในภาษาของโค้ด

ถ้า session หนึ่งเปลี่ยนอะไรที่กระทบอีก session ให้เขียนไฟล์ handoff ไว้ให้อีกฝั่งอ่าน แค่ส่วนที่เปลี่ยน อีกฝั่งพิมพ์ /handoff check ก่อนเริ่มงาน และก่อน ship รัน handoff verify ดูว่าโค้ดจริงยังตรงกับที่ตกลงไว้ ใน CLAUDE.md เขียนไว้ว่าเปลี่ยนอะไรที่อีก repo ใช้ ต้องมี handoff ก่อนจบงาน

ถามก่อนรับ diffdiff นี้เปลี่ยนอะไรที่อีก repo ใช้อยู่ไหม ถ้าใช่ handoff ของมันเขียนแล้วหรือยัง และ verify ออกมากี่ DRIFT

kanly's handoff skill as the page's posts describe it: if session A changes something that affects session B, write a handoff file for B (what changed, what to do next, breaking changes, the new contract); write, check, execute, done; delete when done and let git keep the history; `handoff verify` sorts the declared contract against the real code into MATCH, DRIFT, MISSING, UNDOCUMENTED (kanly handoff protocol, 2026-04-17; kanly team mode, 2026-07-03, the frontend field the backend had already cut)
2
ตอนที่ 2 · loop ที่ไม่มีเส้นชัยปล่อย agent วิ่งเอง กลับมามันบอกว่าเสร็จแล้ว เปิดดูจริงยังไม่เสร็จ เพราะไม่มีใครบอกไว้ก่อนว่าเสร็จแปลว่าอะไร
เรื่องย่อ

คุณให้ agent ทำหน้าสมัครสมาชิก ฟอร์ม อีเมลยืนยัน และกันอีเมลซ้ำ สั่งแบบ goal mode ให้มันวิ่งเอง แล้วเดินไปทำอย่างอื่น

loop ที่วิ่งเองไม่มีเส้นชัยจริง มันหยุดตอนที่มันรู้สึกว่าเสร็จ ซึ่งไม่เหมือนกับเสร็จจริง บนฝั่งขวา พอไม่มีใครบอกไว้ก่อนว่าเสร็จแปลว่าอะไร มันก็เดาเอาเอง บางทีวิ่งจนชน timeout แล้วนับว่าจบ

ซ้าย ก่อนปล่อย loop คุณเขียนเงื่อนไขจบไว้สามข้อ แต่ละข้อบอกว่าเช็กยังไง ผลออกมาเป็นผ่านหรือไม่ผ่าน ขวา คุณปล่อยให้มันวิ่งไปจนรู้สึกว่าเสร็จ คุณจะสั่งงานสามงาน แล้วนับว่าฝั่งไหนมีคำว่าเสร็จที่ไม่จริงกี่ครั้ง

กล่องบนกระดานนี้ · 4
ส่วนทำอะไรทำไม
contract · เงื่อนไขจบข้อละหนึ่งบรรทัด มีชื่อ เช็กได้จริง ผลเป็นผ่านหรือไม่ผ่านเขียนก่อนสร้างคือ contract เขียนทีหลังคือคำบรรยาย
loop ที่วิ่งเองฟอร์ม อีเมลยืนยัน กันอีเมลซ้ำวิ่งได้ แต่ไม่ได้เป็นคนตัดสินว่าเสร็จ
เช็กตาม contractรันเงื่อนไขไล่ทีละข้อ ตอน loop บอกว่าเสร็จข้อไหนไม่ผ่าน งานยังไม่จบ loop วิ่งต่อ
คำว่าเสร็จสิ่งที่ loop บอกตอนมันรู้สึกว่าจบหมดเวลาไม่ใช่เสร็จ มันแค่หมดเวลา
2
A finish line before the loop · loop ที่ไม่มีเส้นชัยคุณจะสั่ง AI ว่าอะไร
2
A finish line before the loop · loop ที่ไม่มีเส้นชัย
ตอนที่ 2 · สถานการณ์

คุณให้ agent ทำหน้าสมัครสมาชิก ฟอร์ม อีเมลยืนยัน และกันอีเมลซ้ำ สั่งแบบ goal mode ให้มันวิ่งเอง แล้วเดินไปทำอย่างอื่น

ปล่อย agent วิ่งเอง กลับมามันบอกว่าเสร็จแล้ว เปิดดูจริงยังไม่เสร็จ เพราะไม่มีใครบอกไว้ก่อนว่าเสร็จแปลว่าอะไร

ประกาศเส้นชัยก่อนวิ่ง
วิ่งจนรู้สึกว่าเสร็จ

แตะกล่องเพื่อหาไฟล์บนกระดาน

ประกาศเส้นชัยก่อนวิ่ง
วิ่งจนรู้สึกว่าเสร็จ
ประกาศเส้นชัยก่อนวิ่ง
contract · หน้าสมัครสมาชิก

contract · หน้าสมัครสมาชิก

เขียนก่อนปล่อย loop · ทุกข้อเช็กได้ ผ่านหรือไม่ผ่าน · ตายเมื่องานปิด

  • 1CONTRACT-1 · สมัครแล้วได้อีเมลยืนยัน · เช็ก: รัน test ชุดสมัคร
  • 2CONTRACT-2 · อีเมลซ้ำสมัครไม่ได้ · เช็ก: ลองสมัครซ้ำจริงด้วยอีเมลเดิม
  • 3CONTRACT-3 · ไม่มี TODO ค้างในงานสมัคร · เช็ก: grep คำว่า TODO
เงื่อนไขจบ · เขียนก่อนปล่อย loop
contract · หน้าสมัครสมาชิกงานเดียวเขียนก่อนปล่อย loop
CONTRACT-1 · สมัครแล้วได้อีเมลยืนยัน · รัน test ชุดสมัครCONTRACT-2 · อีเมลซ้ำสมัครไม่ได้ · ลองสมัครซ้ำจริงCONTRACT-3 · ไม่มี TODO ค้าง · grep ทั้งงานสมัคร
loop ที่วิ่งเอง
เช็กก่อนปิดงาน · ผ่านครบถึงปิด
วิ่งจนรู้สึกว่าเสร็จ
รายงานจาก agent
ยังไม่ได้ปล่อย loop · ไม่มีอะไรบอกว่าเสร็จแปลว่าอะไร
เงื่อนไขจบ · เขียนก่อนปล่อย loop
ไม่มีเงื่อนไขจบ · loop ตัดสินเองว่าเสร็จ
loop ที่วิ่งเอง
เช็กก่อนปิดงาน · ผ่านครบถึงปิด
ไม่มีอะไรให้เช็ก · เชื่อคำว่าเสร็จ
ขั้นสุดท้าย · ลากข้อมาแยกเป็นเงื่อนไขจบตรงนี้+ เงื่อนไขจบลากงานแต่ละชิ้นไปเป็นเงื่อนไขจบ และคำว่าเสร็จไปไว้ที่การเช็ก

กล่อง = ช่องหนึ่งของงาน เงื่อนไขจบ loop ที่วิ่ง หรือการเช็กก่อนปิดงานข้อชิ้น = งานย่อยหรือเงื่อนไขจบหนึ่งข้อ= ชิ้นที่ลากไปเงื่อนไขจบได้ ในขั้นสุดท้าย

เขียว: ที่ loop ทำหรือเช็กประ: ที่ต้องเช็กใหม่แดง: คำว่าเสร็จที่ไม่จริง

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ทั้งสองฝั่งยังไม่ได้ปล่อย loop ซ้ายเขียนเงื่อนไขจบไว้แล้วสามข้อ สมัครแล้วได้อีเมลยืนยัน อีเมลซ้ำสมัครไม่ได้ และไม่มี TODO ค้าง แต่ละข้อบอกว่าเช็กด้วยอะไร ขวาไม่มีอะไรบอกว่าเสร็จแปลว่าอะไร

ขั้นที่ 1ปล่อย agent วิ่งเองทำหน้าสมัครสมาชิก

ซ้าย loop วิ่งทำสามงาน โดยมีเงื่อนไขจบสามข้อรออยู่ มันวิ่งได้ แต่ปิดงานเองไม่ได้ ขวา loop วิ่งทำสามงานเท่ากัน แล้วขึ้นว่าเสร็จแล้วตอนที่มันรู้สึกว่าจบ เสร็จไม่จริง 1 ครั้ง

ขั้นที่ 2กลับมาแล้ว agent บอกว่าเสร็จ

ซ้าย อีก pass หนึ่งรันเงื่อนไขไล่ทีละข้อ ข้อ 1 กับข้อ 3 ผ่าน ข้อ 2 ไม่ผ่าน อีเมลซ้ำยังสมัครได้ งานยังไม่จบ loop วิ่งต่อจนข้อ 2 ผ่าน ขวา คุณเชื่อคำว่าเสร็จ ไม่มีอะไรให้เช็ก อีเมลซ้ำยังสมัครได้ เสร็จไม่จริง 2 ครั้ง

ขั้นสุดท้ายรอบหน้า loop วิ่งจนชน timeout

ซ้าย หมดเวลาแล้วข้อ 3 ยังไม่ผ่าน ยังมี TODO ค้าง agent รายงานว่ายังไม่เสร็จ และบอกว่าเหลือข้อไหน ขวา loop ชน timeout แล้วนับว่าจบ เสร็จไม่จริง 3 ครั้ง

หลักการ ในภาษาของโค้ด

ห้ามปล่อย loop วิ่งเองถ้ายังไม่มีเงื่อนไขจบที่เช็กได้จริง เขียนก่อนเริ่ม ข้อละหนึ่งบรรทัด มีชื่อ บอกวิธีเช็ก ผลเป็นผ่านหรือไม่ผ่าน แล้วปิดงานด้วยการเช็ก ไม่ใช่ด้วยความรู้สึก เขียนทีหลังไม่ใช่ contract มันคือคำบรรยาย ใน CLAUDE.md เขียนไว้ว่าไม่มีเงื่อนไขจบ ไม่ปล่อย loop

ถามก่อนรับ diffคำว่าเสร็จของงานนี้ผ่านเงื่อนไขข้อไหนบ้าง และเงื่อนไขพวกนั้นเขียนก่อน หรือหลัง loop วิ่ง

kanly's contract skill as the page's post describes it: no loop runs without a checkable end condition; CONTRACT-1, CONTRACT-2, each named, checkable (a command, a grep, a behaviour) and pass or fail; declared before, not after; a FAIL keeps the loop running; once, mission mode declared 15 items before any code and another pass checked all 15 (contract, 2026-07-06)
3
ตอนที่ 3 · คนเขียนอนุมัติเองถาม AI ว่าตรวจให้หน่อย มันตอบว่าเรียบร้อยดีเกือบทุกครั้ง เพราะมันตรวจด้วยหัวเดียวกับตอนที่เขียน
เรื่องย่อ

agent เขียนฟีเจอร์ส่งอีเมลแจ้งเตือนเสร็จ คุณถามต่อว่า ตรวจให้หน่อยว่าถูกมั้ย มันตอบว่าเรียบร้อยดี

มันไม่ได้โกหก มันตรวจจริง แต่ตรวจด้วยข้อสมมติเดิม จุดที่มองไม่เห็นตอนเขียน ก็มองไม่เห็นตอนตรวจ เพราะมันคือตาคู่เดิม บนฝั่งขวา งานถัดไปไม่ได้รับงานที่ถูกตรวจแล้ว มันรับจุดบอดที่ถูกตีตราว่าผ่าน

ซ้าย diff ไปหาคนตรวจที่เป็น context ใหม่ เห็น spec เห็น diff เห็น test แต่ไม่เห็นแชทของคนเขียน ทุก flag ที่เจอมีคำตอบในบันทึกรอบรีวิว แก้ หรือปัดพร้อมเหตุผลหนึ่งบรรทัด ขวา คนเขียนตรวจเองแล้วอนุมัติเอง คุณจะสั่งงานสามงาน แล้วนับว่าฝั่งไหนมีของที่หลุดรีวิวกี่ข้อ

กล่องบนกระดานนี้ · 4
ส่วนทำอะไรทำไม
diffสิ่งที่คนเขียนแก้ พร้อมข้อสมมติของมันของที่หลุดคือของที่อยู่ในจุดบอดของคนเขียน
คนตรวจ · context ใหม่เห็น spec diff test แล้วเช็กว่าตรงกันมั้ยการตรวจที่ใช้ได้ต้องมาจากตาที่ไม่เคยเห็นตอนสร้าง และต้องกล้าตอบว่าไม่ผ่าน
บันทึกรอบรีวิวทุก flag แก้ หรือปัดพร้อมเหตุผลหนึ่งบรรทัดปัด flag ที่มั่วมีต้นทุนแค่หนึ่งบรรทัด แต่การเมินเฉยต้องมีต้นทุน
คนเขียนตรวจเองคนเขียนที่ใส่หมวกคนตรวจถ้าคนเช็กคือคนเดียวกับคนที่ประกาศว่าถึงแล้ว แปลว่ายังไม่มีใครเช็ก
3
The writer is not the approver · คนเขียนอนุมัติเองคุณจะสั่ง AI ว่าอะไร
3
The writer is not the approver · คนเขียนอนุมัติเอง
ตอนที่ 3 · สถานการณ์

agent เขียนฟีเจอร์ส่งอีเมลแจ้งเตือนเสร็จ คุณถามต่อว่า ตรวจให้หน่อยว่าถูกมั้ย มันตอบว่าเรียบร้อยดี

ถาม AI ว่าตรวจให้หน่อย มันตอบว่าเรียบร้อยดีเกือบทุกครั้ง เพราะมันตรวจด้วยหัวเดียวกับตอนที่เขียน

ตาสดตรวจ ทุก flag มีคำตอบ
คนเขียนตรวจเอง อนุมัติเอง

แตะกล่องเพื่อหาไฟล์บนกระดาน

ตาสดตรวจ ทุก flag มีคำตอบ
คนเขียนตรวจเอง อนุมัติเอง
ตาสดตรวจ ทุก flag มีคำตอบ
รอบรีวิว · diff ส่งอีเมลแจ้งเตือน

diff · ส่งอีเมลแจ้งเตือนเมื่อมีคำสั่งซื้อ

คนเขียน: AI ตัวที่เขียน · ข้อสมมติของมันอยู่ในนี้

  • +ส่งอีเมลแจ้งเตือนเมื่อมีคำสั่งซื้อใหม่
  • +เพิ่มหน้าตั้งค่าการแจ้งเตือน ที่ spec ไม่ได้ขอ
  • +ส่วนส่งอีเมลเรียกส่วนชำระเงินตรง ๆ
  • +เวลาส่งฝังไว้ในโค้ด
  • +เงื่อนไขการส่งเปลี่ยน ไม่มี test คุม

คนตรวจ · context ใหม่ ไม่เห็นแชทของคนเขียน

  • ?เทียบ spec กับ diff กับ test ว่าตรงกันมั้ย
  • ✗ตอบว่าไม่ผ่านได้
ฝั่งคนเขียน
diff · ส่งอีเมลแจ้งเตือนAI ตัวที่เขียนข้อสมมติของมันอยู่ในนี้
ส่งอีเมลแจ้งเตือนเมื่อมีคำสั่งซื้อทำเกิน spec · หน้าตั้งค่าที่ไม่มีใครขอผูกส่วนที่ไม่ควรผูกค่าที่ฝังไว้เงียบ ๆทางที่เปลี่ยนพฤติกรรม แต่ไม่มี test คุม
คนตรวจ · ไม่ใช่คนเขียน
คนตรวจ · context ใหม่context ใหม่เห็น spec diff test
เทียบ spec diff testตอบว่าไม่ผ่านได้
บันทึกรอบรีวิว
คนเขียนตรวจเอง อนุมัติเอง
รอบรีวิว · diff ส่งอีเมลแจ้งเตือน

diff · ส่งอีเมลแจ้งเตือนเมื่อมีคำสั่งซื้อ · คนเขียน: AI ตัวที่เขียน

+ ส่งอีเมลแจ้งเตือนเมื่อมีคำสั่งซื้อใหม่

+ เพิ่มหน้าตั้งค่าการแจ้งเตือน ที่ spec ไม่ได้ขอ

+ ส่วนส่งอีเมลเรียกส่วนชำระเงินตรง ๆ

+ เวลาส่งฝังไว้ในโค้ด

+ เงื่อนไขการส่งเปลี่ยน ไม่มี test คุม

ฝั่งคนเขียน
diff · ส่งอีเมลแจ้งเตือนAI ตัวที่เขียนข้อสมมติของมันอยู่ในนี้
ส่งอีเมลแจ้งเตือนเมื่อมีคำสั่งซื้อทำเกิน spec · หน้าตั้งค่าที่ไม่มีใครขอผูกส่วนที่ไม่ควรผูกค่าที่ฝังไว้เงียบ ๆทางที่เปลี่ยนพฤติกรรม แต่ไม่มี test คุม
คนตรวจ · ไม่ใช่คนเขียน
ไม่มีคนตรวจคนที่สอง · คนเขียนตรวจเอง
บันทึกรอบรีวิว
ไม่มีบันทึก · flag ที่ไม่แก้หายเงียบ
ขั้นสุดท้าย · ลากข้อมาแยกเป็นบันทึกรอบรีวิวตรงนี้+ บันทึกรอบรีวิวลากทุกข้อที่หลุดรีวิวไปลงบันทึก และการอนุมัติไปให้คนตรวจ

กล่อง = ช่องหนึ่งของรอบรีวิว diff คนตรวจ บันทึกรอบรีวิว หรืองานที่สร้างต่อข้อชิ้น = สิ่งหนึ่งใน diff หรือคำตอบต่อ flag หนึ่งข้อ= ชิ้นที่ลากไปบันทึกรอบรีวิวได้ ในขั้นสุดท้าย

เขียว: ที่คนตรวจเจอหรือแก้ประ: ที่ต้องอ่านใหม่แดง: ที่หลุดรีวิว

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ทั้งสองฝั่งมี diff เดียวกัน ส่งอีเมลแจ้งเตือน และอีกสี่อย่างที่คนเขียนมองไม่เห็น ทำเกิน spec ผูกส่วนที่ไม่ควรผูก ค่าที่ฝังไว้เงียบ ๆ และทางที่เปลี่ยนพฤติกรรมแต่ไม่มี test คุม ซ้ายมีคนตรวจที่ไม่ได้เขียน ขวามีแค่คนเขียน

ขั้นที่ 1เขียนเสร็จแล้ว ตรวจก่อน merge

ซ้าย diff ไปหา context ใหม่ที่เห็น spec diff test แต่ไม่เห็นแชทของคนเขียน มันเจอทั้งสี่ข้อ ขวา คนเขียนตรวจเอง อ่าน diff ด้วยข้อสมมติเดิม ตอบว่าเรียบร้อยดี หลุดรีวิว 4 ข้อ

ขั้นที่ 2ตอบ flag ทุกข้อ แล้วค่อย merge

ซ้าย ทุก flag ลงบันทึกรอบรีวิว แก้สามข้อ ปัดหนึ่งข้อพร้อมเหตุผลหนึ่งบรรทัด เมินเงียบเป็นศูนย์ ขวา ไม่มี flag ให้ตอบ คนเขียนอนุมัติเองแล้ว merge หลุดรีวิว 5 ข้อ

ขั้นสุดท้ายงานถัดไปสร้างต่อบน diff นี้

ซ้าย งานถัดไปเริ่มจากของที่มีคนตรวจจริง บันทึกบอกว่าข้อไหนแก้ ข้อไหนปัด เพราะอะไร ขวา งานถัดไปรับจุดบอดของคนเขียนที่ถูกตีตราว่าผ่าน แล้วสร้างต่อบนมัน พอเจอทีหลังต้องกลับไปเปิด diff เดิม หลุดรีวิว 6 ข้อ

หลักการ ในภาษาของโค้ด

คนเขียนคือคนที่ไม่ควรเป็นคนอนุมัติ ส่ง diff ไปหาตาที่ไม่เคยเห็นตอนสร้าง ให้เห็น spec diff test แล้วกล้าตอบว่าไม่ผ่าน ทุก flag มีคำตอบ แก้ หรือปัดพร้อมเหตุผลหนึ่งบรรทัด เมินเงียบนับเป็นการเบี้ยว ใน CLAUDE.md เขียนไว้ว่าคนเขียนไม่ใช่คนอนุมัติ

ถามก่อนรับ diffใครตรวจ diff นี้ ถ้าคำตอบคือตัวมันเอง แปลว่ายังไม่มีใครตรวจ

kanly's review skill and the rule behind it as the page's posts tell it: the writer is not the approver; the reviewer is a context that does not carry the writer's assumptions, sees the spec, the diff and the tests, and must be able to answer FAIL; what fresh eyes catch (more or less than the spec, coupling, silent hardcodes, behaviour with no test) (review 3/3, 2026-07-10); to reject a flag, write a one-line reason, silence counts as a dodge, 27 scored review rounds (ADE convergence; Axelrod review)
4
ตอนที่ 4 · เสร็จแล้ว โดยไม่มีหลักฐานสาม terminal ตอบเรื่องเดียวกันได้สามคำตอบ ทุกตัวมั่นใจเท่ากัน และไม่มีตัวไหนแนบหลักฐาน
เรื่องย่อ

คุณเปิด Claude Code สาม terminal พร้อมกัน หลังบ้าน หน้าเว็บ และอีก repo หนึ่ง วันนี้ terminal หลังบ้านเปลี่ยนโครงตารางสมาชิก แล้วตอบว่าเสร็จแล้ว

AI ชอบบอกว่าเสร็จแล้วครับ น่าจะทำงานได้ โดยไม่ได้รัน ไม่ได้เปิดดูด้วยซ้ำว่าไฟล์เปลี่ยนจริงหรือเปล่า บนฝั่งขวา terminal หนึ่งรู้ว่าโครงตารางเปลี่ยน อีกสองตัวไม่รู้ พอถามเรื่องที่คาบเกี่ยวกัน แต่ละตัวตอบไม่เหมือนกัน แล้วทุกตัวมั่นใจเท่ากัน

ซ้าย ทุก terminal อ่านไฟล์สถานะชุดเดียวกันตอนเปิด ใครเปลี่ยนอะไรจดลงไฟล์นั้น และคำว่าเสร็จทุกครั้งมีหลักฐานแนบ คำสั่งที่รันกับผลที่ได้ ไฟล์กับบรรทัดที่แก้ ค่าจริงที่อ่านได้ ขวา แต่ละ terminal ตอบจากแชทของตัวเอง คุณจะสั่งงานสามงาน แล้วนับว่าฝั่งไหนมีคำตอบที่ไม่มีหลักฐานกี่ครั้ง

กล่องบนกระดานนี้ · 4
ส่วนทำอะไรทำไม
ไฟล์สถานะงานถึงไหน ต่อไปทำอะไร ใครเปลี่ยนอะไรจดที่นี่ทุก terminal อ่านไฟล์ชุดเดียวกันตอนเปิด ใครเปลี่ยน อีกสองตัวเห็นรอบหน้า
หลักฐานคำสั่งที่รันกับผล ไฟล์กับบรรทัด ค่าจริงแก้ไฟล์แล้วยังไม่ใช่เสร็จ แก้แล้วนี่คือผลที่ได้ ถึงเป็นเสร็จ
terminal หน้าเว็บตอบเรื่องที่คาบเกี่ยวกับหลังบ้านอ่านไฟล์ก่อนตอบ ไม่ตอบจากแชทของตัวเอง
แชทของแต่ละ terminalที่ที่เรื่องอยู่ ถ้าไม่มีไฟล์กลางสามแชท สามคำตอบ ทุกตัวมั่นใจเท่ากัน
4
Receipts before done · เสร็จแล้ว โดยไม่มีหลักฐานคุณจะสั่ง AI ว่าอะไร
4
Receipts before done · เสร็จแล้ว โดยไม่มีหลักฐาน
ตอนที่ 4 · สถานการณ์

คุณเปิด Claude Code สาม terminal พร้อมกัน หลังบ้าน หน้าเว็บ และอีก repo หนึ่ง วันนี้ terminal หลังบ้านเปลี่ยนโครงตารางสมาชิก แล้วตอบว่าเสร็จแล้ว

สาม terminal ตอบเรื่องเดียวกันได้สามคำตอบ ทุกตัวมั่นใจเท่ากัน และไม่มีตัวไหนแนบหลักฐาน

ไฟล์ชุดเดียว มีหลักฐานแนบ
แต่ละตัวตอบจากแชทของตัวเอง

แตะกล่องเพื่อหาไฟล์บนกระดาน

ไฟล์ชุดเดียว มีหลักฐานแนบ
แต่ละตัวตอบจากแชทของตัวเอง
ไฟล์ชุดเดียว มีหลักฐานแนบ
ไฟล์สถานะ · ทุก terminal อ่านตอนเปิด

ไฟล์สถานะ

ใครเปลี่ยนอะไร จดที่นี่ · อีกสองตัวเห็นตอนเปิดรอบหน้า

  • 1งานถึงไหน: เปลี่ยนโครงตารางสมาชิก
  • 2ต่อไป: หน้าเว็บอ่านโครงใหม่
  • ?terminal หน้าเว็บ · ตอบจากไฟล์สถานะ
  • ?terminal ตัวที่สาม · ตอบจากไฟล์สถานะ
สาม terminal · คนละ repo
terminal หลังบ้านแก้โครงตาราง
เปลี่ยนโครงตารางสมาชิก
terminal หน้าเว็บอ่านไฟล์ก่อนตอบ
ตอบว่าโครงตารางตอนนี้เป็นยังไง
terminal ตัวที่สามอ่านไฟล์ก่อนตอบ
ตอบว่างานนี้เสร็จหรือยัง
ไฟล์ชุดเดียว · ทุก terminal อ่านตอนเปิด
ไฟล์สถานะใครเปลี่ยนอะไร จดที่นี่
งานถึงไหนต่อไปทำอะไร
แต่ละตัวตอบจากแชทของตัวเอง
สามแชท · สาม terminal

terminal หน้าเว็บ

โครงตารางสมาชิกเป็นแบบเดิมครับ

terminal ตัวที่สาม

งานเปลี่ยนโครงตารางยังไม่เริ่มครับ

สาม terminal · คนละ repo
terminal หลังบ้านแก้โครงตาราง
เปลี่ยนโครงตารางสมาชิก
terminal หน้าเว็บตอบจากแชทของตัวเอง
ตอบว่าโครงตารางตอนนี้เป็นยังไง
terminal ตัวที่สามตอบจากแชทของตัวเอง
ตอบว่างานนี้เสร็จหรือยัง
ไฟล์ชุดเดียว · ทุก terminal อ่านตอนเปิด
ไม่มีไฟล์กลาง · แต่ละ terminal ตอบจากแชทของตัวเอง
ขั้นสุดท้าย · ลากเรื่องมาแยกเป็นไฟล์สถานะตรงนี้+ ไฟล์สถานะลากทุกเรื่องที่อยู่แค่ในแชท ไปไว้ในไฟล์ที่ทุก terminal อ่าน

กล่อง = ที่ที่คำตอบมาจาก terminal หนึ่งตัว หรือไฟล์ที่ทุกตัวอ่านเรื่องชิ้น = สิ่งที่ terminal รู้ หรือคำว่าเสร็จหนึ่งครั้ง= ชิ้นที่ลากไปไฟล์สถานะได้ ในขั้นสุดท้าย

เขียว: ที่ AI แก้หรือจดประ: ที่ต้องเปิดอ่านแดง: คำตอบที่ไม่มีหลักฐาน

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ทั้งสองฝั่งมีสาม terminal หลังบ้าน หน้าเว็บ และตัวที่สาม ตอนนี้ทุกตัวรู้โครงตารางเดียวกัน ซ้ายทุกตัวอ่านไฟล์สถานะชุดเดียวกันตอนเปิด ขวาแต่ละตัวรู้เท่าที่อยู่ในแชทของมัน

ขั้นที่ 1เปลี่ยนโครงตารางสมาชิก เสร็จแล้วบอกผม

ซ้าย terminal หลังบ้านแก้เสร็จ รันเช็กจริง แล้วจดลงไฟล์สถานะพร้อมหลักฐานสามอย่าง คำสั่งกับผล ไฟล์กับบรรทัด ค่าจริงหลังแก้ ขวา แก้เสร็จแล้วตอบในแชทว่าเสร็จแล้วครับ น่าจะทำงานได้ ไม่ได้รัน ไม่มีหลักฐาน 1 ครั้ง

ขั้นที่ 2ถาม terminal หน้าเว็บว่าโครงตารางตอนนี้เป็นยังไง

ซ้าย terminal หน้าเว็บอ่านไฟล์สถานะก่อนตอบ บอกว่าเปลี่ยนแล้ว และยกหลักฐานจากไฟล์มาให้ดู ขวา terminal หน้าเว็บตอบจากแชทของตัวเองว่ายังเป็นโครงเดิม มั่นใจเท่ากัน ไม่มีหลักฐาน 2 ครั้ง

ขั้นสุดท้ายถามทั้งสาม terminal ว่างานนี้เสร็จหรือยัง

ซ้าย ทุกตัวเปิดไฟล์เดียวกัน ตอบตรงกัน และชี้ไปที่หลักฐานในไฟล์ ไม่มีใครต้องเชื่อคำพูดของใคร ขวา ได้สามคำตอบ ทุกตัวมั่นใจเท่ากัน คุณต้องเปิดแชทไล่ทีละตัวว่าอันไหนพูดจริง ไม่มีหลักฐาน 3 ครั้ง

หลักการ ในภาษาของโค้ด

ทุก terminal อ่านไฟล์ชุดเดียวกันตอนเปิด ใครเปลี่ยนอะไรจดลงไฟล์นั้น และห้ามบอกว่าเสร็จถ้ายังไม่มีหลักฐาน คำสั่งที่รันกับผลที่ได้ ไฟล์กับบรรทัด ค่าจริง แก้ไฟล์แล้วยังไม่ใช่เสร็จ ใน CLAUDE.md เขียนไว้ว่าไม่มีหลักฐาน ห้ามพูดคำว่าเสร็จ

ถามก่อนรับ diffหลักฐานของคำว่าเสร็จนี้อยู่ไหน คำสั่งอะไร ผลเป็นยังไง ไฟล์ไหน บรรทัดไหน

Why kanly exists, as the page's post tells it: three terminals (backend, frontend, contract) each remembered a different thing, one knew the schema had changed, three answers all equally confident; kanly makes every terminal read one file set (memory vs skills, 2026-09-07); "Never claim a change is complete without running verification. 'I edited the file' is not done" (anti-lying rules); verify points at the file and the line (kanly team mode)
ครบสี่กระดานแล้ว? ลองก่อนเปิด terminal ถัดไปแบบทดสอบแปดข้อ ทุกข้อคือสิ่งที่ terminal หนึ่งเพิ่งบอกคุณ
ทำแบบทดสอบ →

สี่ข้อคือคำถามเดียว: ใครรู้อะไร และพิสูจน์ยังไง

เปลี่ยนอะไรที่อีก repo ใช้ เขียน handoff ให้อีกฝั่งอ่านก่อนเริ่มงาน แล้ว verify ก่อน ship (1) ปล่อย loop วิ่งเองเมื่อมีเงื่อนไขจบที่เช็กได้ ประกาศก่อน ไม่ใช่หลัง (2) คนเขียนไม่ใช่คนอนุมัติ และทุก flag มีคำตอบ (3) ทุก terminal อ่านไฟล์ชุดเดียวกัน และคำว่าเสร็จมาพร้อมหลักฐาน (4) ทั้งวงการกำลัง ship ท่อ แต่ไม่มีใคร ship กติกาว่าใครเชื่อใครได้แค่ไหน กติกาส่วนนั้นเขียนเองได้ เป็นไฟล์ markdown ธรรมดา

สี่กระดานบน kanly: handoff · contract · review · ไฟล์ชุดเดียวกับหลักฐาน · ทุกเหตุการณ์และตัวเลขมาจากโพสต์ของเพจคีย์บนกระดาน: Enter / คลิก = ขั้นถัดไป · ⌫ = รีเซ็ต