salsi skill

A skill and CLI for Persian text: find loanwords and suggest native equivalents without breaking terms, code or quotations.

  • 91 ★ on the repository
  • Last commit
Skill

Extended access

Why this level

  • install.sh writes files into the folders of Claude Code, Cursor and other agents, and salsi apply edits text files in place.
All reasons and checks

pooooooriya/salsi

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/salsi

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • install.sh writes files into the folders of Claude Code, Cursor and other agents, and salsi apply edits text files in place.

This is third-party code. Review the repository files before installing.

What it does

salsi scans Persian text for loanwords and suggests native equivalents. The core is a skill, skills/salsi/SKILL.md, with rules for when a replacement is justified and when not, and a `salsi scan` CLI with `apply`, `lookup`, `domains` and `info` commands. The lexicon of roughly 20 thousand words comes from the Pasban project. The engine understands Persian morphology: half-spaces, Arabic letter variants, suffixes and compound verbs. It skips code blocks, URLs, quotations, HTML and front matter, and protects domain terminology through `--domain` (tech, medical, legal, science, business). Three levels exist: safe, standard and pure. Only safe applies without human review; everything else counts as a suggestion.

Who it is for. Authors, editors and translators writing Persian with Claude Code, Codex or Cursor who want to cut surplus loanwords without breaking terminology.

Good fit when

  • An article or documentation in Farsi needs a loanword check.
  • An editor reviews a translation and wants to see which replacements are safe.
  • CI must flag loanwords in Markdown through `salsi scan docs/**/*.md --level safe --strict`.
  • You want to know which sense the Pasban lexicon assigns to a word.

Not a fit when

  • The text is not in Persian.
  • The reader would not recognize the native variant: the skill's rules put clarity above purity and keep the loanword.
  • You need spelling or style editing in general rather than word replacement.

Example request

Check article.md for loanwords, suggest replacements only where the reader will understand them and protect technical terms.

Limitations

Python 3.10 or newer is required with no external packages: every install carries the engine and lexicon. Licenses differ: code is MIT, data in salsi/data is ODbL 1.0, so Pasban attribution is required and derived databases stay open. The pure level replaces every word in the lexicon and fits only deliberate lexical purism. For agents that cannot run commands the skill falls back to a 119-row table in reference/core-words.md and must say it works without the full lexicon. Last commit 13 August 2026.

How to disable. Delete the salsi folder from ~/.claude/skills or .claude/skills, the salsi.mdc rule from .cursor/rules and the block in AGENTS.md. The installer places files and starts no global services.

FAQ

How do I install salsi?

Run `git clone https://github.com/pooooooriya/salsi && cd salsi && ./install.sh`. The script finds Claude Code, Codex, Cursor and other tools and asks before installing.

How do safe, standard and pure differ?

safe applies 119 settled rows and suits automation. standard is the default and yields suggestions for review. pure takes the whole lexicon and runs only on request.

Will salsi damage technical terms?

No, terms are protected. The `--domain` option picks the field, and the scan leaves code blocks and quotations alone.

Can I use salsi without an agent?

Yes. The CLI works on its own: `salsi scan`, `salsi apply --diff` and `salsi lookup` need no agent. JSON output suits CI.

Which license covers the lexicon?

Code is MIT, data in `salsi/data` is ODbL 1.0 as an adaptation of the Pasban lexicon. Pasban attribution is required, details are in ATTRIBUTION.md.

Discussion

No questions or reviews yet.

Skills

A skill teaches an agent to write Persian without machine clichés and lay out RTL documents: Word, PDF, PowerPoint, HTML, Excel.

SkillMinimal access423Repository stars

Two anti-slop skills: slopbeth edits writing you publish and slopgent keeps the agent's own replies honest and plain.

SkillExtended access113Repository stars

A skill that finds AI tells in English prose and edits them surgically; three Python scanners run on their own and the teach command learns your voice

SkillMinimal access1KRepository stars

A skill and CLI that strip AI tells from Korean, English, Chinese and Japanese text and check that meaning and numbers stay unchanged

SkillExtended access388Repository stars

A skill that teaches Claude and Codex to write Finnish by official rules: compound words, cases, punctuation and tone.

SkillMinimal access78Repository stars

A de-AI writing skill: it repairs the narrative architecture of fiction and edits professional documents by their venue rules

SkillMinimal access3.8KRepository stars

README in short

The Persian README explains why naive substitution harms text, shows three protection layers, an install table per tool, CLI commands and the code and data license terms. An English README.en.md exists.

README badge

Original SKILL.md

---
name: salsi
description: Write Persian with Persian words. Use when writing, editing, translating or reviewing Persian (Farsi) prose — articles, documentation, posts, essays, UI copy — to replace loanwords with Persian equivalents while leaving technical terminology, proper nouns and code untouched. Also use when the user asks for پارسی سره, سره‌نویسی, فارسی‌سازی, or "make this text more Persian".
license: MIT
---

# سالسی — Write Persian with Persian words

Persian prose is full of borrowed words that have perfectly good Persian
equivalents. Replacing them makes writing clearer and more native. Replacing
them *carelessly* makes writing wrong — it mangles technical terms, changes
meaning, and produces words no reader recognises.

This skill is about the difference.

## The one rule that matters

**A loanword is only worth replacing when the replacement is at least as clear
to the reader.** Purity is never worth clarity. If you are unsure whether a
reader would recognise the Persian equivalent, keep the original.

## Workflow

1. **Scan** the text to find candidates:

   ```bash
   salsi scan article.md --format json
   ```

   If `salsi` is not on PATH, this skill ships its own copy — run
   `./bin/salsi` from this skill's directory instead. It needs nothing
   installed beyond Python 3.10 and carries the full 20,129-word lexicon.

   Add `--domain tech` (or `medical`, `legal`, `science`, `business`) so the
   terminology of that field is protected. Add `--topic <subject>` to help the
   scanner pick the right sense of an ambiguous word.

2. **Read each finding.** Every one carries `level`, `ambiguous`, and a `sense`
   label per suggestion. Apply the judgement rules below. Most findings will be
   *rejected* in a technical document — that is the expected outcome, not a
   failure.

3. **Apply** with your normal editing tools, one considered change at a time.
   For the settled subset only, `salsi apply article.md` does it mechanically.

Report a problem