skills/remix-add-image/SKILL.md
Generate and add images to a Remix game
npx skillsauth add farworld-labs/remix-skills remix-add-imageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill guides you through generating an AI image and integrating its hosted
URL into your game HTML. Prefer MCP generateImage, which now generates and
uploads in one step.
IMPORTANT: Do NOT create a new game without checking first.
Use gameId from task context or prior tool results when available.
Otherwise, read the nearest .remix-cli.json. Older projects may still use
.remix-mcp.json. If either contains a gameId, reuse it.
Only if none of those sources contain a gameId should you follow the
upload-game workflow to create one.
Preferred MCP flow:
generateImage({
gameId: "<your-game-id>",
prompt: "a pixel-art treasure chest on a grassy hill",
fileName: "treasure-chest"
})
The tool returns a hosted asset URL directly. No base64 payload and no separate asset-upload step.
If you are writing direct REST calls instead of using MCP, fetch the exact path
and response shape from https://api.remix.gg/docs/json first.
Skip this step when using MCP generateImage; the tool already uploads the
generated image and returns the hosted URL.
For uploading non-image assets (audio, 3D models), see the
remix-upload-assetskill.
Add the asset URL to the game HTML. Size the image to match the game entity it represents -- do not render it at its native resolution. For example, if a treasure chest is a 32x32 tile in your game, draw or display the image at 32x32 regardless of the source image dimensions.
The integration method depends on how the image is used:
As an HTML image element:
<img src="https://returned-asset-url.png" alt="Treasure chest" width="32" height="32" />
As a CSS background:
.game-bg {
background-image: url("https://returned-asset-url.png");
}
As a JavaScript-loaded image (for canvas games):
const img = new Image();
img.src = "https://returned-asset-url.png";
img.onload = () => {
// draw at the entity's size, not the image's native size
ctx.drawImage(img, x, y, entityWidth, entityHeight);
};
const bg = new Image();
bg.src = "https://uploaded-asset-url/background.png";
bg.onload = () => {
function draw() {
ctx.drawImage(bg, 0, 0, canvas.width, canvas.height);
// draw game objects on top...
requestAnimationFrame(draw);
}
draw();
};
const spriteSheet = new Image();
spriteSheet.src = "https://uploaded-asset-url/player-sprites.png";
spriteSheet.onload = () => {
// draw a 32x32 frame from the sprite sheet
ctx.drawImage(spriteSheet, frameX, frameY, 32, 32, player.x, player.y, 32, 32);
};
onload before starting the
game loop to avoid flickering or missing assets.development
Build lightweight mobile-friendly 3D browser games with Three.js
tools
Upload and validate HTML game code for Remix. Use when creating or updating a draft version through the CLI, MCP tools, or direct REST calls.
data-ai
Upload images, audio, or 3D models as hosted game assets
data-ai
Validation and publish constraints for Remix game submissions