Claude Code: แนวทางปฏิบัติที่ดีที่สุดสำหรับ Agentic Coding
(anthropic.com)- Claude Code เป็นเครื่องมือสำหรับ agentic coding บน CLI ที่สามารถปรับใช้ได้อย่างยืดหยุ่นกับสภาพแวดล้อมและภาษาที่หลากหลาย
- สามารถเพิ่มประสิทธิภาพการใช้งาน Claude ได้สูงสุดผ่าน การตั้งค่า
CLAUDE.md, การจัดการ allowlist ของเครื่องมือ, และการสร้างคำสั่งแบบกำหนดเอง - มีประสิทธิภาพเมื่อใช้ กลยุทธ์ตาม workflow (สำรวจ-วางแผน-ลงมือทำ-คอมมิต, test-driven development, visual iteration ฯลฯ)
- รองรับทั้ง automation และงานแบบขนานด้วย headless mode และการตั้งค่าแบบ multi-Claude
- สามารถใช้งานขั้นสูงได้ด้วยการ ผสาน Claude เข้ากับเครื่องมือพัฒนาต่าง ๆ เช่น Git, GitHub, Jupyter
ภาพรวมของ Claude Code
- Claude Code เป็น เครื่องมือสำหรับ agentic coding (การเขียนโค้ดอัตโนมัติผ่าน command line)
- ออกแบบมาเพื่อให้ นักพัฒนาและนักวิจัยภายในของ Anthropic ผสาน Claude เข้ากับการเขียนโค้ดได้อย่างเป็นธรรมชาติมากขึ้น
- ด้วย อินเทอร์เฟซระดับล่างและการออกแบบที่ไม่ผูกกับข้อพึ่งพาเฉพาะ จึงไม่ยึดติดกับรูปแบบการพัฒนาแบบใดแบบหนึ่ง
- นักพัฒนาจึงสามารถตั้งค่าและใช้งาน Claude ได้ในแบบที่เหมาะกับตนเอง
- ผลลัพธ์คือมันกลายเป็น เครื่องมือทรงพลังสำหรับงานเขียนโค้ดที่ทั้งยืดหยุ่นและปลอดภัย
- ข้อเสียคือ มีช่วงการเรียนรู้ที่ค่อนข้างชันสำหรับผู้ใช้ใหม่
- จึงจำเป็นต้องค่อย ๆ สร้าง best practices ของตัวเองขึ้นมา
- บทความนี้อ้างอิงจากประสบการณ์ของทั้งทีมภายในและวิศวกรภายนอกที่ได้ใช้งาน Claude Code จริง
- พร้อมแนะนำ แพตเทิร์นทั่วไปที่ได้ผลในหลายภาษา codebase และสภาพแวดล้อม
- เนื้อหาที่นำเสนอเป็น จุดเริ่มต้น ไม่ใช่คำตอบที่ตายตัว และแนะนำให้แต่ละคนทดลองและปรับปรุงให้เข้ากับวิธีทำงานของตนเอง
# 1. ปรับแต่งการตั้งค่า
Claude Code เป็น ผู้ช่วยเขียนโค้ดแบบ agentic ที่รวบรวมบริบทโดยอัตโนมัติเพื่อสร้าง prompt
การรวบรวมบริบทนี้ ใช้ทั้งเวลาและ token แต่สามารถปรับแต่งสภาพแวดล้อมเพื่อเพิ่มประสิทธิภาพได้
a. สร้างไฟล์ CLAUDE.md
CLAUDE.md คือ ไฟล์พิเศษที่ Claude จะใส่เข้าไปในบริบทโดยอัตโนมัติเมื่อเริ่มบทสนทนา
ไฟล์นี้เหมาะอย่างยิ่งสำหรับใช้บันทึกสิ่งต่อไปนี้:
- คำสั่ง bash ที่ใช้บ่อย
- ไฟล์หลักและ utility function
- แนวทาง code style
- วิธีรันการทดสอบ
- วิธีทำงานกับ repository (เช่น การตั้งชื่อ branch, merge vs. rebase)
- วิธีตั้งค่าสภาพแวดล้อมสำหรับพัฒนา (เช่น ใช้
pyenvหรือไม่, compiler ที่รองรับ) - พฤติกรรมพิเศษหรือข้อควรระวังของโปรเจกต์นั้น
- ข้อมูลอื่น ๆ ที่ Claude ควรจดจำ
ไฟล์ CLAUDE.md ไม่มีข้อจำกัดด้านรูปแบบ และแนะนำให้เขียนอย่างกระชับและอ่านง่ายสำหรับมนุษย์
ตัวอย่าง:
# Bash commands
- npm run build: Build the project
- npm run typecheck: Run the typechecker
# Code style
- Use ES modules (import/export) syntax, not CommonJS (require)
- Destructure imports when possible (eg. import { foo } from 'bar')
# Workflow
- Be sure to typecheck when you’re done making a series of code changes
- Prefer running single tests, and not the whole test suite, for performance
ตำแหน่งของไฟล์ CLAUDE.md
Claude จะค้นหา CLAUDE.md จากตำแหน่งต่อไปนี้แล้วนำมาใส่ในบริบท:
- root ของ repo หรือไดเรกทอรีที่รัน
claude- หากบันทึกเป็น
CLAUDE.mdแล้ว commit เข้า git จะสามารถ แชร์ข้าม session และระหว่างทีมได้ (แนะนำ) - หากเป็นการตั้งค่าส่วนตัว สามารถบันทึกเป็น
CLAUDE.local.mdแล้วเพิ่มใน.gitignoreได้
- หากบันทึกเป็น
- ไดเรกทอรีแม่ของไดเรกทอรีที่กำลังรัน
- มีประโยชน์ในโครงสร้าง monorepo (เช่น ใช้ได้ทั้ง
root/CLAUDE.mdและroot/foo/CLAUDE.md)
- มีประโยชน์ในโครงสร้าง monorepo (เช่น ใช้ได้ทั้ง
- ไดเรกทอรีย่อยของไดเรกทอรีที่กำลังรัน
- จะถูกนำเข้าไปในบริบทโดยอัตโนมัติเมื่อทำงานกับไฟล์ในไดเรกทอรีนั้น
- โฮมไดเรกทอรี (
~/.claude/CLAUDE.md)- มีผลแบบ global กับทุก session
เมื่อรันคำสั่ง /init Claude จะสร้างไฟล์ CLAUDE.md ให้อัตโนมัติ
b. ปรับแต่งไฟล์ CLAUDE.md
เนื่องจาก CLAUDE.md ถูกใช้เป็นส่วนหนึ่งของ prompt ของ Claude จึงควร ปรับแต่งและเพิ่มประสิทธิภาพซ้ำ ๆ เหมือนกับการปรับ prompt
ข้อผิดพลาดที่พบบ่อยคือใส่ข้อมูลมากเกินไปและไม่ตรวจสอบว่ามีผลจริงหรือไม่
- สิ่งสำคัญคือ ทดลองเพื่อดูว่าเนื้อหาแบบใดช่วยเพิ่มคุณภาพการตอบของโมเดล
- สามารถเพิ่มเนื้อหาด้วยตนเองได้ หรือกดปุ่ม
#เพื่อสั่ง Claude ให้ สะท้อนการตั้งค่านั้นลงในCLAUDE.mdโดยอัตโนมัติ - วิศวกรจำนวนมากจะบันทึกคำสั่งและ style guide ต่าง ๆ แบบเรียลไทม์ และ รวมการเปลี่ยนแปลงของ
CLAUDE.mdเข้าไปใน commit เพื่อแชร์กับทีม
ที่ Anthropic มีการใช้ prompt improver เพื่อปรับแต่ง CLAUDE.md
พร้อมเพิ่ม วลีเน้นย้ำ อย่าง “IMPORTANT” และ “YOU MUST” เพื่อเพิ่มความแม่นยำของคำตอบ
c. จัดการรายการเครื่องมือที่ Claude ได้รับอนุญาต
Claude Code จะ ขอการอนุมัติจากผู้ใช้โดยค่าเริ่มต้น สำหรับงานที่อาจเปลี่ยนแปลงระบบได้ (เช่น การเขียนไฟล์ การรันคำสั่ง bash การใช้เครื่องมือ MCP ฯลฯ)
นี่เป็นการออกแบบแบบระมัดระวังเพื่อความปลอดภัย และเครื่องมือที่ผู้ใช้เห็นว่าปลอดภัยสามารถอนุมัติล่วงหน้าได้ผ่าน allowlist
วิธีตั้งค่าเครื่องมือที่อนุญาต
- เมื่อมี prompt แสดงขึ้นระหว่าง session ให้เลือก "Always allow"
- เพิ่ม/ลบเครื่องมือด้วยคำสั่ง
/allowed-tools
ตัวอย่าง:Edit→ อนุญาตให้แก้ไขไฟล์Bash(git commit:*)→ อนุญาตให้ทำ git commitmcp__puppeteer__puppeteer_navigate→ อนุญาตการนำทางใน Puppeteer MCP server
- แก้ไข
.claude/settings.jsonหรือ~/.claude.jsonด้วยตนเอง- หากต้องการแชร์กับทีม แนะนำให้ใช้อันแรกและ commit เข้า Git
- ใช้ CLI flag แบบราย session คือ
--allowedTools
d. ติดตั้ง gh CLI เมื่อต้องใช้งาน GitHub
Claude สามารถใช้ gh CLI ได้ จึง ทำงาน GitHub แบบอัตโนมัติได้ เช่น สร้าง issue เขียน PR อ่านคอมเมนต์
แม้จะไม่ได้ติดตั้ง gh ก็ยัง ใช้ GitHub API หรือ MCP server แทนได้
# 2. มอบเครื่องมือเพิ่มเติมให้ Claude
Claude สามารถ เข้าถึง shell environment ของผู้ใช้ได้ ดังนั้นจึงใช้ สคริปต์และฟังก์ชันที่ผู้ใช้สร้างไว้เองได้โดยตรง
นอกจากนี้ยังเชื่อมต่อกับ เครื่องมือภายนอกที่ซับซ้อนมากขึ้นผ่าน MCP หรือ REST API ได้อีกด้วย
a. ใช้งานร่วมกับเครื่องมือ Bash
Claude Code สืบทอด bash environment ของผู้ใช้ จึง เข้าถึง utility ที่ติดตั้งไว้แล้วได้
- Claude รู้จักเครื่องมือ Unix ทั่วไปหรือ
ghCLI อยู่แล้ว - แต่ เครื่องมือ bash แบบ custom ที่ผู้ใช้สร้างเอง จำเป็นต้องบอกเพิ่มเติม
หากต้องการให้ Claude รู้จักเครื่องมือแบบ custom ให้ทำดังนี้:
- ระบุ ชื่อเครื่องมือและตัวอย่างการใช้งาน ให้ Claude ชัดเจน
- สั่งให้ดู วิธีใช้งานของเครื่องมือ ผ่านออปชัน
--help - บันทึกเครื่องมือที่ใช้บ่อยไว้ใน
CLAUDE.md
b. ใช้งานร่วมกับ MCP
Claude Code ทำหน้าที่ได้พร้อมกันทั้ง MCP server และ client
ในฐานะ client มันสามารถเชื่อมต่อกับ MCP server หลายตัวเพื่อ ใช้เครื่องมือได้อย่างหลากหลาย
มี 3 วิธีในการเชื่อมต่อเครื่องมือจาก MCP server เข้ากับ Claude:
- กำหนดไว้ใน การตั้งค่าระดับโปรเจกต์ (ใช้ได้เฉพาะในไดเรกทอรีนั้น)
- ใช้ การตั้งค่าระดับ global เพื่อใช้งานได้กับทุกโปรเจกต์
- commit ไฟล์
.mcp.jsonเพื่อให้นักพัฒนาทุกคนที่ทำงานร่วมกันสามารถใช้เครื่องมือได้ทันที- เช่น เมื่อลงทะเบียน Puppeteer และ Sentry server ใน
.mcp.jsonก็จะใช้งานได้ทั้งทีม
- เช่น เมื่อลงทะเบียน Puppeteer และ Sentry server ใน
หากต้องการ debug ปัญหาการตั้งค่าระหว่างใช้ MCP การรัน Claude ด้วย flag --mcp-debug จะมีประโยชน์มาก
c. คำสั่ง slash แบบกำหนดเอง
สำหรับ workflow ที่ทำซ้ำบ่อย ๆ (เช่น การดีบัก การวิเคราะห์ล็อก ฯลฯ)
สามารถบันทึก prompt template เป็นไฟล์ Markdown ไว้ในโฟลเดอร์ .claude/commands ได้
- เมื่อพิมพ์
/ใน Claude คำสั่งนั้นจะแสดงในเมนูเติมคำสั่งอัตโนมัติ - สามารถคอมมิตลง git เพื่อแชร์กับเพื่อนร่วมทีมได้
การส่งพารามิเตอร์: $ARGUMENTS
หากใส่ $ARGUMENTS ไว้ในคำสั่งแบบ slash ก็จะสามารถ แทรกพารามิเตอร์ที่ส่งมาตอนเรียกใช้คำสั่งโดยอัตโนมัติ ได้
ตัวอย่าง: วิเคราะห์และแก้ไข GitHub issue โดยอัตโนมัติ
Please analyze and fix the GitHub issue: $ARGUMENTS.
Follow these steps:
1. Use `gh issue view` to get the issue details
2. Understand the problem described in the issue
3. Search the codebase for relevant files
4. Implement the necessary changes to fix the issue
5. Write and run tests to verify the fix
6. Ensure code passes linting and type checking
7. Create a descriptive commit message
8. Push and create a PR
Remember to use the GitHub CLI (`gh`) for all GitHub-related tasks.
หากบันทึกเนื้อหาข้างต้นไว้ที่ .claude/commands/fix-github-issue.md ก็จะสามารถใช้เป็นคำสั่ง /project:fix-github-issue ได้
ตัวอย่าง: /project:fix-github-issue 1234 → Claude จะพยายามแก้ issue #1234 โดยอัตโนมัติ
หากบันทึกคำสั่งการตั้งค่าส่วนตัวไว้ในโฟลเดอร์ ~/.claude/commands ก็จะสามารถ ใช้งานได้ในทุกเซสชัน
# 3. ใช้งานเวิร์กโฟลว์ทั่วไป
Claude Code ไม่ได้บังคับเวิร์กโฟลว์แบบใดแบบหนึ่ง แต่ให้ ความยืดหยุ่นอย่างเต็มที่ กับผู้ใช้
และจากความยืดหยุ่นนี้ ก็เกิดเป็น รูปแบบการใช้งานที่ประสบความสำเร็จหลากหลายแบบ ในชุมชนผู้ใช้
a. สำรวจ → วางแผน → ลงมือทำ → คอมมิต
-
ขอให้ Claude อ่านไฟล์ รูปภาพ และ URL ที่เกี่ยวข้อง
- เช่น “ช่วยอ่านไฟล์ที่จัดการล็อกให้หน่อย”, “ช่วยอ่าน
logging.pyให้หน่อย” - แต่ต้องสั่งให้ชัดเจนว่าอย่าเพิ่งเขียนโค้ด
- ในขั้นตอนนี้ การใช้ subagents มีประสิทธิภาพมาก (ยิ่งปัญหาซับซ้อนก็ยิ่งได้ประโยชน์)
- เช่น “ช่วยอ่านไฟล์ที่จัดการล็อกให้หน่อย”, “ช่วยอ่าน
-
ขอให้ Claude วางแผนเพื่อแก้ปัญหา
- หากใช้คีย์เวิร์ดอย่าง “think”, “think hard”, “ultrathink” จะได้รับงบการประมวลผลมากขึ้น
- หากแผนสมเหตุสมผล ก็ควร สรุปแผนเป็นเอกสารหรือสร้างเป็น GitHub issue เพื่อมีจุดอ้างอิงสำหรับย้อนกลับมา
-
จากนั้นให้ Claude ลงมือเขียนโค้ดตามแผนที่วางไว้
- ระหว่างการทำงานยังสามารถ สั่งอย่างชัดเจนให้ตรวจสอบความถูกต้องของผลลัพธ์ด้วยตัวเอง ได้
-
สุดท้าย สั่งให้คอมมิตผลลัพธ์และสร้าง PR
- หากจำเป็น ก็ขอให้อัปเดต README หรือ CHANGELOG ไปพร้อมกันได้
📌 ในกระบวนการนี้ หาก ข้ามขั้นตอนที่ 1~2 Claude จะเริ่มเขียนโค้ดทันที ดังนั้นยิ่งเป็นปัญหาซับซ้อน ขั้นตอนการวางแผนก็ยิ่งสำคัญ
b. เขียนเทสต์ → คอมมิต → เขียนโค้ด → ทำซ้ำ → คอมมิต (การพัฒนาแบบขับเคลื่อนด้วยเทสต์)
เป็นวิธีที่ใช้กันบ่อยภายใน Anthropic และเหมาะกับงานที่มี unit/integration/e2e tests
-
ขอให้ Claude เขียนเทสต์จากเกณฑ์ input/output
- ระบุให้ชัดว่าเป็นการพัฒนาแบบขับเคลื่อนด้วยเทสต์ → เพื่อให้เขียนเฉพาะเทสต์โดยยังไม่ต้องทำฟีเจอร์
-
ขอให้ตรวจสอบว่าเทสต์ล้มเหลวจริงหรือไม่
- สั่งให้รันเฉพาะเทสต์ โดยยังไม่ต้องลงมือ implement
-
หากพอใจกับเทสต์แล้วก็ให้คอมมิต
-
ขอให้ Claude เขียนโค้ดที่ทำให้เทสต์ผ่าน
- ระบุชัดว่าอย่าแก้ไขเทสต์
- โดยทั่วไป มักต้องรันซ้ำหลายรอบกว่าจะผ่านเทสต์
- การใช้ subagents เพื่อ ตรวจสอบว่ามีการ overfit หรือไม่ ก็ได้ผลดี
-
เมื่อเทสต์ทั้งหมดผ่านแล้ว ให้สั่งคอมมิตโค้ด
✅ Claude ทำงานได้ดีที่สุดเมื่อมี เป้าหมายที่ชัดเจน (เช่น test case, รูปภาพ ฯลฯ)
c. เขียนโค้ด → ส่งภาพหน้าจอผลลัพธ์ → ปรับปรุงซ้ำ
- ตั้งค่าสภาพแวดล้อมที่ สามารถส่ง browser screenshot ได้โดยอัตโนมัติ (เช่น Puppeteer MCP, iOS simulator เป็นต้น)
- เตรียม visual mockup (เช่น วางรูปภาพหรือส่ง path)
- ขอให้ Claude ทำดีไซน์ตามที่ต้องการ → ส่งภาพหน้าจอผลลัพธ์ → ให้เปรียบเทียบและปรับปรุงอีกครั้ง
- หากพอใจก็ให้คอมมิต
💡 Claude ก็เหมือนคนตรงที่ เมื่อทำซ้ำ 2~3 รอบ ผลลัพธ์จะดีขึ้นมาก → ดังนั้น ลูป feedback ด้านภาพจึงสำคัญ
d. โหมด Safe YOLO
- ใช้ออปชัน
--dangerously-skip-permissionsเพื่อ ข้ามคำขออนุมัติทั้งหมด - Claude จะ ทำงานแบบอัตโนมัติเต็มรูปแบบโดยไม่ต้องขออนุมัติจากผู้ใช้
⚠️ มีความเสี่ยงเรื่อง ข้อมูลสูญหาย ระบบเสียหาย และ prompt injection → แนะนำให้รันเฉพาะในคอนเทนเนอร์ที่ตัดการเชื่อมต่ออินเทอร์เน็ตเท่านั้น
→ สำหรับตัวอย่างการใช้งาน แนะนำให้ใช้บน Docker Dev Container
e. ถาม-ตอบกับโค้ดเบส
- เมื่อต้องปรับตัวเข้ากับโปรเจ็กต์ใหม่ สามารถ ถาม Claude ได้เหมือนถามวิศวกรร่วมทีม
- Claude จะสำรวจโค้ดเบสและหาคำตอบด้วยตัวเอง
ตัวอย่างคำถาม:
- ระบบ logging ทำงานอย่างไร?
- ถ้าจะสร้าง API endpoint ใหม่ต้องทำอย่างไร?
async moveที่บรรทัด 134 ของfoo.rsทำหน้าที่อะไร?CustomerOnboardingFlowImplจัดการ edge case อะไรบ้าง?- ทำไมถึงเรียก
bar()แทนfoo()? - มีโค้ด Java แบบไหนที่คล้ายกับบรรทัด 334 ของ
baz.py?
📌 สำรวจได้ด้วย คำถามภาษาธรรมชาติเพียงอย่างเดียวโดยไม่ต้องมีพรอมป์ต์แยก
→ ที่ Anthropic ใช้วิธีนี้เป็น เครื่องมือหลักสำหรับการ onboarding
f. การเชื่อมต่อกับ Git
Claude ทำ งาน Git อัตโนมัติ ต่อไปนี้ได้ดี:
- ค้นหาประวัติ Git:
- เช่น "มีอะไรเปลี่ยนไปบ้างใน v1.2.3?", "ใครเป็นคนทำฟีเจอร์นี้?", "ทำไม API นี้ถึงมีโครงสร้างแบบนี้?"
- เขียนข้อความคอมมิต:
- สร้างให้อัตโนมัติโดยอิงจากการเปลี่ยนแปลงและบริบทโดยรอบ
- งาน Git ขั้นสูง:
- เช่นย้อนคืนไฟล์ แก้ rebase conflict เปรียบเทียบและรวมแพตช์ เป็นต้น
g. การเชื่อมต่อกับ GitHub
Claude Code สามารถทำงานที่เกี่ยวกับ GitHub แบบอัตโนมัติได้มากขึ้นอย่างมาก:
- สร้าง Pull Request:
- รู้จักคีย์เวิร์ด
prและสร้างข้อความคอมมิตให้อัตโนมัติตามการเปลี่ยนแปลง
- รู้จักคีย์เวิร์ด
- แก้คอมเมนต์รีวิวโค้ด:
- แค่บอกว่า "ช่วยแก้คอมเมนต์ใน PR ให้หน่อย" ก็สามารถแก้แล้ว push ได้
- แก้ build fail และ lint error
- จัดหมวดหมู่และจัดระเบียบ issue:
- ขอให้ Claude “ช่วยไล่ดู issue ที่เปิดอยู่แล้วจัดระเบียบให้หน่อย”
💡 ไม่จำเป็นต้องจำคำสั่ง gh ก็สามารถ ทำงาน GitHub แบบอัตโนมัติ ได้
h. การทำงานกับ Jupyter Notebook
- Claude สามารถอ่านและเขียนไฟล์
.ipynbได้ รวมถึง ตีความผลลัพธ์ที่มีรูปภาพประกอบ ได้ด้วย - แนะนำให้เปิด Claude Code กับไฟล์โน้ตบุ๊ก วางคู่กันใน VS Code เพื่อใช้งาน
ความสามารถเพิ่มเติม:
- ก่อนแชร์ให้ผู้อื่น สามารถ ขอให้จัดระเบียบโน้ตบุ๊กและปรับปรุงหน้าตา ได้
- คำขออย่าง “ช่วยจัดให้ดูดีหน่อย”, “ช่วยทำ visualization ให้สวยขึ้น” เหมาะกับการปรับมุมมองสำหรับมนุษย์และได้ผลดี
# 4. การปรับเวิร์กโฟลว์ให้เหมาะสม
ข้อเสนอด้านล่างคือ วิธีปรับแต่งที่ใช้ร่วมกันได้กับทุกเวิร์กโฟลว์
a. เขียนคำสั่งให้เฉพาะเจาะจง
Claude Code มี อัตราความสำเร็จสูงขึ้นเมื่อคำสั่งมีความเฉพาะเจาะจงมากขึ้น โดยเฉพาะในครั้งแรกที่ลอง
หากขอให้ชัดเจนตั้งแต่แรก ก็จะลดความจำเป็นในการแก้ไขระหว่างทางได้
เปรียบเทียบตัวอย่าง
- ❌
add tests for foo.py→ กว้างเกินไป
✅สำหรับ foo.py ให้เขียน test case ใหม่ที่ครอบคลุมกรณีผู้ใช้ที่ยังไม่ได้ล็อกอิน และห้ามใช้ mock - ❌
why does ExecutionFactory have such a weird api?→ กำกวม
✅ช่วยไล่ดู git history ของ ExecutionFactory แล้วสรุปเหตุผลว่าทำไม API จึงถูกออกแบบมาเป็นโครงสร้างแบบปัจจุบัน - ❌
add a calendar widget→ ทิศทางการพัฒนาไม่ชัดเจน
✅ช่วยวิเคราะห์รูปแบบการ 구현วิดเจ็ตที่มีอยู่เดิมบนหน้าแรก (เช่น HotDogWidget.php) เพื่อทำความเข้าใจแพตเทิร์นการแยกโค้ดกับอินเทอร์เฟซ แล้วสร้างวิดเจ็ตปฏิทินใหม่ด้วยแนวทางเดียวกัน โดยผู้ใช้ต้องสามารถเลือกเดือนได้และสลับหน้าเป็นรายปีได้ อนุญาตให้ใช้ไลบรารีภายนอกเฉพาะที่มีใช้อยู่แล้วในโปรเจกต์นี้เท่านั้น
Claude อาจอนุมานเจตนาได้ แต่ ไม่สามารถอ่านใจได้ → ความชัดเจนคือหัวใจสำคัญ
b. ให้รูปภาพ
Claude เก่งมากในการประมวลผลรูปภาพและไดอะแกรม
สามารถให้รูปภาพได้ด้วยวิธีต่อไปนี้:
- บน macOS กด
cmd+ctrl+shift+4→ จับภาพหน้าจอลงคลิปบอร์ด → วางด้วยctrl+v(ใช้ไม่ได้ในสภาพแวดล้อมระยะไกล) - ลากแล้ววางไฟล์รูปภาพ
- ระบุพาธของไฟล์รูปภาพ
มีประโยชน์มากกับงานอย่างการทำตามดีไซน์ม็อกอัปหรือการวิเคราะห์กราฟเชิงภาพ สำหรับงาน UI/การแสดงข้อมูลเป็นภาพ
แม้ไม่มีภาพประกอบ การระบุให้ชัดเจนว่า คุณภาพด้านภาพของผลลัพธ์มีความสำคัญหรือไม่ ก็ช่วยได้มาก
c. ระบุไฟล์ที่จะทำงาน
หากบอก Claude ให้ ชัดเจนว่าจะให้อ้างอิงหรือแก้ไขไฟล์ใด จะช่วยเพิ่มความแม่นยำในการทำงาน
- ใช้การเติมคำอัตโนมัติด้วยปุ่ม Tab เพื่อ พิมพ์พาธไฟล์/โฟลเดอร์ได้รวดเร็ว
d. ให้ URL กับ Claude
ถ้าส่ง URL ให้ Claude ก็จะ อ่านเอกสารหรือเว็บเพจนั้นได้โดยตรง
- เช่น ลิงก์เอกสาร API, หน้า design system เป็นต้น
- หากต้องเข้าถึงโดเมนเดิมซ้ำ ๆ สามารถใช้คำสั่ง
/allowed-toolsเพื่อ เพิ่มโดเมนเข้า whitelist และไม่ต้องขออนุมัติทุกครั้ง
e. ปรับทิศทางให้ไวและบ่อยครั้ง (course redirection)
สามารถกด Shift + Tab เพื่อใช้งาน โหมดอนุมัติอัตโนมัติ (auto-accept mode) ให้ทำงานอัตโนมัติได้
แต่โดยทั่วไป การร่วมมือกับ Claude อย่างใกล้ชิดและคอยปรับทิศทางจะให้ผลลัพธ์ที่ดีกว่า
เครื่องมือปรับทิศทางที่มีประโยชน์ 4 อย่าง:
- ขอแผนก่อนเสมอ: ให้จัดทำแผนก่อนลงมือพัฒนา และค่อยดำเนินการหลังตรวจสอบแล้ว
- กด Escape เพื่อหยุดทันที: จะหยุดกลางคันได้ทุกเมื่อ ไม่ว่าจะกำลังคิดหรือกำลังแก้ไขไฟล์
- กด Escape สองครั้งเพื่อแก้ไขพรอมป์ก่อนหน้า: แก้คำสั่งเดิมแล้วเปลี่ยนไปสู่ทิศทางใหม่ได้
- ขอให้ย้อนการเปลี่ยนแปลง: ให้ Claude rollback สิ่งที่แก้ไปเพื่อทดลองแนวทางอื่น
บางครั้ง Claude ก็แก้ปัญหาได้สมบูรณ์ในครั้งเดียว แต่ถ้าใช้เครื่องมือข้างต้นก็จะช่วยให้ ได้ผลลัพธ์ที่เร็วและแม่นยำยิ่งขึ้น
f. รีเซ็ตบริบทด้วยคำสั่ง /clear
เมื่อเซสชันยาวนานขึ้น หน้าต่างบริบท (context window) ของ Claude อาจเต็มไปด้วยข้อมูลที่ไม่จำเป็นจนทำให้ประสิทธิภาพลดลง
→ จึงแนะนำให้ รีเซ็ตบริบทด้วย /clear ทุกครั้งตามหน่วยงาน
g. ใช้ checklist และ scratchpad
สำหรับงานที่ซับซ้อน (เช่น การย้ายโค้ด, การแก้ lint error จำนวนมาก ฯลฯ)
การ ใช้ไฟล์ Markdown หรือ GitHub issue เป็น checklist จะช่วยเพิ่มประสิทธิภาพ
ตัวอย่าง: การแก้ lint error
- ขอให้ Claude รันคำสั่ง lint → สรุปข้อความ error ออกมาเป็น checklist ในรูปแบบ Markdown
- จัดการทีละรายการ ตรวจสอบแล้วค่อยเช็กเครื่องหมายถูก → จากนั้นไปยังรายการถัดไป
แนวทางนี้ช่วยให้ ติดตามความคืบหน้าและควบคุมคุณภาพได้พร้อมกัน
h. การส่งข้อมูลให้ Claude
มีหลายวิธีในการส่งข้อมูลให้ Claude:
- คัดลอก/วาง (วิธีที่ใช้กันมากที่สุด)
- ป้อนผ่าน pipe (เช่น
cat foo.txt | claude)- เหมาะกับ log, CSV, ข้อความขนาดใหญ่
- สั่งให้ดึงมาโดยตรงผ่านคำสั่ง bash, เครื่องมือ MCP หรือ slash command
- ขอให้อ่านไฟล์หรือ URL (รวมถึงรูปภาพ)
ในการใช้งานจริง การผสมหลายวิธีเข้าด้วยกันเป็นเรื่องปกติ
เช่น ส่ง log ผ่าน pipe แล้วขอให้ Claude ใช้เครื่องมือ MCP เพื่อดึงบริบทเพิ่มเติม
# 5. ทำระบบอัตโนมัติด้านโครงสร้างพื้นฐานด้วยโหมด Headless
Claude Code รองรับ โหมด headless สำหรับ สภาพแวดล้อมแบบไม่โต้ตอบ (CI, pre-commit hook, build script, automation ฯลฯ)
- รันโหมด headless พร้อมพรอมป์ผ่านแฟลก
-p - ใช้ เอาต์พุต JSON แบบสตรีมมิง ได้ด้วยตัวเลือก
--output-format stream-json
⚠️ โหมด headless จะไม่คงอยู่ข้ามเซสชัน และต้องเรียกใช้งานใหม่ทุกครั้ง
a. จัดหมวดหมู่ issue อัตโนมัติด้วย Claude
โหมด headless เหมาะกับ ทริกเกอร์งานอัตโนมัติที่อิงกับ GitHub event
เช่น วิเคราะห์ issue ใหม่และจัดประเภท label ให้อัตโนมัติเมื่อมีการสร้าง issue
- ในทางปฏิบัติ รีโพสาธารณะของ Claude Code ก็ใช้ความสามารถนี้เพื่อ ติด label ให้ issue ใหม่โดยอัตโนมัติ
b. ใช้ Claude เป็น linter
Claude สามารถทำ code review เชิงอัตวิสัย ที่เครื่องมือ lint แบบดั้งเดิมตรวจจับได้ยากให้เป็นอัตโนมัติ
ตัวอย่างเช่น:
- คำสะกดผิด
- คอมเมนต์ที่ล้าสมัย
- ชื่อฟังก์ชัน/ตัวแปรที่ชวนให้เข้าใจผิด
- ลำดับการไหลของโค้ดที่ไม่เป็นธรรมชาติ เป็นต้น
ทำให้สามารถ ยกระดับคุณภาพโค้ดได้เหนือกว่าเครื่องมือ static analysis
# 6. ยกระดับด้วยเวิร์กโฟลว์ Multi-Claude
นอกเหนือจากการใช้ Claude เพียงตัวเดียวแล้ว แนวทางการรัน Claude หลายอินสแตนซ์แบบขนาน เป็นวิธีใช้งานที่ทรงพลังมาก
เช่นเดียวกับที่วิศวกรหลายคนร่วมมือกัน กลยุทธ์การแบ่งงานให้ Claude สามารถ เพิ่มทั้งประสิทธิภาพและคุณภาพ ได้พร้อมกัน
a. Claude ตัวหนึ่งเขียนโค้ด อีกตัวตรวจรีวิว
แพตเทิร์นที่ง่ายที่สุดแต่มีประสิทธิภาพ:
- Claude 1: เขียนโค้ด
- ใช้
/clearหรือเปิด Claude 2 ในเทอร์มินัลอีกอัน → รีวิวโค้ดที่เขียนไว้ - เปิด Claude 3 หรือ
/clearอีกครั้ง → อ่านทั้งโค้ดและรีวิว แล้วนำไปแก้ไข
หรือ
- Claude 1: เขียน test
- Claude 2: เขียนโค้ดให้ test ผ่าน
❗ ระหว่างอินสแตนซ์ของ Claude สามารถ แชร์ scratchpad แยกกัน ได้ด้วย
หรือกำหนด การแยกบทบาท แบบ “Claude นี้เขียนได้เฉพาะไฟล์ A ส่วนอีก Claude อ่านได้เฉพาะไฟล์ B” ก็ได้
📌 หลายกรณี การแยกงานจะให้ผลลัพธ์ดีกว่าใช้ Claude เพียงตัวเดียว
b. checkout รีโพหลายชุด
แทนที่จะรอให้ Claude ทำงานเสร็จทีละอย่าง คุณสามารถ สร้างไดเรกทอรี Git checkout หลายชุดเพื่อทำงานแบบขนาน ได้
- สร้าง git checkout 3-4 ชุดในโฟลเดอร์แยกกัน
- เปิดแต่ละโฟลเดอร์ในแท็บเทอร์มินัลคนละอัน
- มอบหมายงานต่างกันให้แต่ละ Claude instance
- สลับแท็บเพื่อตรวจความคืบหน้าและกดอนุมัติ/ปฏิเสธ
c. ใช้ Git worktree
git worktree คือฟีเจอร์ของ Git ที่ช่วยให้ checkout หลาย branch จากรีโพเดียวกันไปยังคนละไดเรกทอรี
→ เหมาะอย่างยิ่งสำหรับจัดการงานอิสระหลายงานแบบขนาน
ตัวอย่าง:
- Claude ตัวหนึ่งรีแฟกเตอร์ระบบยืนยันตัวตน
- อีกตัวสร้างคอมโพเนนต์การแสดงข้อมูลเป็นภาพแยกต่างหาก
- ไม่รบกวนกัน → ใช้ความขนานได้สูงสุด
วิธีใช้
- สร้าง worktree:
git worktree add ../project-feature-a feature-a - รัน Claude:
cd ../project-feature-a && claude - ทำซ้ำตามต้องการ
เคล็ดลับ
- ตั้งชื่อ worktree ให้สม่ำเสมอ
- หนึ่งแท็บเทอร์มินัลต่อหนึ่ง worktree
- หากใช้ iTerm2 (Mac) แนะนำให้ตั้งค่าการแจ้งเตือน
- แยก IDE ให้สอดคล้องกับแต่ละ worktree ด้วย
- เมื่องานเสร็จแล้วให้เก็บกวาด:
git worktree remove ../project-feature-a
d. โหมด headless + โครงสร้าง automation แบบกำหนดเอง
โหมด headless (claude -p) ทำให้สามารถ ผสาน Claude Code เข้ากับเวิร์กโฟลว์แบบโปรแกรมได้
เมื่อนำไปใช้ร่วมกับเครื่องมือของ Claude เองและ system prompt ก็จะสามารถใช้สองแพตเทิร์นต่อไปนี้ได้
1. Fanning out: กระจายงาน migration/analysis ขนาดใหญ่
ตัวอย่าง:
- ขอให้ Claude เขียนสคริปต์สร้างรายการงาน
→ ตัวอย่าง: สร้างรายการไฟล์ 2,000 ไฟล์ที่จะย้ายจาก React ไปเป็น Vue - รันแต่ละงานด้วย
claude -p
→ ตัวอย่าง:
claude -p "migrate foo.py from React to Vue. When done, return OK or FAIL." --allowedTools Edit Bash(git commit:*) - ปรับปรุงพรอมต์หลายรอบเพื่อเพิ่มประสิทธิภาพให้เหมาะสม
2. Pipelining: ผสานรวมไปป์ไลน์ข้อมูล/การประมวลผล
- ส่งต่อเอาต์พุตของ Claude เข้าสู่คำสั่งถัดไปโดยตรง:
claude -p "<your prompt>" --json | your_command - ด้วยโครงสร้างเอาต์พุตแบบ JSON ของ Claude จึง เหมาะกับการประมวลผลอัตโนมัติ
เคล็ดลับการดีบัก
- ระหว่างทดสอบ ให้ใช้
--verboseเพื่อตรวจสอบลำดับการทำงานของ Claude - ในการใช้งานจริง แนะนำให้ปิด verbose เพื่อให้เอาต์พุตสะอาดและอ่านง่าย
2 ความคิดเห็น
ค่าใช้จ่ายจะอยู่ที่ประมาณเท่าไหร่ครับ
ความคิดเห็นจาก Hacker News
ฟีเจอร์ "ultrathink" น่าสนใจ
น่าแปลกใจที่ไม่มีหัวข้อเกี่ยวกับ "การควบคุมค่าใช้จ่าย"
มีการใช้ Cursor อย่างหนัก และบางครั้งโมเดลก็แก้โค้ดที่ไม่ได้ร้องขอ
เคยลองใช้ Claude Code แต่เปลี่ยนไปใช้ Gemini AI เพราะปัญหาเรื่องค่าใช้จ่าย
การใช้ Claude Code ให้มีประสิทธิภาพต้องเสียค่าใช้จ่ายมาก
ความเห็นส่วนตัวเรื่องความคุ้มค่าระหว่าง Claude Sonnet กับ Gemini
การใช้หลาย checkout เป็นเรื่องที่น่าสนใจ
git worktreesเป็นครั้งแรก และเป็นวิธีจัดการหลาย checkout ได้อย่างมีประสิทธิภาพสงสัยว่ามีทางเลือกแทน Claude Code ของ Gemini และ Codex ของ OpenAI อะไรบ้าง
ปกติทำงานใน neovim แต่เปิด Cursor เพื่อเขียนโค้ด boilerplate
กลัวค่าใช้จ่ายเลยยังไม่กล้าใช้