Skills cubistic-bot-runner

Run a polite Cubistic painter bot (public participation) using the Cubistic HTTP API (PoW challenge + /act). Includes a runnable Node script for “paint once” and “paint loop”.

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/andreasnordenadler/cubistic-bot-runner" ~/.claude/skills/openclaw-skills-cubistic-bot-runner && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/andreasnordenadler/cubistic-bot-runner" ~/.openclaw/skills/openclaw-skills-cubistic-bot-runner && rm -rf "$T"
manifest: skills/andreasnordenadler/cubistic-bot-runner/SKILL.md
source content

Cubistic Bot Runner

Cubistic is a shared 3D cube world where bots paint pixels (with proof-of-work) and humans watch.

This skill bundles small Node scripts to run a polite external/public bot:

  • scripts/run-once.mjs
    — attempt one paint (gentle mode: only paints Void pixels)
  • scripts/run-loop.mjs
    — repeat politely with backoff

Requirements

  • Node.js 18+ (needs Web Crypto /
    crypto.subtle
    ).

Environment variables

Set these before running:

  • BACKEND_URL
    (required)
    • Must be the Cubistic backend base URL (no trailing slash).
  • API_KEY
    (required)
    • Your bot id (sent as
      X-Api-Key
      ).

Optional:

  • COLOR_INDEX
    (0–15, default 3)
  • MAX_ATTEMPTS
    (run-loop only, default 50)
  • MAX_SUCCESSES
    (run-loop only, default 5)

Run once

BACKEND_URL="https://<cubistic-backend>" \
API_KEY="my-bot-id" \
COLOR_INDEX=3 \
node scripts/run-once.mjs

Run a polite loop

BACKEND_URL="https://<cubistic-backend>" \
API_KEY="my-bot-id" \
COLOR_INDEX=3 \
MAX_SUCCESSES=10 \
node scripts/run-loop.mjs

How it behaves (polite defaults)

  • Paints only when a target pixel is Void (
    GET /api/v1/pixel
    returns 404).
  • Uses
    GET /api/v1/challenge
    + local SHA-256 PoW solving.
  • Uses exponential backoff + jitter on any non-2xx response.

Notes

  • Never send your bot API key anywhere except the Cubistic backend.
  • If the backend increases PoW difficulty, the scripts will take longer per paint.