Install
openclaw skills install @adelpro/fasahaReview and fix AI-generated or AI-translated Arabic so it reads as fluent, native Modern Standard Arabic (MSA) instead of translated/calqued output. Trigger on translating INTO Arabic, writing in Arabic (اكتب بالعربية / اكتبلي بالعربية), writing original Arabic, or reviewing/correcting/proofreading Arabic (‘راجع لي هذا’, 'صحح العربية', 'ترجم هذا للعربية', any Arabic quality check), and proactively before outputting Arabic prose longer than 2-3 sentences. Covers: Latin-script leakage, English sentence-structure calque, word choice/terminology, morphology/agreement, punctuation, hamza spelling, dialectal leakage into MSA. Ships a self-maintained register profile (voice-profile.md) for tone and MSA-vs-Darija choice, a runnable checklist, a terminology glossary, and an accumulating failure log. Register-focused; a separate style/voice skill may layer after it.
openclaw skills install @adelpro/fasahaFasaha (فصاحة) means eloquence and correctness of expression in Arabic — text that reads as if it was written by a native speaker, not translated. This skill fixes AI-generated or AI-translated Arabic so it reaches that bar.
Relationship to style/voice skills: this skill fixes structural/linguistic correctness only.
For register and tone on top (MSA vs Darija, formality, terminology), fasaha now ships a
self-contained profile at references/voice-profile.md — generic, editable by any agent, updated
as the user states preferences. Run fasaha first (make the Arabic correct and native-sounding),
then apply the matching register profile second. If the user has a separate skill defining their
personal tone/voice, that may be used instead of the built-in profile (or layered after it) — the
built-in file is the default when no separate voice skill exists. Either way they compose — don't
skip one because the other ran.
Grounded in: the QALB (Qatar Arabic Language Bank) annotation guidelines — the closest thing
to a published standard for correcting AI/MT-generated Arabic — plus patterns specific to LLM
translation failures that predate/postdate QALB's 2013 scope (see Section 6). Primary source:
Zaghouani, Habash & Mohit, QALB Guidelines v0.90, CMU-Qatar/Columbia, 2013 —
http://nlp.qatar.cmu.edu/qalb/QALB-guidelines_0.90.pdf. Full bibliography with links in
references/sources.md.
references/checklist.md — Sections 1-7 below plus the register pass —
against the draftreferences/voice-profile.md for tone and formality
(MSA vs Darija), fall back to a separate personal voice skill if one existsDon't skip straight to a "polished" single-pass translation — the calque problem (Section 2) is much easier to catch by explicitly checking sentence boundaries against the source than by trying to write well the first time.
The single most common and most visible error. Any English word that isn't a proper noun, product name, or standard technical identifier must be translated into Arabic.
IBM).The most damaging error because it's invisible sentence-by-sentence but obvious paragraph-by-paragraph. Symptom: every Arabic sentence mirrors one English sentence, in the same order, with the same boundaries. Grammatically correct, but it reads as translated rather than composed.
Fix by restructuring, not by translating harder:
فـ / إذ / حيث / بينما / مما / وذلك لأنGeneric-but-wrong translations that are grammatically valid but semantically off, especially for technical or domain terms.
تشغيل يتم (a generic/mechanical rendering of "run" in "museums are run by") when a more
precise verb like تُدار fits the institutional context better (worked example in
references/mt-examples.md).Standard MSA grammatical correctness — gender/number agreement, broken plurals, missing obligatory prepositions, definite article consistency, redundant/missing words.
الجامعة الجديدة not الجامعة الجديدحدائق not حديقاتتخرج من الجامعة not تخرج الجامعةتغير لون الجلد والتصبغ
not تغير لون جلد وتصبغهذا, هذه, ذلك) has a clear antecedent that survived the translation —
translation/compression sometimes drops the sentence a pronoun was pointing back to.Mechanical but highly visible if wrong — these are the errors a native reader notices instantly.
، not , / ؛ not ; / ؟ not ?أ/إ); if silent, it's wasl (write bare ا)references/qalb-spelling-rules.md for the full hamza/punctuation/number rule set if a
specific case is unclearAI output can slip into dialect, especially when the prompt, source material, or context contains dialectal Arabic. QALB Section 5.6 classifies dialectal words into six categories — knowing which category a word falls into determines whether it needs correcting to MSA at all.
Needs correction to MSA (morphologically/phonologically close to an MSA word):
انتو جعلتوا → أنتم جعلتم، بيكتب → سيكتبجذور → جزور، كهك → كعكاللي → الذي/الذين، عم → prefix removed
(عم ناكل → سنأكل), هذي/هايدي → هذه، مش/موش → ليس (only لم when negating a past
action — see references/dialect-classification.md)No correction needed, even though it looks dialectal:
أوتوبيس،
زعلان، أنت مزعوج — check a dictionary (e.g. almaany.com) before "fixing" theseكاتشيب، كانيلوني،
جورج بوش — only correct if the spelling itself is wrong, not the word choiceكرهبة in Tunisian
dialect) — these have nothing to translate to; leave them if the source intends dialectWhen to flag instead of translate: if a passage is more than roughly a third dialectal, or
uses a dialect the reviewer isn't confident in, don't attempt word-by-word MSA correction — flag
it. Partial, uncertain correction of heavy dialect usually makes the result worse, not better.
Full classification table and more examples: references/dialect-classification.md.
QALB's guidelines (2013) were built against older statistical/rule-based MT and human learner text — they predate LLM translation, so their error distribution assumes MT output that's often choppy or ungrammatical. LLM translations are usually grammatically clean but calqued (Section 2) and prone to Latin leakage in specifically technical/marketing vocabulary (Section 1) — errors QALB's annotators rarely saw. Don't assume QALB's category weights (spelling-heavy, from 2013-era MT) match what you'll actually find in modern LLM-generated Arabic — in practice, Sections 1-3 above catch more real issues in LLM output than Sections 4-5. Dialect leakage (Section 6) is more likely to come from dialectal source material or prompts than from the LLM itself, since modern LLMs default to MSA unless steered otherwise.
references/qalb-spelling-rules.md — full hamza spelling rules, Arabic punctuation usage
rules (comma/semicolon/colon/question mark contexts), and number-writing rules. Read when a
specific spelling or punctuation case in Section 5 isn't resolved by the quick checks above.references/mt-examples.md — worked full-sentence MT correction examples (word order,
missing articles, agreement, lexical choice) drawn directly from the QALB source. More useful
than the spelling reference for calibrating Sections 2–4 (calque, word choice, agreement)
against real cases rather than abstract rules.references/dialect-classification.md — QALB's full six-category dialect classification with
correction/no-correction examples for each. Read when Section 6 flags a possible dialectal word
and you need to determine which category it falls into.references/voice-profile.md — a generic, self-maintained register profile. After the
correctness pass in Sections 1-6, apply the matching register (MSA vs Darija, formal vs casual,
tone, terminology) from here. Any agent updates it directly as the user states register
preferences or corrects output. If no profile fits the task, ask which register to use.references/checklist.md — the runnable quality gate: every Section 1-7 + register check as a
single pass, with a prescribed output shape. Run this to enforce and audit the correction work.references/terminology.md — accumulating glossary of standard Arabic renderings for web-dev
and e-commerce terms. Use it for consistency; any agent adds to it as terms get settled.references/llm-failure-log.md — accumulating log of real caught errors (bad → good → section).
Check it for known patterns; append new ones so the skill improves over time.references/sources.md — the QALB source this skill is built on, with a direct link.