npm i -g claude-code-scenes
ccsThen /theme to pick one, or /theme create "a vibe" to design your own.
Three ship with it. Everything else you prompt for.
Phosphor-green terminal. One hue with discipline.
A cherry-blossom night. Sakura pink leads, honey pays the bills.
Snow past a lantern-lit yard. Icy blue leads, one warm ember.
Two ways in. If you already know the vibe, say it outright:
/theme create "cyberpunk thunderstorm"
If you would rather look first, open the picker and take the tile at the top — that is the flow in the demo above:
/theme → ✦ Create your own → describe it
Both land in the same place. One generation, then a loop. You get two views of the draft — the backdrop animating at full size, and a scripted session exercising about fifteen colour slots — and either accepts a change in plain language: "slower", "add drifting embers", "calmer warnings". Refinements return a delta, so anything you did not mention stays as it was, and you can undo. Nothing is written to disk until you keep it.
Animations need the alternate screen buffer, which is on by default. If you
prefer inline rendering, /tui off turns it off permanently — themes still
apply their colours, they just stop moving.
Theme files are meant to be shared, so nothing in one is ever executed.
Shader expressions go through a hand-written lexer and parser — no eval, no
Function constructor, no property access — under hard caps, with a fuzz test.
Details in docs/features/theme-scenes.md.
Installing runs nothing. No postinstall, no lifecycle scripts of any
kind, and no network beyond the registry itself. The ripgrep binaries the
search tools need travel inside the package — all six platforms — rather than
being fetched on your machine, so an install works offline, behind a firewall,
and under --ignore-scripts. It costs about 13 MB.
Needs Bun ≥ 1.3.11.
bun install
bun run vendor:ripgrep # fetch rg for this machine — the search tools need it
bun run hooks # pre-commit formatting, once per clone
bun run dev # run it
bun run precheck # typecheck + lint + test
bun run capture:scenes # regenerate the scene assets from the engineShort version: to your model provider, and nowhere else. This project runs no servers, has no account, and collects nothing for itself.
-
Your prompts, code and conversations go to whichever provider you have configured — Anthropic by default, or OpenAI, Gemini, Grok, Bedrock or Vertex if you set one up. That traffic is between you and them, under their terms. It is not proxied through anything belonging to this project, and no copy is kept anywhere.
-
Themes never leave your machine. They are ordinary JSON files on disk. Designing one sends your description — "winter vibe, snowfall" — to the same provider that answers your prompts, and nothing else.
-
Off until you turn them on: crash reporting (needs
SENTRY_DSN), web search, and artifact publishing (needs a host you choose). None has a default destination. -
Installing reaches nothing but the registry. There are no install scripts, so nothing runs on your machine and nothing is fetched from anywhere else — the ripgrep binaries the search tools need are already in the package.
-
No feature-flag calls. Upstream's client fetched configuration at every startup, carrying a device id and your account identifiers. It is off here unless you point it at a server of your own.
A fork of claude-code-best/claude-code — an independent reverse-engineered reproduction of Claude Code, not Anthropic's official distribution — that adds one thing: animations that paint behind your conversation, and a way to invent new ones by describing what you want. The animation lives entirely in the theme's JSON file, so no code ships for it. That is what lets a binary you installed from npm produce an animation nobody wrote into it.
Not affiliated with, endorsed by, or sponsored by Anthropic. "Claude", "Claude Code" and "Anthropic" belong to Anthropic PBC, and all rights in Claude Code and the Claude models are theirs. If you want the supported, official tool, use Anthropic's Claude Code.
The animated-theme work is what this fork adds; it is MIT-licensed under LICENSE-SCENES, scoped by explicit path list. There is deliberately no repository-wide licence — the reasoning is in NOTICE.md, which you should read before forking or redistributing.
Provided as-is, with no warranty.



