remix-rest-snippets

REST client snippets for Remix agent publishing

8 stars

Best use case

remix-rest-snippets is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

REST client snippets for Remix agent publishing

Teams using remix-rest-snippets should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/remix-rest-snippets/SKILL.md --create-dirs "https://raw.githubusercontent.com/farworld-labs/remix-skills/main/skills/remix-rest-snippets/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/remix-rest-snippets/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How remix-rest-snippets Compares

Feature / Agentremix-rest-snippetsStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

REST client snippets for Remix agent publishing

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

## TypeScript (REST)

```ts
const baseUrl = 'https://api.remix.gg'
const headers = {
  Authorization: `Bearer ${process.env.REMIX_API_KEY!}`,
  'Content-Type': 'application/json',
}

const openApiSpec = await fetch(`${baseUrl}/docs/json`, {
  method: 'GET',
  headers,
}).then((r) => r.json())

const createRes = await fetch(`${baseUrl}/v1/games`, {
  method: 'POST',
  headers,
  body: JSON.stringify({ name: 'Neon Dash' }),
})
const createJson = await createRes.json()
if (!createJson.success) throw new Error(createJson.error.message)

const gameId = createJson.data.game.id as string
const versionId = createJson.data.game.version.id as string

const updateRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/versions/${versionId}/code`,
  {
    method: 'POST',
    headers,
    body: JSON.stringify({ code: html }),
  },
)
const updateJson = await updateRes.json()
if (!updateJson.success) throw new Error(updateJson.error.message)

const validateRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/versions/${versionId}/validate`,
  { method: 'GET', headers },
)
const validateJson = await validateRes.json()
if (!validateJson.success) throw new Error(validateJson.error.message)
if (!validateJson.data.valid) {
  throw new Error(`Blocked: ${validateJson.data.blockers.map((b: { code: string }) => b.code).join(', ')}`)
}

const statusRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/versions/${versionId}/status`,
  { method: 'GET', headers },
)
const statusJson = await statusRes.json()
if (!statusJson.success) throw new Error(statusJson.error.message)

const readinessRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/launch-readiness?versionId=${versionId}`,
  { method: 'GET', headers },
)
const readinessJson = await readinessRes.json()
if (!readinessJson.success) throw new Error(readinessJson.error.message)

const leaderboardRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/analytics/leaderboard?startDate=2026-03-01&endDate=2026-03-15`,
  { method: 'GET', headers },
)
const leaderboardJson = await leaderboardRes.json()
if (!leaderboardJson.success) throw new Error(leaderboardJson.error.message)
```

## Image Generation

```ts
const imageRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/images/generate`,
  {
    method: 'POST',
    headers,
    body: JSON.stringify({ prompt: 'A neon cityscape background' }),
  },
)
const imageJson = await imageRes.json()
if (!imageJson.success) throw new Error(imageJson.error.message)
```

## Sprite Generation

```ts
const spriteRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/sprites/generate`,
  {
    method: 'POST',
    headers,
    body: JSON.stringify({ prompt: 'A pixel art character running' }),
  },
)
const spriteJson = await spriteRes.json()
if (!spriteJson.success) throw new Error(spriteJson.error.message)
```

## Shop Items

```ts
// List items
const itemsRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/items`,
  { method: 'GET', headers },
)
const itemsJson = await itemsRes.json()

// Create item
const createItemRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/items`,
  {
    method: 'POST',
    headers,
    body: JSON.stringify({
      name: 'Speed Boost',
      slug: 'speed-boost',
      itemType: 'CONSUMABLE',
      bitsCost: 100,
    }),
  },
)
const createItemJson = await createItemRes.json()

// Delete item
const itemId = createItemJson.data.item.id
const deleteItemRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/items/${itemId}`,
  { method: 'DELETE', headers },
)
```

## Asset Upload

```ts
const formData = new FormData()
formData.append('file', fileBlob, 'icon.png')

const assetRes = await fetch(
  `${baseUrl}/v1/games/${gameId}/assets`,
  {
    method: 'POST',
    headers: { Authorization: `Bearer ${process.env.REMIX_API_KEY!}` },
    body: formData,
  },
)
const assetJson = await assetRes.json()
if (!assetJson.success) throw new Error(assetJson.error.message)
```

## Game Update

```ts
const gameUpdateRes = await fetch(
  `${baseUrl}/v1/games/${gameId}`,
  {
    method: 'POST',
    headers,
    body: JSON.stringify({ name: 'Neon Dash Deluxe' }),
  },
)
const gameUpdateJson = await gameUpdateRes.json()
if (!gameUpdateJson.success) throw new Error(gameUpdateJson.error.message)
```

Related Skills

remix-upload-game

8
from farworld-labs/remix-skills

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.

remix-upload-asset

8
from farworld-labs/remix-skills

Upload images, audio, or 3D models as hosted game assets

remix-submission-rules

8
from farworld-labs/remix-skills

Validation and publish constraints for Remix game submissions

remix-shop-items

8
from farworld-labs/remix-skills

Create, update, delete, and integrate Remix shop items. Use when a game needs Bits items, consumables, one-time unlocks, tier unlocks, store icons, or purchase handling in @remix-gg/sdk code.

remix-save-game

8
from farworld-labs/remix-skills

Add save and load game state functionality via RemixSDK

remix-open-game

8
from farworld-labs/remix-skills

Open a game in the Remix Studio browser for preview and editing

remix-multiplayer

8
from farworld-labs/remix-skills

Enable multiplayer support for a Remix game

remix-game-sdk

8
from farworld-labs/remix-skills

Reference for the current @remix-gg/sdk runtime. Use when generating or repairing Remix game code, shop item integrations, save-state flows, multiplayer hooks, or host-safe mobile UI behavior.

remix-game-creation

8
from farworld-labs/remix-skills

Create a new game draft via the Remix API

remix-game-best-practices

8
from farworld-labs/remix-skills

Mobile-first game creation best practices for Remix

remix-cli

8
from farworld-labs/remix-skills

Use the official Remix CLI for authentication, config inspection, game creation, uploads, and analytics. Trigger this skill when a task involves `remix login`, `remix whoami`, `.remix-cli.json`, `REMIX_API_KEY`, or terminal-based game management on Remix.

remix-api-reference

8
from farworld-labs/remix-skills

OpenAPI-first endpoint reference for Remix game publishing REST routes