หน้าแรก/คู่มือ AI/ใช้ Claude Code ในงานพัฒนาจริง: Permissions, Subagents และ MCP
อัปเดต 28 ก.ค. 2026

ใช้ Claude Code ในงานพัฒนาจริง: Permissions, Subagents และ MCP

บทความนี้เจาะลึกกว่าคู่มือเริ่มต้น — เหมาะกับคนที่ติดตั้ง Claude Code แล้วและอยากใช้ในงานพัฒนาจริงอย่างเป็นระบบ: ควบคุมสิทธิ์การทำงาน แยกงานให้ subagent ทำ เชื่อมเครื่องมือภายนอก และรันอัตโนมัติใน CI

ยังไม่เคยใช้ Claude Code มาก่อน อ่าน คู่มือ Claude Code ฉบับเริ่มต้น ก่อน แล้วค่อยกลับมาอ่านบทความนี้เพื่อลงลึกเวิร์กโฟลว์

เข้าใจ CLAUDE.md และ Auto Memory ให้ถูกต้อง#

CLAUDE.md คือไฟล์ markdown ที่ Claude Code โหลดเป็นบริบทตั้งต้นทุกเซสชัน มีได้หลายระดับและ โหลดรวมกันทั้งหมด (ไม่ใช่ไฟล์ใกล้สุดชนะ):

  • ระดับองค์กร (แอดมินติดตั้งไว้)
  • ผู้ใช้: ~/.claude/CLAUDE.md (ทุกโปรเจกต์)
  • โปรเจกต์: ./CLAUDE.md หรือ ./.claude/CLAUDE.md (แชร์ผ่าน git)
  • ส่วนตัว: ./CLAUDE.local.md (ใส่ .gitignore ไว้)

ใช้คำสั่ง /init ให้ Claude สร้าง CLAUDE.md เริ่มต้นจากการอ่านโค้ดในโปรเจกต์ และรองรับ syntax @path/to/file เพื่อ import ไฟล์อื่นเข้ามา (ลึกได้สูงสุด 4 ชั้น)

อย่าเขียน CLAUDE.md ยาวเกินไป — เอกสารแนะนำให้อยู่ที่ประมาณ 200 บรรทัด เพราะยิ่งยาวยิ่งทำตามได้แย่ลง (มันคือบริบท ไม่ใช่ config ที่บังคับได้)

ตัวอย่าง CLAUDE.md ที่ใช้ได้จริง:

# Project Overview
E-commerce API — Node.js + PostgreSQL, deploy บน Railway

# Commands
- Test: `npm test`
- Lint: `npm run lint`
- Dev server: `npm run dev`

# Guidelines
- ใช้ TypeScript strict mode เสมอ
- เขียน test ก่อน merge ทุก PR
- ห้ามแก้ไฟล์ใน /migrations ที่ deploy แล้ว

# Definition of Done
- ผ่าน lint และ test ทั้งหมด
- มี PR description อธิบายเหตุผล ไม่ใช่แค่สิ่งที่เปลี่ยน

อย่าสับสนกับ Auto Memory — บันทึกที่ Claude เขียนเองเก็บไว้ที่ ~/.claude/projects/<project>/memory/MEMORY.md (เช่น คำสั่ง build ที่เจอ, ข้อสังเกตตอน debug) เปิด/ปิดได้ด้วย /memory

ระบบ Permissions: คุมว่า Claude ทำอะไรได้บ้าง#

Claude Code ใช้ระบบอนุมัติแบบมีชั้น: เครื่องมืออ่านอย่างเดียว (Read, Grep) ทำงานได้เลยในโฟลเดอร์ทำงาน ส่วนคำสั่ง Bash และการแก้ไฟล์ต้องขออนุมัติ — กำหนดกฎเองได้ใน settings.json:

{
  "permissions": {
    "allow": ["Bash(npm run lint)", "Read(~/.zshrc)"],
    "deny": ["Bash(curl *)", "Read(./.env)", "Read(./secrets/**)"]
  }
}

ลำดับการตรวจคือ deny → ask → allow (เจอ deny ก่อนจบทันที ไม่สนว่ากฎไหนเจาะจงกว่า) และตั้งค่าได้ 4 ระดับ: องค์กร (แก้ไม่ได้) > CLI flag > .claude/settings.local.json (ส่วนตัว, ไม่ commit) > .claude/settings.json (ทีม, commit ได้) > ~/.claude/settings.json (ผู้ใช้)

Permission Modes ที่ควรรู้#

สลับโหมดด้วย Shift+Tab:

โหมด พฤติกรรม
default (Manual) ถามทุกครั้งก่อนแก้ไฟล์/รันคำสั่ง
plan สำรวจอย่างเดียว ไม่แก้ไฟล์จนกว่าจะอนุมัติแผน
acceptEdits อนุมัติการแก้ไฟล์อัตโนมัติ
auto มีตัวคัดกรองความปลอดภัยช่วยตัดสินใจ (ต้องใช้โมเดลระดับสูง)
dontAsk ปฏิเสธทุกอย่างที่ไม่ได้ pre-approve — ออกแบบมาสำหรับ CI
bypassPermissions ข้ามการถามเกือบทั้งหมด

bypassPermissions (--dangerously-skip-permissions) เอกสารทางการระบุชัดว่า "ไม่ป้องกัน prompt injection หรือการกระทำที่ไม่ตั้งใจ" ควรใช้เฉพาะใน container/VM ที่แยกจากอินเทอร์เน็ตและไม่มีสิทธิ์เข้าถึงระบบจริงเท่านั้น ห้ามใช้บนเครื่องที่มี credential การใช้งานจริงอยู่

โหมด auto ก็ไม่ใช่การรับประกัน — Anthropic เปิดเผยว่าตัวคัดกรองยังมีอัตรา false-negative (ปล่อยผ่านสิ่งที่ควรเตือน) อยู่ในระดับที่ต้องระวัง จึงควรใช้ควบคู่กับการตรวจ diff เองในงานสำคัญ

Plan Mode: ให้ Claude คิดก่อนลงมือ#

เข้าโหมดนี้ด้วย Shift+Tab, พิมพ์ /plan, หรือสั่ง claude --permission-mode plan ตอนเริ่ม — Claude จะอ่านไฟล์และรันคำสั่งอ่านอย่างเดียวเพื่อสำรวจ (ผ่าน subagent "Plan" ที่แยก context ต่างหาก) แล้วเสนอแผนก่อน ไม่แตะไฟล์จริงจนกว่าคุณจะอนุมัติ กด Ctrl+G เพื่อแก้ไขแผนเองก่อนให้ลงมือได้

Subagents: แยกงานให้ agent ย่อยทำ ไม่กิน context หลัก#

Subagent มี context window, system prompt และสิทธิ์เป็นของตัวเอง — Claude Code มีติดตัว 3 ตัว: Explore (ค้นหาอย่างเดียว), Plan (สำรวจตอนวางแผน), general-purpose (ทำงานได้ครบ)

สร้าง subagent เองได้ที่ .claude/agents/<ชื่อ>.md:

---
name: code-reviewer
description: รีวิวโค้ดเรื่องคุณภาพและ best practices
tools: Read, Glob, Grep
model: sonnet
---
คุณคือ code reviewer ที่ตรวจสอบ...

ใช้ subagent กับงานที่ output เยอะ เช่น รัน test ทั้งชุด วิเคราะห์ log ยาว หรือค้นทั้ง codebase — จะได้แค่สรุปกลับมาที่บทสนทนาหลัก ไม่ทำให้ context หลักเต็มเร็ว

Hooks: บังคับให้เกิดขึ้นจริง ไม่ใช่แค่ขอให้ทำ#

Hooks คือคำสั่ง shell ที่รันแน่นอนเมื่อถึง event ที่กำหนด (PreToolUse, PostToolUse, SessionStart ฯลฯ) — ต่างจาก CLAUDE.md ตรงที่ ระบบบังคับจริง ไม่ใช่แค่คำแนะนำที่โมเดลอาจไม่ทำตาม

ตัวอย่างที่ใช้ได้จริง: รัน Prettier อัตโนมัติหลังทุกครั้งที่แก้ไฟล์ (PostToolUse + matcher Edit|Write) หรือบล็อกการแก้ .env/package-lock.json ด้วย PreToolUse script ที่ตรวจ path แล้ว exit 2

อย่าพึ่งแค่ประโยคใน CLAUDE.md เพื่อกันการกระทำอันตราย — ถ้าต้องการบังคับจริง ให้ใช้ deny rule หรือ hook เท่านั้น

เชื่อมเครื่องมือภายนอกด้วย MCP#

เพิ่ม MCP server ด้วยคำสั่ง claude mcp add:

claude mcp add --transport http notion https://mcp.notion.com/mcp
claude mcp add --env KEY=value --transport stdio myserver -- npx -y some-mcp-server

มี 3 ระดับ: local (ต่อโปรเจกต์, ไม่แชร์), project (.mcp.json แชร์ผ่าน git ทีมต้องอนุมัติครั้งแรก), user (ทุกโปรเจกต์) ดูรายการที่ติดตั้งด้วย claude mcp list หรือ /mcp ระหว่างใช้งาน

Git Workflow: Commit, PR และ Worktrees สำหรับงานขนาน#

สั่งด้วยภาษาธรรมดาได้เลย เช่น "commit การเปลี่ยนแปลงพร้อมข้อความอธิบาย" หรือ "สร้าง PR" — PR ที่สร้างผ่าน gh pr create จะผูกกับเซสชันนั้น เรียกกลับมาดูทีหลังได้ด้วย claude --from-pr 1234

อยากทำงานหลายสายพร้อมกันบน repo เดียว ใช้ claude --worktree <ชื่อ> (หรือ -w) — สร้าง git worktree แยกบน branch ใหม่ ทำให้สองเทอร์มินัลแก้ repo เดียวกันคนละ branch โดยไม่ชนกัน

รันแบบ Headless สำหรับ CI/Automation#

cat build-error.txt | claude -p 'อธิบายสาเหตุที่แท้จริงแบบกระชับ' > output.txt

claude -p (หรือ --print) รันแบบไม่โต้ตอบ รองรับ --output-format text|json|stream-json, --allowedTools จำกัดเครื่องมือที่ใช้ได้ และ --bare (แนะนำสำหรับ CI) เพื่อข้ามการโหลด hooks/skills/MCP/CLAUDE.md จากเครื่อง ไม่ให้ผลลัพธ์ขึ้นกับ config เครื่องนั้น ๆ

สำหรับ GitHub มี Claude Code GitHub Actions ติดตั้งง่ายด้วย /install-github-app ในเซสชัน — ตอบกลับเมื่อมีคนพิมพ์ @claude ใน PR/issue หรือรันตาม event ที่กำหนด (schedule, pull_request) โดยส่ง flag ผ่าน claude_args

ใน CI ควรใช้ --allowedTools แคบ ๆ หรือโหมด dontAsk เพื่อไม่ให้งานค้างรอ permission prompt ที่ไม่มีใครตอบ

Custom Commands กลายเป็น Skills#

คำสั่งลัดแบบเดิมที่ .claude/commands/<ชื่อ>.md ยังใช้ได้ แต่เอกสารปัจจุบันรวมเข้ากับระบบ Skills แล้ว — รูปแบบใหม่คือ .claude/skills/<ชื่อ>/SKILL.md พร้อม frontmatter (description เป็นหลัก, เลือกได้เช่น allowed-tools, context: fork ให้รันใน subagent) ชื่อโฟลเดอร์จะกลายเป็น /คำสั่ง และ Claude อาจเรียกใช้เองตาม description ได้ถ้าไม่ปิดไว้

จัดการ Context Window#

  • /compact สรุปประวัติสนทนาให้สั้นลง (รันอัตโนมัติเมื่อใกล้เต็ม หรือสั่งเองพร้อมโฟกัส เช่น /compact focus on the auth bug)
  • /clear ล้างสนทนาเริ่มใหม่ — ใช้ตอนเปลี่ยนไปทำงานคนละเรื่อง
  • /context ดูว่าอะไรกิน context อยู่บ้าง (CLAUDE.md, auto memory, MCP schema ฯลฯ)

หลัง /compact ระบบจะโหลด CLAUDE.md ที่ root ใหม่อัตโนมัติ แต่ CLAUDE.md ในโฟลเดอร์ย่อยจะ ไม่ โหลดซ้ำจนกว่าจะมีการอ่านไฟล์ในโฟลเดอร์นั้นอีกครั้ง — เป็นจุดที่มักลืมกัน

Checklist ก่อนใช้กับโปรเจกต์สำคัญ#

  • ตั้ง deny rule กันไฟล์ลับ (.env, secrets/**) ไว้ใน settings.json ของทีม
  • ใช้ Plan Mode กับงานที่ไม่คุ้นเคยหรือมีความเสี่ยงก่อนเปิด acceptEdits
  • เพิ่ม PostToolUse hook ให้ format/lint อัตโนมัติ และ PreToolUse hook กันแก้ lockfile
  • ใน CI ใช้ --bare + --allowedTools แคบ ๆ ไม่ปล่อยรอ permission prompt
  • ตรวจ diff ทุกครั้งก่อน commit แม้จะเปิดโหมด auto ไว้ก็ตาม

FAQ#

CLAUDE.md ต่างจาก Auto Memory อย่างไร? CLAUDE.md เป็นไฟล์ที่คนเขียนเพื่อกำหนดกฎ/บริบทให้ Claude อ่าน ส่วน Auto Memory คือบันทึกที่ Claude เขียนขึ้นเองระหว่างทำงาน (เช่น คำสั่ง build ที่เจอ) เก็บคนละไฟล์กัน

bypassPermissions ปลอดภัยไหม? เอกสารทางการระบุว่าไม่ป้องกัน prompt injection หรือการกระทำที่ไม่ตั้งใจ ควรใช้เฉพาะใน container/VM ที่แยกจากอินเทอร์เน็ตและไม่มีสิทธิ์เข้าถึงระบบจริงเท่านั้น

ใช้ Claude Code ใน CI ได้ไหม? ได้ ผ่านโหมด headless (claude -p) หรือ Claude Code GitHub Actions ควรจำกัดเครื่องมือที่ใช้ได้แคบ ๆ และใช้ --bare เพื่อไม่ให้ผลลัพธ์ขึ้นกับ config เครื่อง

อ่านต่อ#

แหล่งอ้างอิง#