Raea Bevy 3D
Build 3D scenes and games using TypeScript with Bevy rendering.
Installation
- Make sure Claude is on your device and in your terminal.
Skills load from
~/.claude/skills/when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then runclaudein any terminal to verify.One-time setupnpm i -g @anthropic-ai/claude-codeAlready have it? Skip ahead.
- Paste into Claude Code or into your terminal.
This copies the whole skill folder into
~/.claude/skills/raea-bevy-shinyobjectz/— the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.Faster alternative (instruction-only skills)
Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.
Quick install (SKILL.md only)Sign up to copy - Restart Claude Code.
Quit and reopen Claude Code (or any other agent that loads from
~/.claude/skills/). New skills are picked up on startup. - Just ask Claude.
Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.
Prefer to read the source first? Open on GitHub.
When Claude uses it
Writing 3D scenes and 3D games in raea's TypeScript SDK (raea/3d), which Bevy 0.20 draws, and extending that SDK. Use when writing or fixing TSX with Camera3d, Mesh3d, lights, StandardMaterial and other materials, Model (glTF), ImagePlane, Bloom/Fog/ToneMapping or an ECS world drawn with Entities; when a 3D render or play looks wrong; or when adding a Bevy feature to the SDK (the TSX component, its raea-render rows, the engine system).
What this skill does
raea-bevy: Bevy through raea/3d
Agents write TSX; raea compiles each frame's 3D elements to raea-render rows and its engine draws them with Bevy 0.20. You never write Rust or shaders to make a scene, and you never use Bevy's API directly from TSX. A render and a live play draw the same rows with the same code, so they match whenever every value comes from the frame.
This is the same library the feed's agent reads with raea guide bevy/NAME (sdk/guides/craft/bevy.md routes it);
the topic files here link to those, except rows.md and plugins.md, which only this skill has.
Which file to open
| You are... | Open |
|---|---|
| setting up the camera, camera moves, entities, 2D under and over 3D | scene.md |
| lighting: sun, bulbs, spots, ambient, shadows, brightness | lights.md |
surfaces: colour, metal, glass, glow, clearcoat, picture maps, toon (cel) shading and ink outlines (ToonMaterial), wear (WearExtension), decals (Decal), a model's materials re-covered (a material inside its Model) | materials.md |
a whole scene to build and make believable: brief, routing (which tool makes which object: solid, field, generator, Tripo HD or Smart Mesh, stock), build order, review sheets (raea render --review), the judge, stall rules | scenes.md |
| the words to paste for a whole scene: the brief template, the builder prompt, the fresh-context judge prompt | prompts.md |
shapes: primitives, Manifold solids, blended organic bodies (sdf), trees, terrain, rocks, plants, lofts (grow), Text3D | meshes.md |
people: Anny bodies posed by goals (a hand on a point, feet, gaze, a seat), motion capture clips, motion matching along routes round the furniture (Character, perform) | characters.md |
interiors: rooms, runs of units, windows and bays, seats turned to tables (faceToward), layout checks, wall decor (hang), the garden outside, daylight, 3D sound (Sound3D) | rooms.md |
| motion: spins, springs, Sequences, model clips | animation.md |
| a 3D game: state, input, entities, collisions, state machines | games.md |
a game's sound: one-shots on transitions (<Tone.Sfx>), buses, a bed ducked under a voice (Tone.js on raea) | games.md (Sound), then raea guide motion/music |
| glTF models, pictures in space, media files | assets.md |
a check names a Blender script (fix: raea blender run blender/X.py): convert, decimate, repair, split, bake, rig, cloth; one saved script per asset step, never the scene | blender.md |
gaussian splats: a real scene or object trained from footage (raea splat train), <Splat> and its reveal, assemble, disperse, explode, wave, twist, morph, pulse | splats.md |
liquids and goo: coffee dumped from a mug, a tap's stream, honey, things melting (<Goo>, sph or mpm, baked) | liquids.md |
bloom, fog, tone mapping, exposure, fisheye and lens distortion, motion blur, fire (<Fire>), frame looks (pixel, ink, painted illustration <Look mode="paint">, cartoon <Look mode="cartoon">) | post.md |
| budgets, render-equals-play rules, what isn't there yet | limits.md |
| adding a Bevy feature to the SDK, or debugging the rows | rows.md |
using a Bevy plugin (physics, networking, particles, any crate): declaring it, its generated TypeScript, calling it from a program (BevyApp), BRP as a dev tool | plugins.md |
The rules that keep a render equal to its play
- Every value from the frame (
useCurrentFrame(),interpolate,spring, a game's state at the frame). NouseState,useEffect, refs oruseFrame;Math.random()draws new numbers every frame (seed what holds still). - Rotation in radians (
Quat.fromEuler, afov); Manifold's.rotate()in degrees. - Colours are hex strings (CSS variables don't reach the 3D).
- Name parts that come and go (
<Mesh3d name="...">); parts are matched by name, else kind and shape in tree order. - A part's shape is fixed; animate its
transform, colour, opacity, emissive, roughness, metallic. - One camera (the first), one set of effects (the first frame's; the lens and MotionBlur animate per frame).
- Import each component from its Bevy-named module (
raea/mesh,raea/pbr,raea/light,raea/camera,raea/transform) orraea/prelude;Entity,Model(andCanvas3Dforlayered) fromraea/3d; hooks,Sequence,staticFilefromraea. - Render and look:
raea render EDIT.tsx --frame N -o F.png.
The modules, in the order a frame is made
raea's modules are named as Bevy's crates are (raea/camera is bevy_camera's names), so a name is where a Bevy
developer would look. Read them in the pipeline's order; the order is for reading, not a set of import paths:
| stage | what happens | modules |
|---|---|---|
| sources | images, video frames, audio, generated content | raea/asset, raea/image, raea/video, raea/audio |
| evaluate | state for a time or a simulation step | raea/time, raea/state, raea/app (systems), raea/animation, raea/math, physics |
| compose | content, layers, cameras, effects combined | raea/transform, raea/ui, raea/sprite, raea/mesh, raea/pbr, raea/light, raea/camera |
| render | pixels or render targets (the engine draws; nothing chooses CPU or GPU) | raea/post_process |
| output | presentation, capture, encoding | raea/app's window, the export's settings |
A camera or a material belongs to more than one stage, which is why the stages aren't packages. An import is one of
two kinds: raea/prelude for everything, or one Bevy-named module when a file wants one subject.
Checks in the raea repo
sdk/raea/bench/bevy/check.sh [EDIT.tsx]: render against baked play with 3D (SSIM >= 0.999) on the fixtures.sdk/raea/bench/bevy/skills.sh: every example in this library renders.sdk/raea/docs/bevy-coverage.md: the full coverage matrix and the proposed API for what's missing.
Related skills
Cinema Director
SamurAIGPT
Generate cinematic video directives for AI video models using creative intent.
Blender Control
raphaelmansuy
Create and modify 3D objects, materials, and animations in Blender.
Godot 3D Lighting
thedivergentai
Master realistic 3D lighting, shadows, and global illumination in Godot.
Game Audio Design
gamedev-skills
Design game audio mixing, buses, adaptive music, and sound effects synchronization.