
Claude Code คือ AI coding agent ที่ทำงานบนเทอร์มินัล ซึ่งเป็นที่รู้จักกันดีในแง่ของการเพิ่มประสิทธิภาพการทำงานส่วนบุคคล อย่างไรก็ตาม เมื่อก้าวเข้าสู่ขั้นตอนการ "ใช้งานอย่างเต็มรูปแบบทั้งทีม" ความยากจะเพิ่มสูงขึ้นทันที ไม่ว่าจะเป็นการที่วิศวกรแต่ละคนใช้งานแตกต่างกัน, การต้องอธิบายบริบทใหม่ทุกครั้ง, มุมมองในการรีวิวที่ไม่ถูกแชร์ หรือการที่สมาชิกคนอื่นเผลอใช้คำสั่งที่ควรจะถูกห้ามไว้ ปัญหาเหล่านี้ไม่ได้เกิดจากการเลือกเครื่องมือ แต่เกิดจาก "การไม่ได้กำหนดมาตรฐานการใช้งานภายในทีม"
จากการสังเกตทีมที่นำไปใช้งานได้สำเร็จ พบว่ามีกลไก 3 อย่างที่ทำเหมือนกัน นั่นคือ ชุดเครื่องมือ 3 ประการ ได้แก่ ไฟล์บริบทระดับโปรเจกต์อย่าง CLAUDE.md, การแยกงานที่ทำซ้ำได้ออกมาเป็น Skills และ Hooks ที่สามารถแทรกการทำงานก่อนและหลังการรันเครื่องมือ เมื่อมีครบทั้ง 3 อย่างนี้ ไม่ว่าใครจะเป็นคนเริ่มบทสนทนา AI ก็จะทำงานด้วยคุณภาพเดียวกัน แถมความรู้เฉพาะของทีมยังถูกเปลี่ยนให้เป็นสินทรัพย์โดยอัตโนมัติ
บทความนี้จะแนะนำขั้นตอนการจัดเตรียมกลไกทั้ง 3 ประการเพื่อให้ Claude Code กลายเป็นส่วนหนึ่งของการพัฒนาทีม รวมถึงวิธีหลีกเลี่ยงกับดักที่มักเกิดขึ้นหลังการนำไปใช้งาน เมื่ออ่านจบ คุณจะเห็นภาพรวมว่าควรเริ่มจากอะไรในเดือนแรก และควรไปถึงจุดไหนในการดำเนินงานหลังจากผ่านไป 3 เดือน
จุดเริ่มต้นของการนำทีมมาใช้งานคือการจัดเตรียม CLAUDE.md โดยให้ CLAUDE.md ทำหน้าที่เป็นหน่วยความจำที่แชร์กันในโปรเจกต์ และ Claude Code จะอ่าน CLAUDE.md ที่เกี่ยวข้องโดยไล่จาก cwd ขึ้นไปยังไดเรกทอรีหลัก สำหรับการตั้งค่าส่วนบุคคล ให้วางไว้ที่ ~/.claude/CLAUDE.md หรือใช้การ import จาก CLAUDE.md ด้วยคำสั่ง @~/.claude/ไฟล์เฉพาะ.md ทั้งนี้ CLAUDE.local.md ถือว่า deprecated แล้ว จึงไม่ควรนำมาใช้ในการดำเนินงานใหม่ ส่วน CLAUDE.md ที่อยู่ในไดเรกทอรีย่อยจะถูกอ้างอิงเมื่อจัดการกับไฟล์ที่อยู่ภายใต้ไดเรกทอรีนั้นๆ การเขียน "Stack ของโปรเจกต์นี้" "ข้อกำหนดในการเขียนโค้ด (Coding Convention)" และ "ข้อห้ามต่างๆ" ไว้ในนี้ จะช่วยลดความยุ่งยากในการอธิบายซ้ำทุกครั้งที่สนทนา และทำให้ได้ผลลัพธ์ที่สม่ำเสมอไม่ว่าใครจะเป็นผู้ดำเนินการก็ตาม
หากเริ่มนำทีมมาใช้งานโดยไม่มี CLAUDE.md วิศวกรแต่ละคนจะใช้ Prompt ในการเริ่มบทสนทนาที่แตกต่างกัน ส่งผลให้คุณภาพของผลลัพธ์ไม่เสถียร ซึ่งจะนำไปสู่รูปแบบความล้มเหลวที่พบบ่อยคือการที่คนมองว่า "AI ใช้งานไม่ได้" จนทำให้การนำมาใช้งานต้องหยุดชะงัก การสร้างรากฐานร่วมกันนี้ตั้งแต่ต้นคือสิ่งที่กำหนดความสำเร็จของกระบวนการทั้งหมดในภายหลัง
ไม่จำเป็นต้องตั้งเป้าให้สมบูรณ์แบบตั้งแต่แรก ในช่วงเริ่มต้น การเขียนข้อมูลขั้นต่ำที่จำเป็นแล้วค่อยๆ เพิ่มเติมหรือแบ่งส่วนระหว่างการใช้งานจริงถือเป็นแนวทางที่สมเหตุสมผลกว่า หากโปรเจกต์ดำเนินไปได้ 1 สัปดาห์ คุณจะมองเห็นข้อมูลที่ขาดหายไปใน CLAUDE.md อย่างแน่นอน
เนื้อหาที่ควรเขียนใน CLAUDE.md สามารถแบ่งออกเป็น 4 ประเภทหลัก ดังนี้
คำสั่งที่ใช้ร่วมกันในโปรเจกต์ให้วางไว้ที่ ./CLAUDE.md ส่วนการตั้งค่าส่วนบุคคลให้แยกไว้ที่ ~/.claude/CLAUDE.md สำหรับ CLAUDE.local.md แบบเดิมนั้นไม่แนะนำให้ใช้แล้ว หากจำเป็นให้ใช้คำสั่ง import เพื่ออ้างอิงคำสั่งเฉพาะบุคคลแทน
อย่างแรกคือ ภาพรวมของโปรเจกต์ โดยระบุเทคโนโลยีสแต็ก (Tech Stack), ตัวจัดการแพ็กเกจ (Package Manager) และวิธีการรันเซิร์ฟเวอร์สำหรับพัฒนาไว้บรรทัดละหัวข้อ เช่น "Next.js + Supabase + Tailwind", "ใช้ pnpm", "รันด้วย pnpm dev ที่พอร์ต 5000" โดยให้ความสำคัญสูงสุดกับข้อมูลที่สมาชิกทุกคนในทีมต้องทราบเป็นพื้นฐาน
อย่างที่สองคือ ข้อกำหนดในการเขียนโค้ด (Coding Convention) โดยระบุการเยื้องบรรทัดตามภาษา, ภาษาที่ใช้ในคอมเมนต์ และกฎการตั้งชื่อ ในส่วนที่ถูกกำหนดไว้ในค่าคอนฟิกของ Linter อยู่แล้ว ให้เพียงแค่อ้างอิงถึงสั้นๆ ก็พอ แต่ให้เน้นไปที่ธรรมเนียมปฏิบัติที่ Linter ตรวจสอบไม่ได้ (เช่น "เขียนคอมเมนต์เป็นภาษาญี่ปุ่น", "ชื่อฟังก์ชันต้องเป็นภาษาอังกฤษ")
อย่างที่สามคือ ข้อห้าม (Prohibited Actions) ให้เขียนกฎที่ทีมตกลงกันไว้ลงไปโดยตรง เช่น "ใช้ pnpm แทน npm", "ห้ามแก้ไขไฟล์ .env.local", "ห้ามลบแคชด้วย rm -rf .next" การระบุข้อห้ามมีประสิทธิภาพสูงมาก เพราะการระบุสิ่งที่ไม่ต้องการให้ทำจะช่วยป้องกันไม่ให้ AI เลือกทำในสิ่งที่มักจะทำเป็นค่าเริ่มต้นได้
อย่างที่สี่คือ คำสั่งที่ใช้บ่อย ให้ระบุรายการคำสั่งสั้นๆ เช่น การทดสอบ (Test), การทำ Lint, การตรวจสอบประเภทข้อมูล (Type Check), การรัน Migration และการ Deploy เพื่อหลีกเลี่ยงการถูกถามซ้ำๆ ว่า "ต้องใช้คำสั่งไหนในการรันเทสต์"
เมื่อ CLAUDE.md มีความยาวเกิน 200 บรรทัด ให้แยกเนื้อหาออกเป็นไฟล์ตามหัวข้อภายใต้ไดเรกทอรี .claude/rules/ โดยทั่วไปควรสร้างโฟลเดอร์แยกตามหมวดหมู่ เช่น coding/ testing/ security/ และ git/ โดยตั้งชื่อไฟล์แบบ snake_case ไฟล์ละหนึ่งหัวข้อ
ในที่นี้ขอสรุปวิธีการอ่านไฟล์: คุณสามารถ import ไฟล์เสริมจาก CLAUDE.md ได้โดยใช้ @path/to/file.md สำหรับคำสั่งที่ต้องการเงื่อนไขในการใช้งาน ให้จัดระเบียบไว้ภายใน CLAUDE.md หรือแยกออกไปเป็น subagent หรือ slash command ตามความเหมาะสม
เหตุผลในการแบ่งกฎมี 3 ประการ: ประการแรก การอ่านกฎทั้งหมดทุกครั้งจะทำให้เปลือง context window ประการที่สอง ช่วยให้ติดตามความเปลี่ยนแปลงได้ง่ายขึ้นหากมีการเปลี่ยนผู้รับผิดชอบหรือช่วงเวลาการอัปเดตในแต่ละไฟล์ และประการที่สาม สามารถใช้ paths: เพื่อกำหนดเงื่อนไขการอ่านไฟล์ได้ เช่น สามารถตั้งค่าให้โหลดกฎที่เกี่ยวข้องกับการทดสอบเฉพาะตอนแก้ไขไฟล์ทดสอบเท่านั้น เพื่อลดปริมาณการโหลดข้อมูลในแต่ละครั้ง
ยิ่งทีมมีขนาดใหญ่ขึ้น ประโยชน์ของการแบ่งไฟล์จะยิ่งทวีคูณ โดยมีแนวทางปฏิบัติคือ ควรควบคุมจำนวนบรรทัดของกฎที่โหลดตลอดเวลา (ซึ่ง import มาจาก CLAUDE.md) ให้ไม่เกิน 200 บรรทัด และย้ายเนื้อหาที่เกินจากนั้นไปเป็นการโหลดแบบมีเงื่อนไขผ่าน paths: ซึ่งจะช่วยให้การทำงานมีประสิทธิภาพมากขึ้น
เมื่อกำหนด "กฎ" (rules) ใน CLAUDE.md เรียบร้อยแล้ว ขั้นตอนถัดไปคือการแยก "งานที่ทำบ่อย" ออกมาเป็น Skills เพื่อสร้างเป็นสินทรัพย์ หากเป็นงานที่ต้องการนำกลับมาใช้ใหม่และต้องการเรียกใช้งานอย่างชัดเจน ให้แยกไว้ใน slash command ที่ .claude/commands/*.md แต่หากเป็นงานเฉพาะทางที่ต้องการความเป็นอิสระ ให้แยกไว้ใน subagent ที่ .claude/agents/*.md สำหรับขั้นตอนการทำงานที่เป็นมาตรฐานของทีม ควรมีการกำหนดแนวทางให้ชัดเจนว่าจะแยกงานแต่ละประเภทไปไว้ที่ใด
งานที่มีความสามารถในการทำซ้ำได้ เช่น การรันเทสต์พร้อมกันทั้งหมด, การสร้าง Release Note, การตรวจสอบมุมมองในการทำ Code Review หรือการสร้าง Database Migration หากเป็นงานที่จำเป็นต้องสั่งการอย่างชัดเจนให้ใช้ slash command ส่วนงานเฉพาะทางที่เป็นอิสระให้ใช้ subagent และนำมาใช้งานเป็นขั้นตอนมาตรฐานของทีม ทั้งนี้ ควรตรวจสอบข้อกำหนดล่าสุดของฟีเจอร์การจัดการ Skills อย่างเป็นทางการควบคู่ไปด้วย เพื่อจัดระเบียบ Workflow ที่สามารถนำกลับมาใช้ใหม่ได้อย่างมีประสิทธิภาพ
ขั้นตอนการทำงานที่ทำซ้ำได้ควรถูกแยกออกเป็น slash command หรือ subagent เพื่อเปลี่ยนให้เป็นความรู้ที่ชัดเจน (Explicit Knowledge) โดยการเลือกว่าจะใช้แบบใดขึ้นอยู่กับว่างานนั้นจำเป็นต้องสั่งการโดยตรง (Explicit execution) หรือเหมาะสมกับการมอบหมายให้ทำโดยอัตโนมัติ (Automated delegation) การเปลี่ยนสถานะจาก "ต้องถามคนนั้นคนนี้ถึงจะรู้ว่าต้องเช็กอะไรก่อนปล่อยงาน" ให้กลายเป็นเอกสารใน Skill จะช่วยยกระดับคุณภาพการรีวิวของทั้งทีมให้สูงขึ้น
งานเฉพาะทางส่วนบุคคลให้จัดการผ่านการตั้งค่าของผู้ใช้ (User Settings) ส่วนงานที่ใช้ซ้ำได้แบบแชร์ในโปรเจกต์ให้แชร์ไว้ภายใน Repository สำหรับ Sub-agent ให้กำหนดเป็นราย Task โดยสถานที่จัดเก็บและกฎการตั้งชื่อให้ดำเนินการตามข้อกำหนดอย่างเป็นทางการล่าสุดของ Claude Code การตั้งค่า Sub-agent ให้เขียน name และ description ไว้ใน YAML frontmatter ที่ส่วนต้นของไฟล์ และกำหนดสิทธิ์การใช้งานเครื่องมือ (Tool permissions) ตามความจำเป็น การควบคุมสิทธิ์ให้จัดการที่ไฟล์การตั้งค่าของ Claude Code โดยในเนื้อหาของ Task ให้เขียนเฉพาะขั้นตอนการทำงานเท่านั้น สิทธิ์การใช้งานเครื่องมือให้จัดการที่การตั้งค่าส่วนบุคคลหรือการตั้งค่าของ Sub-agent ส่วนตัวเนื้อหาหลักให้เขียนขั้นตอนการทำงานเรียงตามลำดับ และการตั้งชื่อให้ใช้คำกริยาหรือวลีคำนามที่ทำให้เข้าใจ Task ได้ทันที (เช่น review-pr, test-suite-runner, db-migration-author)
ในส่วนนี้ต้องระวังไม่ให้เข้าใจความหมายของ allowed-tools ผิดไป allowed-tools คือการตั้งค่า "อนุมัติล่วงหน้าสำหรับเครื่องมือที่สามารถใช้ได้โดยไม่ต้องรอการยืนยันจากผู้ใช้ในระหว่างที่ Skill นั้นทำงานอยู่" ไม่ใช่กลไกสำหรับจำกัดการใช้งานเครื่องมือ ตัวอย่างเช่น หากเขียนว่า allowed-tools: Read, Grep, Glob ไม่ได้หมายความว่าจะไม่มีการเรียกใช้เครื่องมืออื่น แต่หมายความว่าเฉพาะ Read, Grep และ Glob เท่านั้นที่จะข้ามขั้นตอนการยืนยัน หากต้องการห้ามการแก้ไขจริงๆ จำเป็นต้องใช้กลไกอื่นในการรับรอง เช่น การระบุ deny rule ใน permissions ของ settings.json หรือการบล็อก Edit/Write ผ่าน pre-hook
เนื้อหาหลักของ SKILL.md ให้เขียนโดยจัดโครงสร้างเป็น 3 ส่วน ได้แก่ "รับอะไรเข้ามา" "ดำเนินการตามลำดับใด" และ "ส่งผลลัพธ์อะไรกลับไป" หากในขั้นตอนมีการตัดสินใจแบบมีเงื่อนไข การจัดระเบียบเงื่อนไขในรูปแบบตารางจะช่วยให้ AI ปฏิบัติตามขั้นตอนได้อย่างแม่นยำ สำหรับ Skill ขนาดใหญ่ที่เกิน 200 บรรทัด ให้ใช้รูปแบบ Progressive Disclosure โดยแยกรูปแบบรายละเอียดไปไว้ในไฟล์สนับสนุน (Supporting files) เช่น REFERENCE.md เพื่อไม่ให้กระทบต่อขีดจำกัดของ Description
Skill ที่ใช้ร่วมกันในทีมให้วางไว้ที่ .claude/skills/ ภายใน Repository แล้วทำการ Commit ส่วน Skill ส่วนบุคคลให้วางไว้ที่ ~/.claude/skills/ เพื่อให้ง่ายต่อการจัดการ
Skills มีประโยชน์ แต่หากมีจำนวนมากเกินไป Claude อาจสับสนว่า "ควรใช้ Skill ใด" ดังนั้นควรเขียนคำอธิบายให้สั้น กระชับ โดยระบุว่าทำอะไร เมื่อใดควรใช้ และใช้คีย์เวิร์ดใดในการเรียกใช้งาน สำหรับขีดจำกัดของ Metadata โปรดตรวจสอบข้อกำหนดล่าสุดจากทางการแยกต่างหาก และในการใช้งานจริงควรหลีกเลี่ยงคำอธิบายที่เยิ่นเย้อ การไม่พึ่งพาขีดจำกัดนี้มากเกินไปและปรับแต่งคำอธิบาย (description) ของแต่ละ Skill ให้สั้นลงถือเป็นแนวทางที่ปลอดภัยกว่า
คำอธิบายของแต่ละ Skill ควรประกอบด้วย 3 องค์ประกอบหลัก ได้แก่ "ทำอะไร" "เมื่อใดควรใช้" และ "ใช้คีย์เวิร์ดใดในการเรียกใช้" โดยตัดคำเกริ่นนำที่ไม่จำเป็นออกไป
ตัวอย่างคำอธิบายที่ดีคือ "รัน Test Suite แบบขนานและจำแนกความล้มเหลวระหว่างปัญหาการ Implement กับปัญหาของ Test ใช้เมื่อต้องการรัน Test, ทดสอบทั้งหมด, ทดสอบแบบกลุ่ม, ตรวจสอบ CI หรือวินิจฉัย Test" โดยระบุคีย์เวิร์ดที่ใช้เรียกไว้ที่ท้ายประโยค ในทางกลับกัน คำอธิบายที่เป็นนามธรรม เช่น "Skill นี้มีฟังก์ชันเพื่อสนับสนุนการรัน Test ในโปรเจกต์" จะทำให้ Claude ค้นพบ Skill ได้ยาก
หากมี Skill ที่มีคำอธิบายคล้ายกันหลายรายการ อาจทำให้ Claude สับสนว่าจะเลือกใช้ตัวใด ควรมีกฎการดำเนินงานในการตรวจสอบ Skill ที่ไม่ได้ใช้งานเป็นประจำ และรวม Skill ที่มีวัตถุประสงค์ซ้ำซ้อนกันเข้าด้วยกัน การจัดให้มีการรีวิวสถิติการใช้งาน Skill ทุกไตรมาสจะช่วยป้องกันไม่ให้จำนวน Skill เพิ่มขึ้นจนเกินความจำเป็นได้
ขั้นตอนสุดท้ายคือ Hooks โดย Hooks จะใช้ PreToolUse、PostToolUse、Stop、SessionEnd รวมถึง Notification หรือ UserPromptSubmit ตามความจำเป็น การตั้งค่าจะวางไว้ที่ ~/.claude/settings.json หรือ .claude/settings.json โดยออกแบบบทบาทแยกตามแต่ละเหตุการณ์ ซึ่งมีประสิทธิภาพอย่างมากในการทำระบบ Quality Gate อัตโนมัติและการเชื่อมต่อการแจ้งเตือน เนื่องจากสามารถบังคับใช้เกณฑ์ที่มนุษย์ต้องคอยตรวจสอบซ้ำๆ ในการรีวิวให้เป็นไปโดยอัตโนมัติได้
สิ่งที่ทำให้ Hooks มีประสิทธิภาพคือ ในขณะที่ CLAUDE.md และ Skills เป็นเพียง "คำสั่ง" แต่ Hooks คือการ "บังคับ" แม้ในกรณีที่กฎถูกเขียนไว้แต่ไม่ได้รับการปฏิบัติตาม Hooks ก็สามารถตรวจจับและหยุดการทำงานได้โดยอัตโนมัติ ซึ่งจะมีคุณค่าอย่างยิ่งในส่วนที่หากเกิดความผิดพลาดจากการตรวจสอบโดยมนุษย์แล้วจะนำไปสู่ปัญหา เช่น ข้อกำหนดด้านความปลอดภัยหรือความปลอดภัยของประเภทข้อมูล (Type Safety)
จุดที่ใช้งานได้บ่อยที่สุดคือ pre/post hook ซึ่งทำงานก่อนและหลังการรันเครื่องมือ สำหรับการตรวจสอบหลังแก้ไขไฟล์ ให้ตั้งค่าคำสั่งที่จำเป็นไว้ที่ PostToolUse เพื่อรันการตรวจสอบแบบเบา (lightweight check) ตามประเภทของไฟล์นั้นๆ ส่วนการตรวจสอบที่ใช้เวลานานควรปล่อยให้เป็นหน้าที่ของ CI และจำกัดให้ hook ทำเฉพาะงานที่ใช้เวลาสั้นๆ เท่านั้น
ตัวอย่างที่เป็นรูปธรรมคือ การตั้งค่าให้รัน pnpm exec tsc --noEmit หลังจากแก้ไขไฟล์ TypeScript หากพบข้อผิดพลาดของ type ก็ให้ส่งเนื้อหานั้นกลับไปให้ AI แก้ไข ซึ่งไม่ใช่เรื่องแปลกที่ทีมจะสามารถลดการ commit ที่ผิดพลาดทาง type ให้เป็นศูนย์ได้ด้วยวิธีนี้
pre hook เหมาะสำหรับการบล็อกการทำงานที่เป็นอันตราย คุณสามารถสร้างแนวป้องกันเพื่อป้องกันอุบัติเหตุได้โดยการตรวจจับและหยุดคำสั่งทำลายล้าง เช่น rm -rf, git push --force หรือ DROP TABLE ใน pre hook ของเครื่องมือ Bash
ข้อควรระวังคือ "ห้ามรันคำสั่งที่หนักเกินไป" หากรัน test suite ทั้งหมดในขั้นตอนนี้ ประสบการณ์การสนทนาจะพังลง ให้วางเฉพาะการตรวจสอบที่ใช้เวลาเพียงไม่กี่วินาทีไว้ใน pre/post hook และแบ่งหน้าที่ให้การตรวจสอบที่ใช้เวลานานเป็นของ CI แทน
ใช้ Stop hook สำหรับการประมวลผลหลังจบการตอบกลับของ Claude โดยให้แยกการใช้งานกับ SessionEnd สำหรับการสิ้นสุดเซสชันการสนทนาทั้งหมด และ Notification สำหรับการแจ้งเตือน โปรดทราบว่า "การจบเทิร์น" ในที่นี้ไม่ใช่การสิ้นสุดเซสชันการสนทนาทั้งหมด แต่เป็นเหตุการณ์ที่เกิดขึ้นเมื่อ Claude ตัดสินใจว่า "ได้ตอบกลับเทิร์นนี้เสร็จสิ้นแล้ว" การออกแบบอย่างเป็นทางการคือให้แยกใช้ SessionEnd hook หากต้องการจับเหตุการณ์สิ้นสุดเซสชันทั้งหมด และใช้ Notification hook หากต้องการแจ้งเตือนในขณะที่รอการป้อนข้อมูลจากผู้ใช้
การใช้งานทั่วไปของ Stop hook คือการประมวลผลหลังจบงานที่มีน้ำหนักเบา เช่น การโพสต์เนื้อหาการทำงานของแต่ละเทิร์นลงใน Slack, การเขียนรายการไฟล์ที่แก้ไขลงในบันทึกภายในเครื่อง (local log) หรือการจัดโครงสร้างบันทึกการทำงานของเครื่องมือ (tool execution log) แล้วบันทึกต่อท้ายไฟล์
หากต้องการรับการแจ้งเตือนเมื่อเสร็จสิ้นงานที่ใช้เวลานาน Notification hook จะเหมาะสมกับวัตถุประสงค์มากกว่า Stop hook โดยการใช้คำสั่ง one-liner อย่าง curl เพื่อเรียก Webhook ของ Slack หรือ Discord ในจังหวะที่หยุดรอการป้อนข้อมูลก็เพียงพอต่อการใช้งานแล้ว ทั้งนี้ ควรส่งไปยังช่องทางส่วนตัวหรือ DM เพื่อหลีกเลี่ยงการรบกวนสมาชิกทุกคนในทีม
นอกจากนี้ ยังมีการใช้ Stop hook เพื่อวัตถุประสงค์ในการตรวจสอบ (audit) เพิ่มมากขึ้น หากมีการจัดโครงสร้างสรุปผลรายเทิร์นและบันทึกการทำงานของเครื่องมือแล้วบันทึกต่อท้ายไฟล์ไว้ จะสามารถนำมาสรุปผลรายเดือนเพื่อวิเคราะห์เชิงปริมาณได้ว่า Skill ใดถูกใช้งานบ่อย หรือมีงานประเภทใดที่ใช้เวลานาน ข้อมูลเหล่านี้จะเป็นประโยชน์สำหรับการสร้าง Skill ใหม่หรือปรับปรุง CLAUDE.md ในอนาคต
แม้จะทำตาม 3 ขั้นตอนแล้ว แต่หลายทีมก็ยังประสบปัญหาหลังจากเริ่มใช้งานจริง ในที่นี้จะขอยกตัวอย่างรูปแบบความล้มเหลวที่พบบ่อย 2 ประการ พร้อมสรุปวิธีหลีกเลี่ยงสำหรับแต่ละกรณี ซึ่งสาเหตุหลักของทั้งสองกรณีคือ "ไม่สามารถดำเนินการตามระบบที่สร้างไว้ได้" หากทราบวิธีรับมือล่วงหน้าก็จะสามารถหลีกเลี่ยงปัญหาเหล่านี้ได้
ความผิดพลาดที่พบบ่อยที่สุดคือการที่บริบท (context) บวมขึ้น จนทำให้การใช้โทเค็นต่อการสนทนาพุ่งสูงขึ้น หากคุณยังคง "เขียนทุกอย่างลงไปก่อน" ใน CLAUDE.md จะทำให้มีการใช้โทเค็นหลายหมื่นทุกครั้งที่เริ่มการสนทนา วิธีแก้ไขคือการแยกกฎที่ต้องอ่านตลอดเวลากับกฎที่อ่านตามเงื่อนไขออกจากกัน โดยใช้ paths: front matter เพื่อจำกัดกฎตามรูปแบบไฟล์ (file pattern) และควบคุมให้กฎที่ต้องอ่านตลอดเวลาไม่เกิน 200 บรรทัด
สัญญาณเตือนของภาวะบริบทบวมมี 3 ประการ: ประการแรกคือการใช้โทเค็นมากกว่าที่คาดไว้ถึง 2 เท่าในการสนทนาหนึ่งครั้ง ประการที่สองคือเวลาในการตอบสนองช้าลงอย่างเห็นได้ชัด และประการที่สามคือ AI เริ่มละเลยข้อจำกัดที่ควรจะระบุไว้ในกฎ (ปรากฏการณ์ที่ส่วนท้ายของหน้าต่างบริบทถูกมองข้าม) หากพบสัญญาณเหล่านี้ ให้เริ่มจากการกลับไปอ่าน CLAUDE.md และตรวจสอบว่ามีรายการใดที่สามารถลบออกได้บ้าง
การสร้างนิสัยในการทบทวนเป็นระยะว่า "กฎนี้จำเป็นต้องใช้ทุกครั้งจริงๆ หรือไม่" จะช่วยให้ไฟล์มีความกระชับขึ้นโดยธรรมชาติ แนะนำให้ตรวจสอบประวัติการแก้ไข CLAUDE.md ในช่วงรีโทรประจำเดือน (monthly retro) เพื่อดูว่ามีกฎใดที่ถูกเพิ่มเข้ามาโดยไม่มีการตรวจสอบหรือไม่
อีกหนึ่งความผิดพลาดคือการปล่อยให้การรีวิวโค้ดที่เขียนโดย AI เป็นหน้าที่ของมนุษย์เพียงอย่างเดียว แม้จะมีการตั้งค่าการตรวจสอบอัตโนมัติด้วย Hooks แต่หากทีมไม่มีข้อตกลงร่วมกันในมุมมองของการรีวิว คำแนะนำต่อผลลัพธ์ของ AI จะแตกต่างกันไปตามตัวบุคคล ทำให้ไม่เกิดการปรับปรุงในระยะยาว
วิธีแก้ไขคือการกำหนดมุมมองการรีวิวให้เป็น Skill เฉพาะ (เช่น /review) เพื่อให้ทั้ง AI และผู้รีวิวใช้เช็คลิสต์เดียวกันในการตรวจสอบ ตัวอย่างเช่น การสร้าง Skill ที่เน้น 4 มุมมอง ได้แก่ "การตรวจสอบความปลอดภัย", "ความปลอดภัยของประเภทข้อมูล (Type safety)", "การเพิ่มเทสต์" และ "ผลกระทบต่อประสิทธิภาพ" แล้วให้ AI ดำเนินการเมื่อมีการสร้าง Pull Request เมื่อผู้รีวิวที่เป็นมนุษย์ใช้มุมมองเดียวกัน ความละเอียดของคำแนะนำก็จะมีความสม่ำเสมอ
เมื่อคำแนะนำมีความสม่ำเสมอ เราจะเริ่มเห็นกฎที่ควรเพิ่มลงใน CLAUDE.md ซึ่งจะนำไปสู่การหมุนเวียนของวงจรการปรับปรุงอย่างต่อเนื่อง คำแนะนำที่พบบ่อยในการรีวิว ไม่ช้าก็เร็วจะกลายเป็นข้อห้ามใน CLAUDE.md หรือกลายเป็นวัตถุดิบสำหรับ Skill ใหม่ ทีมที่สามารถหมุนเวียนวงจรนี้ได้ จะเห็นค่ามัธยฐานของคุณภาพผลลัพธ์ที่เพิ่มขึ้นอย่างชัดเจนภายใน 3 เดือน
แม้จะสร้างกลไกขึ้นมาแล้ว แต่หากไม่วัดผลก็จะไม่สามารถแสดงความรับผิดชอบต่อฝ่ายบริหารได้ จำเป็นต้องเข้าใจตัวชี้วัดเพื่อประเมินผลลัพธ์เชิงปริมาณจากการนำไปใช้ และวิธีการทำ Retrospective เพื่อปรับปรุงอย่างต่อเนื่อง ทั้งนี้ วัตถุประสงค์ของการวัดผลไม่ใช่เพื่อแข่งขันกันด้วยตัวเลข แต่เพื่อให้ได้สัญญาณในการค้นหาจุดที่ควรปรับปรุงในลำดับถัดไป
KPI จะถูกออกแบบโดยใช้ 2 แกนหลัก คือ "อัตราการใช้งาน" (Utilization) และ "คุณภาพ" (Quality) โดยอัตราการใช้งานจะติดตามจากจำนวนบทสนทนาต่อสัปดาห์, จำนวนครั้งที่เรียกใช้ Skill และสัดส่วนของ Commit ที่มี AI ช่วยเหลือ ส่วนด้านคุณภาพจะติดตามจากอัตราการตีกลับของรีวิว (Review Rejection Rate), การเปลี่ยนแปลงของ Test Coverage และอัตราการเกิดบั๊กหลังการ Deploy
ตัวอย่างเป้าหมายที่เป็นรูปธรรมซึ่งถือว่าสมเหตุสมผลสำหรับการเริ่มต้น คือหลังจากใช้งานไป 3 เดือน ควรบรรลุเป้าหมายดังนี้: "วิศวกร 1 คนต่อบทสนทนา 10 ครั้งขึ้นไปต่อสัปดาห์", "งานประจำอย่างการเขียน Release Note หรือการทำ Migration มากกว่า 70% ดำเนินการผ่าน Skill", และ "อัตราการตีกลับของรีวิวไม่เกิน 20%" ทั้งนี้ ตัวเลขเหล่านี้สามารถปรับเปลี่ยนได้ตามขนาดของทีมและรูปแบบการพัฒนา
Roadmap สำหรับการสร้างความคุ้นเคยควรเป็นไปตามขั้นตอนดังนี้: เดือนที่ 1 จัดทำ CLAUDE.md, เดือนที่ 2 สร้าง Skills จำนวน 3–5 รายการ และเดือนที่ 3 เชื่อมโยง Hooks เข้ากับ Review Skill หากมีการทำ Retro สั้นๆ เดือนละ 1 ครั้งเพื่อแชร์ "กฎหรือ Skill ที่เพิ่มเข้ามาในเดือนนี้" และ "ผลลัพธ์ที่สัมผัสได้" จะช่วยให้ระดับความชำนาญของคนทั้งทีมเท่ากัน เมื่อผ่าน 3 เดือนไปแล้ว การติดตาม "ความถี่ในการอัปเดต CLAUDE.md" และ "อัตราการใช้งาน Skill" ในฐานะตัวชี้วัดระดับ Meta จะช่วยให้เห็นถึงความสมบูรณ์ของการดำเนินงาน (Operational Health)
Q1. ควรแบ่งการใช้งานระหว่าง CLAUDE.md และ README.md อย่างไร?
ให้แบ่งหน้าที่โดยใช้ README.md เป็นคู่มือสำหรับมนุษย์ และ CLAUDE.md เป็นคำสั่งการทำงานสำหรับ AI โดยให้คงเนื้อหาภาพรวมและวิธีการมีส่วนร่วมที่มนุษย์ควรอ่านไว้ใน README.md และรวบรวมกฎที่ต้องการให้ AI ปฏิบัติตามในทุกครั้งไว้ที่ CLAUDE.md การเขียนเนื้อหาเดียวกันไว้ในทั้งสองไฟล์จะกลายเป็นจุดที่ทำให้ข้อมูลไม่อัปเดตได้ง่าย จึงควรใช้วิธีการอ้างอิงถึงกันจะดีกว่า เพียงแค่ให้ CLAUDE.md อ้างอิงถึง README.md หรือเขียนใน README.md เพียงบรรทัดเดียวว่า "สำหรับกฎการใช้งาน AI โปรดดูที่ CLAUDE.md" ก็เพียงพอต่อการแบ่งบทบาทหน้าที่แล้ว
Q2. ควรวาง Skills ของโปรเจกต์และ Skills ส่วนกลางไว้ที่ใด?
หากให้ความสำคัญกับความสามารถในการทำซ้ำ (Reproducibility) การวางไว้ภายใต้โปรเจกต์ (.claude/skills/) และคอมมิตลงในรีโพสิทอรีคือทางเลือกแรกที่ควรทำ ส่วน Skills ที่เป็นแบบทั่วไปซึ่งไม่ขึ้นกับโปรเจกต์ใดโปรเจกต์หนึ่งเท่านั้นจึงจะวางไว้ที่ส่วนกลาง (~/.claude/skills/) หากไม่แน่ใจ ให้วางไว้ภายใต้โปรเจกต์ก่อน และเมื่อรู้สึกว่าต้องการใช้ในโปรเจกต์อื่นด้วยค่อยยกระดับไปไว้ที่ส่วนกลาง ซึ่งเป็นวิธีการจัดการที่เรียบง่าย
Q3. หาก Hooks ทำงานหนักจนทำให้การสนทนาหยุดชะงักควรทำอย่างไร?
ให้จำกัดการใช้ pre/post hooks เฉพาะคำสั่งที่ใช้เวลาประมวลผลเพียงไม่กี่วินาทีเท่านั้น และย้ายการตรวจสอบที่ใช้เวลานานไปไว้ที่ CI สำหรับกระบวนการที่จำเป็นต้องรันในเครื่องจริงๆ ให้ใช้วิธีออกแบบเป็นการทำงานเบื้องหลัง (Background execution) แล้วแจ้งเตือนเฉพาะผลลัพธ์ หากต้องรันหลายคำสั่งแบบต่อเนื่องภายใน Hooks ให้ใช้วิธีออกแบบให้หยุดทำงานทันทีเมื่อเกิดข้อผิดพลาด เพื่อตัดกระบวนการที่ล่าช้าออกไปตั้งแต่เนิ่นๆ
Q4. หากสมาชิกในทีมใช้งานแตกต่างกันควรทำอย่างไร?
ให้คอมมิตกฎและ Skills ลงในรีโพสิทอรี และใช้ CI ตรวจสอบว่า "ไม่มีลิงก์เสียใน CLAUDE.md" หรือ "ไม่มีการใช้ description ของ Skills เกินงบประมาณ" สำหรับพฤติกรรมที่ไม่สามารถบังคับด้วยเครื่องมือได้ ให้ใช้วิธีแชร์และปรับจูนความเข้าใจในการประชุมย้อนหลัง (Retro) ประจำเดือน โดยเฉพาะอย่างยิ่งหลังจากมีสมาชิกใหม่เข้ามา เพียงแค่ให้พวกเขาอ่านบันทึกการประชุมย้อนหลังที่ผ่านมา ก็จะช่วยให้เข้าใจความรู้แฝง (Tacit knowledge) ของทีมได้ในระดับหนึ่ง
Q5. ข้อควรระวังในการนำมาใช้กับโปรเจกต์ที่มีอยู่เดิมคืออะไร?
อย่าเขียนข้อมูลที่ซ้ำซ้อนกับ README หรือเอกสารที่มีอยู่เดิมลงใน CLAUDE.md หากไม่หลีกเลี่ยงความซ้ำซ้อน เมื่อถึงเวลาอัปเดตจะทำให้ไม่ทราบว่าข้อมูลใดคือข้อมูลที่ถูกต้อง ในช่วง 2 สัปดาห์แรก ให้ดำเนินการเพิ่มเนื้อหาลงใน CLAUDE.md ควบคู่ไปกับการลบหรือทำลิงก์จากเอกสารเดิม จะช่วยป้องกันไม่ให้ข้อมูลกระจัดกระจายได้
กุญแจสำคัญในการทำให้ Claude Code กลายเป็นส่วนหนึ่งของทีม ไม่ได้อยู่ที่วิธีการใช้เครื่องมือ แต่คือ "การกำหนดมาตรฐาน" ต่างหาก การทำให้กฎของโปรเจกต์สอดคล้องกันด้วย CLAUDE.md, การเปลี่ยนงานที่ทำซ้ำๆ ให้เป็นสินทรัพย์ด้วย Skills และการทำระบบตรวจสอบคุณภาพอัตโนมัติด้วย Hooks หากมีครบทั้ง 3 ส่วนนี้ ไม่ว่าใครจะเป็นคนเริ่มบทสนทนา ก็จะได้ผลลัพธ์ที่มีคุณภาพเท่าเทียมกัน
หากวางแผนงานแบบค่อยเป็นค่อยไป โดยเดือนแรกเน้นไปที่การจัดเตรียม CLAUDE.md, เดือนที่สองสร้าง Skills ขึ้นมาสองสามอย่าง และเดือนที่สามเพิ่ม Hooks และการวัดผล KPI เข้าไป ภายใน 3 เดือน ทีมก็จะสามารถเปลี่ยนผ่านไปสู่ "การพัฒนาทีมโดยมี AI เป็นพื้นฐาน" ได้สำเร็จ
สิ่งสำคัญคืออย่าเพิ่งตั้งเป้าหมายว่าจะต้องสร้างระบบที่สมบูรณ์แบบตั้งแต่ต้น ให้เริ่มจาก CLAUDE.md แบบเรียบง่ายที่สุดไปก่อน แล้วค่อยๆ เพิ่มเติมประเด็นที่พบจากการรีวิวรายสัปดาห์ และทำการตรวจสอบทบทวน (Inventory) เป็นรายเดือน หากสร้างจังหวะการทำงานเช่นนี้ได้ ความรู้เฉพาะของทีมจะถูกรวบรวมไว้ใน CLAUDE.md และ Skills โดยอัตโนมัติ ทำให้เอกสารกลายเป็นสินทรัพย์ที่มีชีวิต การเริ่มต้นจากจุดเล็กๆ แล้วหมั่นตรวจสอบและปรับปรุงอยู่เสมอ คือจุดเริ่มต้นของการปฏิบัติงานที่ยั่งยืนและใช้งานได้ในระยะยาว

Yusuke Ishihara
เริ่มเขียนโปรแกรมตั้งแต่อายุ 13 ปี ด้วย MSX หลังจบการศึกษาจากมหาวิทยาลัย Musashi ได้ทำงานพัฒนาระบบขนาดใหญ่ รวมถึงระบบหลักของสายการบิน และโครงสร้าง Windows Server Hosting/VPS แห่งแรกของญี่ปุ่น ร่วมก่อตั้ง Site Engine Inc. ในปี 2008 ก่อตั้ง Unimon Inc. ในปี 2010 และ Enison Inc. ในปี 2025 นำทีมพัฒนาระบบธุรกิจ การประมวลผลภาษาธรรมชาติ และแพลตฟอร์ม ปัจจุบันมุ่งเน้นการพัฒนาผลิตภัณฑ์และการส่งเสริม AI/DX โดยใช้ generative AI และ Large Language Models (LLM)