תיעוד 142
הרחבת סוכנים באמצעות כישורים
שליטה באילו כישורים Claude יכול להפעיל בהפעלות של Claude Agent SDK, הרצת פקודות לפי שם, ויצירת כישורים שההפעלות שלך מגלות
כישורי סוכן (Agent Skills) מרחיבים את Claude ביכולות ייעודיות ש-Claude מפעיל כאשר הן רלוונטיות. כישורים ארוזים כקובצי SKILL.md המכילים הוראות, תיאורים ומשאבי תמיכה אופציונליים. דף זה מכסה גם פקודות בהפעלות של Agent SDK.
למידע מקיף על כישורים, כולל יתרונות, ארכיטקטורה והנחיות לכתיבה, ראו את סקירת כישורי סוכן.
#כיצד כישורים עובדים עם Agent SDK
בעת שימוש ב-Claude Agent SDK, כישורים הם:
- מוגדרים כתוצרי מערכת קבצים: יוצרים כל כישור כקובץ
SKILL.mdבתיקייה משלו, כגון.claude/skills/<name>/SKILL.md - נטענים ממערכת הקבצים: ה-SDK טוען כישורים ממיקומי מערכת הקבצים הנקבעים על ידי
settingSources(ב-TypeScript) אוsetting_sources(ב-Python) - מתגלים אוטומטית: ברגע שהגדרות מערכת הקבצים נטענות, ה-SDK מגלה מטא-דאטה של כישורים בעת ההפעלה מתיקיות המשתמש והפרויקט, וטוען את התוכן המלא כאשר Claude מפעיל את הכישור
- מופעלים על ידי המודל: Claude בוחר באופן עצמאי מתי להשתמש בהם על סמך ההקשר
- מופעלים על ידי המשתמש: מפעילים כישור ישירות על ידי שליחת
/<name>בהנחיה (prompt). ראו פקודות בהפעלות של Agent SDK - מוגדרים לפי טווח באמצעות האפשרות
skills: כישורים שהתגלו מופעלים כברירת מחדל. מעבירים רשימה של שמות כישורים,"all", או[]כדי לשלוט באילו כישורים Claude יכול להפעיל
בשונה מתתי-סוכנים, שאותם ניתן להגדיר באפשרות agents, כישורים נוצרים כקבצים בדיסק. ה-SDK אינו מספק API תכנותי לרישום שלהם.
הערה: כישורים מתגלים דרך מקורות ההגדרות של מערכת הקבצים. עם אפשרויות ברירת המחדל של
query(), ה-SDK טוען מקורות משתמש ופרויקט, כך שכישורים ב-~/.claude/skills/, ב-<cwd>/.claude/skills/, וב-.claude/skills/בכל תיקיית אב של<cwd>עד לשורש המאגר (repository root) זמינים. מקור הפרויקט מכסה גם את<dir>/.claude/skills/בכל תיקייה שמועברת דרךadditionalDirectories(ב-TypeScript) אוadd_dirs(ב-Python), מכיוון שה-SDK מעביר את התיקיות הללו ל-Claude Code בתור--add-dir. אם מגדירים אתsettingSourcesבמפורש, יש לכלול את'project'כדי לשמור על כישורי פרויקט ותיקיות שנוספו ואת'user'כדי לשמור על הכישורים האישיים, או להשתמש באפשרותpluginsכדי לטעון כישורים מנתיב ספציפי.
#שימוש בכישורים עם Agent SDK
הגדר את האפשרות skills ב-query() כדי לשלוט באילו כישורים Claude יכול להפעיל בהפעלה (session). כאשר היא מושמטת, כישורים שהתגלו מופעלים והכלי Skill זמין, בהתאם להתנהגות ה-CLI. העבר "all" כדי לאפשר ל-Claude להפעיל כל כישור שהתגלה, רשימה של שמות כישורים כדי לאפשר רק אותם, או [] כדי לא לאפשר ל-Claude להפעיל אף כישור.
לדוגמה, כדי לאפשר ל-Claude להפעיל רק שני כישורים ספציפיים:
Python:
options = ClaudeAgentOptions(skills=["pdf", "docx"])TypeScript:
const options = { skills: ["pdf", "docx"] };#הגדרת כישורים בהפעלה
כאשר מגדירים את skills, ה-SDK מוסיף את הכלי Skill לרשימת allowedTools באופן אוטומטי. אם מעבירים גם רשימת tools מפורשת, יש לכלול בה את "Skill" כדי ש-Claude יוכל להפעיל כישורים.
לאחר ההגדרה, Claude מגלה כישורים באופן אוטומטי ממערכת הקבצים ומפעיל אותם כאשר הם רלוונטיים לבקשת המשתמש.
הדוגמה הבאה מפעילה כל כישור שהתגלה בהפעלה ומאשרת מראש את הכלים שכישורים זקוקים להם בדרך כלל. הדוגמה מגדירה את cwd לתיקיית העבודה הנוכחית של התהליך, ולכן יש להריץ אותה מתוך פרויקט שמכיל תיקיית .claude/skills/ בתיקייה הנוכחית או בכל תיקיית אב עד לשורש המאגר:
Python:
import asyncio
import os
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
options = ClaudeAgentOptions(
cwd=os.getcwd(),
# .claude/skills/ here or in a parent directory
setting_sources=["user", "project"],
# Load skills from filesystem
skills="all",
# Let Claude invoke every discovered skill
allowed_tools=["Read", "Write", "Bash"],
)
async for message in query(
prompt="Help me process this PDF document", options=options
):
print(message)
asyncio.run(main())TypeScript:
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Help me process this PDF document",
options: {
cwd: process.cwd(), // .claude/skills/ here or in a parent directory
settingSources: ["user", "project"], // Load skills from filesystem
skills: "all", // Let Claude invoke every discovered skill
allowedTools: ["Read", "Write", "Bash"]
}
})) {
console.log(message);
}#אישור טעינת הכישורים
בסמוך לתחילת הזרם (stream), ה-SDK מפיק הודעת מערכת עם תת-סוג init. בדוק את מערך skills שלה כדי לאשר שהכישורים נטענו לפני ש-Claude מתחיל לעבוד. המערך כולל את הכישורים הניתנים להפעלה על ידי משתמש שהגדרת, יחד עם כישורים מובנים הכלולים ב-Claude Code.
המערך מפרט כישורים הניתנים להפעלה על ידי משתמש בלבד. כישור עם user-invocable: false ב-frontmatter שלו נטען ונשאר זמין ל-Claude, אך אינו מופיע במערך. המערך משקף את מה שההפעלה גילתה ומציג את אותם הכישורים בין אם הם נמצאים ברשימת skills שלך ובין אם לא.
#מתן הרשאה לכישורים ספציפיים בלבד
כדי לאפשר ל-Claude להפעיל רק כישורים ספציפיים, העבר את שמותיהם ברשימת skills. השמות תואמים לשדה name ב-SKILL.md או לשם התיקייה של הכישור. השתמש ב-plugin:skill עבור כישורים המסופקים על ידי תוספים (plugins).
הרשימה מקבלת שמות כישורים מדויקים בלבד. אם פריט אינו יכול לפעול כשם מדויק, query() דוחה את הרשימה לפני תחילת ההפעלה. ראה שגיאת שם כישור לא תקין עבור כללי השמות והשגיאה שכל SDK מעלה.
המודל אינו רואה כישורים שאינם ברשימה והכלי Skill דוחה אותם, בעוד הקבצים שלהם נשארים בדיסק ונגישים דרך Read ו-Bash. הגבלת הרשימה אינה מגבילה הפעלה לפי שם.
כדי לאפשר ל-Claude להפעיל כל כישור שהתגלה, העבר skills: "all" במקום תו כללי (wildcard).
#פקודות בהפעלות של Agent SDK
סעיף זה הוא תיעוד הפקודות של ה-SDK. פקודה היא כל דבר שאתה מריץ על ידי שליחת /<name> בתוך הנחיה (prompt). פריטים בממשק הפקודות נבדלים במה שמגבה אותם:
- פקודות מובנות: מריצות לוגיקה שמקודדת בתוך תהליך Claude Code שה-SDK מריץ, לדוגמה
/compact - כישורים מוכנים מראש (bundled skills): תוצרי הנחיה הכלולים ב-Claude Code, לדוגמה
/code-review - הכישורים שלך: תוצרי הנחיה שאתה יוצר, כאשר כל אחד מהם הוא תיקייה המכילה קובץ
SKILL.md. שמו של כישור הניתן להפעלה על ידי משתמש מצטרף לממשק הפקודות באופן אוטומטי, כך שהרצת/security-checkמשלך והרצת פקודה מובנית פועלות באותו אופן - קובצי פקודה מותאמים אישית: צורת תוצר ישנה יותר בעלת אותה התנהגות, קובצי Markdown פשוטים ב-
.claude/commands/ששמות הקבצים שלהם הופכים לשמות פקודות. כישורים הם החלופה המומלצת עבורם
כברירת מחדל, גם אתה וגם Claude יכולים להפעיל כל כישור. ניתן להגביל כל אחד מהנתיבים דרך ה-frontmatter של הכישור. להגדרת שני המונחים, ראה את הערכים פקודה (Command) ו-כישור (Skill) במילון המונחים. ראה פקודות ב-Claude Code עבור כל פקודה מובנית ואת הרחבת Claude באמצעות כישורים למדריך המלא עבור שני סוגי התוצרים.
#גילוי פקודות זמינות
ניתן להפעיל דרך ה-SDK פקודות הפועלות ללא מסוף (terminal) אינטראקטיבי. הודעת system/init מפרטת את הפקודות הזמינות בהפעלה שלך בשדה slash_commands שלה. פקודות הזקוקות למסוף אינטראקטיבי, כגון /theme ו-/terminal-setup, אינן מופיעות ברשימה. גש לשדה זה כאשר ההפעלה שלך מתחילה:
TypeScript:
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Hello Claude",
options: { maxTurns: 1 }
})) {
if (message.type === "system" && message.subtype === "init") {
console.log("Available commands:", message.slash_commands);
}
}Python:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, SystemMessage
async def main():
async for message in query(prompt="Hello Claude", options=ClaudeAgentOptions(max_turns=1)):
if isinstance(message, SystemMessage) and message.subtype == "init":
print("Available commands:", message.data["slash_commands"])
asyncio.run(main())הרשימה המודפסת משלבת פקודות מובנות, כישורים מוכנים מראש, כישורים שניתנים להפעלה על ידי משתמש שהגדרת, וקובצי .claude/commands/:
Available commands: ["clear", "compact", "context", "usage", "code-review", "verify", "security-check", ...]הכישורים שלך שניתנים להפעלה על ידי משתמש מופיעים הן ברשימה זו והן במערך skills מתוך אישור טעינת הכישורים. רשימת slash_commands מוסיפה את שאר הפקודות הזמינות בהפעלה שלך. כישור עם user-invocable: false ב-frontmatter שלו אינו מופיע באף אחת מהן. הפעלות שמגדירות שרתי MCP יכולות לחשוף גם הנחיות MCP כפקודות.
#הפעלת פקודות לפי שם
שלח פקודה על ידי הכללתה במחרוזת ההנחיה (prompt) שלך, באותו אופן שבו אתה שולח טקסט רגיל. ההפעלה אינה תלויה באפשרות skills. שליחת /<name> מריצה כישור הניתן להפעלה על ידי משתמש גם כאשר רשימת skills שלך משמיטה אותו. פקודות הפועלות על היסטוריית השיחה, כגון /compact, זקוקות להודעות קודמות כדי לעבוד איתן.
הערה: פקודה יכולה להגיע למגבלת
maxTurns/max_turnsכמו כל הנחיה אחרת, ולסיים את השאילתה עם תוצאת שגיאה במקוםsuccess. לחוזה תוצאת השגיאה, ראה טיפול בתוצאה. אם הפקודה שלך עשויה להגיע למגבלה, עטוף את הלולאה ב-try/catchב-TypeScript או ב-try/exceptב-Python, כפי שמוצג ב-קלט הודעה בודדת, או הגדר אתmaxTurnsלערך גבוה מספיק להשלמת העבודה.
#צמצום היסטוריה באמצעות /compact
הפקודה /compact מקטינה את גודל היסטוריית השיחה שלך על ידי סיכום הודעות ישנות יותר תוך שמירה על הקשר חשוב. צמצום (compaction) זקוק לשיחה קיימת עם מספיק הודעות קודמות לסיכום. דוגמה זו מנהלת שיחה תחילה, לאחר מכן מצמצמת אותה וקוראת את הודעת המערכת compact_boundary המדווחת על התוצאה:
TypeScript:
import { query } from "@anthropic-ai/claude-agent-sdk";
// Compaction needs existing history, so have a conversation first
try {
for await (const message of query({
prompt: "Explain what this project does",
options: { maxTurns: 2 }
})) {
if (message.type === "result" && message.subtype === "success") {
console.log(message.result);
}
}
} catch (error) {
// A single-shot query() throws after yielding an error result,
// so the follow-up query below still runs.
console.error(`Session ended with an error: ${error}`);
}
// Compact the same conversation
for await (const message of query({
prompt: "/compact",
options: { continue: true, maxTurns: 1 }
})) {
if (message.type === "system" && message.subtype === "compact_boundary") {
console.log("Compaction completed");
console.log("Pre-compaction tokens:", message.compact_metadata.pre_tokens);
console.log("Trigger:", message.compact_metadata.trigger);
// Example output:
// Compaction completed
// Pre-compaction tokens: 1842
// Trigger: manual
}
}Python:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage, SystemMessage
async def main():
# Compaction needs existing history, so have a conversation first
try:
async for message in query(
prompt="Explain what this project does",
options=ClaudeAgentOptions(max_turns=2),
):
if isinstance(message, ResultMessage) and message.subtype == "success":
print(message.result)
except Exception as error:
# A single-shot query() raises after yielding an error result,
# so the follow-up query below still runs.
print(f"Session ended with an error: {error}")
# Compact the same conversation
async for message in query(
prompt="/compact",
options=ClaudeAgentOptions(continue_conversation=True, max_turns=1),
):
if isinstance(message, SystemMessage) and message.subtype == "compact_boundary":
print("Compaction completed")
print("Pre-compaction tokens:", message.data["compact_metadata"]["pre_tokens"])
print("Trigger:", message.data["compact_metadata"]["trigger"])
# Example output:
# Compaction completed
# Pre-compaction tokens: 1842
# Trigger: manual
asyncio.run(main())הערה: הודעת
compact_boundaryמגיעה רק כאשר הצמצום רץ בפועל. כאשר אין מה לסכם,/compactמדווח על הסיבה במקום להעלות שגיאה. ההרצה עדיין מסתיימת בתוצאתsuccessללא הודעתcompact_boundary, וטקסט התוצאה נושא את הסיבה, למשלNot enough messages to compact.לאחר חילופי דברים קצרים בודדים. קריאתquery()חד-פעמית (one-shot) חדשה מתחילה עם הקשר ריק, לכן השתמש בדפוס זה בהפעלה עם תורות קודמים, למשל ב-מצב קלט בהזרמה או בעת חידוש הפעלה.
#איפוס ההקשר באמצעות /clear
הפקודה /clear מאפסת את השיחה להקשר ריק, כך שהנחיות עוקבות מתחילות ללא היסטוריית שיחה קודמת. השיחה הקודמת נשארת בדיסק. ניתן לחזור לשיחה זו על ידי העברת מזהה ההפעלה (session ID) שלה לאפשרות resume.
הפקודה /clear שימושית ב-מצב קלט בהזרמה, שבו שולחים הנחיות מרובות דרך חיבור יחיד. עבור קריאות query() חד-פעמיות, כל קריאה ממילא מתחילה עם הקשר ריק, ולכן לשליחת /clear אין השפעה מעשית. התחל query() חדש במקום זאת.
#יצירת כישורים
צור כל כישור כתיקייה המכילה קובץ SKILL.md עם YAML frontmatter ותוכן Markdown. השדה description קובע מתי Claude יפעיל את הכישור שלך.
מבנה תיקיות לדוגמה:
.claude/skills/security-check/
└── SKILL.md#בחירת רמת גילוי
שמור כישורים באחת משתי רמות הגילוי הנפוצות ביותר:
- כישורי פרויקט:
.claude/skills/, זמינים רק בפרויקט הנוכחי - כישורים אישיים:
~/.claude/skills/, זמינים בכל הפרויקטים שלך
אם יש לך קובצי פקודה מותאמים אישית קיימים ב-.claude/commands/, הם ממשיכים לעבוד. קובץ פקודה ב-.claude/commands/deploy.md יוצר את /deploy ועובד באותו אופן שבו היה עובד כישור ב-.claude/skills/deploy/SKILL.md. אם קובץ פקודה וכישור חולקים את אותו השם, ראה היכן כישורים נמצאים כדי לדעת מי מהם רץ. ה-SDK טוען קובצי .claude/commands/ ו-~/.claude/commands/ מאותם שני הטווחים כמו כישורים. ראה הרחבת Claude באמצעות כישורים למדריך המלא עבור שני סוגי התוצרים.
#יצירה והפעלה של הכישור הראשון שלך
כדי לראות את התהליך המלא, צור את .claude/skills/security-check/SKILL.md:
---
name: security-check
description: Run a security vulnerability scan
---
Analyze the codebase for security vulnerabilities including:
- SQL injection risks
- XSS vulnerabilities
- Exposed credentials
- Insecure configurationsברגע שהקובץ קיים, הכישור זמין דרך ה-SDK. Claude מפעיל אותו כאשר בקשה תואמת את התיאור שלו, וניתן להפעיל אותו ישירות:
TypeScript:
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "/security-check",
options: { maxTurns: 10 }
})) {
if (message.type === "result" && message.subtype === "success") {
console.log(message.result);
}
}Python:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
async def main():
async for message in query(
prompt="/security-check", options=ClaudeAgentOptions(max_turns=10)
):
if isinstance(message, ResultMessage) and message.subtype == "success":
print(message.result)
asyncio.run(main())הרצה מוצלחת מסתיימת בתוצאת success שהטקסט שלה נושא את ממצאי הסריקה. מול אפליקציית Express קטנה עם בעיות שהושתלו בה, טקסט התוצאה מתחיל כך:
**Security scan of `app.js`: 4 findings (most severe first):**
1. **SQL Injection** (line 8): `req.query.name` is concatenated directly into the SQL string. Trivially exploitable (`' OR '1'='1`, `'; DROP TABLE users;--`). **Fix:** use parameterized queries, e.g. `db.query("SELECT * FROM users WHERE name = ?", [req.query.name], cb)`.
...שם הכישור מופיע גם במערך slash_commands של הודעת ה-init.
הערה: Claude Code כולל את הכישורים המוכנים מראש
code-reviewו-verify. אם תקרא לקובץ ב-.claude/commands/על שם אחד מהם, לדוגמה.claude/commands/code-review.md, הפקודה של הקובץ תסתיר את הכישור המובנה ו-slash_commandsיציג את השם פעם אחת בלבד.
#אישור כלים מראש עבור כישורים
הערה: עבור כישורי פרויקט וכישורים אישיים, Claude Code מחיל את שדה ה-frontmatter בשם
allowed-toolsבהפעלות SDK. ניתן גם לאשר כלים מראש עבור כישורים אלה דרך האפשרותallowedTools(allowed_toolsב-Python) בהגדרת השאילתה שלך. כישורים שסונכרנו מ-claude.ai פועלים לפי כללי ה-frontmatter שלהם.
כישורים רצים עם כלי ההפעלה. הדוגמה להלן מאשרת מראש את Read, Grep ו-Glob באמצעות allowedTools (allowed_tools ב-Python), כך ש-Claude יכול לבדוק קבצים בזמן הרצת כישור security-check מבלי לעצור לבקשת אישור:
Python:
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
options = ClaudeAgentOptions(
setting_sources=["user", "project"],
# Load skills from filesystem
skills="all",
allowed_tools=["Read", "Grep", "Glob"],
)
async def main():
async for message in query(prompt="Check this project for security issues", options=options):
print(message)
asyncio.run(main())TypeScript:
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const message of query({
prompt: "Check this project for security issues",
options: {
settingSources: ["user", "project"], // Load skills from filesystem
skills: "all",
allowedTools: ["Read", "Grep", "Glob"]
}
})) {
console.log(message);
}בזרם, הפעלת הכישור מופיעה כשימוש בכלי Skill, ואחריה קריאות Read לקובצי הפרויקט. ההרצה מסתיימת בתוצאת success שהטקסט שלה נושא את הממצאים.
הרשימה מאשרת מראש את הכלים שצוינו במקום להגביל את האחרים. לתהליך ההרשאות המלא, כולל מצבי הרשאה וקריאת המשוב החוזרת (callback) של canUseTool, ראה הרשאות.
#פתרון בעיות
#כישורים לא נמצאו
בדוק את הגדרת settingSources: ה-SDK מגלה כישורים דרך מקורות ההגדרות user ו-project. אם מגדירים את settingSources/setting_sources במפורש ומשמיטים מקורות אלה, ה-SDK אינו טוען כישורים:
Python:
# Skills not loaded: setting_sources excludes user and project
options = ClaudeAgentOptions(setting_sources=[], skills="all")
# Skills loaded: user and project sources included
options = ClaudeAgentOptions(
setting_sources=["user", "project"],
skills="all",
)TypeScript:
// Skills not loaded: settingSources excludes user and project
const optionsWithoutSkills = {
settingSources: [],
skills: "all"
};
// Skills loaded: user and project sources included
const optionsWithSkills = {
settingSources: ["user", "project"],
skills: "all"
};למידע על אילו תיקיות כישורים נטענות מכל מקור, ראה את טבלת מקורות מערכת הקבצים. לפרטים נוספים על settingSources/setting_sources, ראה את מדריך ה-API של TypeScript SDK או מדריך ה-API של Python SDK.
בדוק את תיקיית העבודה: ה-SDK טוען כישורים מ-.claude/skills/ באפשרות cwd ובכל תיקיית אב עד לשורש המאגר. ודא ש-cwd מצביע על התיקייה המכילה את .claude/skills/ או מתחתיה, בתוך אותו מאגר:
Python:
# Ensure your cwd points to the directory containing .claude/skills/
options = ClaudeAgentOptions(
cwd="/path/to/project",
# .claude/skills/ here or in a parent directory
setting_sources=["user", "project"],
# Loads skills from these sources
skills="all",
)TypeScript:
// Ensure your cwd points to the directory containing .claude/skills/
const options = {
cwd: "/path/to/project", // .claude/skills/ here or in a parent directory
settingSources: ["user", "project"], // Loads skills from these sources
skills: "all"
};ראה שימוש בכישורים עם Agent SDK לדפוס המלא.
אמת את המיקום במערכת הקבצים:
# Check project skills
ls .claude/skills/*/SKILL.md
# Check personal skills
ls ~/.claude/skills/*/SKILL.md#הכישור אינו בשימוש
בדוק את האפשרות skills: אם העברת רשימת skills, ודא ששם הכישור כלול בה. כאשר Claude מנסה להפעיל כישור שאינו ברשימה, הכלי Skill מחזיר Skill <name> is not in this session's skills allowlist. הוסף את השם לרשימה שלך, או הפעל את הכישור ישירות על ידי שליחת /<name> בהנחיה, דבר שעובד ללא צורך בהופעה ברשימה.
בדוק את התיאור: ודא שהוא ספציפי וכולל מילות מפתח רלוונטיות. ראה שיטות מומלצות לכישורי סוכן להנחיות לכתיבת תיאורים יעילים.
#שגיאת שם כישור לא תקין
כאשר שם ברשימת skills שלך אינו יכול לפעול כשם כישור מדויק, query() דוחה את הרשימה לפני התחלת תהליך Claude Code. שמות שגורמים לדחייה כוללים:
- שם ריק
- שם המכיל סוגריים, פסיקים, או תווי בקרה
- שם המרופד ברווחים
- תבנית תו כללי כגון
*בודד או סיומת:*
כל SDK מציג את הדחייה באופן שונה:
#TypeScript
ה-TypeScript SDK זורק Error המציין את הכלל שהפריט הפר. לדוגמה, skills: ["docs:*"] זורק:
Invalid skill name "docs:*": wildcard-suffix names are not allowed; list each skill by its exact name.שם ריק מדווח על Skill names must be non-empty strings.
לפני TypeScript Agent SDK 0.3.221, ה-SDK לא הריץ בדיקה זו.
#Python
ה-Python SDK מעלה ValueError המציין את הכלל שהפריט הפר. לדוגמה, skills=["docs:*"] מעלה:
ValueError: Invalid skill name 'docs:*': wildcard-suffix names are not allowed; list each skill by its exact name.שם ריק מדווח על Skill names must be non-empty strings.
לפני Python Agent SDK 0.2.129, ה-SDK לא הריץ בדיקה זו.
#פתרון בעיות נוסף
לפתרון בעיות כללי בכישורים, כגון שגיאות תחביר של YAML וניפוי שגיאות, ראה את סעיף פתרון הבעיות בכישורי Claude Code.
#השלבים הבאים
המדריך לכישורי Claude Code מכסה יצירת כישורים לעומק. ההנחיות בו חלות גם על הפעלות SDK. התחל בסעיפים הבאים:
- מקור ל-frontmatter (Frontmatter reference): כל שדה נתמך
- העברת ארגומנטים לכישורים:
$ARGUMENTS,$0,$1, ושילוב כישורים (skill stacking). טבלת ההחלפות המלאה מוסיפה ארגומנטים בעלי שם ואת משתני${CLAUDE_*} - הזרקת הקשר דינמי: שורות של
!`command`שרצות לפני ש-Claude רואה את תוכן הכישור - היכן כישורים נמצאים: כל רמות הגילוי, מרחבי שמות של תוספים (plugins), ומה קורה כאשר כישור וקובץ פקודה חולקים את אותו השם
#משאבים קשורים
- פקודות ב-Claude Code: ממשק הפקודות המלא, כולל כל פקודה מובנית
- סקירת כישורי סוכן (Agent Skills overview): סקירה רעיונית, יתרונות וארכיטקטורה
- שיטות מומלצות לכישורי סוכן (Agent Skills best practices): הנחיות לכתיבת כישורים יעילים
- ספר מתכונים לכישורי סוכן (Agent Skills cookbook): כישורים לדוגמה ותבניות
- תתי-סוכנים ב-SDK: סוכנים דומים המבוססים על מערכת הקבצים עם אפשרויות תכנותיות
- סקירת SDK: מושגי SDK כלליים
- מדריך ה-API של TypeScript SDK: תיעוד API מלא
- מדריך ה-API של Python SDK: תיעוד API מלא