| name | image-blast-uncover |
| description | Main image analysis skill, object generation, plate decisionmaking, and initial scene description. Use this skill when user wants to create objects and necessary for main image analysis. |
Uncover literal image information for project $0. Additional image paths or instructions may appear in $ARGUMENTS.
Instructions
Follow the generic file convention in .claude/rules/project.md. Use ls -a to inspect project/source/output directories before reading JSON details.
- Require a project/world slug in
$0. If it is missing, ask which worlds/<world-name>/ directory to use.
- Ensure the project envelope exists, stage any input images when appropriate, and read derived state:
node .claude/scripts/project/project-state.mjs --world "$0" --stage-input
If no source images exist after staging and the user needs to add images, report the input/ path and ask them to add files there.
- Read
IMAGE-BLAST.md in this skill directory and follow its JSON contract exactly.
- Gather source images from explicit paths in
$ARGUMENTS and worlds/$0/source/. Use input/ only through the project-state staging step so source paths are stable. Source images use indexed families (0-<slug>.<ext>, 1-<slug>.png, etc.); by default, analyze the latest image in each family and do not treat every historical plate/edit as separate evidence unless requested.
- Analyze one source image at a time:
- Read the image directly using agent image understanding.
- Use literal, observational language only.
- Extract object candidates as single cleanly segmentable items only. A good separability test is whether a human could lift the item or move it by pushing it.
- Do not extract scene-surface elements or built-in parts of the environment, such as rugs, flooring, walls, or fixed architectural features.
- Never group different items or create compound assets, such as a combination of table with chairs, or table including the objects on top.
- Write a sibling JSON file at
worlds/$0/source/<image-name>.json.
- Per-image JSON must use the same flat schema as root
image.json.
- Per-image JSON must not contain
images[].
- Treat existing
worlds/$0/source/<image-name>.json files as reusable analysis:
- If the source image or user instruction changed, update the sibling JSON.
- If the user deleted a source image or source JSON, do not recreate it unless the image still exists and should be analyzed.
- After all per-image JSON files exist, derive
worlds/$0/image.json by reading and merging all valid worlds/$0/source/*.json image analyses.
- combine
source_images
- synthesize one shared
scene_name, short_caption, and literal_description
- merge
environment, visual_style, lighting, atmosphere, and ambient_sound
- deduplicate
objects while preserving source-image evidence
- use the same flat schema as each per-image JSON
- do not write
images[]
- Present the root image analysis and merged object candidates to the user for approval or revision. Keep it concise:
- scene name and short caption
- literal environment, visual style, lighting, atmosphere, and ambient sound
- object candidates with material and source-image evidence
- Stop here until the user confirms which objects to create. When approved, create or update one object file per approved object:
worlds/$0/output/<object-slug>/object.json
- Each
object.json should use this shape:
{
"schema_version": 1,
"world": "$0",
"object": {
"id": "<object-slug>",
"name": "<object name>",
"description": "<literal object description>",
"materials": [],
"source_images": [],
"evidence": [],
"generate_as_3d_object": true,
"working_dir": "worlds/$0/output/<object-slug>"
},
"updated_at": "..."
}
Object files store durable identity, intent, and provenance only. Do not write generated state such as status, jobs, generated files, request lifecycle, or completion data into object.json. Generated outputs and request state live beside object.json as indexed visible artifacts and hidden request JSON.
- After object files are written, handle the clean plate decision:
- In one-shot mode, continue with
Agent(image-blast-plate) and wait for it before world generation.
- Otherwise ask whether to remove confirmed objects any anything else the user wants to remove from the source image to create a clean plate to generate a world from.
- Refresh derived project state:
node .claude/scripts/project/project-state.mjs --world "$0"
- Report saved paths, source image count, per-image JSON count, created/updated object directory count, and the clean plate decision.
Output Locations
- Per-image analysis:
worlds/$0/source/<image-name>.json
- Merged image and scene analysis:
worlds/$0/image.json
- Object intent/provenance:
worlds/$0/output/<object-slug>/object.json
- Clean plate decision:
worlds/$0/source/<source-slug>-plate.png