# Publish

> گزارش را با readable بساز, بعد از تأیید روی پورتال منتشر کن, و ایمیل کوتاه با لینک بده. Triggers: «منتشر کن», «بذار روی پورتال», «صفحه‌اش کن», "publish this".

- Skill: `smk-labs/publish` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add smk-labs/publish`
- Raw SKILL.md: https://api.skillmd.com/api/skills/smk-labs/publish/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: smk-labs (https://skillmd.com/u/smk-labs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/smk-labs/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` فقط زیپ را می‌سازد و آپلود نمی‌کند، برای وقتی کاربر خودش می‌خواهد آپلود کند.

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

