teach-me-ai / Fast-Track / FT-2
⟵ กลับหน้า Roadmap
FAST-TRACK · FT-2

สร้าง Agent & Skill ให้ Claude ทำงานแทนคุณ

⏱️ ~15 นาที 🎯 เขียน agent 1 ตัว + เข้าใจว่า skill โหลดเมื่อไหร่ ⚡ Fast-Track · teach-by-example

บทนี้เราจะไม่ท่องทฤษฎียาว — เราจะ เปิดไฟล์จริงในโปรเจกต์นี้ดูด้วยกัน แล้วคุณลอกโครงไปเขียนของตัวเอง เป้าหมายคือจบบทนี้แล้วคุณสร้าง agent (เอเจนต์ — ผู้ช่วยเฉพาะทาง) ได้ 1 ตัว และรู้ว่า skill (สกิล — คู่มือความรู้) ต่างจาก agent ยังไง

Command vs Agent vs Skill — สามสิ่งที่คนสับสนที่สุด

ทั้งสามอย่างช่วยขยายความสามารถของ Claude แต่ทำงานคนละจังหวะกัน วิธีจำง่ายสุดคือเทียบกับทีมงานจริง:

Command /สั่งตรงๆ ⌨️ คุณพิมพ์เรียก เอง ทุกครั้ง = ปุ่มลัด Agent มอบงานทั้งก้อน 🧑‍💻 Claude เรียก ให้ทำแทน = เพื่อนร่วมทีม Skill โหลดเมื่อตรง 📖 โผล่มาเอง เมื่อสถานการณ์ตรง = คู่มือบนชั้น
Command = คุณพิมพ์สั่งเอง · Agent = Claude มอบงานให้ผู้ช่วยเฉพาะทาง · Skill = คู่มือที่ถูกหยิบมาอ่านเองเมื่อ description ตรงกับงาน
CommandAgentSkill
คืออะไร คำสั่งลัดที่พิมพ์ (เช่น /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 ให้ชัด):

  1. เลือกงานซ้ำๆ ที่คุณอยากให้ผู้ช่วยทำแทน เช่น "review PR ของ NestJS หา endpoint ที่ลืม validation" หรือ "แปลง type ของ Go struct เป็น TypeScript interface"
  2. ระบุ 3 ช่องนี้ให้ครบ:
    • name — kebab-case สื่อหน้าที่ชัด
    • description — ขึ้นต้นด้วย "ใช้เมื่อ..." มีตัวกระตุ้นเป็นรูปธรรม (ไม่กว้าง)
    • tools — เลือกตาม least privilege แล้วเขียนสั้นๆ ว่าทำไมพอแค่นี้
  3. บอกว่าจะเลือก model ตัวไหน (haiku/sonnet/opus) เพราะอะไร
  4. คำถามคิดต่อ: งานที่คุณเลือก ควรเป็น agent หรือ skill? เพราะอะไร?

เขียนคำตอบในแชท แล้วพิมพ์ /quiz FT-2 เพื่อทดสอบความเข้าใจ