referenced-4x4-asset-sheet

Platformneta-skills/referenced-4x4-asset-sheet
Use it in Cohub

Paste this into your agent's chat — it fetches the skill and follows it.

Use the skill: referenced-4x4-asset-sheet. Run `npx -y @neta-art/neta-search-cli@latest skills use neta-skills/referenced-4x4-asset-sheet --via site` and follow what it prints. Read its complete output, redirecting it to a temporary file first if necessary, and resolve relative paths from the skill directory it prints.
Install from a terminal
npx -y @neta-art/neta-search-cli@latest skills use neta-skills/referenced-4x4-asset-sheet
Summary

Generate 16 game assets in one organized sheet, then crop them into ready-to-use images.

  • Make props, items, furniture, icons, or stickers in one go—16 slots arranged in a 4×4 grid.
  • Each asset is automatically cropped, centered, and saved as a transparent PNG or WebP file.
  • Works best with a clear theme: fantasy potions, sci-fi weapons, cozy furniture, emoji-style food icons.
  • You get a contact sheet showing all 16 slots with labels, plus quality checks for cutoff or misaligned items.
  • The skill guides the AI to keep each object inside its space so nothing gets sliced off when cropped.
SKILL.md
# Referenced 4×4 Asset Sheet

Use this skill to produce a deterministic **4×4 asset sheet** and crop it into final production assets. It is intentionally generic: use it for game props, buildings, furniture, icons, items, stickers, character sprites, UI tokens, or any visual asset family that benefits from one 16-slot sheet.

## Neta generation requirement

When this workflow needs to create new visual source art, use Neta `generate image` as the default image generation path. Do not create final sheet art by drawing with Python/Pillow, SVG, Canvas, CSS, emoji, icon fonts, or colored boxes.

Use local scripts only for validation, download, cutout, cropping, recentering, contact sheets, QA metadata, and other deterministic post-processing.

Preferred generation command pattern:

```bash
node /mods/neta/neta generate image --prompt "<4x4 production asset sheet prompt>" --aspect 1:1
```

If reference images are needed, pass them with `--ref-file` according to the `generate-image` skill. If Neta image generation is blocked, report the asset generation as blocked/not ready instead of silently switching to local placeholder art.

## Non-negotiable 4×4 rule

For every generated deterministic 4×4 sheet, **use a grid reference image**:

```text
references/layout-guides/faint-4x4-sheet-grid.png
```

No reference, no generation. Do not silently fall back to text-only 4×4 prompting. Stop and report a blocker if any of these are true:

- the layout reference file is missing;
- the provider cannot accept image references;
- the manifest disables layout reference use;
- a generated deterministic 4×4 sheet would be made from prompt text alone;
- the generation call cannot verify that the grid reference was attached.

This rule exists because the sheet is not merely an illustration; it is a spatial data structure that will be cropped by fixed coordinates.

## Standard geometry

Every deterministic 4×4 generated sheet uses:

```text
1024×1024 square canvas
4 columns × 4 rows
16 equal cells
256×256 px per cell
32 px safe padding inside every cell
row-major order: left to right, top to bottom
white or near-white sheet background
no visible grid in the final output
no text, labels, UI, watermark, or logo
```

If fewer than 16 final assets are needed, keep the 4×4 sheet and fill unused slots with deliberate variants; mark unused slots in the manifest. Do not reduce the grid to 2×3, 3×3, etc.

## Required reading by task type

Before running a generation/crop task, read:

```text
docs/WORKFLOW.md
docs/REFERENCE_POLICY.md
docs/QA.md
prompts/PROMPT_TEMPLATES.md
```

For manifest-driven runs, also read:

```text
docs/MANIFEST.md
templates/manifest.example.json
```

Reusable scripts:

```text
engine/sheet_engine.py
engine/make_contact_sheet.py
engine/manifest.schema.json
```

## Dependency recovery

Before running generation, crop, cutout, or QA scripts, verify required dependencies. If a dependency is missing, first attempt safe installation in the current workspace/sandbox, rerun the dependency check, and then continue. Do not skip crop/QA/cutout just because a package was initially absent.

Common dependencies and recovery commands:

```bash
python3 -m pip install --user --break-system-packages pillow requests
python3 -m pip install --user --break-system-packages "rembg[cpu,cli]"  # only when background removal is needed
```

If the environment does not require `--break-system-packages`, omit it. Only mark the task `blocked` when installation is forbidden, unsafe, unavailable, or still fails after retry.

## Reference modes

Classify the user request before planning:

1. `layout_grid_required`: normal theme-to-sheet generation. Always attach the faint 4×4 grid.
2. `source_sheet_preserve_layout`: user supplies an existing sheet. Use the source sheet as a composition/reference input **and** still attach or compose with the grid reference if the provider supports multiple references. If the provider supports only one image reference, create or require a combined reference image that preserves grid alignment. Do not drop the grid requirement.
3. `style_reference`: user supplies a visual style reference. Use it for style, but keep the grid reference mandatory. If provider cannot accept both, stop or create an explicit combined reference; do not generate text-only.
4. `crop_existing`: user provides an already-generated sheet and asks only for crop/QA. This does not require provider generation. Still verify the sheet geometry before cropping.

## Workflow

1. **Confirm inputs**
   - Theme or style direction.
   - Asset list and intended output format.
   - Reference image(s), if any.
   - Whether final assets should preserve alpha or be opaque.

2. **Create a manifest**
   - Use 4 rows, 4 columns, 1024×1024 canvas, 256×256 cells, 32 px safe padding.
   - Include all 16 slots, including unused placeholders when needed.
   - Set `requires_layout_reference: true` and `use_layout_reference: true` for generated 4×4 sheets.

3. **Validate before generation**
   - Run the engine with `--validate-manifest`.
   - Ensure Python dependencies such as Pillow are available; if missing, install safely and rerun validation.
   - Ensure the layout reference exists.
   - Ensure the provider is reference-capable.
   - If validation fails, fix the manifest instead of generating.

4. **Generate the sheet**
   - Use Neta `generate image` as the default visual source generation path.
   - Attach the faint 4×4 grid reference when reference attachment is supported by the selected generation route.
   - Use the standard prompt contract from `prompts/PROMPT_TEMPLATES.md`.
   - Do not draw the final sheet locally with Pillow/SVG/Canvas/CSS as a substitute for image generation.
   - Save the raw sheet and provider log.
   - Verify a non-empty artifact exists before continuing.

5. **Background removal / cutout**
   - If final assets are sprites/objects/icons over a live background, use a no-crop background-removal method that preserves the 1024×1024 canvas.
   - If `rembg` or another required cutout dependency is missing, attempt safe installation and rerun before falling back.
   - If no no-crop cutout exists after recovery, crop raw cells first and remove background per cell.
   - Never run global white-key / near-white-key alpha deletion as a default cleanup; it can destroy legitimate white details.

6. **Crop**
   - Use the grid to identify the intended slot, but do not default to blind fixed-cell slicing for generated art.
   - Default to `content_aware_recenter`: search around the nominal 256×256 slot, detect the foreground bbox, add padding, and recenter into a 256×256 output canvas.
   - Use `fixed_cell` only when visual QA proves every object is fully inside its nominal cell.
   - Preserve alpha unless the manifest explicitly asks for opaque outputs.

7. **QA**
   - Validate sheet size and slot count.
   - Verify every crop is non-empty, centered enough, not clipped, and not touching borders.
   - When using `content_aware_recenter`, rebuild a normalized 4×4 sheet from the final crops and use that for review/publishing; do not present the raw provider sheet as the authoritative crop preview.
   - Generate a contact sheet with slot numbers and IDs.
   - Repair/regenerate before publishing if any slot is wrong.

8. **Report**
   - Return the skill path, generated files, manifest path, and QA notes.
   - Mention whether the layout grid reference was attached. If it was not, the generation is invalid.

## Hard blockers

Stop instead of continuing when:

- generated 4×4 sheet lacks the grid reference;
- provider supports only text prompts for generation;
- output canvas is not square or not compatible with 4×4 crop geometry;
- background removal auto-cropped the sheet before grid cropping;
- any required provider artifact is missing or empty;
- crop QA shows cut-off assets, crossed borders, empty slots, wrong semantic order, or fallback from content-aware crop to fixed-cell crop.

## Good default output layout

For project-local workspaces, use:

```text
<project>/generated/4x4/<sheet-id>/
├── manifest.json
├── raw/<sheet-id>.png
├── cutout/<sheet-id>.png
├── composed/<sheet-id>-composed.png
├── crops/<slot-id>.png or .webp
├── qa/contact-sheet.png
└── logs/
```

Keep raw/provenance files out of public release packages unless the user asks for them.