# Code Mate Openclaw

Run the local OpenClaw agent non-interactively.

- Repository: https://github.com/CherryHQ/cherry-studio (53164 stars)
- Category: AI and agents
- License: AGPL-3.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add CherryHQ/cherry-studio --skill code-mate-openclaw -g -a claude-code -y`
Codex: `npx skills add CherryHQ/cherry-studio --skill code-mate-openclaw -g -a codex -y`
Cursor: `npx skills add CherryHQ/cherry-studio --skill code-mate-openclaw -g -a cursor -y`
Gemini CLI: `npx skills add CherryHQ/cherry-studio --skill code-mate-openclaw -g -a gemini-cli -y`

## Description

Run the local OpenClaw agent non-interactively. Use when the user asks to delegate a bounded task to OpenClaw.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# OpenClaw

## Run

1. Set the Bash working directory to the exact directory the user authorized and set a finite outer timeout, normally 11 minutes.
2. Check availability with `command -v openclaw`. If it is missing, stop and ask the user to install OpenClaw in Code Mate.
3. Run the local main agent once:

```bash
openclaw agent --local --agent main --message "<prompt>" --json --timeout 600
```

Pass the prompt as one quoted argument. Parse the JSON payload even when the process exits zero: OpenClaw can encode failure in a successful process exit. Report payload errors and timeouts as failures. Never start onboarding, the interactive TUI, or a login flow.

## Authentication And Permissions

If OpenClaw reports missing onboarding, provider, model, or credentials, stop and ask the user to configure OpenClaw in Code Mate. Never request, read, print, or copy credentials.

The local agent can invoke configured tools. Keep the prompt read-only by default and do not ask it to mutate files or external systems unless the user explicitly requested workspace changes or that external effect. Limit it to the selected working directory.

Example: ask the main agent to explain a module without changing it, then accept the response only when the JSON payload reports success.

