From 3bfe632055c77b2e7642f6cfb5aca475622a4c2e Mon Sep 17 00:00:00 2001 From: Michael Wegener Date: Wed, 11 Mar 2026 23:14:55 +0100 Subject: [PATCH] Update project files and track untracked files --- .junie/memory/errors.md | 0 .junie/memory/feedback.md | 16 + .junie/memory/language.json | 1 + .junie/memory/memory.version | 1 + .junie/memory/tasks.md | 0 node_foreground.log | 3 + plugins.json | 2119 ++++++++++++++++++++++++++++++++++ plugins.txt | 99 ++ skills.json | 988 ++++++++++++++++ skills.txt | 148 +++ 10 files changed, 3375 insertions(+) create mode 100644 .junie/memory/errors.md create mode 100644 .junie/memory/feedback.md create mode 100644 .junie/memory/language.json create mode 100644 .junie/memory/memory.version create mode 100644 .junie/memory/tasks.md create mode 100644 node_foreground.log create mode 100644 plugins.json create mode 100644 plugins.txt create mode 100644 skills.json create mode 100644 skills.txt diff --git a/.junie/memory/errors.md b/.junie/memory/errors.md new file mode 100644 index 0000000..e69de29 diff --git a/.junie/memory/feedback.md b/.junie/memory/feedback.md new file mode 100644 index 0000000..7a7ecb6 --- /dev/null +++ b/.junie/memory/feedback.md @@ -0,0 +1,16 @@ +[2026-03-11 16:56] - Updated by Junie +{ + "TYPE": "positive", + "CATEGORY": "confirmation and verification", + "EXPECTATION": "Run the requested OpenClaw repair and verify success with a subsequent doctor report.", + "NEW INSTRUCTION": "WHEN executing fixes or maintenance on nodes THEN provide a follow-up doctor/status report and brief summary" +} + +[2026-03-11 22:20] - Updated by Junie +{ + "TYPE": "correction", + "CATEGORY": "macOS permissions workflow", + "EXPECTATION": "User needs precise, practical steps to add a hidden CLI path in System Settings’ file picker.", + "NEW INSTRUCTION": "WHEN adding hidden paths in file pickers THEN explain Cmd-Shift-G and Cmd-Shift-. and drag-drop" +} + diff --git a/.junie/memory/language.json b/.junie/memory/language.json new file mode 100644 index 0000000..8cc035d --- /dev/null +++ b/.junie/memory/language.json @@ -0,0 +1 @@ +[{"lang":"en","usageCount":40}] \ No newline at end of file diff --git a/.junie/memory/memory.version b/.junie/memory/memory.version new file mode 100644 index 0000000..9f8e9b6 --- /dev/null +++ b/.junie/memory/memory.version @@ -0,0 +1 @@ +1.0 \ No newline at end of file diff --git a/.junie/memory/tasks.md b/.junie/memory/tasks.md new file mode 100644 index 0000000..e69de29 diff --git a/node_foreground.log b/node_foreground.log new file mode 100644 index 0000000..215725b --- /dev/null +++ b/node_foreground.log @@ -0,0 +1,3 @@ +node host PATH: /usr/local/bin:/usr/local/sbin:/Users/MWsatwareAG/Library/pnpm:/Users/MWsatwareAG/.local/bin:/usr/bin:/bin:/System/Cryptexes/App/usr/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/pmk/env/global/bin:/opt/X11/bin:/Library/Apple/usr/bin:/Users/MWsatwareAG/.local/share/kitty-ssh-kitten/kitty/bin +node host gateway closed (1006): +ick timeout diff --git a/plugins.json b/plugins.json new file mode 100644 index 0000000..0f7d369 --- /dev/null +++ b/plugins.json @@ -0,0 +1,2119 @@ +{ + "workspaceDir": "/Users/MWsatwareAG/.openclaw/workspace", + "plugins": [ + { + "id": "acpx", + "name": "ACPX Runtime", + "description": "ACP runtime backend powered by acpx with configurable command path and version policy.", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/acpx/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configUiHints": { + "command": { + "label": "acpx Command", + "help": "Optional path/command override for acpx (for example /home/user/repos/acpx/dist/cli.js). Leave unset to use plugin-local bundled acpx." + }, + "expectedVersion": { + "label": "Expected acpx Version", + "help": "Exact version to enforce (for example 0.1.15) or \"any\" to skip strict version matching." + }, + "cwd": { + "label": "Default Working Directory", + "help": "Default cwd for ACP session operations when not set per session." + }, + "permissionMode": { + "label": "Permission Mode", + "help": "Default acpx permission policy for runtime prompts." + }, + "nonInteractivePermissions": { + "label": "Non-Interactive Permission Policy", + "help": "acpx policy when interactive permission prompts are unavailable." + }, + "strictWindowsCmdWrapper": { + "label": "Strict Windows cmd Wrapper", + "help": "Enabled by default. On Windows, reject unresolved .cmd/.bat wrappers instead of shell fallback. Disable only for compatibility with non-standard wrappers.", + "advanced": true + }, + "timeoutSeconds": { + "label": "Prompt Timeout Seconds", + "help": "Optional acpx timeout for each runtime turn.", + "advanced": true + }, + "queueOwnerTtlSeconds": { + "label": "Queue Owner TTL Seconds", + "help": "Idle queue-owner TTL for acpx prompt turns. Keep this short in OpenClaw to avoid delayed completion after each turn.", + "advanced": true + }, + "mcpServers": { + "label": "MCP Servers", + "help": "Named MCP server definitions to inject into ACPX-backed session bootstrap. Each entry needs a command and can include args and env.", + "advanced": true + } + }, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "command": { + "type": "string" + }, + "expectedVersion": { + "type": "string" + }, + "cwd": { + "type": "string" + }, + "permissionMode": { + "type": "string", + "enum": [ + "approve-all", + "approve-reads", + "deny-all" + ] + }, + "nonInteractivePermissions": { + "type": "string", + "enum": [ + "deny", + "fail" + ] + }, + "strictWindowsCmdWrapper": { + "type": "boolean" + }, + "timeoutSeconds": { + "type": "number", + "minimum": 0.001 + }, + "queueOwnerTtlSeconds": { + "type": "number", + "minimum": 0 + }, + "mcpServers": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "command": { + "type": "string", + "description": "Command to run the MCP server" + }, + "args": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Arguments to pass to the command" + }, + "env": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables for the MCP server" + } + }, + "required": [ + "command" + ] + } + } + } + }, + "error": "bundled (disabled by default)" + }, + { + "id": "bluebubbles", + "name": "@openclaw/bluebubbles", + "description": "OpenClaw BlueBubbles channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/bluebubbles/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "copilot-proxy", + "name": "@openclaw/copilot-proxy", + "description": "OpenClaw Copilot Proxy provider plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/copilot-proxy/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "device-pair", + "name": "Device Pairing", + "description": "Generate setup codes and approve device pairing requests.", + "source": "/usr/local/lib/node_modules/openclaw/extensions/device-pair/index.ts", + "origin": "bundled", + "enabled": true, + "status": "loaded", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [ + "device-pair-notifier" + ], + "commands": [ + "pair" + ], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configUiHints": { + "publicUrl": { + "label": "Gateway URL", + "help": "Public WebSocket URL used for /pair setup codes (ws/wss or http/https)." + } + }, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "publicUrl": { + "type": "string" + } + } + } + }, + { + "id": "diagnostics-otel", + "name": "@openclaw/diagnostics-otel", + "description": "OpenClaw diagnostics OpenTelemetry exporter", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/diagnostics-otel/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "diffs", + "name": "Diffs", + "description": "Read-only diff viewer and file renderer for agents.", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/diffs/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configUiHints": { + "defaults.fontFamily": { + "label": "Default Font", + "help": "Preferred font family name for diff content and headers." + }, + "defaults.fontSize": { + "label": "Default Font Size", + "help": "Base diff font size in pixels." + }, + "defaults.lineSpacing": { + "label": "Default Line Spacing", + "help": "Line-height multiplier applied to diff rows." + }, + "defaults.layout": { + "label": "Default Layout", + "help": "Initial diff layout shown in the viewer." + }, + "defaults.showLineNumbers": { + "label": "Show Line Numbers", + "help": "Show line numbers by default." + }, + "defaults.diffIndicators": { + "label": "Diff Indicator Style", + "help": "Choose added/removed indicators style." + }, + "defaults.wordWrap": { + "label": "Default Word Wrap", + "help": "Wrap long lines by default." + }, + "defaults.background": { + "label": "Default Background Highlights", + "help": "Show added/removed background highlights by default." + }, + "defaults.theme": { + "label": "Default Theme", + "help": "Initial viewer theme." + }, + "defaults.fileFormat": { + "label": "Default File Format", + "help": "Rendered file format for file mode (PNG or PDF)." + }, + "defaults.fileQuality": { + "label": "Default File Quality", + "help": "Quality preset for PNG/PDF rendering." + }, + "defaults.fileScale": { + "label": "Default File Scale", + "help": "Device scale factor used while rendering file artifacts." + }, + "defaults.fileMaxWidth": { + "label": "Default File Max Width", + "help": "Maximum file render width in CSS pixels." + }, + "defaults.mode": { + "label": "Default Output Mode", + "help": "Tool default when mode is omitted. Use view for canvas/gateway viewer, file for PNG/PDF, or both." + }, + "security.allowRemoteViewer": { + "label": "Allow Remote Viewer", + "help": "Allow non-loopback access to diff viewer URLs when the token path is known." + } + }, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "defaults": { + "type": "object", + "additionalProperties": false, + "properties": { + "fontFamily": { + "type": "string", + "default": "Fira Code" + }, + "fontSize": { + "type": "number", + "minimum": 10, + "maximum": 24, + "default": 15 + }, + "lineSpacing": { + "type": "number", + "minimum": 1, + "maximum": 3, + "default": 1.6 + }, + "layout": { + "type": "string", + "enum": [ + "unified", + "split" + ], + "default": "unified" + }, + "showLineNumbers": { + "type": "boolean", + "default": true + }, + "diffIndicators": { + "type": "string", + "enum": [ + "bars", + "classic", + "none" + ], + "default": "bars" + }, + "wordWrap": { + "type": "boolean", + "default": true + }, + "background": { + "type": "boolean", + "default": true + }, + "theme": { + "type": "string", + "enum": [ + "light", + "dark" + ], + "default": "dark" + }, + "fileFormat": { + "type": "string", + "enum": [ + "png", + "pdf" + ], + "default": "png" + }, + "format": { + "type": "string", + "enum": [ + "png", + "pdf" + ] + }, + "fileQuality": { + "type": "string", + "enum": [ + "standard", + "hq", + "print" + ], + "default": "standard" + }, + "fileScale": { + "type": "number", + "minimum": 1, + "maximum": 4, + "default": 2 + }, + "fileMaxWidth": { + "type": "number", + "minimum": 640, + "maximum": 2400, + "default": 960 + }, + "imageFormat": { + "type": "string", + "enum": [ + "png", + "pdf" + ] + }, + "imageQuality": { + "type": "string", + "enum": [ + "standard", + "hq", + "print" + ] + }, + "imageScale": { + "type": "number", + "minimum": 1, + "maximum": 4 + }, + "imageMaxWidth": { + "type": "number", + "minimum": 640, + "maximum": 2400 + }, + "mode": { + "type": "string", + "enum": [ + "view", + "image", + "file", + "both" + ], + "default": "both" + } + } + }, + "security": { + "type": "object", + "additionalProperties": false, + "properties": { + "allowRemoteViewer": { + "type": "boolean", + "default": false + } + } + } + } + }, + "error": "bundled (disabled by default)" + }, + { + "id": "discord", + "name": "@openclaw/discord", + "description": "OpenClaw Discord channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/discord/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "feishu", + "name": "@openclaw/feishu", + "description": "OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng)", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/feishu/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "google-gemini-cli-auth", + "name": "@openclaw/google-gemini-cli-auth", + "description": "OpenClaw Gemini CLI OAuth provider plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/google-gemini-cli-auth/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "googlechat", + "name": "@openclaw/googlechat", + "description": "OpenClaw Google Chat channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/googlechat/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "imessage", + "name": "@openclaw/imessage", + "description": "OpenClaw iMessage channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/imessage/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "irc", + "name": "@openclaw/irc", + "description": "OpenClaw IRC channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/irc/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "line", + "name": "@openclaw/line", + "description": "OpenClaw LINE channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/line/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "llm-task", + "name": "LLM Task", + "description": "Generic JSON-only LLM tool for structured tasks callable from workflows.", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/llm-task/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "defaultProvider": { + "type": "string" + }, + "defaultModel": { + "type": "string" + }, + "defaultAuthProfileId": { + "type": "string" + }, + "allowedModels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Allowlist of provider/model keys like openai-codex/gpt-5.2." + }, + "maxTokens": { + "type": "number" + }, + "timeoutMs": { + "type": "number" + } + } + }, + "error": "bundled (disabled by default)" + }, + { + "id": "lobster", + "name": "Lobster", + "description": "Typed workflow tool with resumable approvals.", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/lobster/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "matrix", + "name": "@openclaw/matrix", + "description": "OpenClaw Matrix channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/matrix/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "mattermost", + "name": "@openclaw/mattermost", + "description": "OpenClaw Mattermost channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/mattermost/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "memory-core", + "name": "Memory (Core)", + "description": "File-backed memory search tools and CLI", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/memory-core/index.ts", + "origin": "bundled", + "enabled": true, + "status": "loaded", + "toolNames": [ + "memory_search", + "memory_get" + ], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [ + "memory" + ], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "kind": "memory" + }, + { + "id": "memory-lancedb", + "name": "@openclaw/memory-lancedb", + "description": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall/capture", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/memory-lancedb/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configUiHints": { + "embedding.apiKey": { + "label": "OpenAI API Key", + "sensitive": true, + "placeholder": "sk-proj-...", + "help": "API key for OpenAI embeddings (or use ${OPENAI_API_KEY})" + }, + "embedding.model": { + "label": "Embedding Model", + "placeholder": "text-embedding-3-small", + "help": "OpenAI embedding model to use" + }, + "embedding.baseUrl": { + "label": "Base URL", + "placeholder": "https://api.openai.com/v1", + "help": "Base URL for compatible providers (e.g. http://localhost:11434/v1)", + "advanced": true + }, + "embedding.dimensions": { + "label": "Dimensions", + "placeholder": "1536", + "help": "Vector dimensions for custom models (required for non-standard models)", + "advanced": true + }, + "dbPath": { + "label": "Database Path", + "placeholder": "~/.openclaw/memory/lancedb", + "advanced": true + }, + "autoCapture": { + "label": "Auto-Capture", + "help": "Automatically capture important information from conversations" + }, + "autoRecall": { + "label": "Auto-Recall", + "help": "Automatically inject relevant memories into context" + }, + "captureMaxChars": { + "label": "Capture Max Chars", + "help": "Maximum message length eligible for auto-capture", + "advanced": true, + "placeholder": "500" + } + }, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "embedding": { + "type": "object", + "additionalProperties": false, + "properties": { + "apiKey": { + "type": "string" + }, + "model": { + "type": "string" + }, + "baseUrl": { + "type": "string" + }, + "dimensions": { + "type": "number" + } + }, + "required": [ + "apiKey" + ] + }, + "dbPath": { + "type": "string" + }, + "autoCapture": { + "type": "boolean" + }, + "autoRecall": { + "type": "boolean" + }, + "captureMaxChars": { + "type": "number", + "minimum": 100, + "maximum": 10000 + } + }, + "required": [ + "embedding" + ] + }, + "kind": "memory", + "error": "bundled (disabled by default)" + }, + { + "id": "minimax-portal-auth", + "name": "@openclaw/minimax-portal-auth", + "description": "OpenClaw MiniMax Portal OAuth provider plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/minimax-portal-auth/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "msteams", + "name": "@openclaw/msteams", + "description": "OpenClaw Microsoft Teams channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/msteams/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "nextcloud-talk", + "name": "@openclaw/nextcloud-talk", + "description": "OpenClaw Nextcloud Talk channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/nextcloud-talk/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "nostr", + "name": "@openclaw/nostr", + "description": "OpenClaw Nostr channel plugin for NIP-04 encrypted DMs", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/nostr/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "open-prose", + "name": "OpenProse", + "description": "OpenProse VM skill pack with a /prose slash command.", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/open-prose/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "phone-control", + "name": "Phone Control", + "description": "Arm/disarm high-risk phone node commands (camera/screen/writes) with an optional auto-expiry.", + "source": "/usr/local/lib/node_modules/openclaw/extensions/phone-control/index.ts", + "origin": "bundled", + "enabled": true, + "status": "loaded", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [ + "phone-control-expiry" + ], + "commands": [ + "phone" + ], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + } + }, + { + "id": "qwen-portal-auth", + "name": "qwen-portal-auth", + "source": "/usr/local/lib/node_modules/openclaw/extensions/qwen-portal-auth/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "signal", + "name": "@openclaw/signal", + "description": "OpenClaw Signal channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/signal/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "slack", + "name": "@openclaw/slack", + "description": "OpenClaw Slack channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/slack/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "synology-chat", + "name": "@openclaw/synology-chat", + "description": "Synology Chat channel plugin for OpenClaw", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/synology-chat/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "talk-voice", + "name": "Talk Voice", + "description": "Manage Talk voice selection (list/set).", + "source": "/usr/local/lib/node_modules/openclaw/extensions/talk-voice/index.ts", + "origin": "bundled", + "enabled": true, + "status": "loaded", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [ + "voice" + ], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + } + }, + { + "id": "telegram", + "name": "@openclaw/telegram", + "description": "OpenClaw Telegram channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/telegram/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "thread-ownership", + "name": "Thread Ownership", + "description": "Prevents multiple agents from responding in the same Slack thread. Uses HTTP calls to the slack-forwarder ownership API.", + "source": "/usr/local/lib/node_modules/openclaw/extensions/thread-ownership/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configUiHints": { + "forwarderUrl": { + "label": "Forwarder URL", + "help": "Base URL of the slack-forwarder ownership API (default: http://slack-forwarder:8750)" + }, + "abTestChannels": { + "label": "A/B Test Channels", + "help": "Slack channel IDs where thread ownership is enforced" + } + }, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "forwarderUrl": { + "type": "string" + }, + "abTestChannels": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "error": "bundled (disabled by default)" + }, + { + "id": "tlon", + "name": "@openclaw/tlon", + "description": "OpenClaw Tlon/Urbit channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/tlon/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "twitch", + "name": "@openclaw/twitch", + "description": "OpenClaw Twitch channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/twitch/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "voice-call", + "name": "@openclaw/voice-call", + "description": "OpenClaw voice-call plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/voice-call/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configUiHints": { + "provider": { + "label": "Provider", + "help": "Use twilio, telnyx, or mock for dev/no-network." + }, + "fromNumber": { + "label": "From Number", + "placeholder": "+15550001234" + }, + "toNumber": { + "label": "Default To Number", + "placeholder": "+15550001234" + }, + "inboundPolicy": { + "label": "Inbound Policy" + }, + "allowFrom": { + "label": "Inbound Allowlist" + }, + "inboundGreeting": { + "label": "Inbound Greeting", + "advanced": true + }, + "telnyx.apiKey": { + "label": "Telnyx API Key", + "sensitive": true + }, + "telnyx.connectionId": { + "label": "Telnyx Connection ID" + }, + "telnyx.publicKey": { + "label": "Telnyx Public Key", + "sensitive": true + }, + "twilio.accountSid": { + "label": "Twilio Account SID" + }, + "twilio.authToken": { + "label": "Twilio Auth Token", + "sensitive": true + }, + "outbound.defaultMode": { + "label": "Default Call Mode" + }, + "outbound.notifyHangupDelaySec": { + "label": "Notify Hangup Delay (sec)", + "advanced": true + }, + "serve.port": { + "label": "Webhook Port" + }, + "serve.bind": { + "label": "Webhook Bind" + }, + "serve.path": { + "label": "Webhook Path" + }, + "tailscale.mode": { + "label": "Tailscale Mode", + "advanced": true + }, + "tailscale.path": { + "label": "Tailscale Path", + "advanced": true + }, + "tunnel.provider": { + "label": "Tunnel Provider", + "advanced": true + }, + "tunnel.ngrokAuthToken": { + "label": "ngrok Auth Token", + "sensitive": true, + "advanced": true + }, + "tunnel.ngrokDomain": { + "label": "ngrok Domain", + "advanced": true + }, + "tunnel.allowNgrokFreeTierLoopbackBypass": { + "label": "Allow ngrok Free Tier (Loopback Bypass)", + "advanced": true + }, + "streaming.enabled": { + "label": "Enable Streaming", + "advanced": true + }, + "streaming.openaiApiKey": { + "label": "OpenAI Realtime API Key", + "sensitive": true, + "advanced": true + }, + "streaming.sttModel": { + "label": "Realtime STT Model", + "advanced": true + }, + "streaming.streamPath": { + "label": "Media Stream Path", + "advanced": true + }, + "tts.provider": { + "label": "TTS Provider Override", + "help": "Deep-merges with messages.tts (Edge is ignored for calls).", + "advanced": true + }, + "tts.openai.model": { + "label": "OpenAI TTS Model", + "advanced": true + }, + "tts.openai.voice": { + "label": "OpenAI TTS Voice", + "advanced": true + }, + "tts.openai.apiKey": { + "label": "OpenAI API Key", + "sensitive": true, + "advanced": true + }, + "tts.elevenlabs.modelId": { + "label": "ElevenLabs Model ID", + "advanced": true + }, + "tts.elevenlabs.voiceId": { + "label": "ElevenLabs Voice ID", + "advanced": true + }, + "tts.elevenlabs.apiKey": { + "label": "ElevenLabs API Key", + "sensitive": true, + "advanced": true + }, + "tts.elevenlabs.baseUrl": { + "label": "ElevenLabs Base URL", + "advanced": true + }, + "publicUrl": { + "label": "Public Webhook URL", + "advanced": true + }, + "skipSignatureVerification": { + "label": "Skip Signature Verification", + "advanced": true + }, + "store": { + "label": "Call Log Store Path", + "advanced": true + }, + "responseModel": { + "label": "Response Model", + "advanced": true + }, + "responseSystemPrompt": { + "label": "Response System Prompt", + "advanced": true + }, + "responseTimeoutMs": { + "label": "Response Timeout (ms)", + "advanced": true + } + }, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "provider": { + "type": "string", + "enum": [ + "telnyx", + "twilio", + "plivo", + "mock" + ] + }, + "telnyx": { + "type": "object", + "additionalProperties": false, + "properties": { + "apiKey": { + "type": "string" + }, + "connectionId": { + "type": "string" + }, + "publicKey": { + "type": "string" + } + } + }, + "twilio": { + "type": "object", + "additionalProperties": false, + "properties": { + "accountSid": { + "type": "string" + }, + "authToken": { + "type": "string" + } + } + }, + "plivo": { + "type": "object", + "additionalProperties": false, + "properties": { + "authId": { + "type": "string" + }, + "authToken": { + "type": "string" + } + } + }, + "fromNumber": { + "type": "string", + "pattern": "^\\+[1-9]\\d{1,14}$" + }, + "toNumber": { + "type": "string", + "pattern": "^\\+[1-9]\\d{1,14}$" + }, + "inboundPolicy": { + "type": "string", + "enum": [ + "disabled", + "allowlist", + "pairing", + "open" + ] + }, + "allowFrom": { + "type": "array", + "items": { + "type": "string", + "pattern": "^\\+[1-9]\\d{1,14}$" + } + }, + "inboundGreeting": { + "type": "string" + }, + "outbound": { + "type": "object", + "additionalProperties": false, + "properties": { + "defaultMode": { + "type": "string", + "enum": [ + "notify", + "conversation" + ] + }, + "notifyHangupDelaySec": { + "type": "integer", + "minimum": 0 + } + } + }, + "maxDurationSeconds": { + "type": "integer", + "minimum": 1 + }, + "staleCallReaperSeconds": { + "type": "integer", + "minimum": 0 + }, + "silenceTimeoutMs": { + "type": "integer", + "minimum": 1 + }, + "transcriptTimeoutMs": { + "type": "integer", + "minimum": 1 + }, + "ringTimeoutMs": { + "type": "integer", + "minimum": 1 + }, + "maxConcurrentCalls": { + "type": "integer", + "minimum": 1 + }, + "serve": { + "type": "object", + "additionalProperties": false, + "properties": { + "port": { + "type": "integer", + "minimum": 1 + }, + "bind": { + "type": "string" + }, + "path": { + "type": "string" + } + } + }, + "tailscale": { + "type": "object", + "additionalProperties": false, + "properties": { + "mode": { + "type": "string", + "enum": [ + "off", + "serve", + "funnel" + ] + }, + "path": { + "type": "string" + } + } + }, + "tunnel": { + "type": "object", + "additionalProperties": false, + "properties": { + "provider": { + "type": "string", + "enum": [ + "none", + "ngrok", + "tailscale-serve", + "tailscale-funnel" + ] + }, + "ngrokAuthToken": { + "type": "string" + }, + "ngrokDomain": { + "type": "string" + }, + "allowNgrokFreeTierLoopbackBypass": { + "type": "boolean" + } + } + }, + "webhookSecurity": { + "type": "object", + "additionalProperties": false, + "properties": { + "allowedHosts": { + "type": "array", + "items": { + "type": "string" + } + }, + "trustForwardingHeaders": { + "type": "boolean" + }, + "trustedProxyIPs": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "streaming": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "sttProvider": { + "type": "string", + "enum": [ + "openai-realtime" + ] + }, + "openaiApiKey": { + "type": "string" + }, + "sttModel": { + "type": "string" + }, + "silenceDurationMs": { + "type": "integer", + "minimum": 1 + }, + "vadThreshold": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "streamPath": { + "type": "string" + }, + "preStartTimeoutMs": { + "type": "integer", + "minimum": 1 + }, + "maxPendingConnections": { + "type": "integer", + "minimum": 1 + }, + "maxPendingConnectionsPerIp": { + "type": "integer", + "minimum": 1 + }, + "maxConnections": { + "type": "integer", + "minimum": 1 + } + } + }, + "publicUrl": { + "type": "string" + }, + "skipSignatureVerification": { + "type": "boolean" + }, + "stt": { + "type": "object", + "additionalProperties": false, + "properties": { + "provider": { + "type": "string", + "enum": [ + "openai" + ] + }, + "model": { + "type": "string" + } + } + }, + "tts": { + "type": "object", + "additionalProperties": false, + "properties": { + "auto": { + "type": "string", + "enum": [ + "off", + "always", + "inbound", + "tagged" + ] + }, + "enabled": { + "type": "boolean" + }, + "mode": { + "type": "string", + "enum": [ + "final", + "all" + ] + }, + "provider": { + "type": "string", + "enum": [ + "openai", + "elevenlabs", + "edge" + ] + }, + "summaryModel": { + "type": "string" + }, + "modelOverrides": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "allowText": { + "type": "boolean" + }, + "allowProvider": { + "type": "boolean" + }, + "allowVoice": { + "type": "boolean" + }, + "allowModelId": { + "type": "boolean" + }, + "allowVoiceSettings": { + "type": "boolean" + }, + "allowNormalization": { + "type": "boolean" + }, + "allowSeed": { + "type": "boolean" + } + } + }, + "elevenlabs": { + "type": "object", + "additionalProperties": false, + "properties": { + "apiKey": { + "type": "string" + }, + "baseUrl": { + "type": "string" + }, + "voiceId": { + "type": "string" + }, + "modelId": { + "type": "string" + }, + "seed": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + }, + "applyTextNormalization": { + "type": "string", + "enum": [ + "auto", + "on", + "off" + ] + }, + "languageCode": { + "type": "string" + }, + "voiceSettings": { + "type": "object", + "additionalProperties": false, + "properties": { + "stability": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "similarityBoost": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "style": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "useSpeakerBoost": { + "type": "boolean" + }, + "speed": { + "type": "number", + "minimum": 0.5, + "maximum": 2 + } + } + } + } + }, + "openai": { + "type": "object", + "additionalProperties": false, + "properties": { + "apiKey": { + "type": "string" + }, + "model": { + "type": "string" + }, + "voice": { + "type": "string" + } + } + }, + "edge": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "voice": { + "type": "string" + }, + "lang": { + "type": "string" + }, + "outputFormat": { + "type": "string" + }, + "pitch": { + "type": "string" + }, + "rate": { + "type": "string" + }, + "volume": { + "type": "string" + }, + "saveSubtitles": { + "type": "boolean" + }, + "proxy": { + "type": "string" + }, + "timeoutMs": { + "type": "integer", + "minimum": 1000, + "maximum": 120000 + } + } + }, + "prefsPath": { + "type": "string" + }, + "maxTextLength": { + "type": "integer", + "minimum": 1 + }, + "timeoutMs": { + "type": "integer", + "minimum": 1000, + "maximum": 120000 + } + } + }, + "store": { + "type": "string" + }, + "responseModel": { + "type": "string" + }, + "responseSystemPrompt": { + "type": "string" + }, + "responseTimeoutMs": { + "type": "integer", + "minimum": 1 + } + } + }, + "error": "bundled (disabled by default)" + }, + { + "id": "whatsapp", + "name": "@openclaw/whatsapp", + "description": "OpenClaw WhatsApp channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/whatsapp/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "zalo", + "name": "@openclaw/zalo", + "description": "OpenClaw Zalo channel plugin", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/zalo/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + }, + { + "id": "zalouser", + "name": "@openclaw/zalouser", + "description": "OpenClaw Zalo Personal Account plugin via native zca-js integration", + "version": "2026.3.8-beta.1", + "source": "/usr/local/lib/node_modules/openclaw/extensions/zalouser/index.ts", + "origin": "bundled", + "enabled": false, + "status": "disabled", + "toolNames": [], + "hookNames": [], + "channelIds": [], + "providerIds": [], + "gatewayMethods": [], + "cliCommands": [], + "services": [], + "commands": [], + "httpRoutes": 0, + "hookCount": 0, + "configSchema": true, + "configJsonSchema": { + "type": "object", + "additionalProperties": false, + "properties": {} + }, + "error": "bundled (disabled by default)" + } + ], + "diagnostics": [] +} diff --git a/plugins.txt b/plugins.txt new file mode 100644 index 0000000..89fd46c --- /dev/null +++ b/plugins.txt @@ -0,0 +1,99 @@ +Plugins (4/38 loaded) +Source roots: + stock: /usr/local/lib/node_modules/openclaw/extensions + +┌──────────────┬──────────┬──────────┬──────────────────────────────────────────────────────────────┬─────────────────┐ +│ Name │ ID │ Status │ Source │ Version │ +├──────────────┼──────────┼──────────┼──────────────────────────────────────────────────────────────┼─────────────────┤ +│ ACPX Runtime │ acpx │ disabled │ stock:acpx/index.ts │ 2026.3.8-beta.1 │ +│ │ │ │ ACP runtime backend powered by acpx with configurable │ │ +│ │ │ │ command path and version policy. │ │ +│ @openclaw/ │ bluebubb │ disabled │ stock:bluebubbles/index.ts │ 2026.3.8-beta.1 │ +│ bluebubbles │ les │ │ OpenClaw BlueBubbles channel plugin │ │ +│ @openclaw/ │ copilot- │ disabled │ stock:copilot-proxy/index.ts │ 2026.3.8-beta.1 │ +│ copilot- │ proxy │ │ OpenClaw Copilot Proxy provider plugin │ │ +│ proxy │ │ │ │ │ +│ Device │ device- │ loaded │ stock:device-pair/index.ts │ │ +│ Pairing │ pair │ │ Generate setup codes and approve device pairing requests. │ │ +│ @openclaw/ │ diagnost │ disabled │ stock:diagnostics-otel/index.ts │ 2026.3.8-beta.1 │ +│ diagnostics- │ ics-otel │ │ OpenClaw diagnostics OpenTelemetry exporter │ │ +│ otel │ │ │ │ │ +│ Diffs │ diffs │ disabled │ stock:diffs/index.ts │ 2026.3.8-beta.1 │ +│ │ │ │ Read-only diff viewer and file renderer for agents. │ │ +│ @openclaw/ │ discord │ disabled │ stock:discord/index.ts │ 2026.3.8-beta.1 │ +│ discord │ │ │ OpenClaw Discord channel plugin │ │ +│ @openclaw/ │ feishu │ disabled │ stock:feishu/index.ts │ 2026.3.8-beta.1 │ +│ feishu │ │ │ OpenClaw Feishu/Lark channel plugin (community maintained │ │ +│ │ │ │ by @m1heng) │ │ +│ @openclaw/ │ google- │ disabled │ stock:google-gemini-cli-auth/index.ts │ 2026.3.8-beta.1 │ +│ google- │ gemini- │ │ OpenClaw Gemini CLI OAuth provider plugin │ │ +│ gemini-cli- │ cli-auth │ │ │ │ +│ auth │ │ │ │ │ +│ @openclaw/ │ googlech │ disabled │ stock:googlechat/index.ts │ 2026.3.8-beta.1 │ +│ googlechat │ at │ │ OpenClaw Google Chat channel plugin │ │ +│ @openclaw/ │ imessage │ disabled │ stock:imessage/index.ts │ 2026.3.8-beta.1 │ +│ imessage │ │ │ OpenClaw iMessage channel plugin │ │ +│ @openclaw/ │ irc │ disabled │ stock:irc/index.ts │ 2026.3.8-beta.1 │ +│ irc │ │ │ OpenClaw IRC channel plugin │ │ +│ @openclaw/ │ line │ disabled │ stock:line/index.ts │ 2026.3.8-beta.1 │ +│ line │ │ │ OpenClaw LINE channel plugin │ │ +│ LLM Task │ llm-task │ disabled │ stock:llm-task/index.ts │ 2026.3.8-beta.1 │ +│ │ │ │ Generic JSON-only LLM tool for structured tasks callable │ │ +│ │ │ │ from workflows. │ │ +│ Lobster │ lobster │ disabled │ stock:lobster/index.ts │ 2026.3.8-beta.1 │ +│ │ │ │ Typed workflow tool with resumable approvals. │ │ +│ @openclaw/ │ matrix │ disabled │ stock:matrix/index.ts │ 2026.3.8-beta.1 │ +│ matrix │ │ │ OpenClaw Matrix channel plugin │ │ +│ @openclaw/ │ mattermo │ disabled │ stock:mattermost/index.ts │ 2026.3.8-beta.1 │ +│ mattermost │ st │ │ OpenClaw Mattermost channel plugin │ │ +│ Memory │ memory- │ loaded │ stock:memory-core/index.ts │ 2026.3.8-beta.1 │ +│ (Core) │ core │ │ File-backed memory search tools and CLI │ │ +│ @openclaw/ │ memory- │ disabled │ stock:memory-lancedb/index.ts │ 2026.3.8-beta.1 │ +│ memory- │ lancedb │ │ OpenClaw LanceDB-backed long-term memory plugin with auto- │ │ +│ lancedb │ │ │ recall/capture │ │ +│ @openclaw/ │ minimax- │ disabled │ stock:minimax-portal-auth/index.ts │ 2026.3.8-beta.1 │ +│ minimax- │ portal- │ │ OpenClaw MiniMax Portal OAuth provider plugin │ │ +│ portal-auth │ auth │ │ │ │ +│ @openclaw/ │ msteams │ disabled │ stock:msteams/index.ts │ 2026.3.8-beta.1 │ +│ msteams │ │ │ OpenClaw Microsoft Teams channel plugin │ │ +│ @openclaw/ │ nextclou │ disabled │ stock:nextcloud-talk/index.ts │ 2026.3.8-beta.1 │ +│ nextcloud- │ d-talk │ │ OpenClaw Nextcloud Talk channel plugin │ │ +│ talk │ │ │ │ │ +│ @openclaw/ │ nostr │ disabled │ stock:nostr/index.ts │ 2026.3.8-beta.1 │ +│ nostr │ │ │ OpenClaw Nostr channel plugin for NIP-04 encrypted DMs │ │ +│ OpenProse │ open- │ disabled │ stock:open-prose/index.ts │ 2026.3.8-beta.1 │ +│ │ prose │ │ OpenProse VM skill pack with a /prose slash command. │ │ +│ Phone │ phone- │ loaded │ stock:phone-control/index.ts │ │ +│ Control │ control │ │ Arm/disarm high-risk phone node commands (camera/screen/ │ │ +│ │ │ │ writes) with an optional auto-expiry. │ │ +│ qwen-portal- │ │ disabled │ stock:qwen-portal-auth/index.ts │ │ +│ auth │ │ │ │ │ +│ @openclaw/ │ signal │ disabled │ stock:signal/index.ts │ 2026.3.8-beta.1 │ +│ signal │ │ │ OpenClaw Signal channel plugin │ │ +│ @openclaw/ │ slack │ disabled │ stock:slack/index.ts │ 2026.3.8-beta.1 │ +│ slack │ │ │ OpenClaw Slack channel plugin │ │ +│ @openclaw/ │ synology │ disabled │ stock:synology-chat/index.ts │ 2026.3.8-beta.1 │ +│ synology- │ -chat │ │ Synology Chat channel plugin for OpenClaw │ │ +│ chat │ │ │ │ │ +│ Talk Voice │ talk- │ loaded │ stock:talk-voice/index.ts │ │ +│ │ voice │ │ Manage Talk voice selection (list/set). │ │ +│ @openclaw/ │ telegram │ disabled │ stock:telegram/index.ts │ 2026.3.8-beta.1 │ +│ telegram │ │ │ OpenClaw Telegram channel plugin │ │ +│ Thread │ thread- │ disabled │ stock:thread-ownership/index.ts │ │ +│ Ownership │ ownershi │ │ Prevents multiple agents from responding in the same Slack │ │ +│ │ p │ │ thread. Uses HTTP calls to the slack-forwarder ownership │ │ +│ │ │ │ API. │ │ +│ @openclaw/ │ tlon │ disabled │ stock:tlon/index.ts │ 2026.3.8-beta.1 │ +│ tlon │ │ │ OpenClaw Tlon/Urbit channel plugin │ │ +│ @openclaw/ │ twitch │ disabled │ stock:twitch/index.ts │ 2026.3.8-beta.1 │ +│ twitch │ │ │ OpenClaw Twitch channel plugin │ │ +│ @openclaw/ │ voice- │ disabled │ stock:voice-call/index.ts │ 2026.3.8-beta.1 │ +│ voice-call │ call │ │ OpenClaw voice-call plugin │ │ +│ @openclaw/ │ whatsapp │ disabled │ stock:whatsapp/index.ts │ 2026.3.8-beta.1 │ +│ whatsapp │ │ │ OpenClaw WhatsApp channel plugin │ │ +│ @openclaw/ │ zalo │ disabled │ stock:zalo/index.ts │ 2026.3.8-beta.1 │ +│ zalo │ │ │ OpenClaw Zalo channel plugin │ │ +│ @openclaw/ │ zalouser │ disabled │ stock:zalouser/index.ts │ 2026.3.8-beta.1 │ +│ zalouser │ │ │ OpenClaw Zalo Personal Account plugin via native zca-js │ │ +│ │ │ │ integration │ │ +└──────────────┴──────────┴──────────┴──────────────────────────────────────────────────────────────┴─────────────────┘ diff --git a/skills.json b/skills.json new file mode 100644 index 0000000..e12f7ec --- /dev/null +++ b/skills.json @@ -0,0 +1,988 @@ +{ + "workspaceDir": "/Users/MWsatwareAG/.openclaw/workspace", + "managedSkillsDir": "/Users/MWsatwareAG/.openclaw/skills", + "skills": [ + { + "name": "1password", + "description": "Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.", + "emoji": "🔐", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://developer.1password.com/docs/cli/get-started/", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "apple-notes", + "description": "Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks Clawdbot to add a note, list notes, search notes, or manage note folders.", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-managed", + "bundled": true, + "homepage": "https://github.com/antoniorodr/memo", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "apple-reminders", + "description": "Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.", + "emoji": "⏰", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://github.com/steipete/remindctl", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "bear-notes", + "description": "Create, search, and manage Bear notes via grizzly CLI.", + "emoji": "🐻", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://bear.app", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "blogwatcher", + "description": "Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.", + "emoji": "📰", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://github.com/Hyaxia/blogwatcher", + "missing": { + "bins": [ + "blogwatcher" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "blucli", + "description": "BluOS CLI (blu) for discovery, playback, grouping, and volume.", + "emoji": "🫐", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://blucli.sh", + "missing": { + "bins": [ + "blu" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "bluebubbles", + "description": "Use when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel=\"bluebubbles\".", + "emoji": "🫧", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [ + "channels.bluebubbles" + ], + "os": [] + } + }, + { + "name": "camsnap", + "description": "Capture frames or clips from RTSP/ONVIF cameras.", + "emoji": "📸", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://camsnap.ai", + "missing": { + "bins": [ + "camsnap" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "clawhub", + "description": "Use the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawhub CLI.", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "coding-agent", + "description": "Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:\"acp\"), or any work in ~/clawd workspace (never spawn agents here). Claude Code: use --print --permission-mode bypassPermissions (no PTY). Codex/Pi/OpenCode: pty:true required.", + "emoji": "🧩", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [ + "claude", + "codex", + "opencode", + "pi" + ], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "discord", + "description": "Discord ops via the message tool (channel=discord).", + "emoji": "🎮", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [ + "channels.discord.token" + ], + "os": [] + } + }, + { + "name": "eightctl", + "description": "Control Eight Sleep pods (status, temperature, alarms, schedules).", + "emoji": "🎛️", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://eightctl.sh", + "missing": { + "bins": [ + "eightctl" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "gemini", + "description": "Gemini CLI for one-shot Q&A, summaries, and generation.", + "emoji": "♊️", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://ai.google.dev/", + "missing": { + "bins": [ + "gemini" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "gh-issues", + "description": "Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "primaryEnv": "GH_TOKEN", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "gifgrep", + "description": "Search GIF providers with CLI/TUI, download results, and extract stills/sheets.", + "emoji": "🧲", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://gifgrep.com", + "missing": { + "bins": [ + "gifgrep" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "github", + "description": "GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.", + "emoji": "🐙", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "gog", + "description": "Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.", + "emoji": "🎮", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://gogcli.sh", + "missing": { + "bins": [ + "gog" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "goplaces", + "description": "Query Google Places API (New) via the goplaces CLI for text search, place details, resolve, and reviews. Use for human-friendly place lookup or JSON output for scripts.", + "emoji": "📍", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "primaryEnv": "GOOGLE_PLACES_API_KEY", + "homepage": "https://github.com/steipete/goplaces", + "missing": { + "bins": [ + "goplaces" + ], + "anyBins": [], + "env": [ + "GOOGLE_PLACES_API_KEY" + ], + "config": [], + "os": [] + } + }, + { + "name": "healthcheck", + "description": "Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "himalaya", + "description": "CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).", + "emoji": "📧", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://github.com/pimalaya/himalaya", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "imsg", + "description": "iMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.", + "emoji": "📨", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://imsg.to", + "missing": { + "bins": [ + "imsg" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "mcporter", + "description": "Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.", + "emoji": "📦", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "http://mcporter.dev", + "missing": { + "bins": [ + "mcporter" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "model-usage", + "description": "Use CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.", + "emoji": "📊", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [ + "codexbar" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "nano-banana-pro", + "description": "Generate or edit images via Gemini 3 Pro Image (Nano Banana Pro).", + "emoji": "🍌", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "primaryEnv": "GEMINI_API_KEY", + "homepage": "https://ai.google.dev/", + "missing": { + "bins": [], + "anyBins": [], + "env": [ + "GEMINI_API_KEY" + ], + "config": [], + "os": [] + } + }, + { + "name": "nano-pdf", + "description": "Edit PDFs with natural-language instructions using the nano-pdf CLI.", + "emoji": "📄", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://pypi.org/project/nano-pdf/", + "missing": { + "bins": [ + "nano-pdf" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "notion", + "description": "Notion API for creating and managing pages, databases, and blocks.", + "emoji": "📝", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "primaryEnv": "NOTION_API_KEY", + "homepage": "https://developers.notion.com", + "missing": { + "bins": [], + "anyBins": [], + "env": [ + "NOTION_API_KEY" + ], + "config": [], + "os": [] + } + }, + { + "name": "obsidian", + "description": "Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.", + "emoji": "💎", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://help.obsidian.md", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "openai-image-gen", + "description": "Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.", + "emoji": "🖼️", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "primaryEnv": "OPENAI_API_KEY", + "homepage": "https://platform.openai.com/docs/api-reference/images", + "missing": { + "bins": [], + "anyBins": [], + "env": [ + "OPENAI_API_KEY" + ], + "config": [], + "os": [] + } + }, + { + "name": "openai-whisper", + "description": "Local speech-to-text with the Whisper CLI (no API key).", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-managed", + "bundled": true, + "homepage": "https://openai.com/research/whisper", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "openai-whisper-api", + "description": "Transcribe audio via OpenAI Audio Transcriptions API (Whisper).", + "emoji": "☁️", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "primaryEnv": "OPENAI_API_KEY", + "homepage": "https://platform.openai.com/docs/guides/speech-to-text", + "missing": { + "bins": [], + "anyBins": [], + "env": [ + "OPENAI_API_KEY" + ], + "config": [], + "os": [] + } + }, + { + "name": "openhue", + "description": "Control Philips Hue lights and scenes via the OpenHue CLI.", + "emoji": "💡", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://www.openhue.io/cli", + "missing": { + "bins": [ + "openhue" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "oracle", + "description": "Best practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).", + "emoji": "🧿", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://askoracle.dev", + "missing": { + "bins": [ + "oracle" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "ordercli", + "description": "Foodora-only CLI for checking past orders and active order status (Deliveroo WIP).", + "emoji": "🛵", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://ordercli.sh", + "missing": { + "bins": [ + "ordercli" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "peekaboo", + "description": "Capture and automate macOS UI with the Peekaboo CLI.", + "emoji": "👀", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://peekaboo.boo", + "missing": { + "bins": [ + "peekaboo" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "sag", + "description": "ElevenLabs text-to-speech with mac-style say UX.", + "emoji": "🗣️", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "primaryEnv": "ELEVENLABS_API_KEY", + "homepage": "https://sag.sh", + "missing": { + "bins": [ + "sag" + ], + "anyBins": [], + "env": [ + "ELEVENLABS_API_KEY" + ], + "config": [], + "os": [] + } + }, + { + "name": "session-logs", + "description": "Search and analyze your own session logs (older/parent conversations) using jq.", + "emoji": "📜", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "sherpa-onnx-tts", + "description": "Local text-to-speech via sherpa-onnx (offline, no cloud)", + "emoji": "🗣️", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [ + "SHERPA_ONNX_RUNTIME_DIR", + "SHERPA_ONNX_MODEL_DIR" + ], + "config": [], + "os": [] + } + }, + { + "name": "skill-creator", + "description": "Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like \"create a skill\", \"author a skill\", \"tidy up a skill\", \"improve this skill\", \"review the skill\", \"clean up the skill\", \"audit the skill\".", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "slack", + "description": "Use when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.", + "emoji": "💬", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [ + "channels.slack" + ], + "os": [] + } + }, + { + "name": "songsee", + "description": "Generate spectrograms and feature-panel visualizations from audio with the songsee CLI.", + "emoji": "🌊", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://github.com/steipete/songsee", + "missing": { + "bins": [ + "songsee" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "sonoscli", + "description": "Control Sonos speakers (discover/status/play/volume/group).", + "emoji": "🔊", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://sonoscli.sh", + "missing": { + "bins": [ + "sonos" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "spotify-player", + "description": "Terminal Spotify playback/search via spogo (preferred) or spotify_player.", + "emoji": "🎵", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://www.spotify.com", + "missing": { + "bins": [], + "anyBins": [ + "spogo", + "spotify_player" + ], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "summarize", + "description": "Summarize or extract text/transcripts from URLs, podcasts, and local files (great fallback for “transcribe this YouTube/video”).", + "emoji": "🧾", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://summarize.sh", + "missing": { + "bins": [ + "summarize" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "things-mac", + "description": "Manage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database). Use when a user asks OpenClaw to add a task to Things, list inbox/today/upcoming, search tasks, or inspect projects/areas/tags.", + "emoji": "✅", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://github.com/ossianhempel/things3-cli", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "tmux", + "description": "Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.", + "emoji": "🧵", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "trello", + "description": "Manage Trello boards, lists, and cards via the Trello REST API.", + "emoji": "📋", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://developer.atlassian.com/cloud/trello/rest/", + "missing": { + "bins": [], + "anyBins": [], + "env": [ + "TRELLO_API_KEY", + "TRELLO_TOKEN" + ], + "config": [], + "os": [] + } + }, + { + "name": "video-frames", + "description": "Extract frames or short clips from videos using ffmpeg.", + "emoji": "🎞️", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://ffmpeg.org", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "voice-call", + "description": "Start voice calls via the OpenClaw voice-call plugin.", + "emoji": "📞", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [ + "plugins.entries.voice-call.enabled" + ], + "os": [] + } + }, + { + "name": "wacli", + "description": "Send WhatsApp messages to other people or search/sync WhatsApp history via the wacli CLI (not for normal user chats).", + "emoji": "📱", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://wacli.sh", + "missing": { + "bins": [ + "wacli" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "weather", + "description": "Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.", + "emoji": "🌤️", + "eligible": true, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "homepage": "https://wttr.in/:help", + "missing": { + "bins": [], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + }, + { + "name": "xurl", + "description": "A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.", + "emoji": "𝕏", + "eligible": false, + "disabled": false, + "blockedByAllowlist": false, + "source": "openclaw-bundled", + "bundled": true, + "missing": { + "bins": [ + "xurl" + ], + "anyBins": [], + "env": [], + "config": [], + "os": [] + } + } + ] +} diff --git a/skills.txt b/skills.txt new file mode 100644 index 0000000..ba06f23 --- /dev/null +++ b/skills.txt @@ -0,0 +1,148 @@ +Skills (17/51 ready) +┌───────────┬──────────────────┬───────────────────────────────────────────────────────────────────┬──────────────────┐ +│ Status │ Skill │ Description │ Source │ +├───────────┼──────────────────┼───────────────────────────────────────────────────────────────────┼──────────────────┤ +│ ✓ ready │ 🔐 1password │ Set up and use 1Password CLI (op). Use when installing the CLI, │ openclaw-bundled │ +│ │ │ enabling desktop app integration, signing in (single or multi- │ │ +│ │ │ account), or reading/injecting/running secrets via op. │ │ +│ ✓ ready │ 📦 apple-notes │ Manage Apple Notes via the `memo` CLI on macOS (create, view, │ openclaw-managed │ +│ │ │ edit, delete, search, move, and export notes). Use when a user │ │ +│ │ │ asks Clawdbot to add a note, list notes, search notes, or manage │ │ +│ │ │ note folders. │ │ +│ ✓ ready │ ⏰ apple- │ Manage Apple Reminders via remindctl CLI (list, add, edit, │ openclaw-bundled │ +│ │ reminders │ complete, delete). Supports lists, date filters, and JSON/plain │ │ +│ │ │ output. │ │ +│ ✓ ready │ 🐻 bear-notes │ Create, search, and manage Bear notes via grizzly CLI. │ openclaw-bundled │ +│ ✗ missing │ 📰 blogwatcher │ Monitor blogs and RSS/Atom feeds for updates using the │ openclaw-bundled │ +│ │ │ blogwatcher CLI. │ │ +│ ✗ missing │ 🫐 blucli │ BluOS CLI (blu) for discovery, playback, grouping, and volume. │ openclaw-bundled │ +│ ✗ missing │ 🫧 bluebubbles │ Use when you need to send or manage iMessages via BlueBubbles │ openclaw-bundled │ +│ │ │ (recommended iMessage integration). Calls go through the generic │ │ +│ │ │ message tool with channel="bluebubbles". │ │ +│ ✗ missing │ 📸 camsnap │ Capture frames or clips from RTSP/ONVIF cameras. │ openclaw-bundled │ +│ ✓ ready │ 📦 clawhub │ Use the ClawHub CLI to search, install, update, and publish │ openclaw-bundled │ +│ │ │ agent skills from clawhub.com. Use when you need to fetch new │ │ +│ │ │ skills on the fly, sync installed skills to latest or a specific │ │ +│ │ │ version, or publish new/updated skill folders with the npm- │ │ +│ │ │ installed clawhub CLI. │ │ +│ ✗ missing │ 🧩 coding-agent │ Delegate coding tasks to Codex, Claude Code, or Pi agents via │ openclaw-bundled │ +│ │ │ background process. Use when: (1) building/creating new features │ │ +│ │ │ or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring │ │ +│ │ │ large codebases, (4) iterative coding that needs file │ │ +│ │ │ exploration. NOT for: simple one-liner fixes (just edit), │ │ +│ │ │ reading code (use read tool), thread-bound ACP harness requests │ │ +│ │ │ in chat (for example spawn/run Codex or Claude Code in a Discord │ │ +│ │ │ thread; use sessions_spawn with runtime:"acp"), or any work in ~/ │ │ +│ │ │ clawd workspace (never spawn agents here). Claude Code: use -- │ │ +│ │ │ print --permission-mode bypassPermissions (no PTY). Codex/Pi/ │ │ +│ │ │ OpenCode: pty:true required. │ │ +│ ✗ missing │ 🎮 discord │ Discord ops via the message tool (channel=discord). │ openclaw-bundled │ +│ ✗ missing │ 🎛️ eightctl │ Control Eight Sleep pods (status, temperature, alarms, │ openclaw-bundled │ +│ │ │ schedules). │ │ +│ ✗ missing │ ♊️ gemini │ Gemini CLI for one-shot Q&A, summaries, and generation. │ openclaw-bundled │ +│ ✓ ready │ 📦 gh-issues │ Fetch GitHub issues, spawn sub-agents to implement fixes and │ openclaw-bundled │ +│ │ │ open PRs, then monitor and address PR review comments. Usage: / │ │ +│ │ │ gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1. │ │ +│ │ │ 0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] │ │ +│ │ │ [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify- │ │ +│ │ │ channel -1002381931352] │ │ +│ ✗ missing │ 🧲 gifgrep │ Search GIF providers with CLI/TUI, download results, and extract │ openclaw-bundled │ +│ │ │ stills/sheets. │ │ +│ ✓ ready │ 🐙 github │ GitHub operations via `gh` CLI: issues, PRs, CI runs, code │ openclaw-bundled │ +│ │ │ review, API queries. Use when: (1) checking PR status or CI, (2) │ │ +│ │ │ creating/commenting on issues, (3) listing/filtering PRs or │ │ +│ │ │ issues, (4) viewing run logs. NOT for: complex web UI │ │ +│ │ │ interactions requiring manual browser flows (use browser tooling │ │ +│ │ │ when available), bulk operations across many repos (script with │ │ +│ │ │ gh api), or when gh auth is not configured. │ │ +│ ✗ missing │ 🎮 gog │ Google Workspace CLI for Gmail, Calendar, Drive, Contacts, │ openclaw-bundled │ +│ │ │ Sheets, and Docs. │ │ +│ ✗ missing │ 📍 goplaces │ Query Google Places API (New) via the goplaces CLI for text │ openclaw-bundled │ +│ │ │ search, place details, resolve, and reviews. Use for human- │ │ +│ │ │ friendly place lookup or JSON output for scripts. │ │ +│ ✓ ready │ 📦 healthcheck │ Host security hardening and risk-tolerance configuration for │ openclaw-bundled │ +│ │ │ OpenClaw deployments. Use when a user asks for security audits, │ │ +│ │ │ firewall/SSH/update hardening, risk posture, exposure review, │ │ +│ │ │ OpenClaw cron scheduling for periodic checks, or version status │ │ +│ │ │ checks on a machine running OpenClaw (laptop, workstation, Pi, │ │ +│ │ │ VPS). │ │ +│ ✓ ready │ 📧 himalaya │ CLI to manage emails via IMAP/SMTP. Use `himalaya` to list, │ openclaw-bundled │ +│ │ │ read, write, reply, forward, search, and organize emails from │ │ +│ │ │ the terminal. Supports multiple accounts and message composition │ │ +│ │ │ with MML (MIME Meta Language). │ │ +│ ✗ missing │ 📨 imsg │ iMessage/SMS CLI for listing chats, history, and sending │ openclaw-bundled │ +│ │ │ messages via Messages.app. │ │ +│ ✗ missing │ 📦 mcporter │ Use the mcporter CLI to list, configure, auth, and call MCP │ openclaw-bundled │ +│ │ │ servers/tools directly (HTTP or stdio), including ad-hoc │ │ +│ │ │ servers, config edits, and CLI/type generation. │ │ +│ ✗ missing │ 📊 model-usage │ Use CodexBar CLI local cost usage to summarize per-model usage │ openclaw-bundled │ +│ │ │ for Codex or Claude, including the current (most recent) model │ │ +│ │ │ or a full model breakdown. Trigger when asked for model-level │ │ +│ │ │ usage/cost data from codexbar, or when you need a scriptable per- │ │ +│ │ │ model summary from codexbar cost JSON. │ │ +│ ✗ missing │ 🍌 nano-banana- │ Generate or edit images via Gemini 3 Pro Image (Nano Banana Pro). │ openclaw-bundled │ +│ │ pro │ │ │ +│ ✗ missing │ 📄 nano-pdf │ Edit PDFs with natural-language instructions using the nano-pdf │ openclaw-bundled │ +│ │ │ CLI. │ │ +│ ✗ missing │ 📝 notion │ Notion API for creating and managing pages, databases, and │ openclaw-bundled │ +│ │ │ blocks. │ │ +│ ✓ ready │ 💎 obsidian │ Work with Obsidian vaults (plain Markdown notes) and automate │ openclaw-bundled │ +│ │ │ via obsidian-cli. │ │ +│ ✗ missing │ 🖼️ openai-image- │ Batch-generate images via OpenAI Images API. Random prompt │ openclaw-bundled │ +│ │ gen │ sampler + `index.html` gallery. │ │ +│ ✓ ready │ 📦 openai-whisper │ Local speech-to-text with the Whisper CLI (no API key). │ openclaw-managed │ +│ ✗ missing │ ☁️ openai- │ Transcribe audio via OpenAI Audio Transcriptions API (Whisper). │ openclaw-bundled │ +│ │ whisper-api │ │ │ +│ ✗ missing │ 💡 openhue │ Control Philips Hue lights and scenes via the OpenHue CLI. │ openclaw-bundled │ +│ ✗ missing │ 🧿 oracle │ Best practices for using the oracle CLI (prompt + file bundling, │ openclaw-bundled │ +│ │ │ engines, sessions, and file attachment patterns). │ │ +│ ✗ missing │ 🛵 ordercli │ Foodora-only CLI for checking past orders and active order │ openclaw-bundled │ +│ │ │ status (Deliveroo WIP). │ │ +│ ✗ missing │ 👀 peekaboo │ Capture and automate macOS UI with the Peekaboo CLI. │ openclaw-bundled │ +│ ✗ missing │ 🗣️ sag │ ElevenLabs text-to-speech with mac-style say UX. │ openclaw-bundled │ +│ ✓ ready │ 📜 session-logs │ Search and analyze your own session logs (older/parent │ openclaw-bundled │ +│ │ │ conversations) using jq. │ │ +│ ✗ missing │ 🗣️ sherpa-onnx- │ Local text-to-speech via sherpa-onnx (offline, no cloud) │ openclaw-bundled │ +│ │ tts │ │ │ +│ ✓ ready │ 📦 skill-creator │ Create, edit, improve, or audit AgentSkills. Use when creating a │ openclaw-bundled │ +│ │ │ new skill from scratch or when asked to improve, review, audit, │ │ +│ │ │ tidy up, or clean up an existing skill or SKILL.md file. Also │ │ +│ │ │ use when editing or restructuring a skill directory (moving │ │ +│ │ │ files to references/ or scripts/, removing stale content, │ │ +│ │ │ validating against the AgentSkills spec). Triggers on phrases │ │ +│ │ │ like "create a skill", "author a skill", "tidy up a skill", │ │ +│ │ │ "improve this skill", "review the skill", "clean up the skill", │ │ +│ │ │ "audit the skill". │ │ +│ ✗ missing │ 💬 slack │ Use when you need to control Slack from OpenClaw via the slack │ openclaw-bundled │ +│ │ │ tool, including reacting to messages or pinning/unpinning items │ │ +│ │ │ in Slack channels or DMs. │ │ +│ ✗ missing │ 🌊 songsee │ Generate spectrograms and feature-panel visualizations from │ openclaw-bundled │ +│ │ │ audio with the songsee CLI. │ │ +│ ✗ missing │ 🔊 sonoscli │ Control Sonos speakers (discover/status/play/volume/group). │ openclaw-bundled │ +│ ✗ missing │ 🎵 spotify-player │ Terminal Spotify playback/search via spogo (preferred) or │ openclaw-bundled │ +│ │ │ spotify_player. │ │ +│ ✗ missing │ 🧾 summarize │ Summarize or extract text/transcripts from URLs, podcasts, and │ openclaw-bundled │ +│ │ │ local files (great fallback for “transcribe this YouTube/video”). │ │ +│ ✓ ready │ ✅ things-mac │ Manage Things 3 via the `things` CLI on macOS (add/update │ openclaw-bundled │ +│ │ │ projects+todos via URL scheme; read/search/list from the local │ │ +│ │ │ Things database). Use when a user asks OpenClaw to add a task to │ │ +│ │ │ Things, list inbox/today/upcoming, search tasks, or inspect │ │ +│ │ │ projects/areas/tags. │ │ +│ ✓ ready │ 🧵 tmux │ Remote-control tmux sessions for interactive CLIs by sending │ openclaw-bundled │ +│ │ │ keystrokes and scraping pane output. │ │ +│ ✗ missing │ 📋 trello │ Manage Trello boards, lists, and cards via the Trello REST API. │ openclaw-bundled │ +│ ✓ ready │ 🎞️ video-frames │ Extract frames or short clips from videos using ffmpeg. │ openclaw-bundled │ +│ ✗ missing │ 📞 voice-call │ Start voice calls via the OpenClaw voice-call plugin. │ openclaw-bundled │ +│ ✗ missing │ 📱 wacli │ Send WhatsApp messages to other people or search/sync WhatsApp │ openclaw-bundled │ +│ │ │ history via the wacli CLI (not for normal user chats). │ │ +│ ✓ ready │ 🌤️ weather │ Get current weather and forecasts via wttr.in or Open-Meteo. Use │ openclaw-bundled │ +│ │ │ when: user asks about weather, temperature, or forecasts for any │ │ +│ │ │ location. NOT for: historical weather data, severe weather │ │ +│ │ │ alerts, or detailed meteorological analysis. No API key needed. │ │ +│ ✗ missing │ 𝕏 xurl │ A CLI tool for making authenticated requests to the X (Twitter) │ openclaw-bundled │ +│ │ │ API. Use this skill when you need to post tweets, reply, quote, │ │ +│ │ │ search, read posts, manage followers, send DMs, upload media, or │ │ +│ │ │ interact with any X API v2 endpoint. │ │ +└───────────┴──────────────────┴───────────────────────────────────────────────────────────────────┴──────────────────┘ + +Tip: use `npx clawhub` to search, install, and sync skills.