Claude Skills คืออะไร และช่วยเปลี่ยน Claude Code ให้ทำงานตาม Workflow ของเราได้อย่างไร
เวลาที่เราใช้ Claude Code ทำงานเป็นประจำ มักมีคำสั่งบางชุดที่ต้องพิมพ์ซ้ำอยู่เรื่อย ๆ
ตัวอย่างเช่น ก่อนเริ่มพัฒนาฟีเจอร์ใหม่ เราอาจต้องบอก Claude ว่าให้สำรวจโค้ดเดิมก่อน ห้ามสร้าง Component ซ้ำ ต้องเขียน Test ต้องรัน Typecheck และต้องสรุปไฟล์ที่เปลี่ยนแปลงเมื่อทำเสร็จ
หากเป็นการตรวจ Pull Request เราอาจต้องอธิบายทุกครั้งว่าให้ตรวจ Bug, Security, Breaking Change, Test Coverage และผลกระทบต่อ Module อื่น
เมื่อ Workflow เหล่านี้เกิดขึ้นบ่อย การเก็บคำสั่งไว้ในเอกสารแล้ว Copy มาวางทุกครั้งไม่ใช่วิธีที่มีประสิทธิภาพที่สุด
Claude Skills ถูกสร้างขึ้นมาเพื่อแก้ปัญหานี้
เราสามารถนำความรู้ กติกา Checklist และขั้นตอนทำงานที่ใช้ซ้ำ มาสร้างเป็นความสามารถเฉพาะทางให้ Claude Code เรียกใช้ได้
จากเดิมที่ต้องพิมพ์ Prompt ยาว ๆ ทุกครั้ง เราอาจเหลือเพียงคำสั่ง
/review-changes
หรือ
/fix-issue 123
Claude จะโหลด Workflow ที่เตรียมไว้ แล้วดำเนินงานตามขั้นตอนอย่างเป็นระบบ
Claude Skills คืออะไร
Claude Skill คือชุดคำแนะนำที่จัดเก็บอยู่ในไฟล์ชื่อ
SKILL.md
ไฟล์นี้ประกอบด้วยสองส่วนหลัก
ส่วนแรกคือ YAML Frontmatter สำหรับอธิบายชื่อ จุดประสงค์ วิธีเรียกใช้ เครื่องมือที่อนุญาต และพฤติกรรมของ Skill
ส่วนที่สองคือเนื้อหา Markdown ซึ่งเป็นขั้นตอนหรือกติกาที่ Claude ต้องปฏิบัติตามเมื่อ Skill ถูกเรียกใช้งาน
โครงสร้างพื้นฐานมีลักษณะดังนี้
--- name: review-changes description: Review uncommitted code changes for bugs, risks, and missing tests --- Review the current uncommitted changes. Check for: - Functional bugs - Missing error handling - Security risks - Breaking changes - Missing or outdated tests Finish with a prioritized list of recommended fixes.
เมื่อ Skill ถูกติดตั้งในตำแหน่งที่ถูกต้อง เราสามารถเรียกใช้ได้ด้วย
/review-changes
Claude ยังสามารถเลือกเรียก Skill เองได้ เมื่อคำขอของผู้ใช้ตรงกับ description ของ Skill
ตัวอย่างเช่น หากเราถามว่า
ช่วยตรวจสอบโค้ดที่ยังไม่ได้ Commit ว่ามีจุดเสี่ยงอะไรบ้าง
Claude อาจเลือกใช้ review-changes โดยอัตโนมัติ เพราะคำขอสอดคล้องกับคำอธิบายของ Skill
Skill ไม่ใช่เพียง Prompt ที่บันทึกไว้
ในระดับพื้นฐาน เราอาจมอง Skill ว่าเป็น Prompt Template ที่นำกลับมาใช้ซ้ำได้
แต่ในทางปฏิบัติ Skill สามารถทำได้มากกว่านั้น เช่น
- รับ Arguments จากผู้ใช้
- โหลดไฟล์ตัวอย่างหรือเอกสารประกอบ
- เรียก Script ที่อยู่ภายใน Skill
- ดึงข้อมูลจริงจาก Git หรือเครื่องมืออื่นก่อนส่งให้ Claude
- กำหนด Tool ที่ Claude ใช้ได้โดยไม่ต้องขออนุมัติซ้ำ
- ปิด Tool บางชนิดระหว่างทำงาน
- เลือก Model และระดับ Effort เฉพาะงาน
- รันงานใน Subagent ที่แยก Context ออกจาก Session หลัก
- เพิ่ม Hooks ที่ทำงานเฉพาะช่วงอายุของ Skill
- จำกัด Skill ให้ทำงานเฉพาะไฟล์บางประเภท
จึงสามารถใช้ Skill สร้าง Workflow ตั้งแต่งานง่ายอย่างเขียน Commit Message ไปจนถึงกระบวนการ Review, Migration, Deployment หรือการวิเคราะห์ Codebase หลายขั้นตอนได้
เมื่อไรควรสร้าง Skill
Skill เหมาะกับงานที่มีรูปแบบซ้ำและมีขั้นตอนค่อนข้างชัดเจน
ตัวอย่างเช่น
- ตรวจ Code ก่อน Commit
- สร้างฟีเจอร์ใหม่ตามมาตรฐานของทีม
- วิเคราะห์ GitHub Issue
- เขียน Unit Test ตาม Convention ของโปรเจกต์
- สร้าง API Endpoint
- Review Pull Request
- สร้าง Release Note
- ตรวจ Security
- ตรวจ Accessibility
- สร้างเอกสาร API
- Migration Component
- เตรียม Deployment
- วิเคราะห์ Error Log
- สร้างรายงานจากข้อมูลใน Repository
สัญญาณสำคัญว่าควรสร้าง Skill คือ คุณเริ่ม Copy Prompt ชุดเดิมมาวางบ่อย ๆ หรือเนื้อหาบางส่วนใน CLAUDE.md เริ่มกลายเป็นขั้นตอนการทำงานยาว ๆ แทนที่จะเป็นข้อมูลพื้นฐานของโปรเจกต์
Skill แตกต่างจาก CLAUDE.md อย่างไร
CLAUDE.md เหมาะกับข้อมูลที่ Claude ควรรู้เกือบทุกครั้งเมื่อทำงานในโปรเจกต์ เช่น
โปรเจกต์นี้ใช้ pnpm โค้ด Frontend อยู่ใน apps/web ห้ามแก้ Migration โดยไม่ได้รับอนุญาต หลังแก้ TypeScript ต้องรัน Typecheck
ส่วน Skill เหมาะกับขั้นตอนเฉพาะกิจที่ไม่จำเป็นต้องโหลดทุก Session เช่น
ขั้นตอนตรวจ Pull Request ขั้นตอนสร้าง Release ขั้นตอน Migration Component ขั้นตอนวิเคราะห์ Production Error
ความแตกต่างสำคัญคือ เนื้อหาของ CLAUDE.md ถูกนำมาเป็นบริบทพื้นฐาน ส่วนเนื้อหาเต็มของ Skill จะถูกโหลดเมื่อ Skill ถูกเรียกใช้เท่านั้น
แนวทางที่เหมาะสมคือเก็บ Facts และกติกาหลักไว้ใน CLAUDE.md แล้วแยก Procedure หรือ Workflow ที่ใช้เฉพาะบางงานออกมาเป็น Skills
Skill แตกต่างจาก Hook อย่างไร
Skill เป็นชุดคำแนะนำที่บอก Claude ว่าต้องทำงานอย่างไร
Hook คือกลไกที่รันโดยอัตโนมัติเมื่อเกิด Event ที่กำหนด เช่น หลังแก้ไฟล์ ก่อนรันคำสั่ง หรือก่อน Claude หยุดทำงาน
ตัวอย่างเช่น
Skill อาจบอกว่า
หลังแก้โค้ดให้รัน Test ที่เกี่ยวข้อง
แต่ Hook สามารถกำหนดให้ Formatter ทำงานอัตโนมัติทุกครั้งหลังไฟล์ถูกแก้
ดังนั้น Skill เหมาะกับการกำหนด Workflow ที่ Claude ต้องคิดและปรับตามสถานการณ์ ส่วน Hook เหมาะกับสิ่งที่ต้องทำอย่างแน่นอนเมื่อเกิดเหตุการณ์หนึ่ง
Skill แตกต่างจาก Subagent อย่างไร
Skill คือความรู้หรือ Workflow ที่ Claude สามารถโหลดเข้าสู่การสนทนา
Subagent คือ Claude อีกตัวหนึ่งที่มี Context บทบาท Model และ Tool ของตัวเอง
ตัวอย่างเช่น Skill ชื่อ api-conventions อาจบอกกติกาการเขียน API ของบริษัท
ส่วน Subagent ชื่อ security-reviewer อาจถูกออกแบบให้รับงานตรวจ Security โดยเฉพาะ
ทั้งสองอย่างสามารถทำงานร่วมกันได้
เราสามารถให้ Subagent โหลด Skills ที่เกี่ยวข้อง หรือกำหนดให้ Skill รันใน Subagent ที่แยกออกจาก Session หลักได้
Skill แตกต่างจาก Plugin อย่างไร
Skill คือความสามารถหนึ่งชุด
Plugin คือ Package ที่สามารถรวมหลายองค์ประกอบไว้ด้วยกัน เช่น
- Skills
- Subagents
- Hooks
- MCP Servers
- Output Styles
- Settings
หากเราต้องการสร้าง Workflow เล็ก ๆ สำหรับตัวเองหรือโปรเจกต์เดียว การสร้าง Skill โดยตรงมักเพียงพอ
แต่ถ้าต้องการแจกจ่ายระบบความสามารถหลายส่วนให้ทีมอื่นติดตั้ง การทำเป็น Plugin จะจัดการง่ายกว่า
ตำแหน่งสำหรับเก็บ Skills
ตำแหน่งที่เก็บ Skill มีผลต่อขอบเขตการใช้งาน
Personal Skill
หากต้องการใช้ Skill ในทุกโปรเจกต์ ให้เก็บไว้ที่
~/.claude/skills/<skill-name>/SKILL.md
ตัวอย่างเช่น
~/.claude/skills/review-changes/SKILL.md
เหมาะกับ Workflow ส่วนตัว เช่น
- วิธี Review Code ที่คุณใช้ประจำ
- รูปแบบ Commit Message
- วิธีอธิบายโค้ด
- วิธีสรุป Error Log
- Checklist ส่วนตัวก่อนส่งงาน
Project Skill
หากต้องการใช้เฉพาะโปรเจกต์ปัจจุบัน ให้เก็บไว้ที่
.claude/skills/<skill-name>/SKILL.md
ตัวอย่าง
my-project/
└── .claude/
└── skills/
└── create-api/
└── SKILL.md
Project Skills สามารถ Commit เข้า Git เพื่อให้สมาชิกในทีมใช้ Workflow เดียวกันได้
เหมาะกับความสามารถที่ผูกกับโครงสร้างของโปรเจกต์ เช่น
- สร้าง API ตาม Architecture ของระบบ
- สร้าง Database Migration
- เพิ่ม React Component ตาม Design System
- ตรวจสอบกฎเฉพาะของ Monorepo
- เตรียม Release ของผลิตภัณฑ์
Plugin Skill
Skill ที่มากับ Plugin จะอยู่ในโครงสร้างประมาณนี้
<plugin>/skills/<skill-name>/SKILL.md
เมื่อติดตั้งและเปิด Plugin แล้ว Skills ภายในจะพร้อมใช้งานตามขอบเขตของ Plugin
สร้าง Skill แรกด้วยตัวเอง
สมมติว่าเราต้องการสร้าง Skill สำหรับตรวจการเปลี่ยนแปลงที่ยังไม่ได้ Commit
เริ่มจากสร้างโฟลเดอร์
mkdir -p ~/.claude/skills/review-changes
จากนั้นสร้างไฟล์
~/.claude/skills/review-changes/SKILL.md
ใส่เนื้อหาดังนี้
--- name: review-changes description: Review uncommitted changes for bugs, risky behavior, and missing tests. Use when the user asks to review the current diff or prepare changes for commit. --- ## Current changes !`git diff HEAD` ## Instructions Review the changes above. Check for: - Functional bugs - Missing error handling - Hardcoded values - Security risks - Breaking changes - Missing tests - Unrelated changes Report findings in priority order. If no important problem is found, say that clearly.
เปิด Claude Code ภายใน Git Repository แล้วเรียก
/review-changes
Claude จะอ่าน Git Diff จริง แล้วตรวจตาม Checklist ที่เรากำหนด
บทบาทของ Description สำคัญมาก
ฟิลด์ description ไม่ได้มีไว้เพียงอธิบายให้มนุษย์อ่าน แต่ Claude ใช้ข้อมูลนี้เพื่อตัดสินใจว่า Skill เหมาะกับคำขอปัจจุบันหรือไม่
คำอธิบายที่กว้างเกินไป เช่น
description: Helps with code
อาจทำให้ Claude ไม่รู้ว่าควรเรียก Skill เมื่อไร หรือเรียกในสถานการณ์ที่ไม่เกี่ยวข้อง
ควรเขียนให้ชัดทั้งสิ่งที่ Skill ทำและสถานการณ์ที่ควรใช้ เช่น
description: Reviews uncommitted Git changes for bugs, security risks, breaking changes, and missing tests. Use before committing or when the user asks to review the current diff.
หาก Skill ไม่ถูกเรียกอัตโนมัติ ปัญหามักอยู่ที่ Description ไม่ตรงกับภาษาที่ผู้ใช้ใช้จริง
หาก Skill ถูกเรียกบ่อยเกินไป ควรทำ Description ให้เฉพาะเจาะจงขึ้น หรือปิดการเรียกอัตโนมัติ
ป้องกันไม่ให้ Claude เรียก Skill เอง
บาง Workflow ไม่ควรถูกเรียกโดย Claude อัตโนมัติ เช่น
- Deploy Production
- Commit Code
- ส่งข้อความ
- สร้าง Release
- ลบข้อมูล
- เปลี่ยน Database
- Push Branch
ในกรณีนี้ให้เพิ่ม
disable-model-invocation: true
ตัวอย่าง
--- name: deploy description: Deploy the application to production disable-model-invocation: true --- Deploy the application to production. Before deployment: 1. Run the required tests 2. Build the application 3. Confirm the current branch 4. Show the deployment plan 5. Wait for required approval
เมื่อกำหนดแบบนี้ Claude จะไม่เลือกเรียก Skill เอง ผู้ใช้ต้องสั่งโดยตรงด้วย
/deploy
แนวทางนี้สำคัญกับ Skill ที่สร้าง Side Effect หรือมีความเสี่ยงสูง
สร้าง Skill ที่ Claude เรียกได้ แต่ไม่ต้องแสดงในเมนู
บาง Skill มีไว้เป็นความรู้เบื้องหลัง ไม่ได้เป็นคำสั่งที่ผู้ใช้ต้องเรียกโดยตรง
สามารถกำหนด
user-invocable: false
ตัวอย่างเช่น Skill ที่อธิบาย Architecture ของระบบเก่า
--- name: legacy-system-context description: Explains the architecture and constraints of the legacy billing system user-invocable: false --- The legacy billing system has the following constraints: - Payment records are immutable - Refunds are stored as separate transactions - Customer IDs come from the CRM - Direct schema changes are not allowed
Claude สามารถโหลด Skill นี้เมื่อทำงานที่เกี่ยวข้อง แต่ Skill จะไม่ถูกเสนอเป็นคำสั่งสำหรับผู้ใช้ในเมนู /
ส่ง Arguments เข้า Skill
Skill สามารถรับค่าที่พิมพ์ต่อท้ายชื่อคำสั่งผ่านตัวแปร
$ARGUMENTS
ตัวอย่าง Skill สำหรับแก้ GitHub Issue
--- name: fix-issue description: Fix a GitHub issue by issue number argument-hint: "[issue-number]" disable-model-invocation: true --- Fix GitHub issue $ARGUMENTS. Follow this process: 1. Read the issue 2. Inspect relevant code 3. Explain the likely cause 4. Implement the smallest safe change 5. Add or update tests 6. Run the relevant checks 7. Summarize the result
เรียกใช้ด้วย
/fix-issue 123
Claude จะได้รับคำสั่งในลักษณะว่าให้แก้ Issue หมายเลข 123
รับ Arguments หลายค่า
สามารถอ้างอิง Arguments ตามตำแหน่งได้ด้วย
$0 $1 $2
ตัวอย่าง
--- name: migrate-component description: Migrate a component between frontend frameworks argument-hint: "[component] [source] [target]" --- Migrate the $0 component from $1 to $2. Requirements: - Preserve existing behavior - Preserve public props - Update tests - Do not refactor unrelated code
เรียกด้วย
/migrate-component SearchBar React Vue
ค่าที่ Claude ได้รับคือ
$0 = SearchBar $1 = React $2 = Vue
หาก Argument มีช่องว่าง ควรใส่เครื่องหมายคำพูด เช่น
/my-skill "customer profile" json
ดึงข้อมูลจริงเข้าสู่ Skill ด้วย Dynamic Context
Skill สามารถรัน Shell Command ก่อนส่งเนื้อหาให้ Claude ด้วยรูปแบบ
!`command`
ตัวอย่างเช่น
## Git status !`git status --short` ## Current diff !`git diff HEAD`
เมื่อ Skill ถูกเรียก Claude Code จะรันคำสั่งก่อน แล้วแทนตำแหน่งดังกล่าวด้วย Output จริง
Claude จะไม่เห็นเพียงคำว่า git diff HEAD แต่จะเห็น Diff ปัจจุบันของ Repository
ตัวอย่าง Skill สำหรับสรุป Pull Request
--- name: pr-summary description: Summarize the current pull request disable-model-invocation: true --- ## Pull request !`gh pr view` ## Changed files !`gh pr diff --name-only` ## Diff !`gh pr diff` Summarize: - Purpose of the change - Important implementation details - Potential risks - Tests that should be checked
ข้อควรเข้าใจคือ Command Injection ส่วนนี้ทำงานก่อน Claude เห็นเนื้อหา จึงเป็นขั้นตอนเตรียม Context ไม่ใช่ Tool Call ที่ Claude เลือกรันเองภายหลัง
ระวัง Shell Command ภายใน Skill
Skill ที่มีคำสั่ง
!`...`
สามารถเรียกคำสั่งบนเครื่องได้จริง
ดังนั้นก่อนเปิดใช้ Skill ที่มาจากผู้อื่น ควรตรวจสอบไฟล์ SKILL.md และ Script ทั้งหมดก่อน
อย่าดูเพียงชื่อ Skill หรือ Description เพราะคำสั่งที่ซ่อนอยู่ภายในอาจอ่านไฟล์ ส่งข้อมูล หรือเปลี่ยนแปลงระบบได้
องค์กรสามารถปิด Shell Execution ของ Skills จากผู้ใช้ โปรเจกต์ Plugin และ Additional Directory ได้ด้วยการตั้งค่า
{
"disableSkillShellExecution": true
}
เมื่อเปิดการตั้งค่านี้ Shell Command ภายใน Skills ที่อยู่ในขอบเขตดังกล่าวจะไม่ถูกรัน
กำหนด Tool ที่ใช้ได้โดยไม่ต้องขออนุญาตซ้ำ
Skill สามารถกำหนด allowed-tools เพื่อให้ Tool บางรายการได้รับการอนุมัติระหว่างการทำงานของ Skill
ตัวอย่าง Skill สำหรับ Commit
--- name: commit description: Stage and commit the current changes disable-model-invocation: true allowed-tools: - Bash(git status *) - Bash(git add *) - Bash(git commit *) --- Review the current changes. 1. Run git status 2. Review the diff 3. Stage only relevant files 4. Create a concise commit message 5. Commit the changes
สิ่งที่ต้องเข้าใจคือ allowed-tools ไม่ได้จำกัด Claude ให้ใช้ได้เฉพาะ Tool ที่ระบุ
มันเป็นการอนุญาตให้ Tool เหล่านั้นทำงานโดยไม่ถาม Permission ซ้ำระหว่าง Skill
Tool อื่นยังคงอยู่ และ Permission Settings ปกติยังใช้ควบคุม Tool ที่ไม่ได้อยู่ในรายการ
หากต้องการนำ Tool ออกจากชุดเครื่องมือระหว่าง Skill ต้องใช้ disallowed-tools
ปิด Tool บางชนิดระหว่าง Skill
ตัวอย่างเช่น เราต้องการสร้าง Skill สำหรับสำรวจ Codebase แต่ไม่ต้องการให้ Claude แก้ไฟล์
สามารถกำหนดว่า
disallowed-tools: - Edit - Write
ตัวอย่าง
--- name: architecture-review description: Analyze the architecture without modifying files disallowed-tools: - Edit - Write --- Analyze the current architecture. Do not modify files. Report: - Main modules - Dependencies - Data flow - Tight coupling - Scalability risks - Recommended improvements
ข้อจำกัดของ Tool จะมีผลระหว่างการทำงานของ Skill และจะถูกยกเลิกเมื่อผู้ใช้ส่งข้อความถัดไป
หากต้องการ Block Tool อย่างถาวรกว่า ควรกำหนดผ่าน Permission Settings
รัน Skill ใน Subagent แยก
Skill บางประเภทอาจใช้ Context จำนวนมาก เช่น
- สำรวจ Architecture
- วิเคราะห์ Dependency
- Research Codebase
- Review Security
- ตรวจเอกสารจำนวนมาก
สามารถกำหนดให้ Skill รันใน Context แยกด้วย
context: fork
ตัวอย่าง
--- name: deep-research description: Research a codebase topic thoroughly context: fork agent: Explore --- Research $ARGUMENTS thoroughly. 1. Find relevant files 2. Trace references 3. Read the implementation 4. Identify important dependencies 5. Return findings with file paths
เรียกด้วย
/deep-research authentication session flow
Claude Code จะสร้าง Subagent แยก ให้ Skill เป็น Prompt หลักของ Agent แล้วส่งผลลัพธ์สรุปกลับมายัง Session หลัก
ข้อดีคือข้อมูลการสำรวจจำนวนมากไม่เข้ามาเบียด Context ของบทสนทนาหลักโดยตรง
อย่างไรก็ตาม Subagent แบบ Fork จะไม่ได้รับประวัติการสนทนาทั้งหมดของ Session หลัก Skill จึงต้องมีคำสั่งที่สมบูรณ์และสามารถทำงานได้ด้วยตัวเอง
เลือก Agent สำหรับ Skill
เมื่อใช้
context: fork
สามารถระบุ Agent ได้ เช่น
agent: Explore
หรือ
agent: Plan
หรือ
agent: general-purpose
นอกจากนี้ยังสามารถอ้างอิง Custom Subagent จาก
.claude/agents/
ได้ด้วย
Explore เหมาะกับงานค้นหาและอ่าน Codebase
Plan เหมาะกับงานวิเคราะห์และออกแบบแผน
General-purpose เหมาะกับงานที่ต้องใช้ Tool หลายประเภทหรืออาจมีการแก้ไขไฟล์
เพิ่มไฟล์ประกอบใน Skill
Skill ไม่จำเป็นต้องมีเพียง SKILL.md ไฟล์เดียว
สามารถเพิ่ม Template, ตัวอย่าง, Reference และ Script ไว้ในโฟลเดอร์เดียวกันได้
ตัวอย่าง
create-api/
├── SKILL.md
├── reference.md
├── examples.md
├── template.md
└── scripts/
└── validate-api.sh
ใน SKILL.md ควรอธิบายว่าไฟล์แต่ละรายการใช้เมื่อไร เช่น
## Supporting resources - Read [reference.md](reference.md) for the complete API conventions. - Read [examples.md](examples.md) before generating a new endpoint. - Use [template.md](template.md) as the output structure. - Run `scripts/validate-api.sh` after implementation.
Claude จะสามารถโหลดไฟล์รายละเอียดเมื่อต้องใช้ แทนที่จะใส่ทุกอย่างลงใน SKILL.md
แนวทางนี้ช่วยให้ Skill หลักอ่านง่ายและไม่ใช้ Context มากเกินไป
อย่าเขียน SKILL.md ยาวเกินความจำเป็น
เมื่อ Skill ถูกเรียก เนื้อหาของ Skill จะเข้าสู่ Context และอยู่ใน Session ต่อไป
ดังนั้น Skill ที่ยาวมากจะเพิ่มต้นทุน Context ในทุก Turn หลังจากเรียกใช้
แนวทางที่ดีคือให้ SKILL.md เป็นภาพรวม ขั้นตอนหลัก และ Navigation ไปยังไฟล์ประกอบ
รายละเอียดจำนวนมาก เช่น
- API Specification
- ตัวอย่าง Output หลายสิบรายการ
- Coding Standard ฉบับเต็ม
- Reference Documentation
- Script ขนาดใหญ่
ควรแยกเป็น Supporting Files
เอกสารทางการแนะนำให้พยายามรักษา SKILL.md ให้ต่ำกว่า 500 บรรทัด
Skill ถูกโหลดตอนไหน
ใน Session ปกติ Claude จะรู้ชื่อและ Description ของ Skills ที่พร้อมใช้งาน
เนื้อหาเต็มของ Skill จะยังไม่ถูกโหลด จนกว่าผู้ใช้หรือ Claude จะเรียก Skill นั้น
เมื่อ Skill ถูกเรียก เนื้อหาจะเข้าสู่ Conversation และอยู่ใน Context ของ Session
Claude Code ไม่ได้เปิดอ่าน SKILL.md ใหม่ทุก Turn
ดังนั้น หากแก้ไฟล์ Skill หลังจากเรียก Skill ไปแล้ว Session ปัจจุบันอาจยังคงใช้เนื้อหาเดิมที่ถูกโหลดเข้ามา
วิธีที่ชัดเจนคือเรียก Skill ใหม่ หรือเริ่ม Session ใหม่เมื่อจำเป็นต้องทดสอบเวอร์ชันที่แก้ไขล่าสุด
การแก้ Skill ระหว่าง Session
Claude Code สามารถตรวจจับการเพิ่ม แก้ไข หรือลบ Skill ใน Directory ที่ระบบกำลังติดตามอยู่ได้
การแก้ SKILL.md ภายในโฟลเดอร์ Skills ที่มีอยู่แล้วมักมีผลใน Session ปัจจุบันโดยไม่ต้อง Restart
แต่ถ้าเพิ่งสร้าง Top-level Skills Directory ที่ไม่มีอยู่ตอนเริ่ม Session เช่นเพิ่งสร้าง
~/.claude/skills/
เป็นครั้งแรก อาจต้อง Restart Claude Code เพื่อให้ Directory ใหม่ถูกติดตาม
ตรวจสอบ Skills ที่มีอยู่
ภายใน Claude Code สามารถพิมพ์
/
เพื่อเปิดรายการ Commands และ Skills
หรือใช้
/skills
เพื่อดูและจัดการการแสดงผลของ Skills ใน Environment ปัจจุบัน
หาก Skill ไม่ปรากฏ ควรตรวจสอบว่า
- โฟลเดอร์อยู่ในตำแหน่งถูกต้อง
- ชื่อไฟล์เป็น
SKILL.md - YAML Frontmatter ใช้รูปแบบถูกต้อง
- Session เริ่มจาก Directory ที่เกี่ยวข้อง
- Skill ไม่ถูกปิดผ่าน Settings
- Plugin ที่ให้ Skill เปิดใช้งานอยู่
- ชื่อ Skill ไม่ถูก Override ด้วย Skill ระดับอื่น
Skill ใน Monorepo
Claude Code สามารถค้นหา Skills จาก Directory หลักและ Directory ย่อยได้
ตัวอย่าง
monorepo/
├── .claude/
│ └── skills/
│ └── release/
│ └── SKILL.md
└── apps/
└── web/
└── .claude/
└── skills/
└── release/
└── SKILL.md
Skill ระดับ Root อาจใช้สำหรับ Release ทั้งระบบ
Skill ที่อยู่ใน apps/web อาจใช้เฉพาะการ Release Web Application
Skill ใน Directory ย่อยสามารถถูกแสดงด้วยชื่อที่มี Directory กำกับ เช่น
/apps/web:release
วิธีนี้ช่วยให้แต่ละ Package ใน Monorepo มี Workflow ของตัวเอง โดยไม่ต้องยัดทุกอย่างไว้ที่ Root
ลำดับความสำคัญเมื่อ Skill ชื่อซ้ำกัน
Skills สามารถมาจากหลายระดับ ได้แก่
- Enterprise
- Personal
- Project
- Plugin
- Directory ย่อย
เมื่อ Skill ระดับหลักมีชื่อซ้ำกัน ลำดับ Override โดยทั่วไปคือ Enterprise เหนือ Personal และ Personal เหนือ Project
Skill ที่ผู้ใช้หรือโปรเจกต์สร้างยังสามารถใช้ชื่อเดียวกับ Bundled Skill เพื่อแทนที่ Skill ที่มากับระบบได้
ส่วน Plugin Skills ใช้ Namespace ของ Plugin เช่น
plugin-name:skill-name
จึงลดปัญหาการชนกับ Skills ระดับอื่น
ก่อนสร้างชื่อ Skill ควรตรวจสอบรายการปัจจุบันก่อน เพื่อไม่ให้ Override ความสามารถเดิมโดยไม่ตั้งใจ
Custom Commands เดิมยังใช้ได้
ก่อนมีโครงสร้าง Skills ผู้ใช้ Claude Code สามารถสร้าง Custom Command ไว้ใน
.claude/commands/
ไฟล์เดิมยังสามารถใช้งานต่อได้
ตัวอย่าง
.claude/commands/deploy.md
ยังสร้างคำสั่ง
/deploy
ได้
แต่สำหรับการสร้าง Workflow ใหม่ Anthropic แนะนำโครงสร้าง Skills เพราะรองรับ Directory, Supporting Files, Scripts และการตั้งค่าขั้นสูงได้มากกว่า
หากมี Skill และ Command ชื่อเดียวกัน Skill จะมีความสำคัญเหนือกว่า
Bundled Skills ที่มากับ Claude Code
Claude Code มี Skills บางรายการติดตั้งมาให้พร้อมใช้งาน เช่น Skills สำหรับ
- Code Review
- Batch Work
- Debugging
- Loop Workflow
- การใช้งาน Claude API
Skills เหล่านี้ต่างจาก Built-in Commands บางรายการตรงที่เป็น Workflow แบบ Prompt-based
เมื่อเรียก Skill Claude จะได้รับคำแนะนำและใช้ Tool ต่าง ๆ เพื่อดำเนินงาน ไม่ใช่เพียงเรียก Logic แบบตายตัวของโปรแกรม
เราสามารถพิมพ์
/
เพื่อดู Bundled Skills ที่พร้อมใช้งานในเวอร์ชันปัจจุบัน
ตัวอย่าง Skill สำหรับเริ่มพัฒนาฟีเจอร์
--- name: build-feature description: Plan and implement a new feature using the project conventions argument-hint: "[feature-description]" disable-model-invocation: true --- Build the following feature: $ARGUMENTS Follow this workflow: 1. Read CLAUDE.md and relevant project instructions. 2. Explore the existing implementation. 3. Identify reusable modules and components. 4. Explain the proposed approach before editing. 5. Implement the smallest complete change. 6. Add or update tests. 7. Run relevant tests, lint, and typecheck. 8. Review the final diff. 9. Summarize changed files, test results, and remaining risks. Do not perform unrelated refactoring. Do not add a major dependency without approval.
เรียกใช้ด้วย
/build-feature เพิ่มระบบ Reset Password ผ่านอีเมล
ตัวอย่าง Skill สำหรับสร้าง Test
--- name: add-tests description: Add focused tests for a file, component, or behavior argument-hint: "[target]" --- Add tests for: $ARGUMENTS Before writing tests: 1. Read existing tests in the nearest directory. 2. Identify the project's test framework and conventions. 3. List important success, failure, and edge cases. Then: 1. Add the minimum useful test coverage. 2. Reuse existing fixtures and helpers. 3. Avoid testing implementation details. 4. Run the relevant test file. 5. Report what is covered and what remains untested.
เรียกด้วย
/add-tests src/services/payment.ts
ตัวอย่าง Skill สำหรับตรวจ Security แบบแยก Context
--- name: security-audit description: Audit a module for security vulnerabilities and unsafe data handling argument-hint: "[path-or-module]" context: fork agent: Explore disallowed-tools: - Edit - Write --- Perform a read-only security audit of: $ARGUMENTS Check for: - Missing authentication - Broken authorization - Injection risks - Unsafe input handling - Sensitive data exposure - Secret leakage - Insecure logging - Unsafe file access - Missing rate limiting - Weak error handling Return findings with: 1. Severity 2. File path and relevant code 3. Why it is risky 4. Recommended remediation Do not modify files.
วิธีออกแบบ Skill ให้ใช้งานได้จริง
กำหนดงานให้แคบพอ
Skill ที่ชื่อ
/do-everything
และพยายามทำตั้งแต่วิเคราะห์ ออกแบบ เขียนโค้ด Deploy และเขียนเอกสาร มักควบคุมยาก
ควรแยกเป็น Skills ตามหน้าที่ เช่น
/plan-feature /build-feature /add-tests /review-changes /prepare-release
แต่ละ Skill จะมี Input และผลลัพธ์ที่ชัดเจนกว่า
เขียนผลลัพธ์ที่ต้องการให้ชัด
อย่าเขียนเพียงว่า
Review the code.
ควรระบุว่า Review เรื่องใด และต้องรายงานอย่างไร
Review the current diff for functional bugs, security risks, breaking changes, missing tests, and unrelated modifications. Report findings by severity and include file paths.
ระบุสิ่งที่ห้ามทำ
ตัวอย่างเช่น
Do not modify files. Do not install dependencies. Do not refactor unrelated code. Do not commit or push. Do not modify migration files.
ข้อจำกัดช่วยลดโอกาสที่ Claude จะขยายขอบเขตงานเกินความจำเป็น
ให้ Skill ใช้ข้อมูลจริง
แทนที่จะให้ Claudeเดาสถานะของ Repository ควรดึงข้อมูลจริง เช่น
!`git status --short` !`git diff HEAD` !`git branch --show-current`
แต่ต้องระวัง Output ที่ยาวเกินไปและคำสั่งที่มี Side Effect
แยก Reference ออกจาก Workflow
Workflow หลักควรกระชับ
เอกสารขนาดใหญ่ควรอยู่ในไฟล์ประกอบ แล้วบอก Claude ว่าควรอ่านเมื่อใด
ทดสอบใน Session ใหม่
หลังสร้าง Skill ควรเปิด Session ใหม่และทดลองด้วยคำขอจริง
การทดสอบใน Session ที่ใช้เขียน Skill อาจทำให้ Claude ใช้ข้อมูลจากบทสนทนาก่อนหน้า จนดูเหมือน Skill ทำงานดี ทั้งที่คำแนะนำในไฟล์ยังไม่สมบูรณ์
วิธีทดสอบ Skill อย่างเป็นระบบ
ควรทดสอบอย่างน้อยสองเรื่องแยกกัน
เรื่องแรกคือ Skill ถูกเรียกในเวลาที่ควรเรียกหรือไม่
เรื่องที่สองคือเมื่อ Skill ถูกเรียกแล้ว ผลลัพธ์ตรงกับที่ต้องการหรือไม่
สร้าง Prompt ทดสอบสามกลุ่ม
Prompt ที่ควรเรียก Skill
ช่วยตรวจ Diff ปัจจุบันก่อน Commit
Prompt ที่ไม่ควรเรียก Skill
ช่วยอธิบายว่า Git Diff คืออะไร
Prompt ที่กำกวม
ช่วยดูงานที่ผมแก้หน่อย
ถ้า Skill ไม่ถูกเรียกในกลุ่มแรก ให้ปรับ Description
ถ้า Skill ถูกเรียกในกลุ่มที่สองบ่อยเกินไป ให้ทำ Description ให้เฉพาะเจาะจงขึ้น หรือใช้ disable-model-invocation: true
เมื่อ Skill ไม่ทำงาน
หากเรียก
/my-skill
ไม่ได้ ให้ตรวจสอบชื่อ Directory และตำแหน่ง SKILL.md
หากเรียกด้วยชื่อได้ แต่ Claude ไม่เลือกใช้อัตโนมัติ ให้ตรวจสอบ description
หาก YAML Frontmatter ผิดรูปแบบ Skill อาจยังเรียกด้วยชื่อได้ แต่ Metadata เช่น Description, Tool และ Invocation Control อาจไม่ถูกโหลด
สามารถเปิด Claude Code ด้วย Debug Mode เพื่อตรวจ Parse Error
claude --debug
หรือใช้
/doctor
เพื่อตรวจปัญหาการตั้งค่าและจำนวน Skill Descriptions ที่ถูกตัดออก
อย่าติดตั้ง Skill จากภายนอกโดยไม่ตรวจสอบ
Skill สามารถมี
- Shell Command
- Script
- Allowed Tools
- Hooks
- MCP Integration
- คำสั่งที่แก้ไขไฟล์
- คำสั่งที่เข้าถึง Network
จึงควรปฏิบัติต่อ Skill เหมือน Source Code
ก่อนเปิดใช้ควรตรวจสอบ
SKILL.md- Supporting Files
- Scripts
- Hooks
- Permission ที่ Skill ขอ
- คำสั่ง Shell
- การส่งข้อมูลไปภายนอก
- ขอบเขตไฟล์ที่ Skill เข้าถึง
โดยเฉพาะ Project Skill ที่มากับ Repository ควรอ่านก่อนกดยอมรับ Workspace Trust
จาก Prompt Library สู่ระบบการทำงานของ AI
Prompt Library เป็นจุดเริ่มต้นที่ดีสำหรับเก็บคำสั่งที่ใช้บ่อย
แต่ Skills ทำให้ Prompt เหล่านั้นกลายเป็นส่วนหนึ่งของระบบการทำงาน
Skill สามารถรู้ว่าเมื่อไรควรถูกเรียก สามารถรับ Arguments โหลด Reference ดึงข้อมูลจริง รัน Script ควบคุม Tool และส่งงานให้ Subagent ได้
แทนที่จะพึ่งว่าผู้ใช้จะจำ Prompt ยาว ๆ ได้ทุกครั้ง เราสามารถฝัง Workflow ไว้ในโปรเจกต์
ตัวอย่างเช่น ทีมอาจมี Skills เหล่านี้
/plan-feature /build-feature /add-tests /review-changes /security-audit /prepare-release
เมื่อสมาชิกใหม่หรือ Claude Session ใหม่เข้ามาทำงาน ทุกคนสามารถใช้กระบวนการเดียวกันได้
Claude Skills จึงไม่ใช่เพียงเครื่องมือช่วยลดการพิมพ์ซ้ำ
แต่มันคือวิธีเปลี่ยนความรู้ วิธีทำงาน และมาตรฐานของทีม ให้กลายเป็นความสามารถที่ Claude สามารถนำไปใช้ซ้ำได้อย่างเป็นระบบ
ยิ่ง Workflow มีความชัดเจนมากเท่าไร Claude ก็ยิ่งทำงานได้สม่ำเสมอ ตรวจสอบง่าย และลดการพึ่งพาการอธิบายใหม่ในทุก Session มากขึ้นเท่านั้น