---
read_when:
    - انتشار یک مهارت یا Plugin
    - اشکال‌زدایی خطاهای دامنهٔ مالک یا بسته
    - افزودن رابط کاربری انتشار، CLI، یا رفتار بک‌اند
summary: نحوهٔ کار انتشار در ClawHub برای Skills، Pluginها، مالکان، دامنه‌ها، انتشارها و بازبینی.
x-i18n:
    generated_at: "2026-05-11T20:26:26Z"
    model: gpt-5.5
    provider: openai
    source_hash: 566c37b7845159ad100837e34bed7c60411bba6a0b3436ab899fe5e345237727
    source_path: clawhub/publishing.md
    workflow: 16
---

# انتشار

انتشار در ClawHub محدود به مالک است: هر انتشار یک ناشر را هدف می‌گیرد، و
سرور تصمیم می‌گیرد که آیا کاربر واردشده مجاز است آنجا منتشر کند یا نه.

## مالکان

مالک، شناسهٔ ناشر در ClawHub است، مانند `@alice` یا `@openclaw`.
مالکان شخصی برای کاربران ساخته می‌شوند. مالکان سازمانی می‌توانند چندین عضو داشته باشند.

وقتی منتشر می‌کنید، یا از مالک شخصی خود استفاده می‌کنید یا یک مالک سازمانی را انتخاب می‌کنید
که در آن دسترسی ناشر دارید.

## Skills

Skills از یک پوشهٔ Skills منتشر می‌شوند. صفحهٔ عمومی این است:

```text
https://clawhub.ai/<owner>/<slug>
```

نمونه:

```text
https://clawhub.ai/alice/review-helper
```

درخواست انتشار شامل مالک انتخاب‌شده، slug، نسخه، تغییرات نسخه، و
فایل‌ها است. سرور پیش از ساختن انتشار بررسی می‌کند که کنشگر بتواند به‌عنوان آن مالک منتشر کند.

برای انتقال یک Skills موجود به مالک دیگر هنگام انتشار نسخهٔ جدید، مالک
جدید را انتخاب کنید و انتقال مالکیت را صریحا تایید کنید. در CLI/API، مالک
هدف را همراه با موافقت با مهاجرت وارد کنید:

```sh
clawhub skill publish ./review-helper --owner openclaw --migrate-owner --version 1.2.0
```

مهاجرت مالک Skills به دسترسی مدیر یا مالک در هر دو مالک فعلی
و مالک مقصد نیاز دارد. این کار Skills، تاریخچهٔ نسخه‌ها، آمار،
دیدگاه‌ها، forkها، aliasها، و مسیر ممیزی را حفظ می‌کند؛ URLهای مالک قدیمی از طریق
مسیر alias/redirect ادامه پیدا می‌کنند.

## Pluginها

Pluginها از نام‌های بسته به سبک npm استفاده می‌کنند. نام‌های بستهٔ scoped، مالک را در
بخش اول نام شامل می‌شوند:

```text
@owner/package-name
```

scope باید با مالک انتشار انتخاب‌شده مطابقت داشته باشد. اگر نام بستهٔ شما
`@openclaw/dronzer` است، فقط می‌تواند به‌عنوان `@openclaw` منتشر شود. اگر به‌عنوان
`@vintageayu` منتشر می‌کنید، نام بسته را به `@vintageayu/dronzer` تغییر دهید.

این کار جلوی بسته‌ای را می‌گیرد که بخواهد namespace سازمانی‌ای را ادعا کند که ناشر
کنترلی روی آن ندارد.

## جریان انتشار

1. UI، CLI، یا گردش‌کار GitHub فرادادهٔ بسته و فایل‌ها را جمع‌آوری می‌کند.
2. درخواست انتشار با مالک انتخاب‌شده به ClawHub فرستاده می‌شود.
3. سرور مجوزهای مالک، scope بسته، نام بسته، نسخه،
   محدودیت‌های فایل، و فرادادهٔ منبع را اعتبارسنجی می‌کند.
4. ClawHub انتشار را ذخیره می‌کند و بررسی‌های امنیتی خودکار را شروع می‌کند.
5. انتشارهای جدید تا پایان بازبینی
   و راستی‌آزمایی از سطوح نصب/دانلود عادی پنهان می‌مانند.

اگر اعتبارسنجی شکست بخورد، انتشار ساخته نمی‌شود.

## پرسش‌های متداول

### scope بسته باید با مالک انتخاب‌شده مطابقت داشته باشد

اگر scope بسته و مالک انتخاب‌شده مطابقت نداشته باشند، ClawHub
انتشار را رد می‌کند:

```text
Package scope "@openclaw" must match selected owner "@vintageayu".
Publish as "@openclaw" or rename this package to "@vintageayu/dronzer".
```

برای رفع آن، یا مالکی را انتخاب کنید که scope بسته نام برده است، یا نام
بسته را طوری تغییر دهید که scope با مالکی که می‌توانید به‌عنوان آن منتشر کنید مطابقت داشته باشد.

اگر نام بسته از قبل scope درست را دارد اما بسته متعلق به ناشر
اشتباه است، به‌جای آن مالکیت را منتقل کنید:

```sh
clawhub package transfer @opik/opik-openclaw --to opik
```

فقط وقتی از انتقال بسته یا Skills استفاده کنید که به هر دو
مالک فعلی و ناشر مقصد دسترسی مدیر دارید. انتقال بسته به شما اجازه نمی‌دهد
در scopeی منتشر کنید که نمی‌توانید مدیریت کنید.

این کار از namespaceهای سازمانی محافظت می‌کند. بسته‌ای با نام `@openclaw/dronzer`،
namespace `@openclaw` را ادعا می‌کند، بنابراین فقط ناشرانی که به مالک `@openclaw`
دسترسی دارند می‌توانند آن را منتشر کنند.
