Skip to content

Repository files navigation

سالسی

سالسی

پارسی‌تر بنویس، بی‌آنکه چیزی خراب شود.

بسی رنج بردم در این سال سی
عجم زنده کردم بدین پارسی
فردوسی

tests code: MIT data: ODbL

تارنما · English · سپاس‌نامه · پاسبان


اسکیلی برای دستیارهای هوشمند — کلاد، کدکس، کرسر و هر چیز دیگر — و یک ابزار خط فرمان، که وام‌واژه‌های نوشتهٔ فارسی را پیدا می‌کند و برابر پارسی‌شان را پیشنهاد می‌دهد؛ بی‌آنکه اصطلاح‌های تخصصی، نام‌های خاص و کد را خراب کند.

واژگان کار پاسبان است، زیر پروانهٔ ODbL.

git clone https://github.com/pooooooriya/salsi && cd salsi && ./install.sh

نیازی به pip نیست: هر اسکیلی که نصب می‌شود، موتور و هر ۲۰٬۰۷۱ واژه را با خودش می‌برد. تنها نیازش پایتون ۳٫۱۰ است.

$ salsi scan نوشتار.md --domain tech

  ✓ سیستم (۱:۱۸)        → سامانه        [امن]
  ✓ سرور (۳:۳۷)         → کارساز        [امن]
  ✓ فایل‌های (۳:۶۸)     → پرونده‌های    [امن]
  ✓ دانلود کنید (۴:۱۱)  → بارگیری کنید  [امن]
  ? کانفیگ (۴:۱)        → پیکربندی

بلوک کد، کد درون‌خطی، نشانی‌ها، نقل‌قول‌ها و الگوریتم را اصلاً نشان نداد — چون نباید عوض شوند.


چرا جای‌گزینی ساده کار نمی‌کند

نمونه‌های واقعی از همین واژه‌نامه، که اگر واژه‌به‌واژه جای‌گزین کنید متن را خراب می‌کنند:

در متن جای‌گزینی ساده‌لوحانه چه شد
سرور در نوشتار فنی شادمانی فرهنگ بر پایهٔ املا کلید خورده؛ سُرور و server یک‌شکل نوشته می‌شوند
الگوریتم روال‌واره اصطلاح فنی است؛ برگرداندنش متن را کم‌دقت‌تر می‌کند
کیبورد تخته‌مدنگ درست است، ولی کسی نمی‌شناسدش
خانه‌ای سرایای پسوند فارسی با واژهٔ نو شکل عوض می‌کند
دانلود کنید بارگیری کردن صرف فعل باید بماند، نه مصدر

سالسی سه لایه دارد که دقیقاً همین‌ها را می‌گیرد:

۱. موتوری که فارسی را می‌فهمد — نیم‌فاصله، گونه‌های عربی حروف، اعراب، پسوندهای صرفی، عبارت‌های چندواژه‌ای و فعل‌های مرکب. فایل‌هایمان، فایل ها و فایلها همه به یک سرواژه می‌رسند، و پسوند برای واژهٔ نو بازساخته می‌شود (خانه+نکره = خانه‌ای ولی کتاب+نکره = کتابی).

۲. لایه‌های محافظت — ناحیه‌های غیرمتن (بلوک کد، کد درون‌خطی، نشانی، نقل‌قول، برچسب HTML، لاتک، front matter) و واژگان محافظت‌شده به تفکیک حوزه.

۳. سه سطح صریح، چون «فارسی‌تر» یک عدد نیست:

سطح چه می‌دهد برای چه
safe ۱۱۹ ردیف حل‌شده خودکارسازی، CI، وقتی نمی‌توانید بازبینی کنید
standard (پیش‌فرض) همه‌چیز جز جاافتاده‌ها و محافظت‌شده‌ها ویرایش عادی با بازبینی
pure همهٔ ۲۰٬۰۷۱ سرواژه سره‌نویسی، فقط وقتی خواسته شود

تنها safe بدون داوری انسان اعمال می‌شود. باقی، پیشنهاد است نه تصمیم — و اسکیل به دستیار می‌گوید پیشنهادِ ناآشنا را رد کند. متن شما بدشکل نمی‌شود.


اسکیل

اصل ماجرا skills/salsi/SKILL.md است: دستورالعمل داوری برای دستیار هوشمند — کِی جای‌گزین کند، کِی نکند، و چرا.

./install.sh                  # آنچه روی دستگاهتان هست را پیدا می‌کند و می‌پرسد
./install.sh --list           # فقط گزارش بده
./install.sh claude cursor    # فقط این‌ها
./install.sh --bundle ./dist  # پوشهٔ خودکفا برای بارگذاری در claude.ai
ابزار جای نصب
Claude Code ~/.claude/skills/salsi/ یا .claude/skills/ پروژه
Claude.ai / Desktop --bundle بسازید و پوشه را بارگذاری کنید
Codex افزوده می‌شود به AGENTS.md
Cursor .cursor/rules/salsi.mdc
Windsurf / Cline / Continue / Zed پرونده‌های skills/adapters/
هر چیز دیگر skills/adapters/PROMPT.md را در پرامپت سامانه بگذارید

هر نصب خودکفاست: bin/salsi درون پوشهٔ اسکیل، با کل واژه‌نامه. جایی که دستیار اصلاً نمی‌تواند فرمان اجرا کند، به جدول ۱۱۹ ردیفیِ reference/core-words.md برمی‌گردد و موظف است بگوید با واژه‌نامهٔ کامل کار نمی‌کند.


ابزار خط فرمان

salsi scan نوشتار.md                     # --format text|json|markdown
salsi scan نوشتار.md --domain tech --topic "رایانه"
salsi apply نوشتار.md --diff             # فقط ردیف‌های امن
salsi lookup سرور                        # پاسبان چه می‌دهد، و در کدام معنا
salsi domains                            # حوزه‌های محافظت
salsi info                               # اندازهٔ واژه‌نامه و خاستگاهش

هم‌سنجی در CI یا قلاب گیت:

salsi scan docs/**/*.md --level safe --strict

خروجی JSON قالب رسمی ماشین‌خوان است: هر یافته level، ambiguous، جای دقیق، و برچسبِ معنا برای هر پیشنهاد دارد — همان که دستیار باید بخواند تا سرور را شادمانی نکند.


داده و پروانه

چه چیزی پروانه
نرم‌افزار سالسی MIT
salsi/data/** (اقتباس از دادگان پاسبان) ODbL v1.0
متنی که با سالسی می‌نویسید «فرآوردهٔ برخاسته» — فقط یادکرد پاسبان لازم است

واژه‌نامه از انتشار رسمی خود پاسبان ساخته می‌شود:

python3 scripts/fetch_lexicon.py     # تازه‌ترین انتشار

شرط‌های ODbL — یادکرد، هم‌سان‌رسانی، گشوده‌ماندن — همه رعایت شده‌اند؛ ATTRIBUTION.md جزئیاتش را می‌گوید.


ساختار

salsi/               موتور: normalize، morphology، lexicon، guards، scan
  data/              lexicon.json (واژگان پاسبان) + curated.tsv + فهرست‌های محافظت
skills/
  salsi/             اسکیل + مرجع‌ها
  adapters/          AGENTS.md، cursor، پرامپت همگانی
examples/            نمونهٔ پیش و پس از ویرایش
scripts/             گرفتن واژه‌نامه و ساخت جدول مرجع
tests/               ۳۲ تست
python3 -m unittest discover tests

همکاری

بیشترین ارزشی که می‌توانید بیفزایید کد نیست، فهرست‌های واژه است — CONTRIBUTING.md مرز دقیق هر فهرست را می‌گوید.

اگر واژه‌ای در خود فرهنگ غایب یا نادرست است، به پاسبان بگویید؛ سرچشمه آن‌جاست و همه سود می‌برند.

About

Write Persian with Persian words — a loanword scanner and an AI-assistant skill built on the Pasban dictionary. Ships 20,071 words, protects technical terms, code and quotations. Works in Claude, Codex, Cursor and more.

Topics

Resources

Contributing

Stars

68 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages