image-blast-world
GitHub基于源图像生成3D静态世界环境。通过合成去除已移除物体的空场景提示词,调用World Labs接口生成世界资产,并自动下载资源至本地以确保前端加载可靠性,支持断点续传和状态管理。
Trigger Scenarios
Install
npx skills add neilsonnn/image-blaster --skill image-blast-world -g -y
SKILL.md
Frontmatter
{
"name": "image-blast-world",
"agent": "image-blast-world",
"context": "fork",
"description": "Generate the 3D static environment of a world from a source or plate image.",
"allowed-tools": "Read Write Glob Bash(ls *) Bash(node .claude\/scripts\/project\/project-state.mjs *) Bash(node .claude\/scripts\/project\/ensure-local-assets.mjs *) Bash(node .claude\/scripts\/world\/generate-world.mjs *)",
"argument-hint": [
"world-name"
]
}
Create or resume one World Labs world for project $0.
Instructions
- If
$0is missing, ask for the world slug. - Use
ls -abefore reading generated state. - Use an explicit image path or prompt from
$ARGUMENTSwhen provided. - Without an explicit image, the world helper uses the highest-index visible image in
worlds/$0/source/. - Before generating, synthesize a prompt for the world that takes the original caption data we have and removes and objects we took out of the image. Use
worlds/$0/image.jsonfor the original scene description, then subtract all confirmed or explicitly removed objects from that description. Confirmed objects areworlds/$0/output/<object>/object.jsonfiles; useobject.nameandobject.descriptionto understand what to remove from the original scene description. - Treat the synthesized prompt as a text clean plate: preserve the original setting, materials, lighting, atmosphere, camera feel, and spatial layout, but describe the scene as an empty. Do not name, imply, or reintroduce removed objects, and do not reuse
imageJson.short_captiondirectly. - If the user specifically provides caption wording, apply the same subtraction rule before sending it. The World Labs prompt should describe the static empty environment, the "plate" environment, not the objects that were removed.
- The helper resumes unfinished
.N-world-request.json, strips base64 before writing JSON, polls World Labs, writesN-world.json, and downloads every referenced world asset to matchingN-world*files inworlds/$0/output/world/. - The frontend must only load local files from disk. World Labs URLs in
N-world.jsonare provenance/resume data only; never leave.spz, collider.glb, panorama, or thumbnail assets to be loaded from provider URLs. - If any referenced
.spz, collider, or panorama URL exists inN-world.json, make sure the matching local file is present before reporting success. Use the generic local asset tool on the matchingN-world.jsonif files are missing.
node .claude/scripts/project/project-state.mjs --world "$0"
Run:
node .claude/scripts/world/generate-world.mjs --world "$0" --prompt "<empty-environment world caption>"
Pass --image only when an explicit image path is provided or the selected source is not the helper default. Always pass --prompt with the synthesized empty-environment caption. For explicit regeneration, append --regenerate.
To fill missing local files from an existing world response, run:
node .claude/scripts/project/ensure-local-assets.mjs --from "worlds/$0/output/world/<N>-world.json"
node .claude/scripts/project/project-state.mjs --world "$0"
Final response: report the source image used when relevant, the generation index, world output path, all downloaded .glb, .spz, panorama, and thumbnail paths if present, and any failure/resume metadata.
Version History
- 4acb43b Current 2026-07-24 11:45


