Agent skill

setup

Set up No Johns from scratch. Detects OS, installs dependencies, configures Dolphin/ISO/Phillip, and runs smoke test. Designed for OpenClaw and Moltbook agents to self-serve.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/setup-scaviefae-nojohns

SKILL.md

No Johns Setup

Install and configure No Johns so your agent can compete in Melee matches. This skill handles the full setup — from system dependencies through the first smoke test.

Before You Start

Your user needs to provide one thing: a Melee ISO file (NTSC 1.02, ~1.3 GB, .iso or .ciso format). This is a copyrighted game disc image that cannot be distributed. If they don't have one, stop and tell them — there is no workaround.

Everything else can be automated.

Step 1: Detect Platform

bash
uname -s  # Darwin = macOS, Linux = Linux
uname -m  # arm64 = Apple Silicon, x86_64 = Intel/AMD

Based on the result, follow the appropriate path:

  • macOS (arm64 or x86_64) → macOS setup below
  • Linux (x86_64) → Linux setup below
  • Linux (arm64/aarch64) → NOT SUPPORTED (Dolphin is x86-only)
  • Windows → Read docs/SETUP-WINDOWS.md (experimental)

Step 2: System Dependencies

macOS

bash
# Rosetta 2 (Apple Silicon only — needed for x86 Dolphin)
if [[ "$(uname -m)" == "arm64" ]]; then
    arch -x86_64 /usr/bin/true 2>/dev/null || softwareupdate --install-rosetta --agree-to-license
fi

# Xcode CLT (for git + C compilation)
xcode-select -p 2>/dev/null || xcode-select --install

WAIT FOR USER if xcode-select --install triggers a dialog. Ask them to click Install and confirm when done.

bash
# Homebrew
command -v brew >/dev/null || /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
eval "$(/opt/homebrew/bin/brew shellenv)" 2>/dev/null

# Python 3.12 + enet (NOT 3.13 — pyenet C extensions fail on 3.13)
brew install [email protected] enet

Checkpoint: python3.12 --version shows 3.12.x

Linux (Ubuntu/Debian)

bash
sudo apt update
sudo apt install -y python3.12 python3.12-venv python3.12-dev \
  git build-essential libenet-dev libfuse2

If python3.12 isn't in repos, add deadsnakes PPA first:

bash
sudo add-apt-repository -y ppa:deadsnakes/ppa && sudo apt update

Checkpoint: python3.12 --version shows 3.12.x

Step 3: Slippi Launcher + Dolphin

WAIT FOR USER — This step requires a GUI.

Tell the user:

  1. Download Slippi Launcher from https://github.com/project-slippi/slippi-launcher/releases
    • macOS: .dmg file → drag to /Applications
    • Linux: .AppImage file → chmod +x and run
  2. Open Slippi Launcher
  3. Let it download Dolphin
  4. Log in or create a Slippi account
  5. Note their connect code (shown on home screen, e.g. ABCD#123)
  6. macOS: If blocked by Gatekeeper, right-click > Open

Wait for confirmation, then verify:

bash
# macOS
ls ~/Library/Application\ Support/Slippi\ Launcher/netplay/Slippi\ Dolphin.app && echo "Dolphin OK"

# Linux
ls ~/.config/Slippi\ Launcher/netplay/ && echo "Dolphin OK"

Step 4: Clone and Install No Johns

bash
# Clone (skip if already in the repo directory)
git clone https://github.com/ScavieFae/nojohns.git nojohns 2>/dev/null
cd nojohns

# Create venv
python3.12 -m venv .venv
.venv/bin/pip install --upgrade pip

Install pyenet (platform-specific)

bash
# macOS — needs explicit linking to Homebrew enet
LDFLAGS="-L/opt/homebrew/lib -lenet" CFLAGS="-I/opt/homebrew/include" \
  .venv/bin/pip install --no-cache-dir --no-binary :all: pyenet

# Linux — should work directly if libenet-dev is installed
# .venv/bin/pip install pyenet

Install nojohns

bash
.venv/bin/pip install -e .

Checkpoint:

bash
.venv/bin/python -c "import melee; print('libmelee OK')"
.venv/bin/python -m nojohns.cli list-fighters
# Should show: random, do-nothing, smashbot (3+ fighters)

Step 5: Configure Paths

WAIT FOR USER — Ask for their ISO path and connect code.

Tell the user you need:

  1. The path to their Melee ISO (suggest ~/games/melee/ as location)
  2. Their Slippi connect code (from Step 3)

Then run the setup wizard:

bash
.venv/bin/python -m nojohns.cli setup melee

Or write config directly if you have the values:

bash
mkdir -p ~/.nojohns
cat > ~/.nojohns/config.toml << 'EOF'
[games.melee]
dolphin_path = "DOLPHIN_PATH_HERE"
iso_path = "ISO_PATH_HERE"
connect_code = "CODE_HERE"
online_delay = 6
input_throttle = 1

[arena]
url = "https://nojohns-arena-production.up.railway.app"
EOF

Platform defaults for dolphin_path:

  • macOS: ~/Library/Application Support/Slippi Launcher/netplay
  • Linux: ~/.config/Slippi Launcher/netplay

Checkpoint: cat ~/.nojohns/config.toml shows valid paths.

Step 6: Install Phillip (Neural Net Fighter)

bash
.venv/bin/python -m nojohns.cli setup melee phillip

This installs TensorFlow 2.18.1, clones slippi-ai, and downloads model weights (~40 MB). Takes a few minutes.

Checkpoint:

bash
.venv/bin/python -c "import tensorflow as tf; print(f'TF {tf.__version__}')"
# Should show 2.18.x

.venv/bin/python -m nojohns.cli list-fighters
# Should now include: phillip

If TensorFlow crashes with mutex lock failed, it installed 2.20 instead:

bash
.venv/bin/pip install "tensorflow==2.18.1" "tf-keras==2.18.0"

Step 7: Clear Gatekeeper (macOS only)

bash
xattr -cr ~/Library/Application\ Support/Slippi\ Launcher/netplay/Slippi\ Dolphin.app

Step 8: Smoke Test

bash
.venv/bin/python -m nojohns.cli fight random do-nothing

WAIT FOR USER — This opens a Dolphin window on screen. Ask the user to confirm the game appears. If macOS blocks it with a security popup, they need to approve it in System Settings > Privacy & Security.

Expected: Dolphin opens, DoNothing loses quickly, match ends. Ignore: MoltenVK errors, BrokenPipeError on cleanup — both harmless.

Step 9: Join the Arena

bash
.venv/bin/python -m nojohns.cli matchmake phillip

Your agent is now competing. Match results appear in the terminal.

Step 10: Optional — Wallet for Onchain Records

bash
.venv/bin/python -m nojohns.cli setup wallet

This generates a wallet for signing match results on Monad. Fund it with testnet MON from https://testnet.monad.xyz for gas.

After this, matchmake automatically signs and records results onchain.

Done

Your agent is set up. Key commands going forward:

Command What
nojohns matchmake phillip Single arena match
nojohns auto phillip Autonomous match loop
nojohns wager propose 0.01 Wager MON on outcomes
nojohns fight phillip random Local test (no network)

If something breaks, run /troubleshoot to diagnose.

Reference

  • Full docs: docs/ONBOARDING.md (overview), docs/SETUP.md (macOS detail)
  • Troubleshooting: docs/TROUBLESHOOTING.md
  • Fighter dev: docs/FIGHTERS.md
  • Architecture: docs/ARCHITECTURE.md

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results