genjutsu

Overview

What genjutsu is, how its pieces fit together, where it runs, and the shortest path from installing it to seeing something move.

All documentation

genjutsu is a skill: a body of instructions an agent loads and follows. It is not a library you import, not a component kit, and not a code generator with templates. Nothing from genjutsu ships in your bundle. What lands in your project is ordinary code written in the idiom your project already uses.

Its subject is the part of interface work models are worst at: motion, holding a direction long enough to produce something you remember, and noticing the defaults they reach for when nobody asked.

The shape of it

Three pipelines are the entry points, at three scales. Seventeen modules sit behind them and load only when they apply.

Piece What it is
cast Gives an existing interface motion. Scans, states a thesis, implements, audits the code against the thesis.
paint Builds a visual universe from nothing. Brainstorm, two theses, a design system, implementation, the full audit.
bunshin Builds a whole website or web app with a team of subagents under one art director. Two human gates, the cost announced first, refine rounds looped until only minor issues remain, the tier’s round cap is reached, or a round fixes nothing.
Seventeen modules Focused references on motion foundations, per-stack APIs, platform UX, the tells and auditing. Loaded on demand, never invoked directly.

The split matters. cast adapts to what you already have. paint decides what should exist and writes a design system into your repository, so the direction survives past the session that created it. bunshin is for the one job both are too small for: a whole site, first version, where one agent keeps the direction and a team of clones carries the width. It costs millions of tokens, says so before anything runs, and needs a host that can spawn subagents.

How you call them depends on how you installed. The Claude Code plugin gives you /genjutsu:cast, /genjutsu:paint and /genjutsu:bunshin. The npx install and the claude.ai upload give you one skill, /genjutsu, which reads your request and picks cast or paint. It picks bunshin only when you name it, or when you say yes to cast or paint proposing it for a whole-site brief.

Where it runs

  • Claude Code, from one npx command or as a plugin.
  • claude.ai on the web and in the apps, as an uploaded skill.
  • Cowork, as a plugin, from its plugin panel.
  • Other agents such as Codex or Cursor, from the same npx command. It runs there, but it is not tested there by the maintainer and it is not supported.

cast and paint run wherever the skill does. bunshin needs one more thing from the host, a tool that spawns subagents, and checks for it before anything else: where there is none, it says so and hands over to paint. Claude Code is the one host the genjutsu repository has checked it on; claude.ai and Cowork have not been tested.

And three runtimes underneath: web, Apple (SwiftUI on iOS and macOS), and Android (Jetpack Compose, including Compose Multiplatform). Which one you get is detected from your project, not asked. bunshin covers the web only, for now.

The shortest path

  1. Install it. One npx command in any terminal, two slash commands in Claude Code, or one zip upload on claude.ai.
  2. Open a project with an interface in it.
  3. Ask for something concrete. “Make the hero feel alive on scroll” is enough to start. Before its first question, genjutsu tells you what it thinks the project is, so a wrong read costs one correction.
  4. Read the thesis it proposes. That single sentence is your decision point, and it exists so you never discover the direction after the code is written.
  5. Say yes, or say what feels wrong. Rejecting a thesis costs a sentence. Rejecting an implementation costs an afternoon.

What it refuses to do

Worth knowing up front, because these are deliberate and they are not configurable away.

  • It will not write code before a thesis is validated.
  • It will not hand you a house style. Tells are named against your thesis and come back as questions, never as a look to copy.
  • It will not install a dependency without asking.
  • It will not replace an animation library you already chose.
  • It will not skip the audit, including when the work looks finished and everybody is happy, and it will not tick a check it could not run.
  • It will not start the heaviest pipeline on a guess. bunshin is proposed, priced, and run only on a yes.

The reasoning behind each of those is in Principles.