راهنمای توسعه Skill
یک Skill یک بسته توسعه برای سیستم Agent است که از یک prompt + اسکریپتهای ابزار + مواد مرجع تشکیل شده است. با Skillها میتوانید دانش حوزهای و قابلیتهای ابزار سفارشی را در هوش مصنوعی تزریق کنید.
ساختار دایرکتوری Skill
my-skill/
├── SKILL.cat.md # الزامی: فراداده + prompt (فایل ورودی)
├── scripts/ # اختیاری: اسکریپتهای ابزار SkillScript
│ ├── search.js
│ └── export.js
└── references/ # اختیاری: فایلهای مواد مرجع
├── api-docs.md
└── examples.json
SKILL.cat.mdفایل ورودی Skill است. هنگام نصب از یک URL، ScriptCat ابتدا این فایل را دریافت میکند، سپس سایر فایلها را از طریق مسیرهای نسبی آنها بر اساسscriptsوreferencesاعلامشده در frontmatter دریافت میکند.
قالب SKILL.cat.md
SKILL.cat.md از YAML frontmatter برای اعلام فراداده استفاده میکند و بدنه Markdown به عنوان prompt دادهشده به هوش مصنوعی عمل میکند.
---
name: "weather-assistant"
description: "Weather lookup assistant, supports weather queries and forecasts for cities worldwide"
config:
apiKey:
title: "OpenWeather API Key"
type: "text"
secret: true
required: true
unit:
title: "Temperature unit"
type: "select"
values: ["celsius", "fahrenheit"]
default: "celsius"
detailed:
title: "Detailed mode"
type: "switch"
default: false
maxDays:
title: "Forecast days"
type: "number"
default: 7
---
# Weather assistant
You can use the following tools to look up weather information:
## Tool description
- **get_weather**: look up the current weather and forecast for a specified city
- The `city` parameter is the city name (Chinese and English names both supported)
- The `days` parameter is the number of forecast days
## Usage rules
1. When the user asks about weather, confirm the city name first
2. By default, return current weather + a 3-day forecast
3. Display temperature according to the configured unit
فیلدهای فراداده
| فیلد | نوع | الزامی | توضیحات |
|---|---|---|---|
name | string | بله | شناسه منحصربهفرد Skill (انگلیسی kebab-case توصیه میشود) |
description | string | بله | توضیحات کوتاه (در فهرست نشان داده میشود) |
version | string | خیر | نسخه (قالب semver، مثلاً 1.0.0)، برای بررسی بهروزرسانی استفاده میشود |
scripts | string[] | خیر | فهرست نام فایلهای اسکریپت (مثلاً ["search.js"])؛ هنگام نصب از طریق URL به طور خودکار از دایرکتوری scripts/ دریافت میشود |
references | string[] | خیر | فهرست نام فایلهای مواد مرجع (مثلاً ["api-docs.md"])؛ هنگام نصب از طریق URL به طور خودکار از دایرکتوری references/ دریافت میشود |
config | object | خیر | تعاریف فیلد پیکربندی |
انواع فیلد پیکربندی
| نوع | توضیحات | ویژگیهای خاص نوع |
|---|---|---|
text | ورودی متن | secret: آیا در رابط کاربری ماسک میشود |
number | ورودی عدد | — |
select | منوی کشویی | values: فهرست گزینهها (string[]) |
switch | کلید روشن/خاموش | — |
ویژگیهای مشترک:
| ویژگی | نوع | توضیحات |
|---|---|---|
title | string | عنوان نمایشی |
required | boolean | آیا الزامی است |
default | unknown | مقدار پیشفرض |
secret | boolean | آیا اطلاعات حساس ا ست |
کاربر این مقادیر پیکربندی را در تنظیمات Skill در صفحه مدیریت پر میکند.
بدنه prompt
بدنه Markdown به عنوان prompt سیستم هوش مصنوعی تزریق میشود. نکات نوشتن:
- ابزارهایی که Skill ارائه میدهد و کاربرد آنها را توصیف کنید
- توضیح دهید هر پارامتر ابزار چه معنایی دارد و قوانین استفاده از آنها چیست
- سناریوهای استفاده معمولی و موارد قابل توجه را ارائه دهید
- اگر مواد مرجع وجود دارد، توضیح دهید چگونه با آن مشورت کنید
اسکریپتهای ابزار SkillScript
یک SkillScript یک اسکریپت ابزار است که هوش مصنوعی میتواند فراخوانی کند. هر فایل SkillScript به عنوان یک ابزار LLM ثبت میشود.
قالب فراداده
// ==SkillScript==
// @name get_weather
// @description Look up weather information for a specified city
// @param city string [required] City name, Chinese and English names both supported
// @param days number Number of forecast days, defaults to 3
// @param format string [json,text] Output format
// @grant CAT.agent.opfs
// @require https://cdn.example.com/utils.js
// @timeout 60
// ==SkillScript==
فیلدهای فراداده
| تگ | توضیحات | مثال |
|---|---|---|
@name | نام ابزار (زمانی که هوش مصنوعی آن را فراخوانی میکند استفاده میشود) | get_weather |
@description | توضیحات ابزار (هوش مصنوعی از این برای تصمیمگیری زمان فراخوانی استفاده میکند) | آبوهوای شهر را جستجو کنید |
@param | تعریف پارامتر (میتواند چند بار ظاهر شود) | به زیر مراجعه کنید |
@grant | مجوز API GM که نیاز دارد | CAT.agent.opfs |
@require | URL کتابخانه خارجی (بارگذاری و کش میشود) | https://cdn.example.com/lib.js |
@timeout | مهلت ا جرا در ثانیه | 60 (پیشفرض 300) |
نحو @param
@param paramName type[enumValues] [required] description
انواع: string، number، boolean
مقادیر enum (اختیاری): داخل براکت مربع، با کاما جدا میشوند
علامت الزامی: [required] قبل از توضیحات
// پارامتر رشته الزامی
// @param city string [required] City name
// پارامتر رشته با enum
// @param unit string [celsius,fahrenheit] Temperature unit
// پارامتر عدد اختیاری
// @param days number Number of forecast days
// پارامتر بولی
// @param detailed boolean Whether to return detailed information
تعاریف پارامتر به طور خودکار به JSON Schema برای استفاده LLM هنگام فراخوانی ابزار تبدیل میشوند.