publish · git:20260809.4511906 · 2026-08-09 · sha256 4c12d37c877f6b50

publish git:20260809.4511906F

Immutable. This exact content never changes and is served at /api/v1/blob/4c12d37c877f6b50.

---
name: publish
description: >
  گزارش را با readable بساز، بعد از تأیید روی پورتال صفحه‌اش کن، و آخرش یک ایمیل کوتاه به لحن خودم با لینک همان صفحه بده. Use when the user says "منتشر کن", "بذار روی پورتال", "صفحه‌اش کن", "لینکش کن", "publish this", "put it on the portal", "share this as a page", "/publish".
---

# publish: گزارش، صفحه، ایمیل

سه تحویل پشت سر هم. هیچ‌کدام بدون تأیید کاربر به بعدی نمی‌رود.

1. **گزارش.** با `/readable:report` یک فایل HTML مستقل بساز. اگر کارتی در چت هست، محتوای همان را عیناً بردار. چون خروجی روی وب میزبانی می‌شود، `--inline-figures` بده.
2. **تأیید.** مسیر فایل را به‌صورت لینک بده و بپرس منتشر شود یا نه. تا «بله» نگرفته‌ای هیچ چیزی آپلود نکن.
3. **صفحه.** یک دستور، از فایل تا لینک:

   ```bash
   node "<this skill dir>/publish.js" <path-to-report.html> [--slug my-report] [--viewer a@b.com]
   ```

   خودش زیپ می‌کند، `name` را از `<title>` سند برمی‌دارد، و `access_mode` پیش‌فرض `allowlist` است. JSON برمی‌گرداند؛ `url` را به کاربر بده. برای جایگزینی یک صفحهٔ موجود با همان لینک: `--page-id <id>`.
4. **ایمیل.** یک کارت readable کوتاه بساز، به لحن `/me:write-as-me`: دو سه جمله که بگوید این چیست و چرا مهم است، به‌علاوهٔ لینک صفحه. محتوای گزارش را تکرار نکن. آخرش به کاربر بگو از منوی همان کارت گزینهٔ Email را بزند تا آمادهٔ کپی شود.

## چرا اسکریپت، نه ابزار MCP

ابزار `pages_create_from_zip` آرشیو را base64 می‌گیرد. یک گزارش ۷۵۰ کیلوبایتی با فونت جاسازی‌شده حدود ۶۳۰ کیلوبایت base64 می‌شود، یعنی صدهزار توکن که باید از کانتکست رد شود و بایت‌هایش هم سالم درنمی‌آید. اسکریپت فایل را از دیسک می‌خواند و خودش POST می‌کند، پس هیچ‌وقت `pages_create_from_zip` یا `pages_create_from_text` را مستقیم صدا نزن و محتوای فایل را هم نخوان.

- ورودی می‌تواند یک فایل، یک پوشه (که باید `index.html` در ریشه داشته باشد)، یا یک زیپ آماده باشد.
- لاگین از همان توکنی می‌آید که `mcp-remote` نگه داشته. اگر گفت لاگین نیست، پیام خودش دستور را می‌دهد.
- `--out file.zip` فقط زیپ را می‌سازد و آپلود نمی‌کند، برای وقتی کاربر خودش می‌خواهد آپلود کند.

- زبان هر سه خروجی همان زبان مکالمه است.
- اگر انتشار شکست خورد، همان‌جا بگو، فایل گزارش را تحویل بده و جلوتر نرو.