From icelandic-proofread
Native Icelandic proofreading inside Claude Code — corrects spelling and grammar in Icelandic text using Miðeind's open-source GreynirCorrect engine (MIT), fully offline, with an optional public yfirlestur.is API fallback. No account, no login, no paid service. USE WHEN user wants to proofread, correct, clean, or check Icelandic text — triggers on "prófarki", "icelandic-proofread", "proofread Icelandic", "yfirlestur", "prófarkalestur", "lesa yfir", "laga íslensku", "hreinsa texta", "check Icelandic", "correct Icelandic", "GreynirCorrect".
How this skill is triggered — by the user, by Claude, or both
Slash command
/icelandic-proofread:icelandic-proofreadThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Corrects Icelandic spelling and grammar from the command line, built on
Corrects Icelandic spelling and grammar from the command line, built on GreynirCorrect — the MIT-licensed correction engine published by Miðeind ehf. Runs fully offline once installed; falls back to the public yfirlestur.is API only when the local engine is missing.
Not affiliated with or endorsed by Miðeind ehf. This wraps only their openly published engine and public demo API. "Málfríður" / "Málstaður" are Miðeind's paid products and are not used here.
Two correction levels:
| Level | Fixes | When |
|---|---|---|
full (default) | spelling + grammar/case | clean a draft end-to-end |
spelling | token-level spelling only | conservative; you keep grammar control |
full applies every correction automatically (the "accept all" behaviour) and
reports every change so nothing is silent.
--polish)The rule engine fixes mechanics (spelling, case, agreement) but cannot judge
native cadence or strip translationese. Add --polish to sandwich a Gemini
Flash pass between two engine passes:
engine-correct → Gemini polishes for native fluency → engine-correct (guardrail)
The engine is the bread, Gemini is the filling: any inflection error the model
introduces is caught by the second deterministic pass, so the LLM never gets
the last word on mechanics. It's opt-in and secret-free — runs only with
--polish and a GEMINI_API_KEY present (env, ./.env, or
~/.config/icelandic-proofread/.env). Without a key it errors clearly instead of
skipping silently. Model defaults to gemini-3-flash-preview, overridable with
--model / $GEMINI_MODEL (e.g. gemini-3.5-flash, gemini-3.1-flash-lite).
python3 proofread.py check --polish \
--text "Við erum spennt að tilkynna að nýji vefurinn okkar er núna lifandi."
# → Við erum spennt að tilkynna að nýi vefurinn okkar sé nú kominn í loftið.
# rule pass: nýji→nýi · Gemini: removes the "er lifandi" calque, adds subjunctive
bash install.sh # creates a venv and installs reynir-correct (MIT)
No install? The tool still runs via the yfirlestur.is API fallback — but local is recommended (offline, newer engine, and it doesn't lean on Miðeind's free public endpoint).
python3 proofread.py status
# {"local": true, "local_version": "4.1.3", "api": "...", "default_engine": "local"}
A short string:
python3 proofread.py check --text "Mér finst þetta gott."
# → Mér finnst þetta gott.
A whole document (preserves blank-line paragraph structure):
python3 proofread.py proofread --in draft.txt --out clean.txt
# stderr: ✓ Yfirlesið með GreynirCorrect — N ábending(ar). 👌
Full structured report (corrected text + every suggestion with codes):
python3 proofread.py check --text "…" --json
| Flag | Meaning |
|---|---|
--level full|spelling | correction level (default full) |
--engine auto|local|api | engine (default auto → local if installed, else api) |
--polish | add the Gemini native-fluency sandwich (needs GEMINI_API_KEY) |
--model <id> | Gemini model for --polish (default $GEMINI_MODEL or gemini-3-flash-preview) |
--json | full JSON report on stdout (corrected text + suggestions[] + polish_changes[]) |
--quiet | suppress the stderr summary line |
--out <file> | write corrected text to a file (proofread) |
reynir_correct.check_errors(..., format="text") at the
chosen level for clean, properly detokenized prose, and
check_with_stats() to list every annotation (code, original, suggestion).https://yfirlestur.is/correct.api. Spelling comes
from the response's corrected field; grammar fixes are grafted on by lifting
each annotated span out of original and string-replacing it — applied only
when the span occurs exactly once, so a misaligned offset can never corrupt
output.--polish runs, per paragraph: engine-correct → gemini_polish_paragraph
(JSON-mode, temp 0.1, "preserve meaning/length/terms") → engine-correct again.
Gemini failures fail safe (paragraph kept as-is, error recorded in
polish_changes[]); the document is never corrupted by a bad model response.--polish, the corrected text is exactly what GreynirCorrect
produced — never invent or "improve" corrections by hand.--polish is the right call when the goal is native-quality client-facing
copy (it removes translationese). For raw/verbatim text or when the author's
exact voice must be preserved, leave it off — Gemini will smooth phrasing.--level spelling and show the suggestion list rather than auto-applying
grammar.Engine and public API by Miðeind ehf. — GreynirCorrect (MIT) and yfirlestur.is. This skill is an independent open-source wrapper.
@author Magnús Smári | smarason.is · MIT License
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub magnussmari/icelandic-proofread