Karate kata is spatial. You turn, you step, you change facing, and the floor pattern (embusen) is half the work of remembering a form. Most of my notes after class were still paragraphs: technique names in order, with facing lost in the sentence if I remembered to write it down at all.

I wanted something I could read on a phone between sets, paste into a chat, or print without opening an app. That became Spatial Kata Notation (SKN): a plain-text tree for kata and bunkai. The site and generator live in an open repo here:

https://github.com/hasantayyar/spatial-kata-notation

Live docs and the tool: https://hasantayyar.github.io/spatial-kata-notation/

This is an early, working documentation site plus a generator for Karate teachers and students.

If you train, try writing one short section of a kata you know in SKN after class. If the facing line feels redundant, good: that means you already had it clear. If you keep correcting the facing line, the notation is doing its job.

A single move looks like this:

+-- [STEP → N] -------------- (Face: N)
|   ├─ Stance : [R] Z-D
|   ├─ Action : Right Age-uke (J)
|   └─ Key    : Rise under attack angle

Multi-beat transitions nest under one move:

+-- [MAWATTE → E] ----------- (Face: E)
|   ├─ Beat 1 : [R] Z-D
|   │   └─ Action : Right Gedan-barai (G)
|   ├─ Beat 2 : Pull back into [R] N-D
|   │   └─ Action : Right Tetsui Otoshi-uchi / Otoshi-uke (C)
|   └─ Note   : Distinct two-part transition

It is not a grading tool, a style authority, or a substitute for partner work in the dojo. Every sheet should name the school reading it follows (for example Shito-Ryu, or dojo-specific).

That sounds obvious. It is also the part most “systems” forget once they get a logo.

The kihon catalog is a practical vocabulary list with belt floors, not an official federation syllabus. Dojos differ. Again: sensei first.

Under the hood the useful bits are small TypeScript modules: an SKN parser for kata spines, a practice-plan generator, and the kihon catalog. No account system, no timer coach, no backend. Plain text in, plain text plan out, copy button.