Skills — יכולות ארוזות מראש

Skill: מעבר לכלי בודד

Skill הוא חבילת הוראות עבודה למשימה מסוג ידוע: לא פעולה בודדת כמו tool, אלא תהליך שלם — השלבים, הסדר שלהם והכללים שצריך לעקוב אחריהם כדי לבצע אותו נכון.

tool עונה על "מה אפשר לעשות" (לקרוא קובץ, לשלוח בקשת רשת); skill עונה על "איך עושים דבר שלם נכון", ולרוב משתמש בכמה tools ברצף — כמו אדם שעובד לפי נוהל כתוב ומשתמש בדרך בכמה כלים.

תרשים המחולק לשני חלקים: משמאל תיבה כחולה בודדת עם חץ יורד אל עיגול אחד — tool כפעולה בודדת. מימין שלושה מלבנים כתומים מחוברים ברצף אנכי בחצים, עטופים בסוגר כללי אחד המקבץ אותם יחד — skill כתהליך רב-שלבי ארוז.
Tool הוא פעולה בודדת; Skill הוא מתכון ארוז של כמה שלבים (ולעיתים כמה tools) ברצף קבוע

איך Skill נטען: Progressive Disclosure

skills נטענים בשלבים, ולכן אפשר להחזיק עשרות מהם בלי למלא את הקונטקסט. בשלב הראשון רק השם והתיאור הקצר של כל skill נמצאים בקונטקסט, מתחילת השיחה — משפט או שניים לכל אחד.

כשמגיעה משימה, המודל משווה אותה לתיאורים. אם יש התאמה, הוא טוען את ההוראות המלאות של ה-skill, ורק עכשיו הן נכנסות לקונטקסט. בשלב השלישי, skill יכול להפנות לקבצים נוספים (מסמכי עזר, תבניות, סקריפטים) שהמודל קורא או מריץ רק אם המשימה באמת דורשת אותם.

לעיקרון הזה קוראים progressive disclosure: המודל מקבל כל שכבת מידע רק כשהוא צריך אותה. בלעדיו, כל skill זמין היה מוסיף את כל ההוראות שלו לכל שיחה ושוחק את תקציב הקונטקסט (פרק 9). וההבדל מ-subagent (פרק 4): skill נטען לתוך אותה לולאה, ולא מריץ לולאה נפרדת בקונטקסט משלו — אם כי skill יכול להורות להפעיל subagent כחלק מהתהליך.

תרשים המציג תיאור משימה בתיבה משמאל, עם חץ אל תפריט של ארבעה כרטיסי תיאורי skills מוערמים; אחד מהם (השלישי) מודגש בכתום כהתאמה שנבחרה. חץ כתום ממשיך מהכרטיס שנבחר אל תיבה גדולה עם ארבע שורות טקסט, המייצגת את ההוראות המלאות שנטענות לתוך הקונטקסט.
המודל משווה את המשימה מול תיאורי ה-skills הזמינים, ובוחר את ההתאמה הטובה ביותר לטעינה מלאה לקונטקסט

מה יש בתוך Skill בפועל

ברוב המימושים skill הוא תיקייה עם קובץ הוראות ראשי ב-Markdown. בראש הקובץ יש frontmatter עם שם ותיאור — החלק שנטען תמיד — ומתחתיו גוף ההוראות, שנטען רק כשה-skill מופעל. לצידו יכולים לשבת קבצי עזר וסקריפטים.

מה שמבדיל skill טוב מהוראה כללית הוא רמת הפירוט: שלבים בסדר ברור, דוגמאות קונקרטיות, מקרי קצה ידועים ופורמט פלט מוגדר. התיאור בראש הקובץ חשוב במיוחד: הוא כל מה שהמודל רואה כשהוא מחליט אם להפעיל את ה-skill, ולכן הוא צריך לומר גם מה ה-skill עושה וגם מתי להשתמש בו.

Markdown
---
name: code-review
description: סקירת קוד לפי רשימת קטגוריות קבועה. השתמש כשמבקשים review לקובץ, ל-diff או ל-PR.
---

# סקירת קוד

1. קרא את כל הקובץ לפני שאתה כותב ממצא כלשהו.
2. בדוק לפי הסדר: נכונות, אבטחה, ביצועים, קריאות.
3. לכל ממצא ציין: קטגוריה, קובץ ושורה, חומרה (גבוהה/בינונית/נמוכה) והצעת תיקון.
4. אם אין ממצאים בקטגוריה מסוימת - כתוב זאת במפורש.

לבדיקת אבטחה, עבור על הרשימה בקובץ security-checklist.md.

דוגמה: אותה משימה עם ובלי Skill

משימה: "תעשה code review לקובץ הזה". בלי skill, המודל מחליט בכל פעם מחדש על מה להסתכל (סגנון? באגים? אבטחה?) ובאיזה מבנה להציג את התוצאה. שתי בקשות זהות עלולות לקבל שתי סקירות שמתמקדות בדברים שונים.

עם ה-skill מהסעיף הקודם, ההוראות כבר קובעות אילו קטגוריות לבדוק, באיזה סדר ובאיזה פורמט — והתוצאה עקבית ומקיפה בכל הפעלה, בלי לסמוך על שיקול הדעת של המודל באותו רגע.

תרשים שבראשו קובץ קוד אחד, עם חץ לכל צד — אותה בקשת code review מורצת שלוש פעמים בכל צד. משמאל, תחת סמל קובייה (עבודה אד-הוק), שלושה דוחות כתומים שכל אחד שונה: הראשון בודק אבטחה (מנעול) וקריאות (עין), השני רק ביצועים (ברק), והשלישי קריאות, נכונות (✓) ואבטחה בסדר אחר — ובכל אחד שורות חסרות. מימין, תחת סמל לוח עם רשימת תיוג (ה-skill), שלושה דוחות כחולים זהים לחלוטין, שכל אחד מכסה את ארבע הקטגוריות — נכונות, אבטחה, ביצועים וקריאות — באותו סדר ובאותו מבנה.
אותו code review, שלוש הפעלות: בלי skill כל הרצה בודקת היבטים אחרים ובסדר אחר; עם skill — אותן ארבע קטגוריות, באותו סדר ומבנה, בכל פעם

מתי כדאי לבנות Skill, ומתי כלי גולמי מספיק

skill משתלם למשימה שחוזרת על עצמה ושרוצים שתתבצע תמיד באותו אופן: code review, דוח שבועי בפורמט קבוע, תהליך פריסה. כותבים את ההוראות פעם אחת ומקבלים תוצאה אחידה בכל הפעלה.

למשימה חד-פעמית או פשוטה מספיקה גישה לכלים. כלל אצבע: אם היית כותב לעצמך נוהל עבודה כי אתה חוזר על המשימה שוב ושוב — כנראה שגם לסוכן כדאי skill.

שאלות נפוצות

מה ההבדל בין skill לבין system prompt ארוך?

system prompt נטען במלואו לכל שיחה, גם כשרוב ההוראות בו לא נוגעות למשימה הנוכחית. skill נטען רק כשמגיעה משימה מתאימה, ולכן אפשר להחזיק הרבה נהלים מפורטים בלי לשלם עליהם בכל קריאה. כלל אצבע: מה שנכון לכל משימה — ב-system prompt; נוהל למשימה מסוג מסוים — ב-skill.

מה עושים כשהמודל לא מפעיל skill כשהוא אמור?

כמעט תמיד הבעיה בתיאור, כי זה כל מה שהמודל רואה כשהוא מחליט. כדאי לכתוב בו במפורש מתי להשתמש ב-skill, כולל ניסוחים שמשתמשים באמת כותבים, ולבדוק על כמה בקשות אמיתיות אם הוא נבחר. אם שני skills נבחרים לסירוגין לאותה בקשה, התיאורים שלהם חופפים וצריך להבדיל ביניהם.

האם skill יכול להריץ קוד?

כן, דרך הקבצים שלצידו: skill יכול לכלול סקריפטים שהמודל מריץ בעזרת הכלים שכבר יש לו, למשל סקריפט שבודק פורמט או מפיק דוח. זה שימושי לחלקים שצריכים להיות מדויקים ודטרמיניסטיים, שעדיף לא להשאיר לשיקול הדעת של המודל. כמו כל קוד אחר, הסקריפטים רצים תחת ההרשאות וה-sandbox של ה-harness.