# paprika3D > paprika3D is the toolset that makes any coding agent a better three.js developer: a Claude Code plugin and MCP server that lets the agent see, play, inspect, build and speed up the three.js, React Three Fiber and WebGL pages it writes. It opens the page in headless Chrome on a paused, seeded clock, lists what is on screen and what never appears, sends frame-exact input, reads the page state as JSON, measures frame time and checks a game contract after every edit. Install with `claude plugin marketplace add paprika3d/paprika3d` then `claude plugin install paprika3d@paprika3d`. Needs Google Chrome and Node 20.11 or later. The source is at https://github.com/paprika3d/paprika3d. The full text of every page is in https://paprika3d.com/docs/llms-full.txt. ## Start - [paprika3D: the toolset that makes your coding agent a better three.js developer](https://paprika3d.com/docs/): paprika3D is a Claude Code plugin and MCP server. Its tools open a three.js, React Three Fiber or WebGL page in headless Chrome on a paused clock, so the agent can look at it, drive it, read its state, measure frame time and check a game contract after every edit. - [Install paprika3D](https://paprika3d.com/docs/install): How to install paprika3D, the Claude Code plugin and MCP server that makes any coding agent a better three.js developer, and how to run its MCP server from Cursor, Codex or Gemini CLI. ## Reference - [Building and testing a three.js game with the harness](https://paprika3d.com/docs/skill): The threejs-game skill of the paprika3d plugin: the order of work for building a three.js game with the harness, the optional game contract, performance, procedural geometry and the window.__game convention. - [The window.__game convention](https://paprika3d.com/docs/convention): The window.__game convention a three.js game exposes so paprika3d can check its rules, and every field of the game-contract.json file that game_check runs. - [The paprika3d tools](https://paprika3d.com/docs/tools): Every MCP tool of the paprika3d plugin for three.js, with the description the server registers: game_open, game_look, game_act, game_observe, game_eval, game_clock, game_feel, game_perf, game_optimize, game_contract and game_check. - [Templates: plain three.js, React Three Fiber and Rapier](https://paprika3d.com/docs/templates): The three starting files of the paprika3d skill, each a small three.js game with a window.__game: a plain page with an import map, a React Three Fiber component under vite, and the bridge for a Rapier physics world. - [The game contract](https://paprika3d.com/docs/references/contract): The game-contract.json reference of the paprika3d skill: what game_check does with each keypoint of a three.js game, what each failure outcome means and the usual fix, and the rules for changing a contract. - [Procedural geometry: three.js plus geo.js](https://paprika3d.com/docs/references/geometry): Procedural geometry for three.js games with geo.js, the Manifold-based module paprika3d puts in the project: booleans, hull, extrude, revolve, level sets, seeded scatter, and how to check each mesh with game_eval. - [Performance: game_perf, game_optimize and the runtime layer](https://paprika3d.com/docs/references/optimize): How paprika3d measures a three.js page's performance with game_perf, which runtime switches game_optimize tries (resolution, defaults, instancing, LOD, dispose), when each is kept, and how to add the runtime import. ## Guides - [Guides](https://paprika3d.com/docs/guides): Task-by-task guides for building, testing and fixing three.js, React Three Fiber and WebGL pages with the paprika3d tools. Each guide is written by an agent, labeled so, and its code samples ran in the harness first. - [Screenshot a three.js scene headlessly from a coding agent](https://paprika3d.com/docs/guides/screenshot-threejs-scene-headless): How a coding agent takes a screenshot of a three.js or WebGL canvas in headless Chrome, gets the list of objects on screen with it, and pictures one object from four sides, using the paprika3d plugin's game_open and game_look. - [Test keyboard input in a three.js game, frame by frame](https://paprika3d.com/docs/guides/test-threejs-game-keyboard-input): How a coding agent presses keys in a three.js game on exact frames of a paused clock and reads the game's state back as JSON, so the same inputs give the same result on every run, using the paprika3d plugin's game_act and game_observe. - [Find out why a three.js model is not visible](https://paprika3d.com/docs/guides/threejs-model-not-visible): A three.js object that never shows up is usually at the wrong scale, behind the camera, or never loaded. How a coding agent finds which, with the paprika3d plugin's game_look, game_eval and game_open replies. ## Optional - [About](https://paprika3d.com/docs/about): Who maintains paprika3d, where its code lives, which pages an agent writes, and how to reach the maintainers about the three.js harness.