Using ClawHub
قالب Skill
قالب Skill
روی دیسک
یک Skill یک پوشه است.
الزامی:
SKILL.md(یاskill.md؛ قالب قدیمیskills.mdنیز پذیرفته میشود)
اختیاری:
- هر فایل عادی پشتیبان (به «فایلهای Skill» مراجعه کنید)
.clawhubignore(الگوهای نادیدهگرفتن برای انتشار، قالب قدیمی.clawdhubignore).gitignore(این مورد نیز رعایت میشود)
درونریزی از GitHub
درونریز وب GitHub از انتشار/همگامسازی محلی سختگیرانهتر است. این درونریز فقط فایلهای
SKILL.md یا فایلهای قدیمی skills.md را در مخزنهای عمومی و غیرفورکِ متعلق به
حساب GitHub واردشده شناسایی میکند. مخزنهای خصوصی، فورکها،
مخزنهای بایگانیشده/غیرفعال یا مخزنهای عمومی اشخاص ثالث را درونریزی نمیکند.
فراداده نصب محلی (نوشتهشده توسط CLI):
<skill>/.clawhub/origin.json(قالب قدیمی.clawdhub)
وضعیت نصب پوشه کاری (نوشتهشده توسط CLI):
<workdir>/.clawhub/lock.json(قالب قدیمی.clawdhub)
SKILL.md
- Markdown با frontmatter اختیاری YAML.
- سرور هنگام انتشار، فراداده را از frontmatter استخراج میکند.
descriptionبهعنوان خلاصه Skill در رابط کاربری/جستوجو استفاده میشود.
برای Agent Skills قابلحمل، name باید با پوشه والد مطابقت داشته باشد و از
1 تا 64 حرف کوچک، عدد یا خط تیره تشکیل شود. ClawHub شناسه مسیریابیپذیر و
نام نمایشی کاتالوگ را جدا نگه میدارد؛ بنابراین نامهای موجود از کلاینتهای دیگر همچنان
قابلانتشار میمانند و بیسروصدا بازنویسی نمیشوند. فهرستهای کاتالوگ ممکن است نامهای طولانی را
از نظر بصری کوتاه کنند، بدون آنکه نام ذخیرهشده تغییر کند.
فراداده frontmatter
فراداده Skill در frontmatter قالب YAML در ابتدای SKILL.md تعریف میشود. این بخش به رجیستری (و تحلیل امنیتی) اعلام میکند که Skill برای اجرا به چه چیزهایی نیاز دارد.
frontmatter پایه
---name: my-skilldescription: خلاصهای کوتاه از کاری که این Skill انجام میدهد.version: 1.0.0---فراداده زمان اجرا (metadata.openclaw)
نیازمندیهای زمان اجرای Skill را در metadata.openclaw تعریف کنید (نامهای مستعار: metadata.clawdbot، metadata.clawdis).
---name: my-skilldescription: مدیریت وظایف از طریق API Todoist.metadata: openclaw: requires: env: - TODOIST_API_KEY bins: - curl primaryEnv: TODOIST_API_KEY---برای متغیرهای محیطی که باید پیش از اجرای Skill موجود باشند، از requires.env استفاده کنید. هنگامی که برای هر متغیر به فراداده نیاز دارید، از جمله متغیرهای اختیاری با required: false، از envVars استفاده کنید.
مرجع کامل فیلدها
| فیلد | نوع | توضیحات |
|---|---|---|
requires.env |
string[] |
متغیرهای محیطی الزامی که Skill انتظار دارد. |
requires.bins |
string[] |
فایلهای اجرایی CLI که همه آنها باید نصب باشند. |
requires.anyBins |
string[] |
فایلهای اجرایی CLI که دستکم یکی از آنها باید موجود باشد. |
requires.config |
string[] |
مسیر فایلهای پیکربندی که Skill میخواند. |
primaryEnv |
string |
متغیر محیطی اصلیِ اطلاعات احراز هویت برای Skill. |
envVars |
array |
تعریف متغیرهای محیطی با name، مقدار اختیاری required و مقدار اختیاری description. برای متغیرهای محیطی اختیاری، required: false را تنظیم کنید. |
always |
boolean |
اگر true باشد، Skill همیشه فعال است (به نصب صریح نیازی نیست). |
skillKey |
string |
کلید فراخوانی Skill را بازنویسی میکند. |
emoji |
string |
ایموجی نمایشی Skill. |
homepage |
string |
نشانی اینترنتی صفحه اصلی یا مستندات Skill. |
os |
string[] |
محدودیتهای سیستمعامل (برای نمونه ["macos"]، ["linux"]). |
install |
array |
مشخصات نصب وابستگیها (پایین را ببینید). |
nix |
object |
مشخصات Plugin مربوط به Nix (به README مراجعه کنید). |
config |
object |
مشخصات پیکربندی Clawdbot (به README مراجعه کنید). |
مشخصات نصب
اگر Skill به نصب وابستگیها نیاز دارد، آنها را در آرایه install تعریف کنید:
metadata: openclaw: install: - kind: brew formula: jq bins: [jq] - kind: node package: typescript bins: [tsc]انواع نصب پشتیبانیشده: brew، node، go، uv.
متغیرهای محیطی اختیاری
متغیرهای محیطی اختیاری را زیر metadata.openclaw.envVars تعریف و required: false را تنظیم کنید. ورودیهای اختیاری را به requires.env اضافه نکنید، زیرا requires.env به این معناست که Skill بدون آنها نمیتواند اجرا شود.
metadata: openclaw: primaryEnv: TODOIST_API_KEY envVars: - name: TODOIST_API_KEY required: true description: توکن API Todoist که برای درخواستهای احرازشده استفاده میشود. - name: TODOIST_PROJECT_ID required: false description: شناسه اختیاری پروژه پیشفرض، هنگامی که کاربر موردی را مشخص نمیکند.دلیل اهمیت این موضوع
تحلیل امنیتی ClawHub بررسی میکند که موارد تعریفشده توسط Skill با عملکرد واقعی آن مطابقت داشته باشد. اگر کد به TODOIST_API_KEY ارجاع دهد، اما frontmatter آن را زیر requires.env، primaryEnv یا envVars تعریف نکرده باشد، تحلیل عدم تطابق فراداده را علامتگذاری میکند. دقیق نگهداشتن تعریفها به عبور Skill از بازبینی کمک میکند و باعث میشود کاربران بدانند چه چیزی را نصب میکنند.
نمونه: frontmatter کامل
---name: todoist-clidescription: مدیریت وظایف، پروژهها و برچسبهای Todoist از خط فرمان.version: 1.2.0metadata: openclaw: requires: env: - TODOIST_API_KEY bins: - curl primaryEnv: TODOIST_API_KEY envVars: - name: TODOIST_API_KEY required: true description: توکن API Todoist. - name: TODOIST_PROJECT_ID required: false description: شناسه اختیاری پروژه پیشفرض. emoji: "\u2705" homepage: https://github.com/example/todoist-cli---فایلهای Skill
انتشار همه فایلهای عادی موجود در پوشه Skill را، صرفنظر از پسوند، میپذیرد. فایلهای نادیدهگرفتهشده، مسیرهای مخفی، پیوندهای نمادین، فراداده macOS و محدودیتهای اندازه سمت سرور همچنان اعمال میشوند.
- فایلهای دارای اندازه محدود که حاوی UTF-8 معتبر باشند، بهصورت متن ساده escapeشده قابل پیشنمایشاند و در تحلیل متن محدودشده گنجانده میشوند.
- فایلهای دیگر بایتهای دقیق خود را حفظ میکنند و برای بارگیری در دسترساند.
- اسکنرهای امنیتی کل مصنوع ذخیرهشده را دریافت میکنند؛ تشخیص متن یک موضوع مربوط به نمایش و تحلیل است، نه فهرست مجاز بارگذاری.
محدودیتها (سمت سرور):
- اندازه کل بسته: 50MB.
- متن تعبیهشده شامل
SKILL.md+ حداکثر حدود 40 فایل UTF-8 دارای اندازه محدود است (سقف با تلاش بهترین حالت).
شناسههای مسیریابی
- بهطور پیشفرض از نام پوشه مشتق میشوند.
- محدودههای بسته باید دقیقاً با شناسه ناشر ClawHub مطابقت داشته باشند. شناسههای ناشر میتوانند شامل حروف کوچک، اعداد، خط تیره، نقطه و زیرخط باشند؛ آنها باید با یک حرف کوچک یا عدد شروع و پایان یابند.
- شناسههای بسته باید با حروف کوچک و برای npm ایمن باشند؛ برای نمونه
@example.tools/demo-pluginیاdemo-plugin.
نسخهبندی + برچسبها
- هر انتشار یک نسخه جدید ایجاد میکند (semver).
- برچسبها اشارهگرهای رشتهای به یک نسخه هستند؛
latestمعمولاً استفاده میشود.
مجوز
- همه Skillهای منتشرشده در ClawHub تحت مجوز
MIT-0قرار دارند. - هر کسی میتواند Skillهای منتشرشده را، از جمله برای کاربرد تجاری، استفاده، اصلاح و بازتوزیع کند.
- ذکر منبع الزامی نیست.
- شرایط مجوز متعارض را به
SKILL.mdاضافه نکنید؛ ClawHub از بازنویسی مجوز برای هر Skill پشتیبانی نمیکند.
Skillهای پولی
- ClawHub از Skillهای پولی، قیمتگذاری برای هر Skill، دیوار پرداخت یا تقسیم درآمد پشتیبانی نمیکند.
- فراداده قیمتگذاری را به
SKILL.mdاضافه نکنید؛ این مورد بخشی از قالب Skill نیست و یک Skill منتشرشده را پولی نمیکند. - اگر Skill با یک سرویس پولی شخص ثالث یکپارچه میشود، هزینه خارجی و حساب الزامی را بهروشنی در دستورالعملهای Skill و تعریفهای محیطی مستند کنید (
requires.envبرای متغیرهای الزامی، یاenvVarsهمراه باrequired: falseبرای متغیرهای اختیاری).