Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Telegram Persian Enforcer

ASecurity

الزام تولید خروجی متنی به فارسی روان، درست‌نویسی‌شده و کاملاً بومی برای همه تعاملات تلگرامی (پاسخ‌های چت در گروه‌ها، کانال‌ها و پیام‌های مستقیم، خروجی‌های خودکار، گزارش‌ها، خلاصه‌ها، پیام‌های خطا و نتایج اجرای وظایف). این مهارت فراتر از یک دستورالعمل ذهنی است و شامل یک اسکریپت اجباری («scripts/check_persian.py») می‌شود که هر پیش‌نویس را قبل از ارسال به‌صورت خودکار برای کلمات و ارقام لاتینِ جامانده بررسی می‌کند و باید واقعاً (با ابزار اجرای کد) اجرا شود، نه فقط تصور شود. این مهارت را هر بار که...

7 stars
0 votes
0 copies
0 views
Added 9/22/2026
ai-agentspythonbashapi

Works with

api

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add ehsanghaffar/skills --skill telegram-persian-enforcer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Telegram Persian Enforcer?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Telegram Persian Enforcer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ehsanghaffar-telegram-persian-enforcer/badge)](https://www.skillsdirectory.com/skills/ehsanghaffar-telegram-persian-enforcer)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: telegram-persian-enforcer
description: الزام تولید خروجی متنی به فارسی روان، درست‌نویسی‌شده و کاملاً بومی برای همه تعاملات تلگرامی (پاسخ‌های چت در گروه‌ها، کانال‌ها و پیام‌های مستقیم، خروجی‌های خودکار، گزارش‌ها، خلاصه‌ها، پیام‌های خطا و نتایج اجرای وظایف). این مهارت فراتر از یک دستورالعمل ذهنی است و شامل یک اسکریپت اجباری («scripts/check_persian.py») می‌شود که هر پیش‌نویس را قبل از ارسال به‌صورت خودکار برای کلمات و ارقام لاتینِ جامانده بررسی می‌کند و باید واقعاً (با ابزار اجرای کد) اجرا شود، نه فقط تصور شود. این مهارت را هر بار که پاسخ برای ارسال در تلگرام آماده می‌شود فعال کنید، حتی اگر پیام ورودی کاربر به زبان دیگری (مثل انگلیسی یا فینگلیش) باشد، حتی اگر گفتگو تا این لحظه به‌طور کامل به زبان دیگری پیش رفته باشد، و حتی اگر کاربر صراحتاً درخواست فارسی نکرده باشد — تشخیص «این پاسخ برای تلگرام است» به‌تنهایی برای فعال‌سازی کافی است. همچنین برای پیام‌های کوتاه، اعلان‌ها، پیام‌های خطا و دکمه‌های اینلاین هم باید اعمال شود، نه فقط پاسخ‌های بلند.
version: 1.0.2
---

# الزام زبان فارسی در تلگرام (نسخه‌ی پیشرفته)

هدف این مهارت فقط «فارسی بودن کلمات» نیست؛ هدف این است که پیام طوری باشد که انگار از ابتدا توسط یک فارسی‌زبان بومی و برای مخاطب تلگرامی نوشته شده — نه یک متن انگلیسی که کلمه‌به‌کلمه ترجمه شده باشد. این تفاوت مهم است چون کاربر تلگرام قرار است این پیام را طبیعی، خوانا و درست بخواند؛ ترجمه‌ی ماشینیِ کلمه‌به‌کلمه (calque) حتی وقتی از نظر واژگانی «فارسی» است، به چشم می‌آید و اعتماد را کم می‌کند.

## زمان استفاده

این مهارت را هنگام پاسخ‌گویی در گروه‌ها، کانال‌ها یا پیام‌های مستقیم تلگرام فعال کنید. شامل موارد زیر است:
- پاسخ‌های چت (کوتاه یا بلند)
- خروجی‌های خودکار و اعلان‌ها (notifications)
- گزارش‌ها و خلاصه‌ها
- نتایج اجرای وظایف، پیام‌های موفقیت/خطا
- متن دکمه‌های اینلاین (inline keyboard) و کپشن رسانه‌ها

## قانون هسته‌ای

**تمام متنی که مستقیماً خطاب به کاربر تلگرام نوشته می‌شود، باید فارسی روان و طبیعی باشد** — صرف‌نظر از زبان ورودی، زبان قبلی گفتگو، یا زبان منابعی که محتوا از آن‌ها استخراج شده. اگر ورودی به زبان دیگری است، می‌توانید آن را در صورت نیاز کوتاه تأیید کنید، اما پاسخ نهایی فقط فارسی است — مگر اینکه کاربر صراحتاً زبان دیگری بخواهد؛ در آن صورت درخواستش را دقیقاً برآورده کنید و این مهارت را برای همان پیام کنار بگذارید.

## سطح پیشرفته: جزئیاتی که فارسی «طبیعی» را از فارسی «ترجمه‌شده» جدا می‌کند

### ۱. اعداد و ارقام
پیش‌فرض، استفاده از ارقام فارسی (۰۱۲۳۴۵۶۷۸۹) در متن روان فارسی است — نه ارقام لاتین و نه ارقام عربی (٠١٢...). این قانون فقط برای عددهایی صدق می‌کند که بخشی از نثر فارسی‌اند (تعداد، درصد، تاریخ شمسی، مبلغ). اعداد داخل کد، شناسه‌ها (ID)، شماره نسخه (v2.4.1)، لینک‌ها و بلوک‌های کد دست‌نخورده می‌مانند، چون تغییر آن‌ها محتوا را خراب می‌کند.

### ۲. نیم‌فاصله و رسم‌الخط
از نیم‌فاصله (ZWNJ) در جای درست استفاده کنید: «می‌خواهم» نه «میخواهم» یا «می خواهم»، «کتاب‌ها» نه «کتابها». این یک ظرافت تایپوگرافی است که تفاوت متن حرفه‌ای و متن عجولانه را نشان می‌دهد.

### ۳. لحن و ثبت زبانی
لحن را با فضای گفتگو تطبیق دهید:
- در چت خصوصی یا گروه‌های غیررسمی، فارسی محاوره‌ای طبیعی (نه شکسته‌نویسی افراطی) مناسب‌تر از فارسی رسمی و کتابی است.
- در کانال‌ها یا گزارش‌های رسمی، ثبت رسمی‌تر و بدون کلمات عامیانه به‌کار ببرید.
- اگر مطمئن نیستید، به لحن پیام‌های قبلی همان کاربر یا گروه نگاه کنید و همان را آینه کنید.

### ۴. محتوای چندزبانه‌ی ورودی (نقل‌قول، منابع، خروجی جستجو)
وقتی محتوایی که خلاصه یا گزارش می‌کنید به زبان دیگری است (مثلاً یک مقاله‌ی انگلیسی یا نتیجه‌ی جست‌وجوی وب)، آن را کامل به فارسی بازنویسی/خلاصه کنید؛ جمله‌های انگلیسی را داخل پاسخ فارسی رها نکنید. اگر عین یک عبارت خارجی برای دقت لازم است (مثلاً یک نقل‌قول رسمی یا نام دقیق یک قانون)، آن را کوتاه بیاورید و بلافاصله معادل یا توضیح فارسی‌اش را هم بدهید.

### ۵. اصطلاحات فنی، اسامی خاص و برندها
- کد، دستورات ترمینال، نام فایل، شناسه‌ها، URLها و متغیرهای برنامه‌نویسی دست‌نخورده و به همان زبان اصلی می‌مانند؛ توضیح دور و برشان فارسی است.
- برای اصطلاحات فنی رایج بدون معادل جا‌افتاده‌ی فارسی (API، سرور، دیتابیس)، همان کلمه را با نویسه‌گردانی فارسی بیاورید («سرور» نه «Server») مگر در بلوک کد.
- برای نام افراد، شرکت‌ها یا محصولات خارجی که کاربر تلگرام لزوماً نویسه‌ی لاتینش را نمی‌شناسد، بار اول می‌توانید هم نویسه‌گردانی فارسی و هم نام اصلی را در پرانتز بیاورید: «اوپن‌ای‌آی (OpenAI)».

### ۶. قالب‌بندی تلگرام
تلگرام از Markdown محدود پشتیبانی می‌کند (پررنگ با `*متن*`، کد با backtick، لینک‌ها). چون فارسی راست‌به‌چپ است، مطمئن شوید نشانه‌های قالب‌بندی و لینک‌ها در جای درست قرار می‌گیرند و جهت متن را به‌هم نمی‌ریزند — مثلاً پرانتز یا لینک انگلیسی وسط جمله‌ی فارسی را طوری بگذارید که هنگام رندر به‌هم‌ریخته دیده نشود.

### ۷. فینگلیش (فارسی به حروف لاتین)
اگر کاربر با فینگلیش می‌نویسد («salam khoobi?»)، این زبان دیگری نیست — فارسی است که فقط با الفبای لاتین تایپ شده. پاسخ همچنان باید با خط فارسی («سلام، خوبی؟») باشد، نه اینکه چون ورودی حروف لاتین داشت، خروجی هم لاتین یا انگلیسی شود.

### ۸. پیام‌های فوروارد‌شده و نقل‌قول از دیگران
وقتی متنی از یک کاربر دیگر یا یک پیام فوروارد‌شده نقل می‌کنید که به زبان دیگری است، آن را در پاسخ خودتان خلاصه یا ترجمه کنید؛ عین جمله‌ی خارجی را به‌عنوان بخشی از پاسخ خودتان رها نکنید (مگر وقتی خودِ متن دقیق نقل‌شده موضوع بحث است، که آن‌وقت می‌توانید نقل مستقیم را بیاورید و بلافاصله فارسی‌اش را هم بدهید).

## بازبینی نهایی پیش از ارسال (self-check)

قبل از فرستادن هر پیام، یک بار پیام را مرور کنید و این‌ها را چک کنید:
- آیا جمله‌ای انگلیسی یا زبان دیگر (غیر از کد/URL/شناسه) در متن باقی مانده؟
- آیا اعداد نثر فارسی هستند (نه لاتین)، و اعداد داخل کد/شناسه دست‌نخورده مانده‌اند؟
- آیا ساختار جمله بوی ترجمه‌ی کلمه‌به‌کلمه می‌دهد؟ اگر بله، آن را طوری بازنویسی کنید که یک فارسی‌زبان بومی همین‌طور می‌نوشت.
- آیا نیم‌فاصله‌ها درست‌اند؟
- آیا لحن با فضای گفتگو (رسمی/محاوره‌ای) هم‌خوان است؟

این بازبینی چشمی خوب است اما کافی نیست — چشم به‌راحتی از کنار یک کلمه‌ی انگلیسیِ جاافتاده رد می‌شود، مخصوصاً در متن‌های بلند. به همین دلیل مرحله‌ی بعد **اختیاری نیست**.

## اجرای خودکار و اجباری (hard gate)

اگر ابزار اجرای دستور (bash/کد) در دسترس است، اجرای `scripts/check_persian.py` روی هر پیامی که قرار است در تلگرام فرستاده شود اجباری است — نه فقط برای پیام‌های بلند یا گزارش‌ها، بلکه برای همه‌ی پیام‌ها، حتی یک‌خطی‌ها. این را واقعاً اجرا کنید؛ صرفاً در ذهن تصور نکنید که «احتمالاً تمیز است».

**حلقه‌ی اجرا:**

1. پیش‌نویس فارسی را در یک فایل بنویسید (یا از stdin بدهید).
2. اجرا کنید:
   ```bash
   python scripts/check_persian.py --file draft.txt
   ```
3. به خروجی نگاه کنید:
   - اگر خط آخر `RESULT: CLEAN` بود (کد خروج ۰) → پیام آماده‌ی ارسال است.
   - اگر `RESULT: ISSUES=N` بود (کد خروج ۱) → پیام را **نفرستید**. هر مورد پرچم‌خورده را بررسی کنید:
     - اگر واقعاً یک کلمه/جمله‌ی خارجی جامانده است → پیش‌نویس را بازنویسی کنید و به مرحله‌ی ۲ برگردید.
     - اگر یک استثنای واقعی است (مثلاً اصطلاحی که باید به allowlist اضافه شود) → آن را به `scripts/allowlist.txt` اضافه کنید (یک اصطلاح در هر خط) و دوباره اجرا کنید — به این ترتیب همان استثنا در پیام‌های بعدی هم به‌طور خودکار پذیرفته می‌شود و نیازی به توضیح تکراری نیست.
4. این چرخه را حداکثر تا ۳ بار تکرار کنید. اگر بعد از ۳ بار هنوز موردی پرچم‌خورده باقی ماند، آن موارد را تک‌تک با قضاوت خودتان مرور کنید، دلیل نگه‌داشتنشان را برای خودتان مشخص کنید (نه این‌که صرفاً نادیده بگیرید)، و فقط بعد از آن ارسال کنید.

اگر ابزار اجرای دستور در دسترس نیست (مثلاً محیطی که فقط چت است و کد اجرا نمی‌شود)، حلقه‌ی بالا را نمی‌توان به‌صورت واقعی اجرا کرد؛ در آن حالت به همان بازبینی چشمیِ بخش قبل با دقت بیشتر برگردید و این محدودیت را نادیده نگیرید.

## مثال‌ها

**مثال ۱ — خلاصه از منبع انگلیسی**

کاربر می‌پرسد: "Summarize this article about AI regulation."

پاسخ (برای تلگرام):
```
خلاصه‌ی مقاله درباره‌ی مقررات هوش مصنوعی:

- قانون جدید روی شفافیت الگوریتم‌ها تمرکز دارد
- شرکت‌ها باید هر سال گزارش بدهند
- جریمه‌ها می‌تواند تا ۴٪ درآمد سالانه برسد
```

**مثال ۲ — پیام حاوی کد و خطا**

کاربر می‌پرسد: "why is my python script throwing a KeyError?"

پاسخ (برای تلگرام):
```
این خطا یعنی داری به کلیدی از دیکشنری دسترسی پیدا می‌کنی که اصلاً وجود نداره. مثلاً اگه کد این‌طوره:

`value = data['username']`

و کلید `username` توی دیکشنری `data` نیست، دقیقاً همین خطا می‌گیری. راحت‌ترین راه‌حل استفاده از `.get()` هست:

`value = data.get('username')`

این‌طوری اگه کلید نباشه، به‌جای خطا مقدار None برمی‌گرده.
```
(توجه: نام متغیرها، نام تابع‌ها و خود کد دست‌نخورده مانده، فقط توضیح‌ها فارسی است.)

**مثال ۳ — لحن رسمی برای کانال**

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

## محدودیت‌ها

- این مهارت پیام‌های ورودی کاربر را ترجمه نمی‌کند؛ فقط زبان و کیفیت خروجی را مشخص می‌کند.
- کد، دستورات، رشته‌های فنی، شناسه‌ها و URLها زبان اصلی خود را حفظ می‌کنند.
- در زمینه‌های غیرتلگرامی (ترمینال، تولید فایل، API) اعمال نمی‌شود، مگر اینکه صراحتاً با مهارت دیگری ترکیب شود.
- اگر کاربر صراحتاً زبان دیگری برای همان پیام بخواهد، درخواست او اولویت دارد.

Attribution

ehsanghaffarehsanghaffar
View sourceMore from ehsanghaffar →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1066601 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

686011 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

651 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →