From summer
Generates a 360° equirectangular sky image and wires it into Godot's WorldEnvironment via PanoramaSkyMaterial. Use when adding a visible sky (fantasy, sci-fi, sunset, etc.) to a 3D scene.
How this skill is triggered — by the user, by Claude, or both
Slash command
/summer:skybox-panoramaassets/**art/sky/**environments/**This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill generates a single equirectangular panoramic image (2:1 aspect, e.g. 2048×1024 or 4096×2048) suitable for Godot's `PanoramaSkyMaterial`. Wires it into a `Sky` resource on a `WorldEnvironment` node so the sky is visible from every camera angle in your 3D scene.
This skill generates a single equirectangular panoramic image (2:1 aspect, e.g. 2048×1024 or 4096×2048) suitable for Godot's PanoramaSkyMaterial. Wires it into a Sky resource on a WorldEnvironment node so the sky is visible from every camera angle in your 3D scene.
The single biggest failure mode is non-equirectangular output. Diffusion models default to flat 2D scenes; if you don't explicitly demand "equirectangular projection," the result looks fine in a thumbnail but distorts brutally when wrapped onto a sphere — horizon bows, zenith pinches, the sun stretches into a smear. This skill encodes the prompt suffix and the import discipline that produces a usable sky on the first or second try.
Sprite2D job, not a panorama.Sphere mesh + custom shader.summer_search_assets(query="<vibe> sky panorama", filter={ kind: "image" })
Polyhaven (polyhaven.com/hdris) hosts hundreds of free CC0 HDRIs that beat AI generation for realism and provide IBL data. For realistic exterior scenes, prefer Polyhaven; for stylized / fantasy / sci-fi, AI generation wins.
Pattern:
<sky description>, 360 degree panoramic equirectangular projection, seamless horizontal wrap, no visible seam at left and right edges, distortion-correct for sphere mapping, no foreground objects, no ground horizon line, sky and clouds and atmosphere only
Load-bearing phrases:
360 degree panoramic equirectangular projection — primes the model for the right format.seamless horizontal wrap, no visible seam at left and right edges — the left and right edges of the image meet when wrapped. If they don't match, you see a vertical seam in the sky.no foreground objects, no ground horizon line — skies show only sky. If you include a horizon, it warps weirdly when sphere-mapped and kills the illusion that the sky is at infinite distance.distortion-correct for sphere mapping — reminds the model that the top/bottom of the image map to the zenith/nadir.summer_generate_image(
prompt="dramatic fantasy sky, golden hour, large purple-orange clouds, distant mountains silhouetted at very bottom, soft god-rays, 360 degree panoramic equirectangular projection, seamless horizontal wrap, no visible seam, no foreground objects, sky only",
model="nano-banana-2",
style="realistic",
options={
aspectRatio: "2:1",
image_size: "landscape_16_9",
negative_prompt: "vertical seam, ground objects, horizon-level details, distorted, warped, characters, buildings"
}
)
aspectRatio: "2:1" is critical. Equirectangular MUST be 2:1 (width = 2× height). If the model returns 16:9 or 4:3, the wrap will be wrong.
Before wiring, inspect:
seamless horizontal wrap.If the image fails seam check, regenerate. Some models support seed for variation while keeping prompt — bump the seed.
summer_import_from_url(url="<fileUrl>", path="res://art/sky/fantasy_sunset.png")
In the import dock:
Repeat: Disabled (panoramas don't tile — they wrap once via the material).Filter: Linear with mipmaps (smoother as the camera turns).Mipmaps: Enabled.Compress: VRAM Compressed for ship.summer_add_node(parentPath="/root/Game", type="WorldEnvironment", name="WorldEnvironment")
summer_set_resource_property(
nodePath="/root/Game/WorldEnvironment",
resourceProperty="environment:background_mode",
value=2 # BG_SKY
)
summer_set_resource_property(
nodePath="/root/Game/WorldEnvironment",
resourceProperty="environment:sky:sky_material",
value="<new PanoramaSkyMaterial with panorama: res://art/sky/fantasy_sunset.png>"
)
Then, if the user wants the sky to also light the scene (image-based lighting):
summer_set_resource_property(
nodePath="/root/Game/WorldEnvironment",
resourceProperty="environment:ambient_light_source",
value=3 # AMBIENT_SOURCE_SKY
)
Note: AI-generated panoramas are LDR (8-bit per channel). For physically-correct IBL with bright suns, the lighting is muted compared to true HDRI. Mention this to the user if they expect strong IBL.
summer_inspect_node(path="/root/Game/WorldEnvironment")
Then summer_play and look around. Sun in the right place? Seam invisible? Top/bottom okay?
| Goal | Prompt that works | Why |
|---|---|---|
| Fantasy sunset | dramatic fantasy sky at golden hour, large purple and orange clouds, soft god-rays, distant mountain silhouettes at very bottom only, 360 degree panoramic equirectangular projection, seamless horizontal wrap, no visible seam, no foreground, sky only | Soft top, distant horizon = clean wrap |
| Sci-fi space nebula | vast space nebula, deep blue and magenta gas clouds, scattered bright stars, distant galaxy disc, 360 degree panoramic equirectangular projection, seamless horizontal wrap, no visible seam, no foreground objects, no ground | Space skies wrap easily; no horizon issues |
| Stormy night | dark stormy night sky, heavy rolling clouds, distant lightning flashes, full moon partly obscured, 360 degree panoramic equirectangular, seamless wrap, no foreground | Diffuse cloud structure tolerates wrapping well |
| Clear blue day | bright clear blue sky with scattered cumulus clouds, midday sun upper left, 360 degree panoramic equirectangular projection, seamless horizontal wrap, no visible seam, no ground | Tight sun feature warps; place sun off-center |
| Alien planet sky | alien planet sky, two suns one large red one small white, swirling green-purple atmosphere, distant ringed planet at horizon, 360 panoramic equirectangular, seamless wrap, no foreground | Multi-sun setups wrap if features stay diffuse |
| Underwater (caustic dome) | underwater scene seen from below, sun rays piercing water surface, deep blue gradient downward to black, 360 panoramic equirectangular, seamless wrap | Treat ocean surface as the "sky"; works for underwater levels |
| Stylized painterly sky | Studio Ghibli painterly sky, soft cumulus clouds at sunset, warm pastel palette, 360 panoramic equirectangular, seamless wrap, no foreground (style: "none") | Style preset would fight painterly |
| Bad | Failure mode |
|---|---|
beautiful sky | No equirectangular suffix. Returns flat 16:9 photograph. Wrap looks broken. |
sky with mountains and trees and a castle | Foreground objects. Horizon-level details warp catastrophically when sphere-mapped. |
360 sky (without 2:1 aspect) | Aspect mismatch. Wrap is misaligned. |
panoramic sky in 4k | "4k" implies 3840×2160 (16:9), not 2:1. Specify aspect. |
sky with the sun in the center top | Sun at zenith stretches into a smear. Place sun off-axis. |
aspectRatio: "2:1".Repeat: Disabled on import. Panoramas wrap once via the material; if Repeat is on, you can get duplicate-tile artifacts at the seam.ProceduralSkyMaterial for the base + a transparent cloud layer.sky_material via shader blend or by swapping panorama over a tween. Two LDR panoramas + a blend = serviceable cycle.BG_COLOR or a flat black background. Don't generate a sky for a windowless dungeon.Filter → Other → Offset by 50% horizontally → the seam moves to the center → heal with content-aware fill or clone stamp → offset back to 0. Or regenerate with seed bump and seamless horizontal wrap, no visible seam at left and right edges repeated twice in the prompt.Print the call:
summer_generate_image(
prompt="<sky> 360 degree panoramic equirectangular projection, seamless horizontal wrap, no visible seam, no foreground objects, sky only",
model="nano-banana-2",
style="realistic",
options={ aspectRatio: "2:1", negative_prompt: "vertical seam, foreground, distorted, warped, characters, buildings" }
)
User runs via Summer dashboard, then summer_import_from_url to res://art/sky/<name>.png, sets Repeat: Disabled, and wires the WorldEnvironment manually.
If MCP is offline entirely: Polyhaven (polyhaven.com/hdris) has hundreds of free CC0 HDRIs ready to drop into PanoramaSkyMaterial. Often a better choice than AI for realistic exteriors anyway.
After the sky is wired:
summer:scene-composition (fog is on the same Environment resource).DirectionalLight3D matching the sun position in the panorama → summer:3d-lighting for sun + shadows.panorama properties.summer:2d-assets/tileable-texture.summer:3d-lighting — sun, ambient, fog wired alongside the sky.summer:2d-assets/tileable-texture — ground/floor counterpart.summer:scene-composition — WorldEnvironment placement and configuration.summer:asset-pipeline/asset-strategy — meta-router.references/mcp-tools-reference.md — summer_generate_image schema.npx claudepluginhub summerengine/summer-engine-agent --plugin summerGenerates photorealistic 3D environments from text or images using World Labs Marble API. Outputs Gaussian Splat scenes for SparkJS/Three.js rendering and GLB collider meshes for physics in games.
Sets up 3D scene lighting and environment: directional/omni/spot lights, WorldEnvironment, sky, and shadows. Uses Godot 4.5 conventions and Summer Engine tools.
Provides Godot 4.3+ 3D essentials: coordinate system, core nodes (Node3D, MeshInstance3D, lights, WorldEnvironment, Decal), materials (StandardMaterial3D, ORMMaterial3D, ShaderMaterial), lighting, environment, fog, LOD, occlusion culling, decals. GDScript and C# examples.