GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing kata.leafphp.dev โ Kata: make AI write code that looks like your app 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. The same drift runs through the copy and the code, and you rewrite those too. 01
The sparklespecimenA four-point star on anything intelligent. It has become the universal badge for "a machine made this". โจ AI-powered insights
// the badge nobody's brand includes 02
Fake browser chromespecimenThree traffic-light dots around a demo that is not in a browser. Nobody asked for a window and there isn't one. a pricing card, for some reason // it is not a window 03
Emoji as iconographyspecimenTyped, not drawn. They break at every size, sit differently on every platform, and belong to no brand. ๐ Fast ๐ Secure โก Simple // your icon set has none of these 04
The indigo gradientspecimenIndigo into violet, on the badge and the button and the hero. A default that four hundred thousand landing pages share. Get Started
// #6366f1 โ #8b5cf6, the people's gradient 05
Headlines that break anywherespecimenLines filled greedily until one word is stranded. It reads as careless because it is. Build products your users will absolutely love // "love", alone on line two 06
Values that should be tokensspecimenA hex code typed inline because the model did not know you had a variable for it. Your system quietly rots. color: #c1492d; /* --shu exists for this */// correct colour, orphaned value 07
Prose with a fingerprintspecimenA dash in every sentence and claims shaped like "not just X". Readers recognize the cadence before they finish the paragraph. "It isn't just fast โ it's a whole new way to build." // two tells, one sentence. try it in the checker above 08
Code that ignores house stylespecimenPascalCase pages in a kebab-case app. A hand-rolled fetch when your framework ships one. Correct, compiling, and visibly not yours. inertia('OrderHistory') // yours are kebab-case// runs fine. still wrong here 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 you can read, and it wires them into Alchemy, the same one-file QA setup that already runs your tests and lint. One Your language, written downA 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 useThe 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 driftsTeaching 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. Alchemy runs the check like it runs your tests, so every pipeline it generates already enforces taste. $ npx kata review // alchemy runs this in CI 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
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
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
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
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
// scroll on, or press Run compile. Kata reads the source the way a reviewer would.
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 DesktopHow 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. How it runs ยท Powered by Alchemy Taste, checked like tests.Kata compiles your language. Alchemy enforces it. The rules live in alchemy.yml, the one QA file your tests and lint already share, and they run wherever Alchemy runs: every commit, every pull request, every pipeline it generates. There is no new config file in your repo root. And outside PHP, kata runs standalone: same rules, your own CI.
In the file you already have
alchemy.yml, next to your tests and lint
# alchemy.yml
kata:
voice:
paths: ["blog/**", "*.html"]
deny:
- pattern: "\u2014"
max: 2
reason: "dash cadence reads machine-made"
code:
deny:
- pattern: "inertia\\('[A-Z]"
reason: "pages are kebab-case here"
Alchemy stays tasteless on purpose. The taste in that block is yours, compiled by Kata, and Alchemy runs it the way it runs pest and pint. The old sidecar config is gone: what you author lives here, and what Kata compiles lands as a generated artifact.
The first kata ran on us
A true story from r/PHP
Voice was the first axis because it found us first. Layout, components and code idiom compile the same way: rules read from your real work, enforced where the work happens.
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.
paper
ink
needs you
reason
AlewacompiledA commercial product's system, where colour is named for the job it does rather than its hue. Tokens, components, an icon set, a voice, and a product promise that no surface sends without a person.
27 roles ยท 8 refusals ยท 2 open
Browse the system
accent
ink
page
muted
LeafcompiledA PHP framework's system, read out of the code that renders the landing page. It started as a scrape of the live site and closed eleven of its fifteen questions once a person answered them.
29 roles ยท 6 refusals ยท 4 open
Browse the system
accent
ink
muted
bright
HanabiracompiledA React framework's system, dark only, with no light theme anywhere. The compile found its text hierarchy inverted, where the secondary colour is brighter than the primary one.
18 roles ยท 5 refusals ยท 6 open
Browse the system
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
$ npx 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. KataFree ยท MIT
Kata for teamsLater ยท when it earns it
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. You're on the list. We'll write when there's something real to run. No product yet. No spam either. KATA by Leaf. |
| You are visitor 01402503 โ GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800ร600. No cookies required. |