Skill: lucaszh7/openclaw-studio (version 1.0.1)

--- name: openclaw-studio description: Use when the user wants a local visual operations dashboard for OpenClaw, with a cute robot presentation, live status visibility, chat access, efficiency trend monitoring, and optional recovery helpers. This skill helps install, run, configure, and present the dashboard safely for local single-agent supervision. --- # OpenClaw Studio OpenClaw Studio is a local-first monitoring surface for one OpenClaw agent. ## Use this skill when - the user wants to run or present the OpenClaw Studio locally - the user wants help changing branding, visuals, or robot presentation - the user wants to inspect dashboard status, chat, trend, or recovery controls - the user wants GitHub or ClawHub release material for this dashboard ## Core files - `README.md` - `index.html` - `server.py` - `monitor_config.py` - `config.example.json` - `run_monitor.sh` - `start_bg.sh` - `stop_monitor.sh` ## Operating notes - Default local URL: `http://127.0.0.1:18991/` - Start foreground: `./run_monitor.sh` - Start background: `./start_bg.sh` - Stop: `./stop_monitor.sh` - Main configuration lives in `config.json` ## Safety - Treat this as a local monitoring tool, not a hidden control layer. - Do not claim a recovery action succeeded unless logs or UI state confirm it. - Prefer clear, low-noise visual changes over flashy effects that reduce readability.

path: GITHUB_RELEASE_COPY.md
content: # GitHub Release Copy

## Repository Subtitle

Professional local dashboard for OpenClaw with cute robot presentation, live status, trend visualization, chat, and optional auto-heal controls.

## Short Pitch

OpenClaw Studio turns one OpenClaw agent into something you can supervise, understand, and show off. It pairs a lovable robot surface with clear operational visibility, so the repository lands as a real product instead of a pile of utility scripts.

## Longer Intro

OpenClaw Studio is a single-agent local operations console for OpenClaw. It was built around one practical goal:

Make the robot feel alive, while keeping the monitoring layer sharp and trustworthy.

Instead of raw logs and generic widgets, the product wraps the agent in a presentation layer that is easier to read and easier to remember:

- a recognizable robot identity
- a clear status and health summary
- efficiency and activity trend visibility
- direct nudge, chat, and heal controls
- a local-first setup that stays simple to run

That combination is what makes it useful both as a working dashboard and as a publishable GitHub / ClawHub project.

## Feature Highlights

- Local dashboard at `127.0.0.1:18991`
- Live OpenClaw agent state
- Efficiency trend and activity visibility
- Direct chat and manual nudge controls
- Optional auto-heal and watchdog helpers
- Robot, theme, wing, hand, and atmosphere customization
- Ready-to-use SVG promo artwork for release pages

## Ideal Visuals For The Repo

- Hero dashboard render with robot and KPI cards
- Robot lineup render showing the cute side of the product
- Visualization render highlighting charts and stat cards
- Live screenshot of the running local dashboard
- Customization drawer screenshot showing robot controls

## Suggested GitHub Release Notes

`v1.0.0` is the first polished archive build of OpenClaw Studio.

This release focuses on the single-agent local experience:

- stronger product naming and presentation
- cute robot identity with more professional positioning
- clearer visual storytelling for GitHub and ClawHub
- live dashboard status, trend, chat, and controls in one page
- release-ready artwork and supporting copy structure


path: MARKET_LISTING.md
content: # OpenClaw Studio

## One-Line Pitch

OpenClaw Studio is a polished local operations dashboard for OpenClaw, combining lovable robot identity, live visualization, and optional recovery controls in one clean experience.

## Short Description

Track one OpenClaw agent in real time from a dashboard that feels both cute and professional. OpenClaw Studio combines live agent state, efficiency trend, token visibility, and direct operator controls into a local-first interface that is easy to trust, easy to demo, and strong enough for ClawHub presentation.

## Core Value

- Make one OpenClaw agent readable in seconds.
- Present state, trend, and control in one low-noise surface.
- Add memorable robot personality without sacrificing professionalism.
- Give GitHub and ClawHub visitors something visually distinctive right away.

## Target User

- Solo builders running one primary OpenClaw agent
- Operators who want a lightweight local control surface
- Teams evaluating a future multi-agent dashboard direction

## Current Scope

- Single-agent local dashboard
- Live status, chat, and efficiency visualization
- macOS launchd integration
- Optional watchdog and auto-heal helpers
- Robot customization for branding and presentation

## Known Limits

- macOS-focused startup flow
- Assumes a local OpenClaw installation
- Not yet designed for multi-agent routing or shared team accounts

## Listing Assets To Prepare

- `assets/clawhub-cover.svg` as the cover visual
- `assets/github-hero.svg` as a wide promo visual
- 3 to 5 live dashboard screenshots from the running app
- 1 short demo GIF showing avatar plus dashboard response
- installation steps, version, and repository URL


path: PUBLISH_NOTES.txt
content: This folder is the clean ClawHub upload bundle for OpenClaw Studio.
It intentionally excludes logs, pid files, jsonl history, runtime state, and __pycache__.


path: README.md
content: <p align="center">
  <img src="./assets/github-hero.svg" alt="OpenClaw Studio hero banner" width="100%" />
</p>

# OpenClaw Studio

**A polished local operations dashboard for OpenClaw, with lovable robots, clear live visualization, and controls that feel professional instead of improvised.**

OpenClaw Studio turns one active OpenClaw worker into something you can actually supervise at a glance. It blends expressive robot identity, real-time status, efficiency tracking, chat access, and optional recovery controls into a single page that looks good enough for GitHub, ClawHub, and your own desktop.

## Why it feels different

- Cute robots on the surface, serious operational visibility underneath
- Live status, score, activity freshness, and trend signals in one glance
- A local-first dashboard that does not depend on a cloud backend
- A presentation layer strong enough for public release pages and listings
- Enough personality to make the product memorable without making it childish

## What you can do

- See whether your OpenClaw agent is working, thinking, idle, overdue, stalled, or down
- Watch efficiency and token-related signals move over time
- Nudge the agent directly from the dashboard
- Enable optional auto-heal and watchdog helpers for long silent periods
- Customize robot styles, headwear, hands, wings, themes, and background effects

## Cute Robot Showcase

<p align="center">
  <img src="./assets/robot-showcase.svg" alt="Cute OpenClaw robot styles" width="100%" />
</p>

The robot layer is not decorative filler. It gives the dashboard a recognizable face, makes state changes easier to notice, and gives GitHub and ClawHub a stronger first impression than a plain control panel screenshot.

## Visual Dashboard Showcase

<p align="center">
  <img src="./assets/visualization-showcase.svg" alt="OpenClaw Studio metrics and visualization showcase" width="100%" />
</p>

The visual side is designed to feel clean and readable: a clear hero area, dashboard cards with hierarchy, trend views that make progress legible, and enough atmosphere to feel premium without becoming noisy.

## Quick Start

Install and run locally:

```bash
python3 -m pip install -r requirements.txt
cp config.example.json config.json
./run_monitor.sh
```

Open the dashboard at `http://127.0.0.1:18991/`.

If you want it in the background instead, use:

```bash
./start_bg.sh
```

## Project Scope

- Single-agent local dashboard for OpenClaw
- Live status, chat panel, trend cards, and control actions
- macOS-friendly launch flow and helper scripts
- Optional watchdog and auto-heal support
- Publish-ready copy structure for GitHub and ClawHub

## Why it works for release pages

GitHub and ClawHub need more than a working tool. They need a product story, a recognizable face, and visuals that communicate value quickly. This repository now includes:

- a hero banner for README and social previews
- a robot lineup render for the cute side of the product
- a visualization render for the professional side
- structured release copy and screenshot planning documents

## Key Files

- `index.html`
- `server.py`
- `monitor_config.py`
- `config.example.json`
- `MARKET_LISTING.md`
- `GITHUB_RELEASE_COPY.md`
- `SCREENSHOT_PLAN.md`

## Release Direction

This repository is being prepared for:

1. GitHub publication
2. ClawHub listing
3. future multi-agent expansion


path: RELEASE_NOTES_1.0.0.md
content: # OpenClaw Studio 1.0.0

版本: `1.0.0`

备注:
- 这一版作为首个正式归档版本保存。
- 保留本地控制面板、自动催工、自愈和看门狗能力。
- 默认访问地址为 `http://127.0.0.1:18991/`。

归档说明:
- 源码目录: `arcade_monitor/`
- 打包文件: `../arcade_monitor_v1.0.0.zip`


path: SCREENSHOT_PLAN.md
content: # Screenshot Plan

## Goal

Prepare a small but strong visual set that explains the product in under 10 seconds on GitHub and ClawHub.

## Built Promo Art

The repository now includes ready-to-use SVG renders:

- `assets/github-hero.svg`
- `assets/robot-showcase.svg`
- `assets/visualization-showcase.svg`
- `assets/clawhub-cover.svg`

These can carry the page visually even before final live screenshots are captured.

## Required Live Shots

1. Hero dashboard
- Show avatar, title area, status, and score
- Keep the theme balanced and readable
- Use a robot style that feels friendly but competent

2. Trend and metrics
- Show the efficiency chart with clear card hierarchy
- Keep score and token-related signals visible together
- Include one or two surrounding stat cards

3. Chat and control
- Show the chat panel plus nudge / heal controls
- Make it obvious that this is interactive, not just decorative

4. Customization
- Open the settings drawer
- Show avatar controls, headwear, hands, wings, and background effects

5. Personality shot
- Focus on the avatar rail or a tight hero crop
- This is the cute robot marketing image for listings and social sharing

## Visual Rules

- Avoid noisy particle states in the final screenshots
- Keep layout clean and premium
- Prefer alive-looking robot states over exaggerated comedy poses
- Do not capture broken experiments or clipped limb states

## File Naming

- `01-live-hero-dashboard.png`
- `02-live-trend-and-metrics.png`
- `03-live-chat-and-controls.png`
- `04-live-customization-drawer.png`
- `05-live-avatar-personality.png`

## Optional Extras

- One 6 to 10 second GIF: avatar idle motion -> nudge button -> status / score response
- One cropped ClawHub preview image with robot left and dashboard right

## ClawHub Cover Suggestion

Use `assets/clawhub-cover.svg` immediately, then replace it later with a high-resolution crop from the real product if desired.


path: config.example.json
content: {
  "locale": "en-US",
  "theme": "crimson",
  "avatar_style": "robot_classic",
  "tap_action": "nudge",
  "hero_metric": "score",
  "deployment": {
    "mode": "local",
    "cloud_enabled": false,
    "cloud_url": ""
  },
  "dashboard": {
    "title": "OpenClaw Studio",
    "subtitle": "Local visual operations dashboard for one OpenClaw agent.",
    "widgets": [
      "agent_status",
      "autoheal",
      "chat",
      "efficiency_trend"
    ]
  },
  "agent": {
    "id": "main",
    "type": "openclaw",
    "display_name": "OpenClaw Main",
    "robot_name": "OpenClaw Main",
    "openclaw": {
      "home": "~/.openclaw",
      "session_key": "agent:main:main",
      "case_roots": [
        "~/Documents/OpenClaw/cases"
      ]
    }
  },
  "monitoring": {
    "force_work_mode": true,
    "require_reply_after_nudge": true,
    "force_idle_threshold_sec": 180,
    "normal_idle_threshold_rounds": 4,
    "overdue_threshold_rounds": 2,
    "soft_heal_cooldown_sec": 180,
    "hard_heal_cooldown_sec": 420,
    "allow_hard_restart": false
  }
}


path: install_launchd.sh
content: #!/bin/zsh
set -euo pipefail

DIR="$(cd "$(dirname "$0")" && pwd)"
UID_NOW=$(id -u)
LAUNCH_DIR="$HOME/Library/LaunchAgents"
mkdir -p "$LAUNCH_DIR"

MONITOR_PLIST="$LAUNCH_DIR/com.studywest.openclaw.arcade-monitor.plist"
AUTOHEAL_PLIST="$LAUNCH_DIR/com.studywest.openclaw.arcade-autoheal.plist"
WATCHDOG_PLIST="$LAUNCH_DIR/com.studywest.openclaw.app-watchdog.plist"

cat > "$MONITOR_PLIST" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.studywest.openclaw.arcade-monitor</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/python3</string>
    <string>-u</string>
    <string>$DIR/server.py</string>
  </array>
  <key>WorkingDirectory</key><string>$DIR</string>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>StandardOutPath</key><string>$DIR/launchd-monitor.out.log</string>
  <key>StandardErrorPath</key><string>$DIR/launchd-monitor.err.log</string>
</dict>
</plist>
EOF

cat > "$AUTOHEAL_PLIST" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.studywest.openclaw.arcade-autoheal</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/python3</string>
    <string>-u</string>
    <string>$DIR/autoheal.py</string>
  </array>
  <key>WorkingDirectory</key><string>$DIR</string>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>StandardOutPath</key><string>$DIR/launchd-autoheal.out.log</string>
  <key>StandardErrorPath</key><string>$DIR/launchd-autoheal.err.log</string>
</dict>
</plist>
EOF

cat > "$WATCHDOG_PLIST" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.studywest.openclaw.app-watchdog</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/bin/python3</string>
    <string>-u</string>
    <string>$DIR/app_watchdog.py</string>
  </array>
  <key>WorkingDirectory</key><string>$DIR</string>
  <key>RunAtLoad</key><true/>
  <key>StartInterval</key><integer>30</integer>
  <key>StandardOutPath</key><string>$DIR/launchd-watchdog.out.log</string>
  <key>StandardErrorPath</key><string>$DIR/launchd-watchdog.err.log</string>
</dict>
</plist>
EOF

# unload if exists
launchctl bootout "gui/$UID_NOW/com.studywest.openclaw.arcade-monitor" >/dev/null 2>&1 || true
launchctl bootout "gui/$UID_NOW/com.studywest.openclaw.arcade-autoheal" >/dev/null 2>&1 || true
launchctl bootout "gui/$UID_NOW/com.studywest.openclaw.app-watchdog" >/dev/null 2>&1 || true

launchctl bootstrap "gui/$UID_NOW" "$MONITOR_PLIST"
launchctl bootstrap "gui/$UID_NOW" "$AUTOHEAL_PLIST"
launchctl bootstrap "gui/$UID_NOW" "$WATCHDOG_PLIST"
launchctl enable "gui/$UID_NOW/com.studywest.openclaw.arcade-monitor"
launchctl enable "gui/$UID_NOW/com.studywest.openclaw.arcade-autoheal"
launchctl enable "gui/$UID_NOW/com.studywest.openclaw.app-watchdog"
launchctl kickstart -k "gui/$UID_NOW/com.studywest.openclaw.arcade-monitor"
launchctl kickstart -k "gui/$UID_NOW/com.studywest.openclaw.arcade-autoheal"
launchctl kickstart -k "gui/$UID_NOW/com.studywest.openclaw.app-watchdog"

echo "Installed and started launchd services."
echo "- com.studywest.openclaw.arcade-monitor"
echo "- com.studywest.openclaw.arcade-autoheal"
echo "- com.studywest.openclaw.app-watchdog"


path: manifest.yaml
content: name: "OpenClaw Studio"
slug: "openclaw-studio"
version: "1.0.0"
summary: "Professional local dashboard for OpenClaw with cute robot presentation, live status, trend visualization, chat, and optional auto-heal controls."
tags:
  - "openclaw"
  - "dashboard"
  - "monitoring"
  - "robotics"
  - "local-first"
license: "MIT"
entry: "SKILL.md"
homepage: "https://github.com/LucasZH7/openclaw-studio"
repository: "https://github.com/LucasZH7/openclaw-studio"


path: run_monitor.sh
content: #!/bin/zsh
set -euo pipefail
cd "$(dirname "$0")"
export MONITOR_HOST=127.0.0.1
export MONITOR_PORT=18991
exec /usr/bin/python3 server.py


path: start_bg.sh
content: #!/bin/zsh
set -euo pipefail
cd "$(dirname "$0")"

PORT="${MONITOR_PORT:-18991}"
HOST="${MONITOR_HOST:-127.0.0.1}"

if lsof -nP -iTCP:"$PORT" -sTCP:LISTEN >/dev/null 2>&1; then
  PID=$(lsof -nP -iTCP:"$PORT" -sTCP:LISTEN -t | head -n1)
  echo "$PID" > monitor.pid
  echo "Monitor already running on $HOST:$PORT (PID $PID)"
  exit 0
fi

MONITOR_HOST="$HOST" MONITOR_PORT="$PORT" /usr/bin/nohup /usr/bin/python3 -u server.py </dev/null >monitor.log 2>&1 &
PID=""
for _ in {1..10}; do
  sleep 1
  PID=$(lsof -nP -iTCP:"$PORT" -sTCP:LISTEN -t | head -n1 || true)
  if [[ -n "$PID" ]]; then
    break
  fi
done

if [[ -z "$PID" ]]; then
  echo "Monitor log:"
  tail -n 40 monitor.log || true
  echo "Failed to start monitor"
  exit 1
fi

echo "$PID" > monitor.pid
echo "Monitor started on $HOST:$PORT (PID $PID)"


path: stop_monitor.sh
content: #!/bin/zsh
set -euo pipefail
cd "$(dirname "$0")"

if lsof -nP -iTCP:18991 -sTCP:LISTEN >/dev/null 2>&1; then
  PID=$(lsof -nP -iTCP:18991 -sTCP:LISTEN -t | head -n1)
  kill "$PID"
  rm -f monitor.pid
  echo "Stopped monitor PID $PID"
  exit 0
fi

echo "Monitor not running"


path: uninstall_launchd.sh
content: #!/bin/zsh
set -euo pipefail

UID_NOW=$(id -u)
LAUNCH_DIR="$HOME/Library/LaunchAgents"
MONITOR_LABEL="com.studywest.openclaw.arcade-monitor"
AUTOHEAL_LABEL="com.studywest.openclaw.arcade-autoheal"
WATCHDOG_LABEL="com.studywest.openclaw.app-watchdog"

launchctl bootout "gui/$UID_NOW/$MONITOR_LABEL" >/dev/null 2>&1 || true
launchctl bootout "gui/$UID_NOW/$AUTOHEAL_LABEL" >/dev/null 2>&1 || true
launchctl bootout "gui/$UID_NOW/$WATCHDOG_LABEL" >/dev/null 2>&1 || true
rm -f "$LAUNCH_DIR/$MONITOR_LABEL.plist" "$LAUNCH_DIR/$AUTOHEAL_LABEL.plist" "$LAUNCH_DIR/$WATCHDOG_LABEL.plist"

echo "Uninstalled launchd services."


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)