Skip to content
Automation
Skill

/setup

Run initial ClaudeClaw setup. Use when user wants to install dependencies, authenticate messaging channels, register their main channel, or start the background services. Triggers on "setup", "install", "configure claudeclaw", or first-time setup requests.

From plugin
claudeclaw
18927 skills
Install
$ npx -y skills add sbusso/claudeclaw --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.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/setup

Context preview

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

Run initial ClaudeClaw setup. Use when user wants to install dependencies, authenticate messaging channels, register their main channel, or start the background services. Triggers on "setup", "install", "configure claudeclaw", or first-time setup requests.

SKILL.md

setup.SKILL.md
name: setup
description: Run initial ClaudeClaw setup. Use when user wants to install dependencies, authenticate messaging channels, register their main channel, or start the background services. Triggers on "setup", "install", "configure claudeclaw", or first-time setup requests.

ClaudeClaw Setup

Run setup steps automatically. Only pause when user action is required (channel authentication, configuration choices). Setup uses `bash setup.sh` for bootstrap, then `npx tsx setup/index.ts --step <name>` for all other steps. Steps emit structured status blocks to stdout. Verbose logs go to `logs/setup.log`.

**Principle:** When something is broken or missing, fix it. Don't tell the user to go fix it themselves unless it genuinely requires their manual action (e.g. authenticating a channel, pasting a secret token). If a dependency is missing, install it. If a service won't start, diagnose and repair. Ask the user for permission when needed, then do the work.

**UX Note:** Use `AskUserQuestion` for all user-facing questions.

Mode Detection

Before any steps, detect the execution mode:

cat .claude-plugin/plugin.json 2>/dev/null | grep '"name": "claudeclaw"' && echo "DEVELOPER_MODE" || echo "PLUGIN_MODE"

If `.claude-plugin/plugin.json` exists in the current directory AND contains `"name": "claudeclaw"`, we're inside the ClaudeClaw repo → **Developer mode**. Otherwise, the skill was loaded via `--plugin-dir` → **Plugin mode**.

Directory = Instance model

The current working directory IS the ClaudeClaw instance. All state (`.env`, `store/`, `groups/`, `logs/`) lives in cwd. Multiple instances = multiple directories. No hidden state, no `~/.claude/plugin-data/`.

**Plugin mode** (no `.claude-plugin/` in cwd):

  • Skip step 0 (Git & Fork) entirely
  • The current directory is the data directory — all state goes here
  • Plugin code directory: `${CLAUDE_PLUGIN_ROOT}`
  • Ensure data directories exist: `mkdir -p store groups logs`
  • Check for `.claudeclaw.json` — if it exists, this directory has been set up before; if not, this is a fresh setup

**CRITICAL — Plugin mode command prefix:** All `npx tsx setup/index.ts` commands in subsequent steps MUST be run from the plugin code directory with `CLAUDE_PLUGIN_ROOT` set, but the working directory for the service must be the USER's current directory (the data dir). Use this pattern:

cd ${CLAUDE_PLUGIN_ROOT} && CLAUDECLAW_ENV_FILE=$(pwd)/.env npx tsx setup/index.ts --step <name>

Where `$(pwd)` resolves to the user's data directory BEFORE the `cd`. Store the data dir first:

MCLAW_PROJECT=$(pwd) && cd ${CLAUDE_PLUGIN_ROOT} && CLAUDECLAW_PROJECT_DIR=$MCLAW_PROJECT CLAUDECLAW_ENV_FILE=$MCLAW_PROJECT/.env npx tsx setup/index.ts --step <name>

`CLAUDECLAW_PROJECT_DIR` tells setup scripts the actual project directory (where `.env`, `store/`, `groups/`, `logs/` live). Without it, they fall back to `process.cwd()` which is the plugin code root after the `cd`.

**Developer mode** (`.claude-plugin/` in cwd):

  • Proceed with all steps unchanged
  • Code and state live in the same directory

0. Git & Fork Setup (Developer mode only)

**Plugin mode:** Skip this step entirely — there is no git repo to manage.

Check the git remote configuration to ensure the user has a fork and upstream is configured.

Run:

  • `git remote -v`

**Case A — `origin` points to `sbusso/claudeclaw` (user cloned directly):**

The user cloned instead of forking. AskUserQuestion: "You cloned ClaudeClaw directly. We recommend forking so you can push your customizations. Would you like to set up a fork?"

  • Fork now (recommended) — walk them through it
  • Continue without fork — they'll only have local changes

If fork: instruct the user to fork `sbusso/claudeclaw` on GitHub (they need to do this in their browser), then ask them for their GitHub username. Run:

git remote rename origin upstream
git remote add origin https://github.com/<their-username>/claudeclaw.git
git push --force origin main

Verify with `git remote -v`.

If continue without fork: add upstream so they can still pull updates:

git remote add upstream https://github.com/sbusso/claudeclaw.git

**Case B — `origin` points to user's fork, no `upstream` remote:**

Add upstream:

git remote add upstream https://github.com/sbusso/claudeclaw.git

**Case C — both `origin` (user's fork) and `upstream` (qwibitai) exist:**

Already configured. Continue.

**Verify:** `git remote -v` should show `origin` → user's repo, `upstream` → `sbusso/claudeclaw.git`.

1. Bootstrap (Node.js + Dependencies)

**Plugin mode:** Dependencies are pre-installed in the plugin directory. Verify only:

  • `node --version` (must be 20+)
  • `ls dist/service.js` (must exist — if not, run `npm run build` in the plugin dir)
  • If agent runner needs compilation: `cd agent/runner && npx tsc`
  • Skip `bash setup.sh` entirely.

**Developer mode:** Run `bash setup.sh` and parse the status block.

  • If NODE_OK=false → Node.js is missing or too old. Use `AskUserQuestion: Would you like me to install Node.js 22?` If confirmed:
  • macOS: `brew install node@22` (if brew available) or install nvm then `nvm install 22`
  • Linux: `curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs`, or nvm
  • After installing Node, re-run `bash setup.sh`
  • If DEPS_OK=false → Read `logs/setup.log`. Try: delete `node_modules`, re-run `bash setup.sh`. If native module build fails, install build tools (`xcode-select --install` on macOS, `build-essential` on Linux), then retry.
  • If NATIVE_OK=false → better-sqlite3 failed to load. Install build tools and re-run.
  • Record PLATFORM and IS_WSL for later steps.

2. Check Environment

Run `npx tsx setup/index.ts --step environment` and parse the status block.

  • If HAS_AUTH=true → WhatsApp is already configured, note for step 5
  • If HAS_REGISTERED_GROUPS=true → note existing config, offer to skip or reconfigure
  • Record APPLE_CON
Read more
Ships withclaudeclaw

Use Claude to orchestrate agents like OpenClaw

Get the whole plugin
Stats
189
Stars
61
Forks
Active
Maintenance
TypeScript
Language
MIT
License
20h ago
Last commit
4mo ago
Created

Repo: sbusso/claudeclaw