اسکیلی برای دستیارهای هوشمند — کلاد، کدکس، کرسر و هر چیز دیگر — و یک ابزار خط فرمان، که وامواژههای نوشتهٔ فارسی را پیدا میکند و برابر پارسیشان را پیشنهاد میدهد؛ بیآنکه اصطلاحهای تخصصی، نامهای خاص و کد را خراب کند.
واژگان کار پاسبان است، زیر پروانهٔ 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 مرز دقیق هر فهرست را میگوید.
اگر واژهای در خود فرهنگ غایب یا نادرست است، به پاسبان بگویید؛ سرچشمه آنجاست و همه سود میبرند.