name: kana-ascii description: Render hiragana, katakana, and kanji as ASCII art in the terminal. Backed by the kana-ascii npm package — use the CLI for raw output, this skill for guided learning with stroke order and mnemonics. metadata: author: mager version: "2.0.0"
Kana ASCII
A skill + npm package combo for learning Japanese characters in the terminal.
The package renders any kana as a dot-grid ASCII drawing. This skill layers teaching on top — stroke order, mnemonics, drills, and context.
The Package
# One-off (no install)
npx kana-ascii あ
npx kana-ascii aiueo # renders あいうえお in sequence
npx kana-ascii AIUEO # katakana mode
npx kana-ascii konnichiwa # converts romaji → kana, shows coverage
# Install globally
npm install -g kana-ascii
kana-ascii --list
kana-ascii --all
Romaji input convention: lowercase → hiragana, UPPERCASE → katakana
Powered by hepburn for romaji conversion.
Programmatic API
import { render, lookup, renderWord, renderAll, list } from "kana-ascii";
render("あ") // → formatted string (grid + strokes + mnemonic)
render("a") // → same (romaji lookup)
renderWord("aiueo") // → array of RenderResult for each kana
lookup("a") // → raw KanaChar data
renderAll() // → all supported characters
list() // → [{ char, romaji, type }, ...]
How This Skill Works
When a learner asks about a character — or any new character is introduced in a lesson — do this:
Show the CLI command they can run themselves:
npx kana-ascii [char or romaji]Draw the character using the dot-grid system (see below) — Claude renders it inline so the learner sees it immediately without leaving the session
Teach the strokes with
[1][2]labels and stroke type descriptionsGive the mnemonic — vivid, weird, sticky
Drill it — ask the learner to describe what they see before moving on
Dot-Grid Drawing System
Draw every character on a 13 wide × 9 tall dot canvas:
. . . . . . . . . . . . . ← 13 dots wide
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . ← 9 rows tall
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
Stroke characters (pure ASCII, guaranteed monospace):
- horizontal stroke
| vertical stroke
/ diagonal (bottom-left to top-right)
\ diagonal (top-left to bottom-right)
( left curve
) right curve
~ hook / flick
^ small arch
* dot / emphasis point
+ crossing point
Label strokes inline: [1] [2] [3] — never ①② (breaks monospace in many terminals).
Character Reference
Hiragana Vowels
あ (a) — ah as in father
. . . . . . . . . . . . .
. . - - - [1] - - - . . .
. . . . | . . | . . . . .
. . . . | [2] | . . . . .
. . . . - - - - . . . . .
. . . . . | . . . . . . .
. . . . ( . ) [3] . . . .
. . . . . . \ . . . . . .
. . . . . . ~[4] . . . . .
[1] horizontal bar · [2] box enclosure · [3] drop + loop · [4] hook sweep
Mnemonic: Someone tied the letter 'a' into a knot. It IS an 'a' in there.
い (i) — ee as in see
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . ( . . . ( . . . . . .
. . | . . . | . . . . . .
. . | [1] . | [2] . . . .
. . | . . . | . . . . . .
. . ) . . . ) . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
[1] left stroke (taller) · [2] right stroke (shorter, same hook)
Mnemonic: Two eels side by side. 'ee' in eel → 'i'.
う (u) — oo as in food (lips flat)
. . . . . . . . . . . . .
. . . . . ^ . . . . . . .
. . . . . [1] . . . . . .
. . . . ( . . ) . . . . .
. . . . | . [2] | . . . .
. . . . | . . . | . . . .
. . . . ( . . . ~ . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
[1] small arch at top · [2] open oval with hook
Mnemonic: Little hat looking up. 'u' = up.
え (e) — eh as in get
. . . . . . . . . . . . .
. . - - - [1] - - - . . .
. . . . . | . . . . . . .
. . . . . | [2] . . . . .
. . . . . | . . . . . . .
. . . ( _ | [3] . . . . .
. . . \ . . . . . . . . .
. . . .\ . . . . . . . . .
. . . . ~ . . . . . . . .
[1] horizontal cross · [2] vertical drop · [3] left sweep under and out
Mnemonic: Person bowing arms wide — elegant.
お (o) — oh as in go
. . . . . . . . . . . . .
. . - - - [1] - - - . . .
. . ( . . . . . ) . . . .
. . | . . [2] . | . . . .
. . | . . . . . | . . . .
. . | . . * [3] | . . . .
. . ( . . . . . ~ . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
[1] horizontal bar · [2] box enclosure · [3] center dot + swirl hook
Mnemonic: A dot orbiting inside a box. 'o' = orbit.
Katakana Vowels
ア (A) — ah as in father
. . . . . . . . . . . . .
. . - - - [1] - - . . . .
. . . . . . . . . . . . .
. . . . . / . \ . . . . .
. . . . . /[2] \ . . . . .
. . . . . . . . \ . . . .
. . . . . . . . |[3] . . .
. . . . . . . . | . . . .
. . . . . . . . . . . . .
[1] top bar · [2] diagonal left · [3] vertical drop right
Mnemonic: A roof with a nail through it. Like the letter A.
イ (I) — ee as in see
. . . . . . . . . . . . .
. . . \ . . . . . . . . .
. . . .\[1] . . . . . . .
. . . . \ . . . . . . . .
. . . . .\ . . . . . . . .
. . . . . |[2] . . . . . .
. . . . . | . . . . . . .
. . . . . ~ . . . . . . .
. . . . . . . . . . . . .
[1] diagonal slash · [2] vertical hook
Mnemonic: A leaning post with a hook. Tired 'I' falling forward.
ウ (U) — oo as in food
. . . . . . . . . . . . .
. . . . . * [1] . . . . .
. . . . . . . . . . . . .
. . . . - - [2] - - . . .
. . . . ( . . . ) . . . .
. . . . | . [3] | . . . .
. . . . ( . . . ~ . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
[1] crown jewel dot · [2] horizontal bar · [3] open oval hooks right
Mnemonic: A crown with a jewel. Royal 'u'.
エ (E) — eh as in get
. . . . . . . . . . . . .
. . - - - [1] - - . . . .
. . . . . . . . . . . . .
. . . . . |[2] . . . . . .
. . . . . | . . . . . . .
. . . . . | . . . . . . .
. . - - - [3] - - . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
[1] top bar · [2] center post · [3] bottom bar (longer)
Mnemonic: An I-beam from construction. Engineering.
オ (O) — oh as in go
. . . . . . . . . . . . .
. . - - - [1] - - . . . .
. . . . . | . . . . . . .
. . . . . |[2] . . . . . .
. . . . . | . . . . . . .
. . . . . + - - [3] . . .
. . . . . . . . \ . . . .
. . . . . . . . ~ . . . .
. . . . . . . . . . . . .
[1] top bar · [2] vertical post · [3] right arm swings down and hooks
Mnemonic: A cross where one arm breaks off and swings. Open swing.
Session Flow
- Learner asks about a character (or lesson introduces one)
- Show:
npx kana-ascii [char]— so they can run it themselves - Draw the dot-grid inline
- Walk through strokes
[1][2]with names and directions - Give the mnemonic
- Ask: "What do you see in this shape?" — let them encode it
- Drill: "Trace it in the air. What strokes, in order?"
- Move on only when they can describe it cold
Trigger Phrases
draw [char]/show me [char]/what does [char] look likekana asciiorascii modenpx kana-ascii— user is already using the package- Any new character introduced during a lesson
Coverage
v0.1.0 of the npm package covers hiragana + katakana vowel rows (10 characters).
More added weekly. Run npx kana-ascii --list to see current coverage.
Links
- npm: npmjs.com/package/kana-ascii
- GitHub: github.com/mager/kana-ascii
- Pairs with:
mager/beginner-japanese