Skip to content

/setup

Detects your Python environment and guides you through installing plugin dependencies. Use on first-time setup or when MCP server fails to start.

shell
$ npx -y skills add bitwize-music-studio/claude-ai-music-skills --skill setup --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/setup
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

Detects your Python environment and guides you through installing plugin dependencies. Use on first-time setup or when MCP server fails to start.

SKILL.md

setup.SKILL.md
name: setup
description: Detects your Python environment and guides you through installing plugin dependencies. Use on first-time setup or when MCP server fails to start.
argument-hint: <blank for full check | "mcp" | "mastering" | "document-hunter">
model: haiku
allowed-tools:
  - Bash

Base directory for this skill: ${CLAUDE_PLUGIN_BASE_DIR}

Your Task

Guide the user through installing bitwize-music plugin dependencies based on their Python environment and requested components.

---

Setup Assistant

You help users install and verify plugin dependencies.

---

Step 1: Detect Environment

**Run these checks in parallel:**

# Python version
python3 --version

# Check if externally managed
python3 -c "import sysconfig; print(sysconfig.get_path('purelib'))" 2>&1 | grep -q "/usr" && echo "EXTERNALLY_MANAGED" || echo "USER_MANAGED"

# Check for pipx
command -v pipx >/dev/null 2>&1 && echo "pipx: installed" || echo "pipx: not installed"

# Check for venv support
python3 -m venv --help >/dev/null 2>&1 && echo "venv: supported" || echo "venv: not supported"

# Platform
uname -s

---

Step 2: Check Component Status

**IMPORTANT:** Run these checks **sequentially**, not in parallel. If one check fails, continue with the remaining checks to show complete status.

**CRITICAL:** Always check the venv, not system Python!

# Set venv path (macOS/Linux/WSL uses bin/python3; native Windows uses Scripts/python.exe)
VENV_PYTHON=~/.bitwize-music/venv/bin/python3
[ -f "$VENV_PYTHON" ] || VENV_PYTHON=~/.bitwize-music/venv/Scripts/python.exe

# Check if venv exists
if [ -f "$VENV_PYTHON" ]; then
    echo "✅ Venv exists at ~/.bitwize-music/venv"

    # Check each component in the venv
    $VENV_PYTHON -c "import mcp; print('✅ mcp installed')" 2>&1 || echo "❌ mcp not installed"
    $VENV_PYTHON -c "import matchering; print('✅ matchering installed')" 2>&1 || echo "❌ matchering not installed"
    $VENV_PYTHON -c "import boto3; print('✅ boto3 installed')" 2>&1 || echo "❌ boto3 not installed"
    $VENV_PYTHON -c "from playwright.sync_api import sync_playwright; print('✅ playwright installed')" 2>&1 || echo "❌ playwright not installed"

    # Check for version drift against requirements.txt
    $VENV_PYTHON -c "
import importlib.metadata, pathlib
reqs = pathlib.Path('${CLAUDE_PLUGIN_ROOT}/requirements.txt').read_text()
stale = []
for line in reqs.splitlines():
    line = line.split('#')[0].strip()
    if not line or '==' not in line:
        continue
    name, _, ver = line.partition('==')
    name = name.split('[')[0].strip()
    try:
        installed = importlib.metadata.version(name)
        if installed != ver:
            stale.append(f'  {name}: {installed} → {ver}')
    except importlib.metadata.PackageNotFoundError:
        stale.append(f'  {name}: missing (needs {ver})')
if stale:
    print('⚠️  Version drift detected:')
    print('\n'.join(stale))
else:
    print('✅ All package versions match requirements.txt')
" 2>&1
else
    echo "❌ Venv not found at ~/.bitwize-music/venv"
    echo "   Run: python3 -m venv ~/.bitwize-music/venv   # macOS/Linux/WSL"
    echo "   Or:  py -3 -m venv ~/.bitwize-music/venv      # Windows"
fi

All components are installed together in the venv via requirements.txt.

---

Step 3: Show Installation Commands

**Always use the unified venv approach** — it works on all platforms and is automatically detected by the plugin.

# Create unified venv (if it doesn't exist)
python3 -m venv ~/.bitwize-music/venv                                                    # macOS/Linux/WSL
py -3 -m venv ~/.bitwize-music/venv                                                       # Windows (native)

# Install ALL plugin dependencies
~/.bitwize-music/venv/bin/pip install -r ${CLAUDE_PLUGIN_ROOT}/requirements.txt                     # macOS/Linux/WSL
~/.bitwize-music/venv/Scripts/python.exe -m pip install -r ${CLAUDE_PLUGIN_ROOT}/requirements.txt   # Windows (native)

# Set up document hunter browser
~/.bitwize-music/venv/bin/playwright install chromium                                     # macOS/Linux/WSL
~/.bitwize-music/venv/Scripts/playwright.exe install chromium                             # Windows (native)

**That's it!** The plugin automatically detects and uses the platform venv (`~/.bitwize-music/venv` on macOS/Linux/WSL, `%USERPROFILE%\.bitwize-music\venv` on native Windows). No configuration needed.

**Works on:**

  • ✅ Linux (externally-managed Python)
  • ✅ macOS
  • ✅ Windows (native — Core tier, best-effort; audio tooling needs WSL2)
  • ✅ Windows (WSL)
  • ✅ All other systems

---

Step 4: Installation Guide

Present a clear, simple installation guide:

1. **Environment detected**: [Python version, Platform] 2. **Missing components**: [list what needs to be installed] 3. **Installation commands**:

   python3 -m venv ~/.bitwize-music/venv                                                  # macOS/Linux/WSL
   ~/.bitwize-music/venv/bin/pip install -r ${CLAUDE_PLUGIN_ROOT}/requirements.txt         # macOS/Linux/WSL
   ~/.bitwize-music/venv/bin/playwright install chromium                                   # macOS/Linux/WSL

   py -3 -m venv ~/.bitwize-music/venv                                                               # Windows (native)
   ~/.bitwize-music/venv/Scripts/python.exe -m pip install -r ${CLAUDE_PLUGIN_ROOT}/requirements.txt # Windows (native)
   ~/.bitwize-music/venv/Scripts/playwright.exe install chromium                                     # Windows (native)

4. **After installation**:

  • Restart Claude Code to reload the plugin
  • MCP server should show as running in `/plugin` status
  • Run `/bitwize-music:setup` again to verify

---

Step 5: Verify Installation (if requested)

After user reports they've installed, re-run the checks from Step 2 and confirm:

✅ **MCP server**: Ready ✅ **Audio mastering**: Ready ✅ **Cloud uploads**: Ready ✅ **Document hunter**: Ready

**Next steps**: Run `/bitwize-

Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withbitwize-music

I love music but never learned an instrument. AI became the creative outlet that was always out of reach. This project started as a way to go deep on Claude Code plugin architecture, agentic workflows, multi-model orchestration, and MCP tooling.

Get the whole plugin, auto-invoked
Stats
399
Stars
0
Views
93
Forks
Active
Maintenance
Python
Language
CC0-1.0
License
3d ago
Last commit
6mo ago
Created

Repo: bitwize-music-studio/claude-ai-music-skills