enderfga/solarrenderer/solarrenderer-caption
Claude Code and agent skill by enderfga/solarrenderer
- community
Checking that the SKILL.md file is still in the repository.
Write the text prompt for SolarRenderer, a neural renderer that turns a structure video (grey box, semantic map, masks and skeletons, depth, sketch, point cloud, ...) plus an optional first frame into a finished video. Use when preparing a SolarRenderer input, captioning clips for SolarRenderer training data, or fixing a prompt that renders badly.
Install
npx vskill@latest install enderfga/solarrenderer/solarrenderer-captionSKILL.md
Writing SolarRenderer prompts
SolarRenderer was trained on prompts in one fixed six-part form. A prompt in that form, describing the target video concretely, is the single biggest lever on output quality; a short free-form sentence works much worse.
The six parts, in this order
Everything except the summary paragraph, the detailed description and the two sound parts is fixed text. Do not paraphrase it: conditions.py holds the exact sentences and assemble() builds the prompt from the free parts.
Which inputs, which labels
| Inputs given | Task type in the summary | Labels | |
|---|---|---|---|
| structure + first frame | [keyframe completion + reference generation] | structure <Video 1>, first frame <Video 2> | |
| structure only | [reference generation] | structure <Video 1> | |
| first frame only | [keyframe completion] | first frame <Video 1> | |
| text only | none: write integrated_multimodal_description: [Shot 1] ..., overall_soundscape:, non_diegetic_music: | none |
Define only the inputs actually given, and never use a label that is not defined.
The structure sentence
For the six trained condition types use the sentence in conditions.DEFINE word for word: scene_graybox (untextured grey block-out, Magpie / engine white-box), semantic (CARLA-style class colours), mask_skeleton (flat object masks with skeletons), near_depth (grey shaded engine depth, black beyond ~30 m), smpl_mesh (grey body mesh on white), scene_whitebox (untextured grey rendering of the scene and the main character).
For any other structure, say plainly what the clip looks like and what of its look must not appear, with conditions.custom_condition(looks_like, not_shown):
Writing the free parts
- summary: one short paragraph after the fixed lead: who is where doing what, and how the camera moves.
- detailed_description: 350-500 words (aim for about 420).
- Open with one or two sentences on the visual style and light ("The target video is a realistic 3D CG game render
in bright midday sun with crisp shadows."), then [Shot 1].
- With a first frame,
[Shot 1]opens withThe shot begins from <Video 2>.(assemble() adds it). - Describe the first frame's composition, subjects and scene, then what happens in playback order.
- Spend the words on what the structure does not carry: materials and surfaces with colours and wear; light
(direction, colour, hardness, time of day, shadows, reflections, emissive lights); weather and atmosphere; effects (sparks, dust, smoke, particles, glows); characters' full appearance (each outfit piece with colour and material, gear, hair, skin); small objects; events and state changes; camera motion (type, amplitude, speed).
- Keep what the structure fixes consistent with it: same layout, same number of characters, the same facing
(if we see someone's back, say so), the same camera path.
- Time events in words ("midway", "near the end"). A timestamp appears only at a hard cut:
[Shot 2] At 00:03.500, the shot cuts to .... Most clips are one shot.
- overall_soundscape: ambience and physical sounds; non_diegetic_music:
N/Aunless it is a scored trailer. - English only; on-screen text is quoted exactly in its original language.
- No labels such as
<Video 1>inside the free parts you write (assemble() places them), no guesses about story or
names, no mood words standing in for visible detail.
To restyle a clip (same structure, another world), write the description of the world you want, keeping what the structure fixes. The first frame, if given, must already be in that world.
The first frame
A first frame is optional, but it is the strongest control over the look: the render starts from it and keeps its materials, colours and light. If the user has none, make one with an image model (Codex's image generation, or any model that edits a reference image), after the prompt is written, so that the two agree:
python first_frame.py frame0 structure.mp4 frame0.png- frame 0 of the structure clip, the reference image.python first_frame.py prompt prompt.txt(add--stylisedfor pixel art, toon, clay, painterly and other
non-photoreal looks) - the image prompt: keep the camera, layout, characters, poses and facing of the reference exactly; replace the grey or flat surfaces with the look of the detailed description's opening sentences.
- Generate a 16:9 image from
frame0.pngwith that prompt (9:16 for a portrait clip). python first_frame.py fit generated.png first.png- crop and scale to 1344x768 (768x1344for portrait).- Check it against
frame0.png: same number of characters, same facing, same horizon and layout. An image that
moved things will fight the structure; regenerate it. If you have a frame of the real scene with the same layout (a photo, a game capture), use it as the reference instead of the structure frame - image models restyle a real frame more faithfully than a grey one.
The prompt must then describe that image: its [Shot 1] opens with what the first frame shows.
Steps
- Look at the structure clip (and the first frame, if any): count the characters, note their facing and the camera
path, the layout and what the structure leaves open.
- Write the free parts as JSON
{summary, detailed_description, overall_soundscape, non_diegetic_music}. assemble(free, inputs, condition)fromconditions.py.python check.py prompt.txt- sections in order, labels defined, task type present, first-frame opening, length,
English, shot markers. Fix and re-check until it prints OK.
For many clips, free_caption.py (in the repository's data branch) does steps 1-2 with a vision-language model (it sees the finished video, for training data) and checks every answer.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/solarrenderer-caption/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/enderfga/solarrenderer/solarrenderer-caption)