Language And Style

Shared language-quality rules for learner-facing text. This page covers the logic currently carried by the language_instructions and avoid_ai_language injections.

Why this exists

Fraya needs two things at the same time:

  • prose that sounds natural, direct, and non-generic;
  • language output that matches the target language and learner level.

These rules are shared because the same quality bar should apply across learner-facing section content, regardless of topic.

Language instructions

The runtime language layer defines:

  • which target language the output must use;
  • CEFR B1 readability as the default accessibility level;
  • how acronyms should be explained.

This is the role of the language_instructions injection.

Avoid AI language

The prose-quality layer defines what Fraya should avoid when writing learner-facing text:

  • stock e-learning phrases and obvious AI clichés;
  • inflated, promotional, or editorialized wording;
  • filler, repetition, and rhetorical padding;
  • dead metaphors and other language that sounds machine-generated rather than native.

It also sets practical style rules such as brevity, formatting restraint, and forms of address.

This is the role of the avoid_ai_language injection.

How the layers work together

language_instructions is the language wrapper. avoid_ai_language is the prose-quality core reused inside that wrapper. Localization terminology is passed separately as runtime glossary context when a prompt needs it.

Together they ensure that learner-facing text is:

  • in the right language;
  • readable for the intended audience;
  • terminologically consistent;
  • natural enough for a native speaker;
  • free from generic AI phrasing.
  • docs/localization/localization.md
  • prompts/injections/language_instructions.yaml
  • Naming conventions — title and naming rules applied alongside language
  • Localization — language quality requirements for target languages
  • Section content — language rules applied during the editing step
  • prompts/injections/language_instructions.yaml
  • prompts/injections/avoid_ai_language.yaml