Configure OpenClaw (DEPRECATED)
DEPRECATED: This skill is deprecated and will be removed in a future version. Please use /oh-my-claudecode:configure-notifications and select "Custom Integration (OpenClaw, n8n, CLI, etc.)" instead.
The new approach provides:
-
Same OpenClaw functionality
-
Additional presets (n8n, ClawdBot)
-
Generic webhook and CLI support
-
Migration tool for existing configs
Migration Notice
When this skill is invoked, show the deprecation warning and redirect:
Message to display:
⚠️ DEPRECATION NOTICE
The /configure-openclaw skill is deprecated and will be removed in a future version.
Please use instead: /oh-my-claudecode:configure-notifications
Then select: "Custom Integration (OpenClaw, n8n, CLI, etc.)" → "OpenClaw Gateway"
The new wizard will:
- Detect your existing OpenClaw config (if any)
- Offer to migrate it automatically
- Provide the same functionality with better UX
AskUserQuestion:
Question: "The configure-openclaw skill is deprecated. How would you like to proceed?"
Options:
-
Open the new configure-notifications wizard (Recommended) - Redirect to the new skill
-
Continue with legacy setup - Use this deprecated skill anyway
-
Learn more about the migration - Show detailed migration information
If option 1: Redirect to /oh-my-claudecode:configure-notifications
If option 2: Continue with legacy instructions below If option 3: Show detailed migration guide
Legacy Instructions
The following instructions are kept for backward compatibility but will be removed.
name: configure-openclaw description: Configure OpenClaw gateway integration for waking external automations and AI agents on hook events triggers:
-
"configure openclaw"
-
"setup openclaw"
-
"openclaw gateway"
-
"openclaw setup"
Configure OpenClaw
Set up OpenClaw so OMC can wake external gateways — triggering automations, workflows, or AI agents — when hook events fire during Claude sessions.
OpenClaw is NOT a notification system. It sends structured instruction payloads to programmable HTTPS endpoints. This makes it ideal for triggering n8n workflows, custom AI agents, webhook automations, or any HTTPS-capable system.
How This Skill Works
This is an interactive, natural-language configuration skill. Walk the user through setup by asking questions with AskUserQuestion. Write the result to ~/.claude/omc_config.openclaw.json .
Step 1: Detect Existing Configuration
CONFIG_FILE="${OMC_OPENCLAW_CONFIG:-$HOME/.claude/omc_config.openclaw.json}"
if [ -f "$CONFIG_FILE" ]; then IS_ENABLED=$(jq -r '.enabled // false' "$CONFIG_FILE" 2>/dev/null) GATEWAY_COUNT=$(jq -r '.gateways | keys | length' "$CONFIG_FILE" 2>/dev/null) HOOK_COUNT=$(jq -r '[.hooks | to_entries[] | select(.value.enabled == true)] | length' "$CONFIG_FILE" 2>/dev/null)
if [ "$IS_ENABLED" = "true" ]; then echo "EXISTING_CONFIG=true" echo "GATEWAY_COUNT=$GATEWAY_COUNT" echo "HOOK_COUNT=$HOOK_COUNT" else echo "EXISTING_CONFIG=false" fi else echo "NO_CONFIG_FILE" fi
If existing config is found, show the user what's currently configured and ask if they want to update or reconfigure.
Step 2: Collect Gateway URL
Use AskUserQuestion:
Question: "What is your OpenClaw gateway URL? (Must be HTTPS, e.g. https://my-gateway.example.com/wake)"
The user will type their URL in the "Other" field.
Validate the URL:
-
Must start with https://
-
Must be a valid URL
-
If invalid, explain the requirement and ask again
Step 3: Collect Auth Header (Optional)
Use AskUserQuestion:
Question: "Does your gateway require an Authorization header?"
Options:
-
Yes, Bearer token - I'll provide a Bearer token (e.g., Bearer sk-... )
-
Yes, custom header value - I'll type the full header value
-
No auth required - The gateway is open or uses a different auth method
If user selects option 1 or 2, ask:
Question: "Paste your Authorization header value (e.g., Bearer sk-mytoken123 )"
The user will type the value in the "Other" field.
Step 4: Configure Hook Events
Use AskUserQuestion with multiSelect:
Question: "Which hook events should trigger your OpenClaw gateway?"
Options (multiSelect: true):
-
session-start - When a new Claude session begins. Variables: {{sessionId}} , {{projectName}} , {{projectPath}}
-
session-end - When a session ends. Variables: {{contextSummary}} , {{reason}} , {{sessionId}}
-
stop - When Claude stops (idle/completion). Variables: {{sessionId}} , {{projectName}}
-
pre-tool-use - Before each tool call (high frequency). Variables: {{toolName}} , {{sessionId}}
-
post-tool-use - After each tool call (high frequency). Variables: {{toolName}} , {{sessionId}}
-
keyword-detector - On every prompt submission. Variables: {{prompt}} , {{sessionId}}
-
ask-user-question - When Claude needs user input. Variables: {{question}} , {{sessionId}}
Default selection: session-start, session-end, stop.
Note: pre-tool-use, post-tool-use, and keyword-detector fire very frequently. Only enable them if your gateway can handle the volume.
Step 5: Collect Instruction Templates
For each selected event, ask the user for an instruction template. Show the available template variables for that event type.
Use AskUserQuestion for each event:
Example for session-start:
Question: "Instruction template for session-start events. Available variables: {{sessionId}} , {{projectName}} , {{projectPath}} , {{timestamp}} "
Options:
-
Use default - "Session started for project {{projectName}}"
-
Custom - Enter my own instruction text
Example for session-end:
Question: "Instruction template for session-end events. Available variables: {{sessionId}} , {{projectName}} , {{contextSummary}} , {{reason}} , {{timestamp}} "
Options:
-
Use default - "Session ended. Summary: {{contextSummary}}"
-
Custom - Enter my own instruction text
Example for stop:
Question: "Instruction template for stop events. Available variables: {{sessionId}} , {{projectName}} , {{projectPath}} , {{timestamp}} "
Options:
-
Use default - "Session stopping for project {{projectName}}"
-
Custom - Enter my own instruction text
Example for pre-tool-use:
Question: "Instruction template for pre-tool-use events. Available variables: {{toolName}} , {{sessionId}} , {{projectName}} , {{timestamp}} "
Options:
-
Use default - "Tool {{toolName}} about to be used"
-
Custom - Enter my own instruction text
Example for post-tool-use:
Question: "Instruction template for post-tool-use events. Available variables: {{toolName}} , {{sessionId}} , {{projectName}} , {{timestamp}} "
Options:
-
Use default - "Tool {{toolName}} completed"
-
Custom - Enter my own instruction text
Example for keyword-detector:
Question: "Instruction template for keyword-detector events. Available variables: {{prompt}} , {{sessionId}} , {{projectName}} , {{timestamp}} "
Options:
-
Use default - "Keyword detected: {{prompt}}"
-
Custom - Enter my own instruction text
Example for ask-user-question:
Question: "Instruction template for ask-user-question events. Available variables: {{question}} , {{sessionId}} , {{projectName}} , {{timestamp}} "
Options:
-
Use default - "User input requested: {{question}}"
-
Custom - Enter my own instruction text
Step 6: Write Configuration
Build and write the config to ~/.claude/omc_config.openclaw.json :
CONFIG_FILE="${OMC_OPENCLAW_CONFIG:-$HOME/.claude/omc_config.openclaw.json}" mkdir -p "$(dirname "$CONFIG_FILE")"
GATEWAY_URL, AUTH_HEADER, and per-event instructions are collected from user
SELECTED_EVENTS is the list of enabled hook events
Build the JSON using jq
Example: session-start and session-end selected, bearer auth
jq -n
--arg gateway_url "$GATEWAY_URL"
--arg auth_header "$AUTH_HEADER"
--arg session_start_instruction "$SESSION_START_INSTRUCTION"
--arg session_end_instruction "$SESSION_END_INSTRUCTION"
--arg stop_instruction "$STOP_INSTRUCTION"
'{
enabled: true,
gateways: {
"my-gateway": {
url: $gateway_url,
headers: (if $auth_header != "" then {"Authorization": $auth_header} else {} end),
method: "POST",
timeout: 10000
}
},
hooks: {
"session-start": {gateway: "my-gateway", instruction: $session_start_instruction, enabled: true},
"session-end": {gateway: "my-gateway", instruction: $session_end_instruction, enabled: true},
"stop": {gateway: "my-gateway", instruction: $stop_instruction, enabled: true}
}
}' > "$CONFIG_FILE"
Adjust the hooks object to include only the events the user selected, with their chosen instructions.
Step 7: Test the Gateway
After writing config, offer to send a test wake call:
Use AskUserQuestion:
Question: "Send a test wake call to your gateway to verify the connection?"
Options:
-
Yes, test now (Recommended) - Send a test HTTP POST to the gateway
-
No, I'll test later - Skip testing
If testing:
GATEWAY_URL="USER_PROVIDED_URL" AUTH_HEADER="USER_PROVIDED_AUTH_HEADER" # may be empty
Build auth header arg
AUTH_ARG="" if [ -n "$AUTH_HEADER" ]; then AUTH_ARG="-H "Authorization: $AUTH_HEADER"" fi
RESPONSE=$(eval curl -s -w "\n%{http_code}"
-H "Content-Type: application/json"
$AUTH_ARG
-d '{"event":"session-start","instruction":"OpenClaw test wake from OMC configure wizard","timestamp":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","context":{}}'
"$GATEWAY_URL")
HTTP_CODE=$(echo "$RESPONSE" | tail -1) BODY=$(echo "$RESPONSE" | head -1)
if [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "201" ] || [ "$HTTP_CODE" = "202" ] || [ "$HTTP_CODE" = "204" ]; then echo "Test wake succeeded (HTTP $HTTP_CODE)!" else echo "Test wake failed (HTTP $HTTP_CODE):" echo "$BODY" fi
Report success or failure. Common issues:
-
401 Unauthorized: Auth header is missing or incorrect
-
403 Forbidden: Token does not have permission
-
404 Not Found: Gateway URL path is incorrect
-
SSL error: URL must be HTTPS with a valid certificate
-
Connection refused: Gateway is not running or URL is wrong
Step 8: Confirm
Display the final configuration summary:
OpenClaw Gateway Configured!
Gateway: https://my-gateway.example.com/wake Auth: Bearer *** (configured) Events: session-start, session-end, stop
Config saved to: ~/.claude/omc_config.openclaw.json
To activate OpenClaw, use one of: omc --openclaw (per-session flag) export OMC_OPENCLAW=1 (environment variable)
Debug logging: export OMC_OPENCLAW_DEBUG=1 (logs wake results to stderr)
Custom config path: export OMC_OPENCLAW_CONFIG=/path/to/config.json
To reconfigure: /oh-my-claudecode:configure-openclaw
Template Variables Reference
Event Available Variables
session-start
{{sessionId}} , {{projectPath}} , {{projectName}} , {{timestamp}} , {{event}}
session-end
{{sessionId}} , {{projectPath}} , {{projectName}} , {{contextSummary}} , {{reason}} , {{timestamp}} , {{event}}
pre-tool-use
{{sessionId}} , {{projectPath}} , {{projectName}} , {{toolName}} , {{timestamp}} , {{event}}
post-tool-use
{{sessionId}} , {{projectPath}} , {{projectName}} , {{toolName}} , {{timestamp}} , {{event}}
stop
{{sessionId}} , {{projectPath}} , {{projectName}} , {{timestamp}} , {{event}}
keyword-detector
{{sessionId}} , {{projectPath}} , {{projectName}} , {{prompt}} , {{timestamp}} , {{event}}
ask-user-question
{{sessionId}} , {{projectPath}} , {{projectName}} , {{question}} , {{timestamp}} , {{event}}
Unresolved variables (e.g., {{unknown}} ) are left as-is in the instruction text.
Environment Variable Alternative
Users can skip this wizard entirely by setting env vars and writing the config manually:
Enable OpenClaw
export OMC_OPENCLAW=1
Optional: override config file path
export OMC_OPENCLAW_CONFIG="$HOME/.claude/omc_config.openclaw.json"
Optional: enable debug logging
export OMC_OPENCLAW_DEBUG=1
The config file path defaults to ~/.claude/omc_config.openclaw.json . Use OMC_OPENCLAW_CONFIG to override.