Knowledge Hub

Claude Code Mods: 6 ขั้นสร้างฟีเจอร์ให้เครื่องมือของตัวเอง

Mod คือ plugin ที่รันในตัว Claude Code เอง วาด panel ได้ ดัก tool call ได้ ขอให้ Claude เขียนให้จากคำอธิบายภาษาคน พร้อม 6 แบบที่คุ้มทำ: วิเคราะห์ log, Cache Keeper, Recording Mode, Goal Meter, Collision Guard และปุ่มลัดแทนงานซ้ำ

Claude Codeอ่าน 20 นาทีเผยแพร่ 14 ตุลาคม 2569

แก่นของเรื่อง

ถ้าจำได้อย่างเดียว ให้จำว่า mod คือฟังก์ชันที่รันอยู่ข้างใน Claude Code เอง จึงทำสิ่งที่ hook ภายนอกทำไม่ได้: วาดหน้าจอ, ถือ tool call ไว้ถามคนก่อน, และเปลี่ยนสิ่งที่แสดงโดยไม่เปลี่ยนสิ่งที่โมเดลเห็น ส่วนที่ผู้ใช้ต้องทำมีแค่บอกว่าอยากได้อะไรด้วยภาษาปกติ แล้ว Claude เขียนโค้ดให้

ทำไมแนวคิดนี้ได้ผล (กลไกเหตุและผล)

  1. Claude Code เรียก handler ของ mod ทุกครั้งที่เกิดเหตุการณ์ เช่น tool call, ส่ง prompt, หรือวาดส่วนหนึ่งของหน้าจอ handler จะ สังเกต แก้ หรือตอบแทน เหตุการณ์นั้นก่อนที่ Claude Code จะทำต่อ
  2. mod ไม่ต้อง build ไม่ต้องมี Node.js เพราะ Claude Code โหลดไฟล์ .js และ .ts ตรง ๆ และโหลดซ้ำเองเมื่อไฟล์เปลี่ยน วงจร "บอก, ลอง, ปรับ" จึงจบในเซสชันเดียว
  3. mod ที่ Claude เขียนให้ถูกเก็บในโฟลเดอร์ของเซสชัน และโหลดได้หลังผู้ใช้อนุมัติเท่านั้น ผู้ใช้จึงยังเป็นคนตัดสินว่าโค้ดไหนรันบนเครื่อง
  4. 6 แบบในหน้านี้มีรากเดียวกัน: เอางานที่ทำซ้ำหรือเสี่ยงพลาดทุกวัน มาเป็นหน้าจอหรือปุ่มที่เห็นทันที

20% ที่สำคัญที่สุดในทางปฏิบัติ

ลำดับ สิ่งที่ควรทำก่อน ทำไมสำคัญ
1 ให้ Claude อ่าน log ของตัวเอง แล้วดูว่าซ้ำอะไรบ่อยสุด ไม่เสียเวลาสร้าง mod ที่ไม่มีใครใช้
2 เริ่มจาก mod แบบสังเกตอย่างเดียว (แถบ context, ตัวนับ) พลาดแล้วไม่กระทบงาน แก้ได้ในเซสชันเดียว
3 รัน claude plugin validate ก่อนโหลด mod ที่ไม่ได้เขียนเอง เห็นรายการ event และ API ที่ mod เรียก ก่อนรันจริง
4 ทำ guard (Collision Guard) หลังจากมีแบบสังเกตแล้ว guard ที่ผิดพลาดบล็อกงานได้ ต้องคุ้นกับ hook ก่อน

ที่เลื่อนได้: Recording Mode และ Goal Meter ทำเมื่อมีเหตุจำเป็น (ถ่ายวิดีโอ, ทำงานยาวข้ามเซสชัน)

ช่วยให้ดีขึ้นอย่างไร

ป้ายหลักฐาน: (a) แสดงในภาพ (เป็นตัวเลขจากภาพจำลองหน้าจอ ไม่ใช่ผลวัดจริง), (b) ตีความ, (c) ยังไม่ทดสอบ

สถานการณ์ ถ้าไม่มี mod ถ้ามี mod วัดอย่างไร หลักฐาน
ส่งต่องานข้ามแชต (handoff) 4 ขั้นมือ: run skill, copy, clear, paste ปุ่มเดียวเหนือช่อง prompt จำนวนขั้นต่อครั้ง: 4 เป็น 1 (a)
รู้ว่า context ใกล้เต็ม ต้องเรียกดูเอง แถบ % อยู่ตลอด เช่น 71% ครั้งที่ context เต็มกลางงานโดยไม่ทันตั้งตัว (b)
ถ่ายหน้าจอโดยไม่เผยกุญแจ ต้องตัดต่อหรือเลี่ยงคำสั่งบางอย่าง ค่าลับถูกบังบนจอ Claude ยังใช้ค่าจริง จำนวนเฟรมที่เห็นค่าลับ (ควรเป็น 0) (c)
ตามเป้าหมายยาวข้ามเซสชัน จำเองว่าทำถึงไหน task list กับตัวจับเวลา เวลาที่ใช้ก่อนเริ่มงานต่อ (b)
สองแชตแก้ไฟล์เดียวกัน รู้ตอน merge conflict เตือนทันทีพร้อม 3 ทางเลือก จำนวน conflict ต่อสัปดาห์ (b)

ตัวเลข 71%, 38%, 4:12, 23:48 และ "12x a week" ในภาพเป็นข้อความตัวอย่างในหน้าจอจำลอง ไม่ควรอ่านเป็นผลวัดของใคร

ลองใช้

ตัวอย่างประกอบ: คำนวณคุ้มค่าของปุ่ม handoff

ตัวเลขชุดนี้เป็นตัวอย่างประกอบ (ใช้ 12 ครั้งต่อสัปดาห์ตามค่าตัวอย่างในภาพ และ 20 วินาทีต่อขั้นเป็นสมมติ)

รายการ ค่า วิธีคิด
handoff ต่อสัปดาห์ 12 จากการนับใน log
ขั้นมือต่อครั้ง (ก่อน) 4 run skill, copy, clear, paste
ขั้นมือต่อสัปดาห์ (ก่อน) 48 12 x 4
ขั้นมือต่อสัปดาห์ (หลัง) 12 12 x 1
เวลาต่อขั้น (สมมติ) 20 วินาที ต้องจับเวลาจริง
เวลาที่ประหยัดต่อสัปดาห์ 720 วินาที (12 นาที) (48 - 12) x 20

ผลคือประหยัดขั้นตอนได้ 36 ขั้นต่อสัปดาห์ ถ้า mod ใช้เวลาเขียนและตรวจเกิน 12 นาทีต่อสัปดาห์ที่ได้คืน ต้องใช้หลายสัปดาห์กว่าจะคุ้ม

ตัวอย่างประกอบ: นับเวลา cache ที่เหลือ

รายการ ค่า
อายุ cache ที่สมมติ (TTL) 5 นาที = 300 วินาที
คำขอล่าสุดผ่านมา 48 วินาที
เหลือ 300 - 48 = 252 วินาที = 4:12

ค่า TTL ห้ามเชื่อตามตัวอย่าง ให้ตรวจกับเอกสาร prompt caching ของ API ที่ใช้จริง

เมื่อไหร่ควรใช้ และเมื่อไหร่ไม่ควร

กรณี ใช้ mod เหตุผล
ต้องวาด panel, ปุ่ม, แถบเหนือ prompt ใช่ settings hook, skill, MCP วาดไม่ได้
ต้องถือ tool call ไว้ถามคนก่อนรัน ใช่ mod ตอบแทน tool call ได้
แค่บล็อกหรือ log คำสั่งด้วยสคริปต์ที่มีอยู่แล้ว ไม่ settings hook พอ ถูกกว่าและเรียบง่ายกว่า
อยากให้ Claude จำคำสั่งหรือขั้นตอน ไม่ ใช้ skill
ต้องเรียกระบบภายนอก (ฐานข้อมูล, API) ไม่ ใช้ MCP server
ใช้ใน VS Code chat หรือ claude -p และต้องการหน้าจอ ไม่ hook รัน แต่ไม่มีอะไรถูกวาด
เครื่องอยู่ภายใต้ managed settings ที่ปิด mod ไม่ ผู้ดูแลระบบควบคุมอยู่

เงื่อนไขก่อนเริ่ม: Claude Code ฝั่ง terminal เวอร์ชัน 2.1.287 ขึ้นไป (ฝั่ง Desktop 2.1.286 ขึ้นไป) ตรวจด้วย claude --version

ก้าวแรกที่เล็กที่สุด

  1. เปิดเซสชัน Claude Code แล้วพิมพ์: make a mod that shows the current git branch above the prompt
  2. เมื่อ Claude ถามว่าจะเปิด hot reload สำหรับเซสชันนี้ไหม ให้เลือก "Enable for this session"
  3. พิมพ์ /plugin ไปที่แท็บ Installed ต้องเห็น mod ในรายการ
  4. ชื่อ branch ต้องขึ้นเหนือช่อง prompt ถ้าไม่ตรงใจ บอก Claude ให้แก้ มันโหลดซ้ำเมื่อจบ turn

วิธีตรวจว่าช่วยได้จริง

รายการ ค่าที่ตั้งก่อนเริ่ม
ตัวชี้วัด จำนวนขั้นมือต่อ handoff และจำนวนครั้งต่อสัปดาห์
baseline นับจาก log 1 สัปดาห์ก่อนสร้าง mod
เงื่อนไขผ่าน ขั้นมือต่อ handoff ลดจาก 4 เหลือ 1 และไม่มี handoff ที่เนื้อหาหาย
เงื่อนไขไม่ผ่าน ใช้ปุ่มน้อยกว่า 3 ครั้งใน 1 สัปดาห์ หรือปุ่มทำงานผิดเกิน 1 ครั้ง ให้ถอน mod

ทดสอบความเข้าใจ

คำถาม คำตอบ คำตอบที่มักผิด
1. Recording Mode บังค่า API_KEY บนจอ Claude เห็นค่าที่บังไหม และปลอดภัยครบหรือยัง Claude เห็นค่าจริง mod แก้แค่ที่วาด permission prompt แก้ไม่ได้ ค่าลับในนั้นยังเห็นบนจอ "Claude เห็นค่าที่บัง" หรือ "บังแล้วปลอดภัยครบ"
2. สองแชตแก้ pricing.tsx คนละ git worktree Collision Guard จะเตือนไหม ปกติไม่เตือน เพราะ worktree เป็นสำเนาไฟล์ คนละ path จริง จึงเป็นทางออกของ guard "ยังเตือน เพราะชื่อไฟล์เหมือนกัน"
3. ตัวจับเวลาของ Goal Meter ต้องรอดทั้ง hot reload และเปลี่ยนเซสชัน เก็บที่ไหน ใน $.store (ใช้ร่วมกันทุกเซสชัน) ตัวแปรในไฟล์ mod หายทุกครั้งที่โหลดซ้ำ "เก็บในตัวแปรของไฟล์ mod"
4. mod วาดแถบสีอย่างเดียว ถือว่าปลอดภัยเพราะแค่แต่งหน้าจอใช่ไหม ไม่ mod รันด้วยสิทธิ์ผู้ใช้ ไม่ถูก sandbox ให้ดู hooks: และ calls: จาก claude plugin validate "ปลอดภัย เพราะเป็นแค่ UI"
5. handoff 8 ครั้งต่อสัปดาห์ ขั้นมือ 4 ปุ่มเหลือ 1 ลดได้กี่ขั้นต่อสัปดาห์ (8 x 4) - (8 x 1) = 24 ขั้น 32 (ลืมลบ 1 ขั้นที่ยังเหลือ)
6. ครบ 6 แบบแล้วควรสร้างทั้งหมดเลยไหม ไม่ ตัวเลขในภาพเป็นตัวอย่าง สร้างเฉพาะแบบที่ log ของตัวเองยืนยันว่าซ้ำบ่อย "สร้างครบ เพราะ Claude เขียนให้ฟรี"

ภาพอ้างอิงและสิ่งที่อ่านได้จากภาพ

ภาพ 6 ขั้นของ Claude Code Mods

ภาพเป็นอินโฟกราฟิกแนวตั้ง มีหัวข้อ "Claude just dropped Mods and they are game changers" ข้อความนำบอกว่าอธิบายฟีเจอร์เป็นภาษาอังกฤษปกติแล้ว Claude Code เพิ่มให้เอง (ปุ่ม, panel, คำเตือน) ตามด้วย 6 ขั้น แต่ละขั้นมีกรอบหน้าจอจำลองอยู่ด้านขวา

ข้อเท็จจริงที่อ่านได้จากภาพ

ขั้น ชื่อในภาพ ข้อความหลัก ส่วนของหน้าจอจำลอง
1 Mine your own session logs ให้ Claude อ่าน log หาสิ่งที่ทำซ้ำหรือสู้ซ้ำทุกวัน ถามว่า mod ไหนประหยัดเวลา ตอบว่า hand off 12 ครั้งต่อสัปดาห์ ให้เริ่มตรงนี้
2 Build a Cache Keeper context, ขีดจำกัดการใช้, เวลา cache ในมุมมองเดียว พร้อม handoff คลิกเดียว context 71%, weekly limit 38%, ปุ่ม Hand off, Fresh chat, cache 4:12
3 Turn on Recording Mode ข้อมูลอ่อนไหวถูกซ่อนบนจอ ขณะที่ Claude ใช้ค่าจริง screen: sk- ตามด้วยจุด, claude: sk-live-8f2a, emails masked, safe to film
4 Track goals with a Goal Meter แต่ละ /goal มี task list สดและตัวจับเวลา ตามได้ข้ามเซสชัน /GOAL SHIP ONBOARDING 23:48, 4 งาน (2 เสร็จ, 1 กำลังทำ, 1 รอ)
5 Add a Collision Guard เตือนเมื่อแชตอื่นแก้ไฟล์เดียวกัน เลือก Proceed, worktree หรือ cancel pricing.tsx ถูกแก้โดยแชตอื่นเมื่อ 2 นาทีก่อน ปุ่ม Proceed, Worktree, Cancel
6 Turn chores into buttons handoff เคยใช้ 4 ขั้นมือ ตอนนี้เป็นปุ่มเหนือ prompt BEFORE: run-skill, copy, clear, paste. AFTER: Hand off, 1 click

สิ่งที่ภาพไม่ได้บอก

ประเด็น สถานะ
วิธีติดตั้งหรือเวอร์ชันที่ต้องใช้ ไม่มีในภาพ (เติมจากเอกสารทางการด้านล่าง)
โค้ดของ mod ไม่มีในภาพ
ความหมายของ /goal ว่าเป็นคำสั่งของ Claude Code หรือของผู้ใช้ ไม่ชัดจากภาพ ไม่ได้ตรวจกับเอกสารในรอบนี้
ที่มาของตัวเลข 71%, 38%, 4:12, 23:48, 12x ไม่ระบุ ถือเป็นข้อมูลจำลอง
เวลาตัวอักษรเล็กในภาพ อ่านได้ครบ ไม่พบส่วนที่อ่านไม่ออก

Mod คืออะไร

mod คือ plugin ที่มีไฟล์เข้าจุดเดียว (hooks module) เป็น JavaScript หรือ TypeScript Claude Code เรียกฟังก์ชัน register ในไฟล์นั้นตอนโหลด แล้วฟังก์ชันลงทะเบียน handler ผ่านตัวแปร on

โครงไฟล์ขั้นต่ำ

first-mod/
├── .claude-plugin/
│   └── plugin.json      # manifest
└── hooks/
    ├── hooks.json       # { "modules": ["./register.js"] }
    └── register.js      # export function register(on) { ... }

handler ทำอะไรกับเหตุการณ์ได้ 3 อย่าง

การกระทำ รูปแบบ ตัวอย่างใน 6 ขั้น
สังเกต (observe) return next(e) หลังจดข้อมูล นับ tool call, จดว่าใครแก้ไฟล์ไหน
แก้ (rewrite) next({ ...e, ... }) บังค่าลับในข้อความที่วาด
ตอบแทน (answer) return { deny: reason } Collision Guard ปฏิเสธ tool call

เทียบ mod กับของที่คล้ายกัน

Mod Settings hook Skill MCP server
คืออะไร ฟังก์ชันใน plugin รันใน process ของ Claude Code สคริปต์หรือ HTTP ที่รันตามเหตุการณ์ ไฟล์คำสั่งที่ Claude อ่าน โปรเซสภายนอกที่ให้ tool
วาดหน้าจอได้ ได้ ไม่ได้ ไม่ได้ ไม่ได้
เลือกเมื่อ ต้องการ panel, ปุ่ม, แก้ event ต้องการบล็อกหรือ log ด้วยสคริปต์เดิม ต้องการให้ Claude รู้ขั้นตอน ต้องการเชื่อมระบบภายนอก

ที่ที่ mod ทำงาน

สภาพแวดล้อม hook รัน หน้าจอที่ mod วาด
claude ใน terminal รัน แสดง
แท็บ Code ของแอป Desktop รัน แสดง (ยกเว้นส่วนที่เป็นเฉพาะ terminal)
แอป Desktop แบบ WSL ไม่รัน ไม่แสดง
แชตใน VS Code extension รัน ไม่แสดง
claude -p และ Agent SDK รัน ไม่แสดง

6 ขั้นอย่างละเอียด

ทุกขั้นเริ่มจากการบอก Claude ด้วยภาษาปกติ Claude ใช้ skill ชื่อ plugin-authoring เขียน mod ลงโฟลเดอร์ ~/.claude/dev-mods/<session-id>/ ของเซสชันนั้น ป้ายความมั่นใจในตาราง: 🟢 มีในเอกสารทางการ, 🟡 ตีความจากเอกสาร, ⚪ ยังไม่ยืนยัน

ขั้น 1: วิเคราะห์ log ของตัวเอง

เป้าหมายคือหาว่างานซ้ำอะไรบ่อยสุด ก่อนจะลงมือสร้างอะไร

  1. ให้ Claude อ่านบันทึกเซสชันของคุณ (ที่เก็บ transcript เป็นไฟล์ในโฟลเดอร์ ~/.claude/projects/ ⚪ ความรู้ทั่วไป ควรตรวจบนเครื่องตัวเอง)
  2. ให้นับรูปแบบที่ซ้ำ: คำสั่งที่พิมพ์ซ้ำ, ขั้นตอน copy-paste, ข้อความเตือนที่เจอบ่อย
  3. ให้จัดอันดับตาม (ความถี่ x จำนวนขั้นมือ)
  4. เลือกอันดับ 1-2 ไปทำเป็น mod
Read my last 30 session transcripts. List the manual actions I repeat
(count per week, steps per action). Rank by count x steps. Propose which
Claude Code mods would remove the top 2. Do not write any mod yet.

Note: ตัวอย่างในภาพคือ "hand off 12 ครั้งต่อสัปดาห์" ซึ่งเป็นค่าตัวอย่างในภาพจำลอง ผลของคุณจะต่างออกไป

ขั้น 2: Cache Keeper (แถบ context, limit, cache, ปุ่ม handoff)

ส่วน กลไกที่ใช้ สถานะ
ค่า context % $.session.usage() คืน context (tokens, window, percent) 🟢
ค่า weekly limit % $.session.usage() คืน rateLimits (kind, percentUsed, resetsAt) 🟢
แถบเหนือ prompt วาดที่ render site AbovePrompt ด้วย Box, Text 🟢
ปุ่ม Hand off / Fresh chat Button + $.prompt.submit หรือ $.command.run 🟡
นับถอยหลัง cache mod คำนวณเอง จากเวลาของ turn ล่าสุดกับ TTL ที่สมมติ ไม่มี API ตรงในเอกสารที่อ่าน 🟡

ข้อควรระวัง: ตัวเลขเปอร์เซ็นต์ของ limit มาจากค่าที่ Claude Code ให้ ถ้าแผนที่ใช้ไม่มี rate limit ค่านั้นอาจว่าง ให้ mod รับมือกรณีไม่มีค่า

ขั้น 3: Recording Mode (บังค่าลับบนจอ)

กลไก: hook ui.render ที่ render site ของข้อความ (UserMessage, AssistantMessage, ToolUse, ToolResult, CommandOutput) แก้ e.props ให้ค่าที่ตรงกับรูปแบบลับ (เช่น sk-live-...) ถูกแทนด้วยจุด ส่วนข้อมูลที่ส่งให้โมเดลไม่ถูกแตะ

จุด ผล
ข้อความที่วาดบนจอ ถูกบัง 🟢 (เปลี่ยนสิ่งที่วาดได้)
สิ่งที่โมเดลเห็น ค่าจริง 🟡 (mod แก้การวาด ไม่ใช่ข้อมูลใน session)
permission prompt บังไม่ได้ 🟢 เอกสารระบุว่า mod เปลี่ยนสิ่งที่ prompt แสดงไม่ได้
ไฟล์ transcript บนดิสก์ ยังเป็นค่าจริง 🟡 ไม่ใช่เรื่องของการวาด
ค่าลับที่มีรูปแบบไม่ตรง regex หลุด 🟡 ต้องทดสอบด้วยค่าจริงแต่เป็นค่าทดลอง

Warning: Recording Mode ลดความเสี่ยงตอนถ่ายหน้าจอ ไม่ใช่การเก็บความลับ อย่าถ่ายตอนที่ permission prompt อาจแสดงค่าลับ และอย่าใช้ค่าจริงของระบบ production ตอนทดสอบ

ขั้น 4: Goal Meter (task list กับตัวจับเวลาต่อ /goal)

ส่วน กลไกที่ใช้ สถานะ
ตัวจับเวลา $.clock.every หรือ $.clock.now เทียบเวลาเริ่ม 🟢
เก็บเวลาเริ่มและ task ข้ามเซสชัน $.store (key-value ที่ทุกเซสชันในเครื่องใช้ร่วมกัน) 🟢
ดึง task list ดัก tool.call ของ tool จดรายการงาน หรืออ่านจาก $.session.messages() 🟡
ผูกกับ /goal ดัก command.run ของคำสั่งนั้น ⚪ ยังไม่ยืนยันว่าดักคำสั่งในตัวได้
แสดงผล pane ($.ui.open) หรือ band เหนือ prompt 🟢

กับดัก: ตัวแปรในไฟล์ mod หายทุกครั้งที่ hot reload ค่าที่ต้องรอดให้ใส่ $.state (รอดตอน reload ในเซสชันเดียว) หรือ $.store (รอดข้ามเซสชัน) และต้องหยุด timer ตอนเกิด ui.close กับ session.end ไม่เช่นนั้น timer ค้างสะสม

ขั้น 5: Collision Guard (เตือนเมื่อแชตอื่นแก้ไฟล์เดียวกัน)

ลำดับการทำงาน:

  1. ดัก tool.call ของ tool ที่เขียนไฟล์ (เช่น Edit, Write)
  2. อ่านใน $.store ว่าไฟล์ path นี้ถูกเซสชันอื่นแก้ล่าสุดเมื่อไร
  3. ถ้าเป็นเซสชันอื่นและยังไม่เกินกรอบเวลา (เช่น 5 นาที) ให้ถามผู้ใช้
  4. Proceed: next(e) และบันทึกว่าเซสชันนี้แก้ล่าสุด
  5. Worktree: ปฏิเสธด้วยเหตุผลที่บอก Claude ให้ไปทำใน worktree
  6. Cancel: { deny: reason }
// ตัวอย่างประกอบ (pseudo-code): ลายเซ็นจริงของ $.store และ $.ui.ask
// ให้ตรวจกับไฟล์ types ที่ Claude Code เขียนไว้ใน .claude-plugin/types/
on('tool.call', { tool: 'Edit' }, async ($, e, next) => {
  const last = await $.store.get('edit:' + e.file_path)
  const isOther = last && last.session !== $.session.id()
  if (isOther && Date.now() - last.at < 5 * 60 * 1000) {
    // ถามผู้ใช้ 3 ทางเลือก แล้วตัดสินใจตามคำตอบ
  }
  await $.store.set('edit:' + e.file_path, { session: $.session.id(), at: Date.now() })
  return next(e)
})

ข้อจำกัดที่ควรรู้:

ข้อจำกัด ผล
เห็นเฉพาะการแก้ผ่าน tool ของ Claude การแก้จาก editor, IDE หรือ sed ใน Bash ไม่ถูกนับ 🟡
สองเซสชันอ่าน-เขียน $.store พร้อมกัน อาจเขียนทับกัน เอกสารระบุว่า $.fs.write ไม่ atomic ส่วน $.store ควรทดสอบ 🟡
คนละ worktree path ต่างกัน ไม่ถือว่าชน (ตั้งใจ) 🟡
guard ที่ผิดพลาด บล็อกงานปกติ ต้องมีทางผ่าน (Proceed) เสมอ

ขั้น 6: เปลี่ยนงานซ้ำเป็นปุ่ม

กลไก: วาด Button ใน band เหนือ prompt ผูกกับฟังก์ชันที่ทำขั้นตอนทั้ง 4 ใน handler เดียว เอกสารระบุว่ามี $.command.run (รันคำสั่ง), $.prompt.submit (ส่ง prompt) และ Button มี hotkey ให้กดตัวเลขเดียวได้เมื่อ prompt ว่าง

ก่อน หลัง
run skill, copy, clear, paste (4 ขั้นมือ) ปุ่ม Hand off (1 คลิก)

คำเตือนเรื่องปุ่มที่ส่ง prompt แทนผู้ใช้: $.prompt.submit มี 2 แบบ แบบปกติ Claude เห็นว่าผู้ส่งคือ mod ส่วน asUser: true ส่งเหมือนผู้ใช้พิมพ์เอง ให้เลือกแบบปกติเว้นแต่จำเป็น เพื่อให้ตรวจย้อนหลังได้ว่าอะไรมาจากไหน

ความเสี่ยงและข้อจำกัดโดยรวม

Warning: mod รันด้วยสิทธิ์ของผู้ใช้ ไม่ถูก sandbox อ่านและเขียนไฟล์ได้ทุกที่ที่บัญชีเข้าถึง เริ่มโปรแกรมได้ ส่งคำขอเครือข่ายได้ อ่านตัวแปรสภาพแวดล้อมและไฟล์ settings ได้ (รวมถึง API key) เห็นทุก prompt และ tool call เปลี่ยน prompt ได้ อนุมัติ tool call ก่อนถามผู้ใช้ได้ และเรียกโมเดลด้วยโควตาของผู้ใช้ได้

ความเสี่ยง ผลที่เกิดได้ วิธีลดความเสี่ยง
ติดตั้ง mod จากแหล่งที่ไม่รู้จัก ถูกอ่านความลับหรือสั่งงานแทน ใช้เฉพาะ marketplace ที่เชื่อถือ
ไม่ดูว่า mod เรียกอะไร ไม่รู้ว่ามี network หรือ process claude plugin validate ./mod อ่านบรรทัด hooks: กับ calls:
mod ที่ Claude เขียนมีบั๊ก guard บล็อกงานผิด, ตัวบังค่าลับพลาด ทดสอบด้วย claude plugin test และข้อมูลทดลอง
คิดว่า sandbox ครอบ mod เปิด sandbox แล้วเชื่อว่า mod ถูกจำกัด เอกสารระบุว่า process ที่ mod เริ่มทำงานนอก sandbox
mod ซ้อนกันหลายตัว ลำดับการทำงานทำให้ผลไม่คาดคิด จำกัดจำนวนและตรวจลำดับ
ใช้ในองค์กรที่มี managed settings mod ถูกปิดหรือถูกจำกัด ปรึกษาผู้ดูแลระบบก่อน

ข้อผิดพลาดที่พบบ่อย

  • เก็บค่าที่ต้องรอดไว้ในตัวแปรของไฟล์ แล้วงงว่าทำไมค่าหายหลังแก้โค้ด
  • ไม่หยุด timer ตอนปิด pane ทำให้ timer ซ้อนหลัง reload
  • ทำ guard ก่อนทำแบบสังเกต แล้วถูกบล็อกงานจริงโดยไม่มีทางผ่าน
  • ใส่ค่าอ่านจาก e ตรง ๆ ใน render hook ทั้งที่ค่า props อยู่ใน e.props
  • คิดว่าการบังบนจอ เท่ากับการไม่ส่งค่าให้โมเดล

รายการตรวจก่อนใช้ mod ทุกตัว

ขั้น ตรวจ สถานะ
1 เวอร์ชัน Claude Code ตรงเงื่อนไข (claude --version) ⚪
2 รู้ที่มาของ mod และอ่านรายการ hooks: กับ calls: แล้ว ⚪
3 ทดสอบด้วยข้อมูลทดลองก่อน ไม่ใช้ค่า production ⚪
4 guard ทุกตัวมีทางผ่านชัดเจน ⚪
5 มีวิธีปิด mod ถ้ามีปัญหา (/plugin แท็บ Installed หรือ --safe-mode) ⚪
6 ตั้งตัวชี้วัดและ baseline ไว้ก่อนวัดผลหลังใช้ ⚪

ขั้นตอนถัดไป

Recommendation: เริ่มจากขั้น 1 ภายในสัปดาห์นี้ นับ handoff และงานซ้ำจาก log จริง ตัดสินใจสร้างเฉพาะ mod ที่ผลคูณ ความถี่ x ขั้นมือ สูงสุดสองอันดับแรก แล้วเริ่มด้วยแบบสังเกตอย่างเดียว

เก็บ mod ที่ใช้ได้จริงไว้นอกโฟลเดอร์เซสชัน (โฟลเดอร์ dev-mods ถูกลบเมื่อเก่าเกิน cleanupPeriodDays) แล้วโหลดด้วย claude --plugin-dir <path>

Sources

เอกสารทางการของ Anthropic (Claude Code documentation):

  • Mods overview: นิยาม, สิ่งที่ mod ทำได้, ความเสี่ยง, ที่ที่ mod ทำงาน, เวอร์ชันที่ต้องใช้
  • Create a mod: การขอให้ Claude เขียน mod, hot reload, claude plugin validate, claude plugin test
  • Mods reference: รายการ event, $ API, render site, element, ขีดจำกัด

หัวข้อที่เติมจากความรู้ทั่วไปหรือตีความ (ไม่ได้มาจากเอกสารข้างต้นโดยตรง): ที่เก็บ transcript ใน ~/.claude/projects/, TTL ของ prompt cache ที่ 5 นาที, วิธีผูก Goal Meter กับ /goal, และรูปแบบ pseudo-code ของ Collision Guard

ตัวย่อที่ใช้ในหน้านี้

ตัวย่อ ชื่อเต็ม คืออะไร อ่านค่าอย่างไร
UI User Interface ส่วนที่ผู้ใช้เห็นและกดบนหน้าจอ "แถบ context เหนือ prompt" คือ UI ของ mod
API Application Programming Interface ชุดฟังก์ชันที่โปรแกรมหนึ่งเปิดให้อีกโปรแกรมเรียก $.session.usage() คือเมธอดหนึ่งของ mods API
JS JavaScript ภาษาที่ใช้เขียน mod ได้ ไฟล์ register.js
TS TypeScript JavaScript ที่มีชนิดข้อมูล ใช้เขียน mod ได้ ไฟล์ .ts กับ types ที่ Claude Code สร้างให้
JSON JavaScript Object Notation รูปแบบไฟล์ข้อมูลที่มี key กับ value hooks.json ที่ระบุ modules
CLI Command-Line Interface โปรแกรมที่สั่งงานด้วยคำสั่งใน terminal claude --version
MCP Model Context Protocol มาตรฐานให้ Claude เชื่อมกับเครื่องมือภายนอก MCP server ให้ tool แก่ Claude
SDK Software Development Kit ชุดเครื่องมือสำหรับเขียนโปรแกรมต่อกับระบบ Agent SDK รัน hook แต่ไม่วาดหน้าจอ
VS Code Visual Studio Code โปรแกรมแก้โค้ดที่มี extension ของ Claude Code แชตใน VS Code: hook รัน แต่ไม่มีอะไรถูกวาด
WSL Windows Subsystem for Linux ชั้น Linux บน Windows เซสชัน WSL ในแอป Desktop ไม่โหลด plugin
TTL Time To Live อายุของข้อมูลที่เก็บชั่วคราว ก่อนหมดอายุ TTL 300 วินาที เหลือ 252 วินาที = 4:12
HTTP HyperText Transfer Protocol ภาษาที่โปรแกรมใช้ขอและส่งข้อมูลทางเว็บ settings hook แบบ HTTP คือการยิงคำขอเว็บเมื่อเกิดเหตุการณ์
IDE Integrated Development Environment โปรแกรมแก้โค้ดครบชุด แก้ไฟล์จาก IDE ทำให้ Collision Guard มองไม่เห็น
git (ชื่อเครื่องมือ) ระบบเก็บประวัติการแก้โค้ด git branch แสดงชื่อ branch ที่ใช้อยู่
regex Regular Expression รูปแบบข้อความที่ใช้จับสตริงที่ตรงเงื่อนไข pattern จับ sk-live-... เพื่อบังค่าลับ
sed stream editor คำสั่ง Unix แก้ข้อความในไฟล์ แก้ไฟล์ด้วย sed ใน Bash ไม่ผ่าน tool Edit
ID Identifier รหัสประจำเซสชันหรือรายการ <session-id> ในพาธ dev-mods
% (context, limit) เปอร์เซ็นต์ที่ใช้ไป สัดส่วนของ context window หรือโควตาที่ใช้แล้ว context 71% = ใช้ไปเกือบสามในสี่ของหน้าต่าง
sk- ไม่ใช่ตัวย่อเต็ม (คำนำหน้าของ API key) ส่วนต้นของรหัส API ที่ภาพใช้เป็นตัวอย่าง sk-live-8f2a คือรหัสทดลองในภาพ ไม่ใช่ค่าจริง
n8n ชื่อเครื่องมือ (ออโตเมชัน workflow) ชื่อผลิตภัณฑ์ที่ปรากฏเป็นชื่อ task ในภาพ "Wire the n8n trigger" คือชื่องานตัวอย่าง

ตัวย่อที่มาจากความรู้ทั่วไป ไม่ได้ถูกนิยามในภาพหรือเอกสารที่อ่าน: UI, JS, TS, JSON, CLI, SDK, VS Code, WSL, TTL, HTTP, IDE, git, regex, sed, ID, sk-, n8n

สัญลักษณ์ในสูตร

สัญลักษณ์ ความหมาย อ่านค่าอย่างไร
x คูณ 12 x 4 = 48 ขั้นต่อสัปดาห์
- ลบ 300 - 48 = 252 วินาที
e event (ข้อมูลเหตุการณ์ที่ส่งเข้า handler) e.file_path คือ path ไฟล์ของ tool call
$ mods API ที่ส่งเข้า handler $.store.get(...) เรียกที่เก็บค่า
next ฟังก์ชันส่งต่อเหตุการณ์ไปยัง handler ถัดไป return next(e) คือปล่อยผ่าน

Summary

หัวข้อ สรุป
mod คืออะไร plugin ที่รันในตัว Claude Code วาดหน้าจอ ดัก tool call และเปลี่ยนสิ่งที่แสดงได้
วิธีได้มา บอก Claude ด้วยภาษาปกติ อนุมัติ hot reload แล้วลองและปรับในเซสชันเดียว
6 แบบ วิเคราะห์ log, Cache Keeper, Recording, Goal Meter, Collision Guard, ปุ่มลัด
ที่ทำได้ชัดตามเอกสาร แถบ context และ limit, ปุ่ม, ตัวจับเวลา, การดัก tool call, เก็บค่าข้ามเซสชัน
ที่ยังต้องตรวจเอง นับถอยหลัง cache, ผูกกับ /goal, ลายเซ็นของ $.store และ $.ui.ask
ข้อควรระวังหลัก ไม่ถูก sandbox, บัง permission prompt ไม่ได้, ตัวเลขในภาพเป็นข้อมูลจำลอง
ก้าวแรก นับงานซ้ำจาก log แล้วสร้างแบบสังเกตอย่างเดียวหนึ่งตัว
Facebook