[CLI & Claude Code] wanikani-cli - terminal reviews against the official API; the model runs the quiz but never grades it

:warning: This is a third-party app and is not created by the WaniKani team. By using this, you understand that it can stop working at any time or be discontinued indefinitely.

I’ve been doing my reviews in a terminal for the last few weeks and finally cleaned it up enough to share.

wanikani-claude-cli-skill — a small Node CLI that does WaniKani reviews against the official API, plus an optional Claude Code skill that runs the same quiz conversationally.

Does an AI grade my answers?

No, and this is the part I’d want to know first too.

Grading is a lookup table in a file called grading.js: WaniKani’s own typo tolerance (one edit up to seven letters, two beyond), its romaji-to-kana conversion, its rule that answering another of a kanji’s readings re-prompts instead of counting against you. The model never sees the answer key — it runs two commands and prints what they say. It has nothing to be lenient with.

It’s also deliberately strict where the site is strict: shimbun is wrong for しんぶん here because it’s wrong there, and accepting it would build a habit the site punishes. Where it’s looser, it’s over things that cost you an item for punctuation alone — shinyuu for しんゆう, a capital letter, katakana words like ページ. All of it is written down in the repo.

What it looks like

1. 力
> power ryoku
✓

2. 上
> above shou
✗ reading is じょう (on'yomi) · jisho.org/search/上 #kanji

... ten items later ...
10 done, 8 perfect · 上 → Guru · 52 left

Mid-review you can type “why?” or “more” and get WaniKani’s actual mnemonic, the parts the item is built from, and its other readings — without leaving the flow. Also “drill my recent mistakes” and “critical items” (WaniKani’s own critical-condition list, live), neither of which is due and neither of which submits anything.

What it does to your account

  • Reviews are real — same SRS, same wrong-answer counts, submitted through POST /reviews. There’s no dry-run mode.
  • The API token needs reviews:create and nothing else. No assignments:start, no study_materials, no user:update.
  • Your token is read from your environment or a local .env, goes only to api.wanikani.com, and is never printed. If you use the Claude half, your items and answers pass through the model as ordinary chat; the token doesn’t.
  • Local state is a cache you can delete at any time.

Reviews only

There’s no lessons command. There was one, it was never used, and I removed it rather than leave an untested path that writes to your account. Lessons are on wanikani.com, where they’re taught properly.

What you need

Node 20.12+, an API token, and macOS / Linux / WSL. The terminal half (wanikani review) works on its own with no model involved at all. The conversational half needs Claude Code, which is a paid Anthropic thing — worth saying plainly so nobody installs it expecting otherwise.

Install

git clone https://github.com/pendelgeist/wanikani-claude-cli-skill.git
cd wanikani-claude-cli-skill
npm install
npm link                 # puts `wanikani` on your $PATH
wanikani summary         # checks your token works

Token from Settings → API Tokens, reviews:create ticked, either exported as WANIKANI_API_TOKEN or pasted into a .env in the repo. If you want the Claude Code half, symlink the skill and restart it:

ln -s "$PWD/.claude/skills/wanikani" ~/.claude/skills/wanikani

Happy to hear what breaks, and especially happy to hear if the grading ever disagrees with the website — that’s the one thing it isn’t allowed to do.

can you clarify what you mean by “the model never grades it”? you say that in the title but then the post says this app does actually return graded reviews to the server… by “model” you mean the claude half of, i guess? what is doing the grading, and what is the difference between “running” the review and grading it?

I mean that even though this is run through Claude-code that the grading is still done by wanikani; Claude has nothing to do with grading.