สร้าง Agent & Skill ให้ Claude ทำงานแทนคุณ
บทนี้เราจะไม่ท่องทฤษฎียาว — เราจะ เปิดไฟล์จริงในโปรเจกต์นี้ดูด้วยกัน แล้วคุณลอกโครงไปเขียนของตัวเอง เป้าหมายคือจบบทนี้แล้วคุณสร้าง agent (เอเจนต์ — ผู้ช่วยเฉพาะทาง) ได้ 1 ตัว และรู้ว่า skill (สกิล — คู่มือความรู้) ต่างจาก agent ยังไง
Command vs Agent vs Skill — สามสิ่งที่คนสับสนที่สุด
ทั้งสามอย่างช่วยขยายความสามารถของ Claude แต่ทำงานคนละจังหวะกัน วิธีจำง่ายสุดคือเทียบกับทีมงานจริง:
| Command | Agent | Skill | |
|---|---|---|---|
| คืออะไร | คำสั่งลัดที่พิมพ์ (เช่น /quiz) |
subagent เฉพาะทางที่มี context/tools ของตัวเอง | ชุดความรู้/ขั้นตอน (คู่มือ) สำหรับงานแบบหนึ่ง |
| ใครเรียก | คุณ (พิมพ์เอง) | Claude ตัวหลัก มอบงานให้ | Claude โหลดเองอัตโนมัติเมื่อ description ตรง |
| เรียกเมื่อไหร่ | ทุกครั้งที่อยากได้ — ควบคุมเอง 100% | เมื่องานใหญ่/ควรแยก context ออกไปทำ | เมื่อสถานการณ์ตรงกับ "ตัวกระตุ้น" ใน description |
| เก็บที่ไหน | .claude/commands/ |
.claude/agents/ |
.claude/skills/<ชื่อ>/SKILL.md |
| เทียบกับทีม | ปุ่มลัดบนคีย์บอร์ด | เพื่อนร่วมทีมที่คุณโยนงานให้ | คู่มือบนชั้นที่หยิบมาอ่านตอนต้องใช้ |
เทียบกับสิ่งที่คุณถนัด: command เหมือน npm script ที่คุณสั่งรันเอง,
agent เหมือน service แยก ที่มีหน้าที่เฉพาะและ resource ของมันเอง,
ส่วน skill เหมือน middleware/plugin ที่เด้งเข้ามาทำงานเองเมื่อ request เข้าเงื่อนไข
เขียน Agent: frontmatter + prompt บทบาท
agent คือไฟล์ Markdown ไฟล์เดียว มี 2 ส่วน:
frontmatter (ส่วนหัวใน --- บอก metadata) และ
เนื้อ prompt (บอกว่า agent นี้เป็นใคร ทำงานยังไง)
โครงเทมเพลตขั้นต่ำ
---
name: example-agent
description: ใช้เมื่อไหร่ — Claude อ่านบรรทัดนี้เพื่อตัดสินใจว่าจะมอบงานไหม
tools: Read, Grep, Glob # least privilege — เท่าที่งานต้องใช้
model: sonnet # sonnet | haiku | opus
---
You are <ROLE>. Your job is <ONE CLEAR RESPONSIBILITY>.
## How you work
1. <step>
2. <step>
## Rules
- Stay within your responsibility.
- Your final message IS the result returned to the caller.
ตัวอย่างจริงในโปรเจกต์นี้: ai-tutor
ดูของจริงชัดกว่าคำอธิบาย — นี่คือ frontmatter ของ agent ที่กำลังสอนคุณอยู่ตอนนี้
(ไฟล์เต็มอยู่ที่ .claude/agents/ai-tutor.md):
---
name: ai-tutor
description: ครูสอน AI สาย Applied สำหรับ Developer — ใช้เมื่อผู้เรียน
ต้องการเรียนเนื้อหา อธิบายแนวคิด หรือพาลงมือทำทีละขั้นเป็นภาษาไทย
tools: Read, Write, Edit, Bash, Glob, Grep
model: sonnet
---
คุณคือ **ครูสอน AI** ของโปรเจกต์ teach-me-ai ...
## หลักการสอน (สำคัญที่สุด)
1. ภาษาไทยเป็นหลัก — ผู้เรียนอังกฤษอ่อน คงศัพท์เทคนิคอังกฤษไว้แต่วงเล็บไทยกำกับครั้งแรก
2. ทีละขั้น — แตกเรื่องยากเป็นชิ้นเล็ก อธิบาย → ตัวอย่าง → หยุดเช็กความเข้าใจ ก่อนไปต่อ
...
สังเกต 4 ช่องใน frontmatter:
name— ชื่อเรียก agent (kebab-case) ใช้ตอนมอบงานdescription— สำคัญที่สุด Claude ใช้บรรทัดนี้ตัดสินว่าจะเรียก agent นี้ไหม ต้องบอก "ใช้เมื่อไหร่" ให้ชัดtools— เครื่องมือที่ agent ใช้ได้ ให้เท่าที่จำเป็น (least privilege)model— เลือกตามความยาก/ต้นทุน:haikuเร็วถูก,sonnetสมดุล,opusเก่งสุด
Least privilege (สิทธิ์เท่าที่จำเป็น):
ให้ tools เท่าที่งานต้องใช้จริง เช่น agent ที่แค่ "review โค้ด" ให้แค่
Read, Grep, Glob ก็พอ — ไม่ต้องให้ Write, Bash เพราะยิ่งให้เครื่องมือน้อย
ยิ่งปลอดภัยและ agent ยิ่งโฟกัส (หลักเดียวกับ scope ของ API token ในงาน backend ของคุณ)
เขียน Skill: SKILL.md + description ที่มี "ตัวกระตุ้น"
skill คือโฟลเดอร์ที่มีไฟล์ SKILL.md โครงคล้าย agent แต่หัวใจต่างกันตรง
คุณไม่ได้เรียกมันเอง — Claude อ่าน description ของทุก skill
แล้วโหลดตัวที่ตรงกับสิ่งที่คุณกำลังทำ ดังนั้น description ต้องเต็มไปด้วย
ตัวกระตุ้น (trigger) ที่เป็นรูปธรรม
---
name: example-skill
description: Use when <สถานการณ์เจาะจง>. บอก trigger ให้เป็นรูปธรรม
เช่น "Use when writing or reviewing database migrations for PostgreSQL."
---
# <Skill Name>
## When this applies
<ย้ำเงื่อนไข trigger ให้โมเดลเช็กความเกี่ยวข้องกับตัวเองได้>
## The method
1. <do this>
2. <then this>
3. <verify like this>
ต่างจาก agent ตรงที่ skill ไม่มี tools/model — มันไม่ใช่
"ผู้ทำงาน" แต่เป็น "ความรู้" ที่ถูกเสียบเข้า context ของ Claude ตัวที่กำลังทำงานอยู่
เนื้อในจึงเน้น วิธีทำทีละขั้น (a manual) ไม่ใช่ภาพรวมลอยๆ
description คลุมเครือ = โมเดลไม่รู้จะเรียกตอนไหน ทั้ง agent และ skill พังด้วยเหตุเดียวกัน: ถ้า description เขียนกว้างอย่าง "ช่วยเรื่องโค้ด" โมเดลจะไม่รู้ว่าเมื่อไหร่ควรหยิบมาใช้ ให้เขียนเป็นรูปธรรมแบบ "ใช้เมื่อ review migration ของ PostgreSQL เพื่อหา index ที่ขาด" — ยิ่งมี คำ/สถานการณ์เจาะจงเท่าไร ยิ่งถูกเรียกถูกจังหวะ
teach-by-example: เปิดไฟล์จริงดูเดี๋ยวนี้
อย่าเพิ่งเขียนใหม่จากศูนย์ — เปิดของที่มีอยู่แล้วในโปรเจกต์นี้ดูก่อน แล้วก๊อปโครงไปปรับ:
-
agent จริงที่ใช้งานอยู่:
.claude/agents/ai-tutor.md— ครูที่กำลังสอนคุณ ดูว่า description/tools/model เขาตั้งยังไง -
เทมเพลตพกพา (ภาษาอังกฤษ):
EN/— โครงเปล่าของ agent และ skill พร้อมคำอธิบายแต่ละบรรทัด เอาไปวางในโปรเจกต์อื่นได้เลย -
เทมเพลตพกพา (ภาษาไทย):
TH/— เวอร์ชันไทยของเทมเพลตชุดเดียวกัน
วิธีเรียนที่ได้ผลที่สุดสำหรับบทนี้: เปิด ai-tutor.md คู่กับเทมเพลตใน EN/
วางเทียบกัน แล้วถามตัวเองว่า "ช่องไหนคือ metadata ช่องไหนคือบทบาท" — พอเห็นแพตเทิร์นแล้ว
คุณจะเขียนของตัวเองได้ทันที
เขียน agent ของตัวเอง 1 ตัว (ยังไม่ต้องเขียนโค้ดครบ แค่ออกแบบ frontmatter ให้ชัด):
- เลือกงานซ้ำๆ ที่คุณอยากให้ผู้ช่วยทำแทน เช่น "review PR ของ NestJS หา endpoint ที่ลืม validation" หรือ "แปลง type ของ Go struct เป็น TypeScript interface"
-
ระบุ 3 ช่องนี้ให้ครบ:
name— kebab-case สื่อหน้าที่ชัดdescription— ขึ้นต้นด้วย "ใช้เมื่อ..." มีตัวกระตุ้นเป็นรูปธรรม (ไม่กว้าง)tools— เลือกตาม least privilege แล้วเขียนสั้นๆ ว่าทำไมพอแค่นี้
-
บอกว่าจะเลือก
modelตัวไหน (haiku/sonnet/opus) เพราะอะไร - คำถามคิดต่อ: งานที่คุณเลือก ควรเป็น agent หรือ skill? เพราะอะไร?
เขียนคำตอบในแชท แล้วพิมพ์ /quiz FT-2 เพื่อทดสอบความเข้าใจ