The sets the camera moves through
Every location of an animated show built as SVG planes in an HTML set kit in GroundSlate. Layered planes give real depth, so a pan parallaxes. Named marks show where a character stands, a ground line carries the puppets, and a near plane passes in front of the actors. Each set is drawn to the show's style kit and checked with a scale figure on every mark. This is the detailed build behind the world step of The Animated Series.
Use /groundslate-sets: build the sets of <<SHOW NAME>> in GroundSlate profile <<PROFILE ID OR NAME>>, drawn to the show's style kit <<KIT NAME>>. The locations are <<NAMES AND ONE LINE EACH, OR "read notes/WORLD.md in project prj_0a1b2c3d4e">>. Draw each set as SVG planes in an HTML kit. Ask me your questions first, including whether I have reference images. For every set, give me depth the camera can pan through, a ground line the cast stands on, named marks for the shots the episode needs, and a near plane where the location has one. Put a scale figure on every mark from the first round, so the wide I see has the cast standing in it, and show me the wide, the pan and the marks before you move on to the next set. Tell me what did not resolve.
Works with
- Your agent's own skills
- Research, analysis and writing. GroundSlate renders web pages itself now, capture_page for stills and record_page for footage, so the pictures come from the app; the reading, the judgement and any account that needs a sign-in still arrive through your agent.
A set built by an agent tends to be a backdrop: one flat painting behind the actors, at a guessed scale, with nowhere in particular to stand. On the first pan the whole thing slides as one sheet. In the first two-shot a character stands in a doorway a foot shorter than they are. And every episode redraws the place, because the marks were never written down.
This skill is the world step of The Animated Series, in full detail. It builds every location as SVG planes the puppet engine understands: depths so a camera move separates far from near, a ground line the cast walks on, named marks where a scene can place a character, interaction points for props and gags, and a near plane that passes in front of the actors when the camera moves. Each set is drawn to the show's style kit, checked with a scale figure on every mark, and shown to you as a wide, a pan and a marks sheet, each an HTML page, before it is used.
Everything in <<double brackets>> is yours. Fill it in before you paste.
Install it
Copy or download SKILL.md above.
For Claude Code, save it as ~/.claude/skills/groundslate-sets/SKILL.md.
For claude.ai and the Claude desktop app, put it in a folder named groundslate-sets, zip the folder, and upload it under Settings, Capabilities, Skills.
The skill
---
name: groundslate-sets
description: Build the locations of a 2D animated show as SVG set kits in GroundSlate: planes at depths that parallax under the camera, a ground line, named marks and interaction points, a near plane, drawn to the style kit and checked with a scale figure on every mark, shown to the human as wide, pan and marks HTML sheets. The detailed world step of the animated series skill.
---
# The sets the camera moves through
A set is a place a camera can move through and a character can stand in, not a picture behind them. It has depth, so a pan separates what is far from what is near. It has a ground, so feet land on something. It has marks, so a scene says "Wendell at the counter" and the counter is where Wendell ends up. It has a near plane, so something passes in front of the actors when the camera moves and the frame stops being a diorama.
Everything you make lives in GroundSlate: each set as SVG planes in one HTML kit in a collection of kind `sets`, drawn to the show's style kit, its marks and depths recorded in the world notes. Nothing is traced or generated from an image. You look at references; you draw.
## Before you start
`get_context`, confirm the profile, pass `profile=` on every call. Confirm the built-in kits exist with `get_kit("draw kit")` and `get_kit("puppet engine")`, and read the engine contract's set section: a set file registers a name, a background colour, a list of planes each with an id, a depth and an SVG fragment, a `marks` map of named world points, and a `ground` line. Depth 1 is the actors' plane; smaller depths move less under a pan, larger depths move more, and a plane with a `z` above the actors' draws in front of them.
Find the show's style kit and look at it: `style_kit_doctor`, `style_kit_sheet` for `swatches`. A set is drawn to the same line rule and palette as the cast, or the cast looks pasted on. If there is no kit, stop and build it first with the kit tools, or hand that to the cast skill.
Read `notes/WORLD.md` and `notes/EPISODE_1.md` if they exist: which locations, what happens in each, which shots the episode wants there. A set is designed for its shots. A wide that is never framed is wasted, and a two-shot with no mark for it is a shot that will be staged by guesswork.
Make or find the sets collection: `create_kit_collection(name, kind="sets")`, or `set_collection_kind` on one that exists. Have one puppet on hand to stand on marks; if the cast is not drawn yet, the engine's worked-example puppet from `get_kit("puppet engine")` is the scale figure.
## Ask first
- Reference images? A real place, a frame of a show, a sketch of a layout. To look at, never to trace. Ask for one per location at least; a set drawn from a one-line note comes back as boxes.
- Which locations, and which one first? The one with the most shots.
- Time of day and weather: does a location need a second state (night, rain, the sign repainted)? Each state is a set of its own, sharing the marks.
- How wide? A location the camera pans across needs to be authored wider than the frame; one it only cuts around can be the frame's width.
- What do they want to see? Offer one review per set: the wide, the pan strip and the marks sheet together.
Write the answers into the world notes.
## One set at a time
### The layout before the drawing
Decide the shots first. For each shot the episode wants in this location, write the framing: wide, two-shot, cut-in, over the shoulder, a walk from here to there. Each framing names the marks it needs and the camera's world point and zoom. From that list comes the set's authored width, where the ground line sits, which marks exist, and what has to be at the edges so a pan has somewhere to go. Put the list in the notes before you draw.
### The brief, part by part, before the planes
A set gets the brief a character gets, or it comes back as boxes. A set built straight from a one-line location note is every object drawn as the primitive nearest to hand: a rectangle for the garage, a rectangle on a rectangle for the two doors, an ellipse for every bush, a box with two circles for the van. It does not look like a car, or a door, or a bush, and the creator will say so. Draw the background the way you draw a character: describe it first, part by part, then draw to the description.
So write `notes/sets/<set>.md` before you draw, in the same shape as a character brief:
1. **Visual idiom**, copied from the kit: line weights, the cel shadow, the palette for THIS place at THIS time of day, and the one saturated accent the frame is allowed (a porch light, a neon sign). Nothing in a set may use a cast member's hue at any size.
2. **Delivery contract**: the registered name, the world size, the ground line, every mark with its world point, the planes with their depths.
3. **The place, part by part.** One paragraph per object the camera will see: the house (roof pitch, siding, the garage as one door in one frame with its panels counted, the porch on its posts, the steps), each planting (a hydrangea is mop-head clusters over a leaf mass with a darker lower half; a boxwood is a clipped mound with a bumpy top edge and leaf notches), the vehicle (nose, windscreen, visor, bumper, wheels with hubs, a roof rack, the dent), the street furniture, the ground (mown stripes, a bare patch, tufts with pointed blades), the sky (bands that sag, clouds with pointed ends and flat bottoms). Say what makes each thing THIS thing and not the generic one: the sprung boards on the crate, the violation notice under the wiper.
4. **Checks**: flat black at 64 px with each principal object identifiable; no cast hue; the vehicle's wheels, nose and windscreen visible in the flat black; the garage as one door; every bush's top edge something other than an arc; the cast standing on their marks in front of it with nothing behind a head that fights the silhouette.
Then draw to the brief. **Organic and drawn, not assembled from shapes**: every edge a curve with a little sag or wobble in it, roof lines that are not level, siding suggested by five wavy lines rather than fifty straight ones, shingles as a few long strokes, tufts and blossom clusters and mop heads instead of ellipses, a shadow half on every mass. A `<rect>`, `<circle>` or `<ellipse>` is allowed only as an invisible base under a drawn shape. If a thing reads as the shape you started from, it is not finished.
### Drawn from where the camera stands
Draw every object from the camera's view of it, at the depth it sits, or it reads as a sticker on the set. A van parked nose out to the camera shows two tread faces under its bumper, tall and narrow, and a flat contact shadow on the concrete; it never shows hubcaps, which belong to the side view. The same rule reaches everything: draw a chimney before the roof so it rises out of it, draw a far house's walls before its roof so the eave sits over the wall, and stand a bush in a bed on the bed's ground line with the edging under it, never at its own height beside it.
Two more. A near plane holds only what stands where it stands: grass blades rooted at the bottom of the world are grass growing in the road. And keep a driveway's oil stain out from under a parked vehicle, because it reads as a shadow that makes no sense; give the vehicle a contact shadow of its own.
### The planes
Three or four planes is usual; more when the location is deep.
- Far: sky, hills, the far side of the street. Depth well under 1, so it barely moves under a pan.
- Mid: the building, the room's back wall, the counter's far side. Depth under 1.
- Ground: the actors' plane at depth 1: the floor, the road, the porch boards, and everything a character stands beside at their own depth.
- Near: depth above 1 with a `z` above the actors, so it draws in front and passes across them when the camera moves. A fence, a doorframe, a hanging sign, the near edge of a table. Not every location needs one; every location with a pan benefits from one.
Draw each plane as an SVG fragment to the kit: masses from the draw kit's builders, contours as filled outlines from the taper helper, the kit's palette, nothing that is a raw rectangle unless the thing is a rectangle, and even then with the kit's hand in its corners. Text on a sign is drawn as shapes, in the show's lettering, never as a live font.
### The ground and the marks
The ground is one number: the world y where feet land. Every mark is a world point on or near it, named for what happens there: `counter`, `door`, `step`, `rope`, `left_two_shot`, `right_two_shot`. A mark for every framing in the shot list, plus an entrance and an exit at the edges. Interaction points are marks too: where a hand reaches for a handle, where a prop sits when it is put down.
### The scale figure
This is the check that catches most set mistakes, and it goes in the FIRST round, not the last, because scale is invisible in an empty set and obvious the moment a figure stands in it. Make a page that spawns the set and puts a puppet on every mark at scene scale, then run a camera through the shot list: the wide, a pan across the authored width, a push into the first mark, and pull back. If the eave is not above the tallest character's head, or a garage door would not admit a car beside them, the set is at the wrong scale, and the fix is to scale the whole drawing about the ground line and thin its strokes to match, never to shrink the cast. Preview it with `preview_html` at shuffled timestamps and look. A door a character cannot walk through, a counter at their chin, a mark that leaves them floating: each is a number to change in the plane or the mark, now, before a scene is animated against it.
The purity rule applies to sets: a frame is a function of time, so a plane that changes with the previous seek (a memoised write, a `non-scaling-stroke`) is a bug the renderer will show. `preview_html` reports `seek_not_pure`; treat any finding as red.
When the scale is wrong, fix the set and never the cast. Scale the whole drawing about its ground line, thin its strokes by the same factor so the line stays the cast's weight, and move the marks with it. Check it against the body: a person stands about half the height of a single-storey wall and three quarters of a garage door, and a mower character stands knee high against a person. If they do not, the set is wrong, however good it looks empty.
### The sheets and the review
Save the set as a kit in the sets collection with three preview pages declared in its sheets: `wide`, the whole authored width at the frame's height; `pan`, three frames of a camera pan with the scale figure standing on the marks, so depth is judged; `marks`, the wide with every mark named on it. Render them with `refresh_kit_preview` and look.
One review per set, always, and before any shot is rendered against it: `request_review` on the wide with an ask that names the pan and the marks sheets. A set that was never put in front of the creator is a set the creator will reject under the first cut, with the cast already animated against it. Read the notes, fix all of them in one pass, reply beside each mark, re-render. A note about scale means the plane changes, not the character.
Expect the notes to name objects: a vehicle cut off at the frame edge or flat on the ground, a bush outside its bed, an eave beside its wall, grass in the road. Fix each object from the camera's view, answer beside the mark, and re-render the same check so the creator sees the fix where the note was.
### Variants
Night, rain, the same place with the sign repainted: a variant is a set of its own, registered under its own name, sharing the marks and the ground exactly, with its own planes. Keep the shared numbers in the notes so a variant cannot drift.
## Props in the world
Props a character holds belong to the cast and the props collection, with a grip point and the slots they fit. Props that live in a set, a cooler on the porch, a hubcap by the road, are drawn into the set's planes at the depth they sit, and get an interaction mark if anyone touches them. A prop that starts in the set and ends in a hand is both: drawn into the plane at rest and swapped for the held prop on the beat.
## Notes for the next agent
Update `notes/WORLD.md` with every set's kit name and id, its authored width, its ground, every mark with its world point and what it is for, its planes with their depths, its variants, and the shot list it was designed for. `add_project_note` pointing at the file. A second agent staging a scene should never have to open the set's SVG to know where the door is.
## Deliver
Report each set with its kit id, its marks, its planes and depths, the three sheets' paths, and what the human approved. Then what did not resolve: a mark the shot list needs that the drawing could not give, a variant not yet built, a pan the authored width cannot cover. Say what you would build next, and stop.