Add Hebrew vowel points (nikkud) to unvocalized Hebrew text — vocalisation / niqqud restoration. Use when the user pastes consonantal Hebrew and asks to "add nikud", "vocalise", "add vowels", "nakdan", or wants to turn ktiv male / modern Hebrew into pointed text. Two backends — Dicta's nakdan (default, online, high quality) and the local `unikud` Python package (offline fallback).
npx claudepluginhub danielrosehill/claude-code-plugins --plugin jewish-texts-referenceThis skill uses the workspace's default tool permissions.
The reverse of `strip-nikkud`. Vocalisation requires a real model — a regex can't do this — so we call out to one of two trained models.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
The reverse of strip-nikkud. Vocalisation requires a real model — a regex can't do this — so we call out to one of two trained models.
| Backend | When | Tradeoffs |
|---|---|---|
| Dicta nakdan (default) | Always available; user has internet; user wants best quality | Online; depends on Dicta's free public API; supports modern + rabbinic + poetry genres |
unikud (Python, morrisalp/unikud) | User explicitly wants offline, on-device, or air-gapped | First run downloads a CANINE model (~500 MB); modern Hebrew only; lower accuracy than Dicta |
Default to Dicta unless the user says "offline", "local", "no network", or has clearly asked for unikud.
Public JSON API behind nakdanpro.dicta.org.il. No key.
curl -sS -X POST https://nakdan-2-0.loadbalancer.dicta.org.il/api \
-H 'Content-Type: application/json' \
-d '{
"task": "nakdan",
"data": "<UNVOCALIZED HEBREW>",
"genre": "modern",
"addmorph": false,
"keepqq": false,
"nodageshdefmem": false,
"patachma": false,
"keepmetagim": true
}'
The response is a JSON array, one element per token (word or separator):
[
{"word": "שלום", "sep": false, "options": ["שָׁלוֹם", "שְׁלוֹם", "שִׁלּוּם", ...], "fconfident": true},
{"word": " ", "sep": true, "options": []},
...
]
Reconstruction rule: for each element,
sep == true, append word verbatimsep == false, append options[0] (the highest-ranked vocalisation)Concatenate to get the vocalised string.
modern — modern Hebrew (default)rabbinic — Talmudic / halakhic / responsa textpoetry — piyut, biblical poetry styleIf the user names a genre, use it. If the source is recognisably Talmudic or halakhic (Aramaic words, sugya structure), prefer rabbinic. For Tanakh, poetry often outperforms modern for prophetic books.
keepmetagim: true — preserve meteg / ga'ya marks already presentkeepqq: true — keep existing qamats qatan distinctionsaddmorph: true — also return per-word morphological analysis (rarely needed; bigger response)unikud (offline)pip install unikud
from unikud.framework import Unikud
u = Unikud() # downloads model on first call; cached locally
print(u.vocalize("שלום עולם"))
First run will pull the model from Hugging Face (~500 MB) and cache it under ~/.cache/huggingface/. Subsequent runs are offline and fast.
If pip install fails or the model download fails, fall back to Path A and tell the user why.
Detect input. If the input already contains nikkud (any code point in U+05B0–U+05C7 excluding punctuation), confirm with the user before re-vocalising — they may have meant strip-nikkud first, or they may want to refresh the existing pointing.
Choose backend. Default Path A. Switch to Path B only on explicit offline request.
Pick genre (Path A only) based on the text or the user's hint.
Call the API / library. For long text, chunk into paragraphs and concatenate — Dicta handles a few KB per request comfortably.
Render. Return the vocalised text in a fenced code block. If the user wants to see alternative vocalisations for ambiguous words (Path A only), expose options[1:] for the words where fconfident is false.
fconfident: false) when the user is using the output for something high-stakes.unikud (or report failure) if it 404s or schema changes.add-nikkud on text fetched from Sefaria — Sefaria text is already vocalised by traditional sources (Masoretic for Tanakh, etc.) and re-vocalising would be both wasteful and likely worse than the source.