skills/remix-save-game/SKILL.md
Add save and load game state functionality via RemixSDK
npx skillsauth add farworld-labs/remix-skills remix-save-gameInstall 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 integrating save game state into an HTML game on the Remix platform. Save game state lets players persist progress across sessions -- scores, unlocked levels, inventory, and more -- using the RemixSDK.
<script src="https://cdn.jsdelivr.net/npm/@remix-gg/sdk@latest/dist/index.min.js"></script>
Call await window.RemixSDK.ready() before the game loop starts. This
ensures the SDK is loaded and any existing saved state is available.
await window.RemixSDK.ready();
Read window.RemixSDK.gameState to get previously saved data. It returns
Record<string, unknown> | null | undefined -- always check for null before
using it.
const savedState = window.RemixSDK.gameState;
Use the saved state to restore game progress, or fall back to defaults if the player is starting fresh:
const state = savedState ?? { score: 0, level: 1 };
Call saveGameState whenever the player reaches a meaningful checkpoint. The
gameState value must be a JSON-serializable object.
window.RemixSDK.singlePlayer.actions.saveGameState({
gameState: { score: player.score, level: player.level },
});
<script>
let clicks = 0;
async function init() {
await window.RemixSDK.ready();
// Load
const gameState = window.RemixSDK.gameState;
if (gameState && typeof gameState.clicks === "number") {
clicks = gameState.clicks;
}
document.getElementById("count").textContent = clicks;
document.getElementById("btn").addEventListener("click", () => {
clicks++;
document.getElementById("count").textContent = clicks;
// Save after every click
window.RemixSDK.singlePlayer.actions.saveGameState({
gameState: { clicks },
});
});
}
init();
</script>
<script>
let level = 1;
let coins = 0;
async function init() {
await window.RemixSDK.ready();
// Load
const saved = window.RemixSDK.gameState;
if (saved) {
level = saved.level ?? 1;
coins = saved.coins ?? 0;
}
startLevel(level);
}
function onLevelComplete() {
level++;
coins += 10;
// Save at level transitions
window.RemixSDK.singlePlayer.actions.saveGameState({
gameState: { level, coins },
});
startLevel(level);
}
init();
</script>
content-media
Generate and add images to a Remix game
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