2d-pixel-asset — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited 2d-pixel-asset (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate pixel art game assets through Google Gemini's web interface using Chrome browser automation, then post-process them to exact pixel dimensions with transparent backgrounds.
mcp__claude-in-chrome__*)pip install transformers torch torchvision + CUDA GPUBefore using ANY Chrome MCP tool, load it via ToolSearch first:
ToolSearch: "select:mcp__claude-in-chrome__tabs_context_mcp"
ToolSearch: "select:mcp__claude-in-chrome__tabs_create_mcp"
ToolSearch: "select:mcp__claude-in-chrome__navigate"
ToolSearch: "select:mcp__claude-in-chrome__computer"
ToolSearch: "select:mcp__claude-in-chrome__find"
ToolSearch: "select:mcp__claude-in-chrome__upload_image"| Action | MCP Tool |
|---|---|
| Get tab context | mcp__claude-in-chrome__tabs_context_mcp |
| Create new tab | mcp__claude-in-chrome__tabs_create_mcp |
| Navigate to URL | mcp__claude-in-chrome__navigate |
| Click, type, screenshot, hover, wait | mcp__claude-in-chrome__computer |
| Find elements by description | mcp__claude-in-chrome__find |
| Upload reference/edit images | mcp__claude-in-chrome__upload_image |
| Read page content | mcp__claude-in-chrome__read_page |
Parse these from user input after the skill invocation:
| Argument | Default | Description | ||
|---|---|---|---|---|
| (positional) | -- | Main prompt text (everything not a flag) | ||
--size 32 or --size 64x32 | 32 | Target pixel dimensions for final output | ||
--output path/ | ./Assets/ | Output directory | ||
--name filename | derived from prompt | Output filename (no extension) | ||
| `--model pro | flash` | pro | Gemini model selection | |
--ref path1.png path2.png ... | none | Reference images for style (up to 14) | ||
--edit path.png | none | Existing image to edit/modify | ||
--tile | false | Generate tileable texture (no bg removal) | ||
| `--resolution 1k | 2k | 4k` | 1k | Gemini generation resolution |
--no-process | false | Skip post-processing, keep raw output | ||
| `--bg-color magenta | green | white` | magenta | Background color for chroma key removal |
--ml | false | Use BiRefNet ML model for background removal | ||
--adobe | false | Use Adobe Express for background removal | ||
--margin N | 1 | Transparent margin (px) around sprite in final output |
CRITICAL: Match the Gemini prompt aspect ratio to the target `--size`.
Before constructing the prompt, run the script to get the best matching Gemini ratio:
python "path/to/2d-pixel-asset/scripts/process_asset.py" \
--size {target_size} --suggest-ratioThis outputs the closest Gemini-supported ratio (e.g., 3:2, 16:9, 4:3). Use this ratio in the prompt as Aspect ratio {ratio}.
Examples:
--size 32 → 1:1--size 128x64 → 16:9--size 64x128 → 9:16--size 96x128 → 3:4--size 192x128 → 3:2Also add to the prompt: "The subject must be centered and fill the entire canvas from edge to edge with minimal empty space around it."
After post-processing: If the script outputs a WARNING about aspect ratio mismatch, inform the user and offer to either:
1. Call tabs_context_mcp to discover existing tabs
2. Call tabs_create_mcp to create a fresh tab
3. Navigate to https://gemini.google.com/app
4. Take a screenshot with computer to verify the page loadedIMPORTANT: The Gemini UI is in GERMAN.
1. Use find to locate "Neuer Chat" button, click it with computer
2. Take a screenshot to confirm new chat is open
3. Use find to locate "Tools" button, click it
4. Use find to locate "Bild erstellen" toggle/option, click it to enable
5. Take a screenshot to confirm image generation is enabledDefault model is Pro. The model selector shows "Schnell" near the bottom-right of the input area.
If user specified --model pro (or no --model flag):
1. Use find to locate the model dropdown showing "Schnell"
2. Click it to open the model selector
3. Select the option labeled with "Pro"
4. Take a screenshot to confirm Pro is selected
If user specified --model flash or --flash:
1. Keep "Schnell" (Flash) -- no action needed1. For each reference image path:
a. Use upload_image to upload the file
2. Maximum 14 reference images supported
3. Take a screenshot to verify uploads appear in the input area1. Use upload_image to upload the specified image
2. The modification instructions will be included in the prompt
3. Take a screenshot to verify the image appears in the input areaBuild the prompt by combining the user's core request with pixel art defaults.
Always include these elements:
--bg-color, default magenta):--tile): "seamless tileable texture, fills the entire rectangular canvas"Prompt template (sprites -- default magenta):
Create a pixel art sprite of {user_prompt}. Pixel art style with thick black outlines,
no anti-aliasing, clean pixel edges. The subject must be centered and fill the entire
canvas from edge to edge with minimal empty space around it. Isolated on a solid, flat,
uniform magenta background. Use EXACTLY hex color #FF00FF (RGB 255, 0, 255). The entire
background must be a single pure magenta color with absolutely zero variation. Flat, even,
uniform lighting across the entire image. Generate in {resolution} resolution.
Aspect ratio {aspect_ratio}.Prompt template (tiles):
Create a seamless tileable pixel art texture of {user_prompt}. Pixel art style with
no anti-aliasing, clean pixel edges. The texture must fill the entire rectangular canvas
with no borders or margins. Seamlessly tileable in all directions. Generate in {resolution}
resolution.Prompt template (edit mode with --edit):
Modify this pixel art: {user_prompt}. Maintain the pixel art style with thick black
outlines, no anti-aliasing. Keep everything else exactly the same unless specified.
Generate in {resolution} resolution.Reference: See references/prompting-guide.md for detailed prompt construction strategies, style descriptors, and examples.
Submitting:
1. Use find to locate the prompt input field
2. Type the constructed prompt using computer action "type"
3. Press Enter to submit
4. Wait 10 seconds (computer wait action)
5. Wait another 10 seconds (computer wait action)
6. Take a screenshot to verify the image was generated1. Hover over the generated image using computer action "hover"
2. Look for the download button (arrow icon, top-right of image on hover)
3. Use find to locate the download button ("Bild in Originalgröße herunterladen")
4. Click the download button using the found ref
5. Wait 5 seconds for the download to complete
6. Find the downloaded file:
ls -t ~/Downloads/*.png | head -5Skip this step if --no-process is set.
#### Choose background removal strategy
Decision logic (follow in order):
--ml flag: use BiRefNet ML model--adobe flag: use Adobe Express (Step 8b)--tile flag: skip background removal (--no-remove-bg)--bg-color (default: magenta)After downloading, take a screenshot of the generated image and visually inspect it. If the background looks unclean (gradients, shadows, mixed colors) despite the magenta prompt, consider switching to --ml for that image.
#### 8a: Script-based removal (chroma key or ML)
# Default: Chroma key magenta
python "path/to/2d-pixel-asset/scripts/process_asset.py" \
~/Downloads/{downloaded_file}.png \
--size {target_size} \
--bg-color magenta \
--output {output_path}/{filename}.png
# ML fallback (BiRefNet):
python "path/to/2d-pixel-asset/scripts/process_asset.py" \
~/Downloads/{downloaded_file}.png \
--size {target_size} \
--ml \
--output {output_path}/{filename}.png
# Green chroma key:
python "path/to/2d-pixel-asset/scripts/process_asset.py" \
~/Downloads/{downloaded_file}.png \
--size {target_size} \
--bg-color green \
--output {output_path}/{filename}.png
# Legacy white:
python "path/to/2d-pixel-asset/scripts/process_asset.py" \
~/Downloads/{downloaded_file}.png \
--size {target_size} \
--bg-color white \
--output {output_path}/{filename}.png--size: 32 (produces 32x32). For non-square: --size 64x32.--tile is set: add --no-remove-bg flag (tiles keep their background).#### 8b: Adobe Express removal (if --adobe flag)
Use Chrome browser automation to remove background via Adobe Express:
1. Create a new tab or reuse existing
2. Navigate to https://new.express.adobe.com/home/tools/remove-background
3. Take a screenshot to verify page loaded
4. Find the upload area / "Browse" button
5. Upload the downloaded Gemini image using upload_image
6. Wait 10-15 seconds for Adobe to process
7. Take a screenshot to verify background was removed
8. Find and click the download button
9. Wait 5 seconds for download
10. Find the downloaded file:
ls -t ~/Downloads/*.png | head -5
11. Then run process_asset.py with --no-remove-bg to only crop and rasterize:
python "path/to/2d-pixel-asset/scripts/process_asset.py" \
~/Downloads/{adobe_result}.png \
--size {target_size} \
--no-remove-bg \
--output {output_path}/{filename}.png1. Ensure output directory exists: mkdir -p {output_dir}
2. If --no-process was set, move raw file:
mv ~/Downloads/{file}.png {output_dir}/{name}.png
3. Report the final file path to the userWhen enhancing the user's prompt, apply these pixel-art-specific principles:
ls -t ~/Downloads/*.png | head -5--ml flag for that image./Assets/ relative to the user's current working directoryprocess_asset.py script requires Python 3 and Pillow (pip install Pillow)pip install transformers torch torchvision~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.