Kata is in development. The compiler ships first.

Your AI has never seen your app.

So it writes code that looks like everyone else's. Kata is a command line tool that reads your codebase once, teaches your AI tools how your product actually looks, and comments on your pull requests when something drifts away from it.

Join the waitlist See what you get

Free and open source. Nothing leaves your machine.

Installs into

Claude CodeCursorGitHub Copilot WindsurfZedv0Codex

The problem

Every AI builds the same website.

Not badly. Just identically. A model that has never seen your product reaches for the average of everything it was trained on, and the average has a look. You know it the moment you see it, because you are the one who rewrites it afterwards.

01

The sparkle

A four-point star on anything intelligent. It has become the universal badge for "a machine made this".

02

Fake browser chrome

Three traffic-light dots around a demo that is not in a browser. Nobody asked for a window and there isn't one.

03

Emoji as iconography

Typed, not drawn. They break at every size, sit differently on every platform, and belong to no brand.

04

The indigo gradient

Indigo into violet, on the badge and the button and the hero. A default that four hundred thousand landing pages share.

05

Headlines that break anywhere

Lines filled greedily until one word is stranded. It reads as careless because it is.

06

Values that should be tokens

A hex code typed inline because the model did not know you had a variable for it. Your system quietly rots.

What you get

Three things land in your repo.

Kata is not advice and it is not a style guide you have to maintain. It produces files, and you can read every one of them.

One

Your language, written down

A single file describing how your product actually looks. Colour named for the job it does, your layout rules, which component is for which purpose, and the things you never do.

// .kata/app.kata.json
"accent": "#D4652E",
"rule": "Buttons change colour
   on hover, never move.",
"neverUse": ["emoji icons"]

Two

Rules in every tool you use

The same file rendered into whatever each tool reads, plus an MCP server for long sessions. You write the language once rather than maintaining four copies that slowly disagree.

$ npx kata connect
✓ CLAUDE.md
✓ .cursorrules
✓ AGENTS.md
✓ MCP server registered

Three

Comments when it drifts

Teaching a tool is one time. Drift is forever. Kata reads each pull request against the same file and says what moved, in your language rather than generic lint rules.

PR #482 · 3 findings
 Hardcoded #FEFEFC
  → use var(--card)
 Chip used for a list
  → use wordmarkRow

The difference

Same prompt. Same model. One of them knows you.

Both panels answer "add a pricing card". The only variable is whether the tool had a Kata file loaded. The card on the right is built from the same one that renders this page, so the thing it matches is the page you are reading.

Cursor, todaynot your app
✨ MOST POPULAR
Pro Plan
$29/mo
  • ✅ Unlimited projects
  • ✅ Priority support
  • 🚀 Advanced analytics

Kata review · 5 findings

Sparkle icon used twice. Not in your icon set.
Window chrome around a card. There is no window.
Emoji used as iconography. Your set has check and arrow-up.
Hardcoded #6366f1. No token matches. Your accent is --shu.
Inter loaded. Your display face is Instrument Serif.
Cursor, with your Katayour app
Most chosen
Studio
$29 per month
  • Projects without a limit
  • Support that answers first
  • Analytics with the detail

Kata review · clean

Every value is a token. No inline colour, no off-scale spacing.
Icons came from your set. Drawn, and they inherit colour.
Type follows your pairing. Display serif, sans for reading.
Copy matches your voice. Full sentences, no exclamation marks.

The obvious question

"I already have a design system."

You probably do, and it probably is not the part that helps here. Tokens are the solved problem. Every tool on earth exports colour. The part an AI actually needs is the part nobody writes down.

What your system already exports Tailwind config, Figma variables, CSS custom properties
  • Your colours
  • Your type scale
  • Your spacing units
  • Your radii and shadows
A model given only this will still produce something that is not your product. It has the paint and none of the drawing.
What only exists in your head The reasons your work looks like your work
  • How your layouts relate. That a heading above a list shares the list's columns, and what happens when the window narrows.
  • Which component is for which job. That a chip carries status, and a row of names is something else entirely.
  • What you refuse to do. No fake window chrome, no emoji as icons, no gradient on display type.
  • Which surface you are on. That the docs theme and the marketing palette disagree on purpose.
This is what Kata reads out of your codebase, and it is the whole reason the output looks like you rather than merely tidy.

How it works · one

Point it at what you already have.

Nobody writes a design system from a blank file. Yours is already in production, spread across a stylesheet, a component folder and somebody's memory. Kata reads it out.

$ kata compile https://v5-x.leafphp.dev
8 measured 6 inferred 4 guessed 11 open
Run the compile to read this system.

This is the one step that needs a model. Kata calls whichever one you already pay for, reading a key from your environment and never storing it. Anthropic, OpenAI, Google, or a local model through an OpenAI-compatible endpoint.

Everything after this is cheaper. Generating rules files is a pure transform with no model at all, and most review checks are deterministic. There is no account to create and no upload step, because the compiler is a CLI that runs where your code already lives. A design language in progress is one of the few things a company genuinely cannot post to a stranger's server.

How it works · two

One file. Every tool.

Rules files are the same content in four dialects. Writing them by hand is how they drift apart. Kata renders them, so they cannot.

CLAUDE.mdgenerated, do not edit

        

Claude Code and Claude Desktop

How it works · three

Rules do not enforce themselves. Something has to check.

ESLint knows your code style and Prettier knows your formatting. Neither has any idea that your buttons are pills or that your headlines break at the sentence. Kata reads each pull request against your file and says what moved.

PR #482 · feat: pricing page kata review · 5 findings, 1 blocking

Select a finding to see the rule it came from.

The part nobody else does

It tells you what it does not know.

A compiler that quietly guesses is worse than one that admits a gap, because a guess in token shape survives review. Open questions ship into the rules file, so the model asks instead of inventing.

The registry

Browse a system. Then apply it.

A compiled language is a file, so it can be published, read and installed the way a package can. Open one to see the whole system, then take it with one command.

Applying a system is one command.

It writes the rules files, registers the MCP server, and leaves the compiled file in your repo so you can read and edit it. Nothing about your own code is uploaded to run it.

your repoone command
$ pnpx kata apply ./alewa.kata.json
✓ .kata/alewa.kata.json
✓ CLAUDE.md, .cursorrules, AGENTS.md
✓ MCP server registered

Built with

Kata runs on Hanabira.

This site, the compiler dashboard and the review UI are all one Hanabira app. If it feels quick, that is the point of showing you rather than telling you.

Hanabira is a React framework for people who wanted Next.js to be smaller. File-based routing, server rendering and data loading, without the parts you were never going to use. If you have been looking at TanStack Start and wishing it were lighter, it is worth ten minutes.

0config files to start a project
1dependency in the core runtime
~12kbclient runtime, gzipped

Open source

Free where it matters.

Kata is part of the Leaf ecosystem, which has been open source since the first commit. The compiler is yours, forever, for anything, and it runs on your machine rather than ours. The team review service is the part that keeps the lights on.

Kata

Free · MIT
  • Compile any repo, site or Figma file
  • Rules files and MCP server for every tool
  • Review locally and in your own CI
  • Public registry of compiled systems

Kata for teams

Later · when it earns it
  • Hosted reviews across every repo
  • Drift tracking as your system changes
  • One language shared across many teams
  • Private systems, SSO, audit history

Your AI already writes your code. Show it your app.

Kata is being built in the open and is not finished. The compiler ships first, then the review. Leave an address and you will hear from us when there is something real to run.

No product yet. No spam either. KATA by Leaf.