← Back to Skills Marketplace
thrive-spencerj

Holocube Emotes

by thrive-spencerj · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
1174
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install holocube-emotes
Description
Control a GeekMagic holocube display as an AI emote system. Generate holographic sprite kits with Gemini, upload to device, and swap expressions based on agent state (idle, working, error, etc.). Use when the user has a GeekMagic holocube (HelloCubic-Lite or similar) and wants their AI assistant to have a physical face that reacts to conversation context.
README (SKILL.md)

Holocube Emotes

Turn a GeekMagic holocube into your AI's face. Generate holographic character sprites, upload them to the device, then swap expressions in real-time based on agent/session state.

First-Time Setup

0. Find the device

Auto-discover holocubes on your network:

python3 scripts/holocube.py --discover

Output: FOUND: 192.168.0.245 — HelloCubic-Lite V7.0.22

If discovery fails, find the IP on the device's screen or your router's client list.

1. Generate sprites

Create a full emote sprite kit (requires nano-banana-pro skill with GEMINI_API_KEY):

python3 scripts/generate_sprites.py --output-dir ./sprites

Custom character:

python3 scripts/generate_sprites.py --output-dir ./sprites \
  --character "A glowing holographic cat floating in pure black void. Neon purple wireframe style."

This generates 7 emotes (neutral, happy, thinking, surprised, concerned, laughing, sleeping) as both static JPG and animated GIF, sized for the 240x240 display.

2. Upload to device

python3 scripts/setup_device.py --sprites-dir ./sprites --clear --backup-dir ./backup

Flags:

  • --clear removes existing images (recommended — device has ~3MB storage)
  • --backup-dir saves existing files before clearing
  • --ip auto-discovers if not provided, or specify manually

3. Configure TOOLS.md

Add the holocube IP and emote mappings to your workspace TOOLS.md for reference. See references/tools-example.md.

Daily Usage

Set emote directly

python3 scripts/holocube.py happy
python3 scripts/holocube.py thinking --static   # Use JPG instead of GIF

Set by agent state

python3 scripts/holocube.py working    # → thinking
python3 scripts/holocube.py complete   # → happy
python3 scripts/holocube.py error      # → concerned
python3 scripts/holocube.py opus       # → thinking (heavy model)
python3 scripts/holocube.py haiku      # → neutral (light model)

Auto-select by time of day

python3 scripts/holocube.py --auto
  • 11pm–7am → sleeping
  • 7am–9am → happy
  • Rest of day → neutral

Check status

python3 scripts/holocube.py --status
python3 scripts/holocube.py --list

Heartbeat Integration

Add to HEARTBEAT.md to auto-manage the emote:

## Holocube Emote Check
- Run `python3 scripts/holocube.py --auto` to set time-appropriate emote

When to Set Emotes

Use these during normal agent operations:

Context Command Emote
Idle, waiting for input neutral 🤖
Processing, running tools thinking or working 🔧
Task completed happy or complete 😊
Error occurred error (→ surprised) 😮
Funny moment laughing or funny 😂
Unexpected input surprised or unexpected 😮
Night/inactive sleeping or night 😴
Spawning sub-agent spawning (→ thinking) 🔧
On-demand custom custom

Custom Slot

A reserved file adam-custom.gif on the device can be overwritten at any time for on-demand or one-off animations. Generate a GIF, upload as adam-custom.gif, then python3 holocube.py custom. Switch back to a standard emote when done.

Device Notes

  • Model: GeekMagic HelloCubic-Lite (240x240px glass display)
  • Format: GIF (animated) or JFIF JPEG. Use Pillow for JPEG (ffmpeg lacks JFIF headers).
  • Storage: ~3MB total. 6 animated GIFs use ~1.5MB, leaving ~500KB for custom slot.
  • Art style: Dark/black backgrounds make glass disappear. Use glowing, holographic, neon elements.
  • ⚠️ NEVER send /set?reset=1 — that's factory reset, wipes WiFi config.

Requirements

  • GeekMagic HelloCubic-Lite (or compatible) on local network
  • Python 3 with Pillow (pip install Pillow)
  • nano-banana-pro skill with GEMINI_API_KEY (for sprite generation only)
  • uv (brew install uv) (for sprite generation only)
Usage Guidance
What to consider before installing: - Missing declared credential: The skill's registry metadata does NOT list any required environment variables, but SKILL.md and the scripts require GEMINI_API_KEY (Gemini image generation) and the nano-banana-pro skill. The skill will try to read GEMINI_API_KEY from your environment or from ~/.openclaw/openclaw.json. If you keep API keys in that config, this skill will read that file — verify you are comfortable with that. - Network actions: The scripts scan your local /24 subnet to discover devices and then POST files and commands to the device IP (e.g., /doUpload, /set). This is expected for device setup but may look intrusive; run only on trusted networks and confirm the IP of the target device before allowing automated runs. - External execution: Sprite generation invokes an external script via 'uv run' (nano-banana-pro). That effectively runs code from the nano-banana-pro package and sends prompts/API calls to Gemini. Ensure nano-banana-pro and 'uv' are installed from trusted sources and you understand how your GEMINI_API_KEY will be used. - File writes: The skill writes generated assets under your home directory (~/.openclaw/workspace/...) and may clear/backup images on the device. Back up anything important on the device first. - Practical recommendations: (1) Ask the publisher to update the registry metadata to declare GEMINI_API_KEY as a required env and list required binaries (uv, Pillow) and the nano-banana-pro dependency. (2) Inspect the included scripts yourself (they are plain text and un-obfuscated) and verify you trust nano-banana-pro. (3) Do not provide an API key you don't trust being used for image generation. (4) If you want stronger guarantees, run the network discovery and upload steps manually rather than allowing automated/autonomous agent invocation. Overall: the skill appears to implement the advertised functionality, but the undeclared credential/dependency and the broad local actions warrant caution — treat as suspicious until metadata is corrected and you confirm trust in the image-generation dependency.
Capability Analysis
Type: OpenClaw Skill Name: holocube-emotes Version: 1.0.0 The skill's functionality is clearly aligned with its stated purpose: controlling a local network-connected GeekMagic holocube and generating associated image sprites. It utilizes network scanning for device discovery, makes HTTP requests to the local device for control and file uploads, and uses `subprocess.run` to invoke the `nano-banana-pro` skill for image generation. The `GEMINI_API_KEY` is accessed for its intended use with the image generation skill. There is no evidence of data exfiltration to unauthorized endpoints, malicious execution, persistence mechanisms, or prompt injection attempts against the agent to perform actions outside the skill's stated scope. All observed behaviors are necessary for the skill's operation.
Capability Assessment
Purpose & Capability
Name/description match the implemented behavior: generating sprites and pushing them to a GeekMagic holocube. However, the skill metadata lists no required environment variables or primary credential while SKILL.md and the code clearly require a GEMINI_API_KEY (and the nano-banana-pro skill) for sprite generation and expect the 'uv' binary and Pillow. The omission of these required pieces in the declared metadata is an incoherence.
Instruction Scope
Runtime instructions and included scripts are consistent with the stated purpose: discover devices on the local subnet, generate images via a Gemini-backed skill, convert to GIF/JPG, upload to the device, and set emotes. The scripts perform a full /24 subnet scan to discover devices, read and write files under the user's home (~/.openclaw workspace), read ~/.openclaw/openclaw.json to obtain API keys, and perform HTTP POSTs to local device endpoints (e.g., /doUpload, /set). These actions are expected for setup but are broader than a simple 'emote setter' (network scanning, parsing device HTML for backup, and writing files). There is no instruction to send data to third-party endpoints beyond the image-generation step (nano-banana-pro/Gemini), and no obfuscated or hidden remote endpoints were found.
Install Mechanism
This is an instruction-only skill with bundled scripts (no install spec). No arbitrary remote download/install steps were specified. The scripts call external binaries (uv, Pillow) and a separately installed nano-banana-pro skill; those are typical for image generation but should be installed from trusted sources.
Credentials
The metadata declares no required environment variables, but the code and SKILL.md require GEMINI_API_KEY (and attempt to read it from env or ~/.openclaw/openclaw.json). The scripts also read the OpenClaw config file in the user's home to find the nano-banana-pro API key. Reading that config could expose other skill API entries if present. Required binaries (uv, Pillow) are mentioned in SKILL.md but not enforced in metadata. This mismatch means the skill will need sensitive credentials that were not declared in the registry entry — a proportionality and transparency problem.
Persistence & Privilege
The skill does not request always: true or attempt to alter other skills' configuration. It writes generated assets into the user's workspace (~/.openclaw/workspace/assets/holocube-sprites) and uploads/clears files on the holocube device. Those are expected behaviors for this functionality. Note: the agent-autonomous invocation default is enabled but not combined with wide undeclared credential requests in the metadata (the credential is required by code but not declared), so users should be cautious about automated runs.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install holocube-emotes
  3. After installation, invoke the skill by name or use /holocube-emotes
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release: 6 animated emotes, network discovery, interactive onboarding, custom slot, Gemini sprite generation
Metadata
Slug holocube-emotes
Version 1.0.0
License
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Holocube Emotes?

Control a GeekMagic holocube display as an AI emote system. Generate holographic sprite kits with Gemini, upload to device, and swap expressions based on agent state (idle, working, error, etc.). Use when the user has a GeekMagic holocube (HelloCubic-Lite or similar) and wants their AI assistant to have a physical face that reacts to conversation context. It is an AI Agent Skill for Claude Code / OpenClaw, with 1174 downloads so far.

How do I install Holocube Emotes?

Run "/install holocube-emotes" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Holocube Emotes free?

Yes, Holocube Emotes is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Holocube Emotes support?

Holocube Emotes is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Holocube Emotes?

It is built and maintained by thrive-spencerj (@thrive-spencerj); the current version is v1.0.0.

💬 Comments