Using ClawHub
انتشار
انتشار
انتشار، یک پوشهٔ Skills یا بستهٔ Plugin را تحت مالک انتخابی شما به ClawHub ارسال میکند. ClawHub بررسی میکند که توکن شما مجوز انتشار برای آن مالک را داشته باشد، فرادادهها، نام، نسخه، فایلها و اطلاعات منبع را اعتبارسنجی میکند، سپس انتشار را ذخیره کرده و بررسیهای امنیتی خودکار را آغاز میکند.
اگر اعتبارسنجی ناموفق باشد، هیچچیز منتشر نمیشود. همچنین ممکن است انتشارهای جدید تا پایان بررسی در سطوح معمول نصب و دانلود نمایش داده نشوند.
Skills
سادهترین مسیر انتشار، استفاده از CLI است. وارد حساب شوید، سپس یک پوشهٔ Skills محلی را منتشر کنید:
clawhub loginclawhub skill publish ./my-skill \ --slug my-skill \ --name "My Skill" \ --owner <owner>هنگام انتشار تحت مالکیت یک سازمان، از --owner <handle> استفاده کنید. برای انتشار بهعنوان کاربر احراز هویتشده، آن را حذف کنید. هنگام انتشار، محتوای بدون تغییر نادیده گرفته میشود. نسخهٔ نخست یک Skills جدید از 1.0.0 آغاز میشود و تغییرات بعدی بهطور خودکار با نسخهٔ اصلاحی بعدی منتشر میشوند. تنها زمانی --version را وارد کنید که به نسخهای مشخص نیاز دارید.
برای مخزنهای کاتالوگ، از گردشکار قابلاستفادهٔ مجدد ClawHub یعنی
skill-publish.yml
استفاده کنید. این گردشکار برای هر پوشهٔ Skills مستقیم زیر root (پیشفرض:
skills)، یا فقط برای پوشهای که بهعنوان skill_path ارائه شده است، skill publish را فراخوانی میکند.
jobs: publish: uses: openclaw/clawhub/.github/workflows/skill-publish.yml@main with: owner: <owner> dry_run: false secrets: clawhub_token: ${{ secrets.CLAWHUB_TOKEN }}برای پیشنمایش Skills جدید و تغییریافته بدون انتشار، از dry_run: true استفاده کنید.
Pluginها
Pluginها از نام بستههای مشابه npm استفاده میکنند. نام بستههای دارای محدوده، مالک را در بخش نخست نام شامل میشوند:
@owner/package-nameمحدوده باید با مالک انتخابشده برای انتشار مطابقت داشته باشد. اگر نام بستهٔ شما @openclaw/dronzer باشد، تنها میتوان آن را بهعنوان @openclaw منتشر کرد. اگر بهعنوان @vintageayu منتشر میکنید، نام بسته را به @vintageayu/dronzer تغییر دهید.
این کار مانع از آن میشود که یک بسته فضای نام سازمانیای را ادعا کند که ناشر کنترلی بر آن ندارد.
اگر مالک قانونی یک سازمان، برند، محدودهٔ بسته، شناسهٔ مالک یا فضای نامی هستید که پیشتر در ClawHub ادعا یا رزرو شده است، یک درخواست ادعای سازمان / فضای نام همراه با مدارک عمومی و غیرحساس باز کنید. برای آگاهی از مواردی که باید ارائه شوند و مواردی که نباید در درخواستهای عمومی درج شوند، به ادعاهای سازمان و فضای نام مراجعه کنید.
پیش از انتشار یک Plugin
- مالکی را انتخاب کنید که با محدودهٔ بسته مطابقت داشته باشد.
- فایل
openclaw.plugin.jsonرا اضافه کنید. Pluginهای کدنویسیشده همچنین بهpackage.jsonهمراه باopenclaw.compat.pluginApiوopenclaw.build.openclawVersionنیاز دارند. - برای نمایش نماد سفارشی در کارت Plugin، ویژگی
iconرا با هر نشانی HTTPS تصویر بهopenclaw.plugin.jsonاضافه کنید. - مخزن منبع و فرادادهٔ دقیق کامیت را ارائه کنید، یا CLI را از یک نسخهٔ کاری مبتنی بر GitHub اجرا کنید تا بتواند آنها را شناسایی کند.
- پیش از انتشار،
clawhub package validate <source>را اجرا کنید. برای یافتههای مربوط به بسته، مانیفست، درونریزی SDK یا دستساخته، به رفع مشکلات اعتبارسنجی Plugin مراجعه کنید. - پیش از ایجاد یک انتشار،
clawhub package publish <source> --dry-runرا اجرا کنید. - انتظار داشته باشید انتشارهای جدید تا پایان بررسیهای امنیتی خودکار و تأیید، در سطوح عمومی نصب نمایش داده نشوند.
انتشار مورداعتماد برای بستهها
راهاندازی انتشار مورداعتماد بستهها دو مرحله دارد:
- بسته را یکبار از طریق
clawhub package publishعادی، بهصورت دستی یا با احراز هویت توکنی منتشر کنید. این کار ردیف بسته را ایجاد میکند و مدیران بستهای را که میتوانند پیکربندی ناشر مورداعتماد آن را تغییر دهند، مشخص میکند. - یکی از مدیران بسته، پیکربندی ناشر مورداعتماد GitHub Actions را تنظیم میکند:
clawhub package trusted-publisher set @owner/package-name \ --repository owner/repo \ --workflow-filename package-publish.ymlپس از تنظیم پیکربندی، انتشارهای پشتیبانیشدهٔ بعدی از طریق GitHub Actions میتوانند بدون ذخیرهسازی یک توکن بلندمدت ClawHub در مخزن، از OIDC و انتشار مورداعتماد استفاده کنند. مخزن و نام فایل گردشکار پیکربندیشده باید با ادعای OIDC در GitHub Actions مطابقت داشته باشند. اگر --environment <name> را نیز وارد کنید، ادعای محیط GitHub Actions باید دقیقاً با آن نام مطابقت داشته باشد.
ClawHub هنگام تنظیم پیکربندی ناشر مورداعتماد، مخزن پیکربندیشدهٔ GitHub را تأیید میکند. مخزنهای عمومی را میتوان از طریق فرادادههای عمومی GitHub تأیید کرد. مخزنهای خصوصی مستلزم آن هستند که ClawHub به آن مخزن در GitHub دسترسی داشته باشد؛ برای مثال، از طریق نصب آتی GitHub App متعلق به ClawHub یا یک یکپارچهسازی مجاز دیگر با GitHub.
گردشکار قابلاستفادهٔ مجدد فعلی برای انتشار بسته، در انتشارهای workflow_dispatch و در صورت در دسترس بودن id-token: write، از انتشار مورداعتماد بدون اطلاعات محرمانه پشتیبانی میکند. انتشارهای واقعی ناشی از ارسال برچسب همچنان به clawhub_token نیاز دارند؛ بنابراین CLAWHUB_TOKEN را برای انتشارهای برچسبی، نخستین انتشارها، بستههای نامورداعتماد یا انتشارهای اضطراری در دسترس نگه دارید.
پیکربندی را با فرمانهای زیر بررسی یا حذف کنید:
clawhub package trusted-publisher get @owner/package-nameclawhub package trusted-publisher delete @owner/package-nameحذف پیکربندی ناشر مورداعتماد، مسیر بازگردانی است. این کار صدور توکن برای انتشارهای مورداعتماد آینده را تا زمانی که یکی از مدیران بسته دوباره پیکربندی را تنظیم کند، غیرفعال میکند.
پرسشهای متداول
محدودهٔ بسته باید با مالک انتخابشده مطابقت داشته باشد
اگر محدودهٔ بسته و مالک انتخابشده مطابقت نداشته باشند، ClawHub انتشار را رد میکند:
Package scope "@openclaw" must match selected owner "@vintageayu".Publish as "@openclaw" or rename this package to "@vintageayu/dronzer".برای رفع مشکل، یا مالک نامبردهشده در محدودهٔ بسته را انتخاب کنید، یا نام بسته را بهگونهای تغییر دهید که محدوده با مالکی که میتوانید بهعنوان آن منتشر کنید مطابقت داشته باشد.
اگر نام بسته از قبل محدودهٔ درستی دارد، اما مالکیت آن در اختیار ناشر نادرست است، در عوض مالکیت را انتقال دهید:
clawhub package transfer @opik/opik-openclaw --to opikتنها زمانی از انتقال بسته یا Skills استفاده کنید که به مالک فعلی و ناشر مقصد، هر دو، دسترسی مدیریتی داشته باشید. انتقال بسته به شما اجازه نمیدهد در محدودهای که نمیتوانید آن را مدیریت کنید، انتشار انجام دهید.
اگر به مالک فعلی دسترسی ندارید، اما باور دارید سازمان، پروژه یا برند شما مالک قانونی فضای نام است، یک درخواست ادعای سازمان / فضای نام همراه با مدارک عمومی و غیرحساس برای بررسی کارکنان باز کنید. پیش از ثبت درخواست، به ادعاهای سازمان و فضای نام مراجعه کنید.
این سازوکار از فضاهای نام سازمانی محافظت میکند. بستهای با نام @openclaw/dronzer فضای نام
@openclaw را ادعا میکند؛ بنابراین تنها ناشرانی که به مالک @openclaw دسترسی دارند میتوانند آن را منتشر کنند.