PATIPHAN DEV
หน้าแรกคอร์สเรียนผลงานสินค้าบทความเกี่ยวกับผมติดต่อ
เข้าสู่ระบบ
ศัพท์และพื้นฐาน Claude สำหรับผู้เริ่มต้น
ความคืบหน้า0/15 บทเรียน (0%)

บทที่ 1 · รู้จัก Claude ก่อนเริ่มใช้งาน

  • Claude คืออะไร มีกี่แบบ ต่างกันตรงไหน15 นาที
  • รู้จักตระกูลโมเดล Claude: Opus, Sonnet, Haiku, Fable เลือกใช้ตัวไหนดี18 นาที
  • Prompt, Token และ Context Window คืออะไร15 นาที

บทที่ 2 · ไฟล์และโฟลเดอร์สำคัญที่ Claude Code ใช้

  • CLAUDE.md ทำหน้าที่อะไร ต่างจาก README ยังไง15 นาที
  • settings.json กับ settings.local.json ต่างกันตรงไหน18 นาที
  • ข้างในโฟลเดอร์ .claude/ มีอะไรบ้าง18 นาที

บทที่ 3 · ศัพท์เทคนิคที่เจอบ่อยตอนใช้งาน

  • Subagent คืออะไร ใช้ตอนไหน16 นาที
  • Skill กับ Slash Command ต่างกันยังไง16 นาที
  • MCP (Model Context Protocol) คืออะไร ทำไมสำคัญ18 นาที

บทที่ 4 · เตรียมพร้อมก่อนเริ่มใช้งานจริง

  • ศัพท์ที่เจอบ่อยแบบสรุปย่อ (Cheat Sheet)12 นาที
  • คำถามที่พบบ่อยสำหรับผู้เริ่มต้น (FAQ)15 นาที
100%

settings.json กับ settings.local.json ต่างกันตรงไหน

ใช้เวลาประมาณ 18 นาที

ในบทนี้

  1. 1.settings.json คืออะไร
  2. 2.ตำแหน่งไฟล์และลำดับความสำคัญ (precedence)
  3. 3.settings.json vs settings.local.json
  4. 4.ตัวอย่างโครงสร้างไฟล์จริง
  5. 5.เปลี่ยนแล้วมีผลทันทีไหม
  6. 6.สรุป

settings.json คืออะไร

settings.json คือไฟล์ config ของ Claude Code ที่ควบคุมว่า Claude "ทำอะไรได้บ้าง" ไม่ใช่ "รู้อะไรบ้าง" (นั่นเป็นหน้าที่ของ CLAUDE.md) พูดง่ายๆ คือ CLAUDE.md บอกความรู้/บริบท ส่วน settings.json คุมสิทธิ์และพฤติกรรมของตัวโปรแกรม เช่น

  • เลือกโมเดลที่ใช้ (model)
  • คำสั่ง shell/tool ที่อนุญาตหรือห้าม (permissions)
  • MCP server ที่เชื่อมต่อ (mcpServers)
  • hook ที่ทำงานตาม lifecycle event ต่างๆ (hooks)
  • environment variable ที่ inject เข้าทุก session (env)

ตำแหน่งไฟล์และลำดับความสำคัญ (precedence)

Claude Code อ่าน settings จากหลายจุด เรียงจากสิทธิ์สูงสุด (ทับได้ยากสุด) ไปต่ำสุดดังนี้:

  1. Managed — managed-settings.json ที่ IT/องค์กร deploy มา (ทับไม่ได้)

บทถัดไป

ข้างในโฟลเดอร์ .claude/ มีอะไรบ้าง

ใช้เวลาประมาณ 18 นาที

บทก่อนหน้า: CLAUDE.md ทำหน้าที่อะไร ต่างจาก README ยังไง
.env และการเก็บ API key อย่างปลอดภัย
15 นาที
Hook คืออะไร ใช้ทำอะไรได้บ้าง
16 นาที
  • Permission Mode คืออะไร ควบคุมอะไรบ้าง15 นาที
  • Plan Mode คืออะไร ช่วยอะไรก่อนลงมือทำงานจริง14 นาที
  • Command line arguments — override ชั่วคราวเฉพาะ session นั้น
  • Local: .claude/settings.local.json — ส่วนตัวระดับเครื่อง
  • Project: .claude/settings.json — แชร์กับทีมผ่าน git
  • User: ~/.claude/settings.json — ส่วนตัวใช้ทุกโปรเจกต์ (ความสำคัญต่ำสุด)
  • กฎ permissions จาก scope ต่างๆ จะ merge (รวม) กัน ไม่ใช่ override ทั้งหมด

    settings.json vs settings.local.json

    ✗ settings.json

    • อยู่ที่ .claude/settings.json
    • Commit เข้า git ได้ ทีมใช้ config เดียวกัน
    • เหมาะกับ: permission ที่ทั้งทีมเห็นตรงกัน, hooks มาตรฐานของโปรเจกต์, MCP server ที่ทุกคนต้องใช้
    • การเพิ่ม allow rule ระดับนี้ ต้องผ่าน workspace trust dialog ก่อน

    ✗ settings.local.json

    • อยู่ที่ .claude/settings.local.json
    • ไม่ commit เข้า git (ควรอยู่ใน .gitignore)
    • เหมาะกับ: preference ส่วนตัว, credential เฉพาะเครื่อง, permission ที่คุณอยากอนุญาตแค่ตัวเอง
    • allow rule ระดับ local มีผลได้ทันทีโดยไม่ต้องผ่าน trust dialog

    ทำไมต้องแยกสองไฟล์

    เหตุผลหลักคือ ความปลอดภัยและความสอดคล้องของทีม — settings.json ที่ commit เข้า repo ทำให้ทุกคนในทีมมี baseline เดียวกัน (เช่น hooks รัน linter, MCP server ที่โปรเจกต์ต้องใช้) ส่วน settings.local.json กันไม่ให้ config ส่วนตัวของคุณ (เช่น path เฉพาะเครื่อง หรือ permission ที่คุณอยากปลดล็อกเพิ่มเพื่อความสะดวกส่วนตัว) หลุดเข้าไปรบกวนเพื่อนร่วมทีมคนอื่น

    ตัวอย่างโครงสร้างไฟล์จริง

    {
      "$schema": "https://json.schemastore.org/claude-code-settings.json",
      "permissions": {
        "allow": ["Bash(npm run lint)", "Bash(npm test)"],
        "deny": ["Bash(curl *)", "Read(./.env)", "Read(./.env.*)"]
      },
      "env": {
        "NODE_ENV": "development"
      },
      "model": "claude-sonnet-4-6"
    }
    

    field สำคัญที่พบบ่อยและมีเอกสารทางการรองรับ:

    • permissions.allow / permissions.deny — รายการ pattern ของ tool/คำสั่งที่อนุญาตหรือห้ามอย่างชัดเจน เช่น "Bash(npm run *)", "Read(~/.zshrc)"
    • env — object แบบ key-value ของ environment variable ที่ inject เข้าทุก session และทุกคำสั่งที่รันผ่าน Bash tool
    • model — กำหนดโมเดลหลักที่ใช้ (อ่านค่าตอนเริ่ม session เท่านั้น เปลี่ยนกลางทางต้องใช้คำสั่ง /model)
    • hooks — script ที่ทำงานอัตโนมัติตาม lifecycle event เช่นก่อน/หลังใช้ tool
    • mcpServers — การตั้งค่า MCP server ระดับ user/local (โปรเจกต์ใช้ไฟล์ .mcp.json แยกต่างหาก)

    ห้าม commit ค่าที่เป็นความลับ (API key, token, password) ลงใน settings.json เพราะไฟล์นี้เข้า git ได้ ถ้าต้องใช้ credential เฉพาะเครื่อง ให้ใส่ใน settings.local.json หรือใช้ .env (บทถัดไปจะอธิบาย) แทน

    เปลี่ยนแล้วมีผลทันทีไหม

    Claude Code จะ watch ไฟล์ settings และ reload ให้อัตโนมัติเมื่อมีการแก้ไข field ส่วนใหญ่ เช่น permissions, hooks, env จะมีผลทันทีโดยไม่ต้อง restart session แต่บาง field อย่าง model จะถูกอ่านแค่ตอนเริ่ม session เท่านั้น ต้อง restart หรือใช้คำสั่ง /model เพื่อเปลี่ยนกลางทาง

    สรุป

    ให้จำง่ายๆ ว่า settings.json = สิ่งที่ทีมตกลงร่วมกันและ commit ได้, settings.local.json = ของส่วนตัวที่ไม่ควรหลุดเข้า repo ทั้งสองไฟล์อยู่ในโฟลเดอร์ .claude/ เดียวกัน ซึ่งบทถัดไปเราจะพาไปดูว่าในโฟลเดอร์นี้ยังมีอะไรอีกบ้าง