Claude Code CLI for OpenClaw

Install, authenticate, and use Claude Code CLI as a native coding tool for any OpenClaw agent system.

3,891 stars

Best use case

Claude Code CLI for OpenClaw is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Install, authenticate, and use Claude Code CLI as a native coding tool for any OpenClaw agent system.

Teams using Claude Code CLI for OpenClaw should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/claude-code-cli-openclaw/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/asif2bd/claude-code-cli-openclaw/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/claude-code-cli-openclaw/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How Claude Code CLI for OpenClaw Compares

Feature / AgentClaude Code CLI for OpenClawStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Install, authenticate, and use Claude Code CLI as a native coding tool for any OpenClaw agent system.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Skill: Claude Code CLI for OpenClaw

## Description

This skill teaches OpenClaw agents how to install, authenticate, configure, and use Claude Code CLI as a coding tool. Claude Code is an official Anthropic CLI that provides file-based context efficiency, reducing token usage by 80-90% compared to raw API calls for coding tasks.

**Key Benefits:**
- **Token Efficiency:** ~500 tokens per task vs 10k-50k with raw API (Claude Code reads files via tools instead of dumping full content into context)
- **Flat-Rate Billing:** Uses Claude Max subscription (OAuth), not per-token API billing
- **Better Code Quality:** Native file exploration, codebase understanding, and precise edits
- **Project Context:** CLAUDE.md file provides persistent project brain across sessions

**Use Cases:**
- Code implementation and refactoring
- Bug fixes with file exploration
- Multi-file code changes
- Project scaffolding
- Code reviews and analysis

## 🎯 Setup Modes

| Mode | Description |
|------|-------------|
| 🤖 OpenClaw Backend | Use as `claude-cli` model in any agent (`claude-cli/sonnet-4.6`, `claude-cli/opus-4.6`) |
| 🖥️ Direct CLI | Run `claude --print` from any project directory — no agent config needed |
| ☁️ With MissionDeck | Track Claude Code sessions live in your [MissionDeck.ai](https://missiondeck.ai) dashboard via JARVIS integration |

## Prerequisites

- **Claude Max Subscription:** Required for OAuth authentication (cannot use raw API keys)
- **Node.js/npm:** For installing the CLI globally
- **TTY Terminal:** Required for OAuth setup flow (use `pty: true` with exec tool)
- **Git:** Recommended for managing code changes in branches
- **OpenClaw Gateway:** Must be running to apply config patches

## Installation

### Step 1: Install Claude Code CLI

```bash
npm install -g @anthropic-ai/claude-code
```

### Step 2: Verify Installation

```bash
which claude && claude --version
```

Expected output:
```
/usr/bin/claude
2.1.75
```

### Quick Install

Use the provided installation script:

```bash
cd /root/.openclaw/workspace/skills/claude-code
bash scripts/install.sh
```

The script handles:
- NPM package installation
- Version verification
- Environment setup preparation

## Authentication

Claude Code requires **browser-based OAuth authentication** using a Claude Max subscription. Raw API keys (sk-ant-api03-*) will NOT work.

### Interactive Setup (One-Time)

Run this in a PTY terminal (requires TTY):

```bash
claude setup-token
```

**Flow:**
1. CLI shows spinner + authorization URL:
   ```
   https://claude.ai/oauth/authorize?code=true&client_id=...&code_challenge=...
   ```
2. Copy URL and open in browser
3. Authorize the application with your Claude Max account
4. Browser shows authorization code
5. Paste code back into terminal at prompt: `Paste code here if prompted >`
6. Success: `✓ Long-lived authentication token created successfully!`
7. Token format: `sk-ant-oat01-xxxxx` (valid for 1 year)

### Storing the Token

The token must be available as the `CLAUDE_CODE_OAUTH_TOKEN` environment variable.

**Option 1: Shell RC Files (Recommended)**
```bash
echo "export CLAUDE_CODE_OAUTH_TOKEN=YOUR_OAUTH_TOKEN_HERE" >> /root/.bashrc
echo "export CLAUDE_CODE_OAUTH_TOKEN=YOUR_OAUTH_TOKEN_HERE" >> /root/.profile
source /root/.bashrc
```

**Option 2: System-Wide**
```bash
echo "CLAUDE_CODE_OAUTH_TOKEN=YOUR_OAUTH_TOKEN_HERE" >> /etc/environment
```

**Option 3: OpenClaw Config Only**

Add to your `openclaw.json` config patch (see next section) — the token will be available during OpenClaw backend calls but not direct CLI usage.

### 🔒 Security Warning

**CRITICAL:** Never commit your `CLAUDE_CODE_OAUTH_TOKEN` to version control.

- ✅ Store in environment variables or secrets manager
- ✅ Add `.env*` files to `.gitignore`
- ✅ Use OpenClaw config.patch (not committed to git)
- ❌ Never hardcode tokens in scripts
- ❌ Never share tokens publicly or in screenshots
- ❌ Never commit tokens to GitHub/GitLab

**Add to your .gitignore:**
```gitignore
.env
.env.local
.env.*.local
openclaw.json
config.patch
```

### Verification

```bash
echo $CLAUDE_CODE_OAUTH_TOKEN
# Should output: sk-ant-oat01-xxxxx
```

## OpenClaw Configuration

Integrate Claude Code as a CLI backend in OpenClaw, enabling it as a model option and fallback.

### Config Patch

Create or append to `~/.openclaw/config.patch`:

```json
{
  "agents": {
    "defaults": {
      "cliBackends": {
        "claude-cli": {
          "command": "/usr/bin/claude",
          "env": {
            "CLAUDE_CODE_OAUTH_TOKEN": "YOUR_OAUTH_TOKEN_HERE"
          }
        }
      },
      "models": {
        "claude-cli/opus-4.6": {
          "alias": "claude-cli-opus"
        },
        "claude-cli/sonnet-4.6": {
          "alias": "claude-cli-sonnet"
        }
      }
    },
    "list": [
      {
        "id": "tank",
        "model": {
          "primary": "anthropic/claude-opus-4-5",
          "fallbacks": [
            "google/gemini-3-flash-preview",
            "claude-cli/opus-4.6"
          ]
        }
      }
    ]
  }
}
```

### Apply Configuration

```bash
gateway config.patch
```

Verify in gateway logs or test by spawning a coding session.

### Available Models

- `claude-cli/sonnet-4.6` → Claude Sonnet 4.6 (fast, general coding)
- `claude-cli/opus-4.6` → Claude Opus 4.6 (complex reasoning, architecture)

Use as primary model, fallback, or invoke directly via exec.

## Project Setup (CLAUDE.md)

**Critical:** Every project using Claude Code should have a `CLAUDE.md` file in its root directory. This is the "project brain" — Claude Code reads it automatically at session start.

### What to Include

```markdown
# Project: [Name]

## Overview
[1-2 sentence project description]

## Tech Stack
- Language: [e.g., TypeScript, Python, Rust]
- Framework: [e.g., Next.js, FastAPI, Supabase]
- Key Dependencies: [list major packages]

## Directory Structure
```
/
├── src/           # Source code
├── public/        # Static assets
├── supabase/      # Database functions, migrations
└── docs/          # Documentation
```

## Key Files
- `src/App.tsx` - Main app component, routing
- `src/lib/supabase.ts` - Database client
- `supabase/functions/` - Edge functions (24 total)

## Coding Standards
- Use TypeScript strict mode
- Functional components (React)
- Tailwind CSS for styling
- ESLint + Prettier configured

## Deployment
- Platform: Netlify (frontend), Supabase (backend)
- Deploy command: `npm run build`
- Environment: `.env.local` (never commit)

## Critical Rules
- Never commit API keys
- Always run `npm run build` before pushing
- All functions must have TypeScript types

## Testing
- `npm test` - Run Jest tests
- `npm run lint` - Check code style
```

### Template Usage

Copy the provided template and customize:

```bash
cp /root/.openclaw/workspace/skills/claude-code/templates/CLAUDE.md.template /path/to/your/project/CLAUDE.md
# Edit with project-specific details
```

### Real Example

For MissionDeck project, we created:
- `/root/.openclaw/workspace/missiondeck/CLAUDE.md`
- Result: Claude Code instantly knew: 24 edge functions, signup flow, all routes, coding standards
- Zero extra context needed in prompts

## Agent Workflow

### Daily Coding Workflow

**Step 1: Sync Project**
```bash
cd /path/to/project
git pull origin main
```

**Step 2: Run Claude Code with Task**
```bash
CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "Fix the signup redirect bug in src/pages/AuthVerify.tsx — users aren't being redirected to /dashboard after magic link verification"
```

**Step 3: Review Proposed Changes**

Claude Code will:
- Search the codebase
- Identify affected files
- Propose changes with diffs
- Explain reasoning

**Step 4: Build Check**
```bash
npm run build  # or npm test, cargo build, etc.
```

**Step 5: Commit and Push**
```bash
git checkout -b agent/fix-signup-redirect
git add .
git commit -m "fix: redirect to /dashboard after magic link verification"
git push origin agent/fix-signup-redirect
```

**Step 6: Create PR (Optional)**
```bash
gh pr create --title "Fix signup redirect" --body "Fixes redirect bug in AuthVerify.tsx"
```

### OpenClaw Exec Pattern

For agents using the `exec` tool:

```javascript
exec({
  command: `cd /path/to/project && CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "Your task here"`,
  workdir: "/path/to/project",
  pty: false  // PTY not needed for --print mode
})
```

### Subagent Spawn Pattern (Future)

Once ACP harness is configured:

```javascript
sessions_spawn({
  runtime: "acp",
  agentId: "claude-code",
  message: "Fix the navbar bug in components/Navbar.tsx",
  label: "claude-code-navbar-fix"
})
```

## Prompting Patterns

Effective prompts yield better results. Here are proven patterns:

### 1. Plan-First Approach

```
"Show me your plan first. List every file you'll touch and what changes you'll make. Wait for my approval before implementing."
```

**Why:** Prevents unwanted changes, gives you control

### 2. Challenge Mode

```
"Fix the authentication bug. After you're done, grill yourself — what edge cases did you miss? What could break?"
```

**Why:** Forces deeper reasoning, catches edge cases

### 3. RPI Workflow (Research → Plan → Implement)

For complex tasks, use 3 separate prompts:

**Prompt 1 (Research):**
```
"Research how the payment flow works. Show me all relevant files and how they connect."
```

**Prompt 2 (Plan):**
```
"Now plan how to add recurring billing. List the changes step-by-step."
```

**Prompt 3 (Implement):**
```
"Implement the plan. Make the changes."
```

**Why:** Breaks complexity into manageable phases

### 4. Precise Specifications

```
"In src/pages/AuthVerify.tsx, line 42, the redirect after magic link verification is broken. Expected behavior: redirect to /dashboard. Current behavior: stays on /verify. Fix it."
```

**Why:** Clear context = precise fixes

### 5. File-Focused Tasks

```
"Refactor src/lib/database.ts — extract the connection pool logic into a separate file src/lib/db-pool.ts"
```

**Why:** Claude Code excels at file-level operations

### Anti-Patterns (Avoid These)

❌ Vague: "Make the app better"  
❌ No context: "Fix the bug"  
❌ Too broad: "Rewrite the entire codebase"  
❌ Missing paths: "Update the config file" (which one?)  

✅ Specific: "Fix the redirect bug in src/pages/AuthVerify.tsx — users should go to /dashboard after email verification"  
✅ Scoped: "Refactor the authentication logic in src/lib/auth.ts to use async/await instead of promises"  
✅ Clear paths: "Update the database connection pool size in src/config/database.ts from 10 to 20"

## Why Claude Code vs Raw API

### Token Usage Comparison

| Method | Tokens per Task | Cost Model |
|--------|----------------|------------|
| Raw API (full file dump) | 10,000 - 50,000 | Per-token ($) |
| Claude Code (tool-based) | ~500 | Flat-rate (Claude Max subscription) |

**Savings:** 80-90% reduction in token usage

### How It Works

**Raw API Approach:**
```
User: "Fix the bug in App.tsx"
Agent: [reads entire App.tsx] [dumps 5,000 tokens into context] [generates fix] [writes back]
Cost: ~7,000 tokens
```

**Claude Code Approach:**
```
User: "Fix the bug in App.tsx"
Claude Code: [uses file tool to read App.tsx] [analyzes in isolation] [generates fix] [uses edit tool]
Cost: ~500 tokens
```

**Result:** Same quality, 90% fewer tokens, flat-rate billing

### Code Quality Benefits

- **Codebase Exploration:** Claude Code searches files, understands structure
- **Precise Edits:** Tool-based editing, not regex replacement
- **Context Awareness:** Reads CLAUDE.md automatically, no prompt overhead
- **Multi-file Operations:** Handles imports, dependencies across files

## Real-World Example

### Task
"Remove the offer/discount banner from MissionDeck navbar"

### Process

**Claude Code Execution:**
```bash
cd /root/.openclaw/workspace/missiondeck
CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "Remove the discount banner from the navbar"
```

**What Happened:**
1. Claude Code searched codebase for "banner", "discount", "navbar"
2. Found `DiscountBanner` component in `src/components/Navbar.tsx`
3. Identified exactly 2 changes needed:
   - Remove `import { DiscountBanner } from './DiscountBanner'`
   - Remove `<DiscountBanner />` JSX element
4. Proposed changes with diff
5. Build passed: `npm run build` ✓
6. Pushed to branch: `oracle/disable-discount-banner`
7. Merged to main → deployed live

**Token Usage:** ~450 tokens  
**Time:** 30 seconds  
**Result:** Precise, working, deployed

## Troubleshooting

### Issue: "Authentication failed"

**Cause:** Token expired or invalid

**Fix:**
```bash
claude setup-token  # Re-authenticate
# Update token in environment and OpenClaw config
```

### Issue: "command not found: claude"

**Cause:** NPM global bin not in PATH

**Fix:**
```bash
export PATH="$PATH:$(npm bin -g)"
echo 'export PATH="$PATH:$(npm bin -g)"' >> /root/.bashrc
```

### Issue: "Could not read CLAUDE.md"

**Cause:** Project missing CLAUDE.md file

**Fix:**
```bash
cp /root/.openclaw/workspace/skills/claude-code/templates/CLAUDE.md.template /path/to/project/CLAUDE.md
# Edit with project details
```

### Issue: PTY required error during setup

**Cause:** `claude setup-token` needs TTY

**Fix (with OpenClaw exec):**
```javascript
exec({
  command: "claude setup-token",
  pty: true  // Enable pseudo-terminal
})
```

### Issue: "No such file or directory" errors

**Cause:** Running Claude Code from wrong directory

**Fix:** Always `cd` into project root first
```bash
cd /path/to/project
CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "your task"
```

### Issue: Changes not applied

**Cause:** Claude Code proposes changes, but requires approval in interactive mode

**Fix:** Use `--print` flag for non-interactive mode (outputs to stdout)
```bash
claude --print "your task"  # No approval needed, just shows output
```

For interactive mode (approval required):
```bash
claude  # Interactive, will wait for y/n approval
```

## Advanced Usage

### Batch Operations

Process multiple tasks sequentially:

```bash
cd /path/to/project
CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "Task 1: Fix auth bug"
CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "Task 2: Add new endpoint"
CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "Task 3: Update tests"
```

### Model Selection

Force specific model:

```bash
claude --model opus-4.6 --print "Complex architecture refactor"
claude --model sonnet-4.6 --print "Quick bug fix"
```

### Integration with Git Workflow

```bash
# Create feature branch
git checkout -b feature/claude-code-implementation

# Run Claude Code
CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "Implement feature X"

# Review changes
git diff

# Commit
git add .
git commit -m "feat: implement X using claude-code"

# Push
git push origin feature/claude-code-implementation
```

## Best Practices

1. **Always create CLAUDE.md** — It's the project brain, saves token overhead
2. **Use feature branches** — Never commit directly to main
3. **Run builds before committing** — Catch errors early
4. **Be specific in prompts** — Include file paths, expected behavior
5. **Review proposed changes** — Claude Code is good, but verify
6. **Store token securely** — Use environment variables, not hardcoded
7. **Sync before working** — `git pull` to avoid conflicts
8. **Use plan-first for complex tasks** — Get approval before implementation

## References

- **[MissionDeck.ai](https://missiondeck.ai)** — Cloud dashboard for Claude Code session tracking and multi-agent coordination
- **[ProSkills Homepage](https://proskills.md)** — More OpenClaw skills and resources
- **[Claude Code Official Docs](https://docs.anthropic.com/en/docs/claude-code)** — Anthropic documentation
- **[GitHub Repository](https://github.com/ProSkillsMD/skill-claude-code-cli)** — Skill source
- **[NPM Package](https://www.npmjs.com/package/@anthropic-ai/claude-code)** — Claude Code CLI on npm
- **[Claude Max Subscription](https://claude.ai/upgrade)** — Required for OAuth auth

## Skill Metadata

- **Version:** 1.0.2
- **Author:** Matrix Zion (ProSkillsMD)
- **Homepage:** https://missiondeck.ai
- **Created:** 2026-03-13
- **Updated:** 2026-03-14
- **License:** BSD 3-Clause
- **Dependencies:** Node.js, npm, Claude Max subscription
- **OpenClaw Compatibility:** 2026.2+

---

**Next Steps:**
1. Install Claude Code: `npm install -g @anthropic-ai/claude-code`
2. Authenticate: `claude setup-token`
3. Configure OpenClaw: Add CLI backend to `config.patch`
4. Create project CLAUDE.md: Copy template and customize
5. Start coding: `CLAUDE_CODE_OAUTH_TOKEN=$token claude --print "your task"`

---

## More by Asif2BD

```bash
clawhub install jarvis-mission-control    # Free agent command center with Claude Code session tracking
clawhub install openclaw-token-optimizer  # Reduce token costs by 50-80%
clawhub search Asif2BD                    # All skills
```

---

[MissionDeck.ai](https://missiondeck.ai) · Free tier · No credit card required

Related Skills

openclaw-youtube

3891
from openclaw/skills

YouTube SERP Scout for agents. Search top-ranking videos, channels, and trends for content research and competitor tracking.

Content & Documentation

openclaw-search

3891
from openclaw/skills

Intelligent search for agents. Multi-source retrieval with confidence scoring - web, academic, and Tavily in one unified API.

Data & Research

openclaw-media-gen

3891
from openclaw/skills

Generate images & videos with AIsa. Gemini 3 Pro Image (image) + Qwen Wan 2.6 (video) via one API key.

Content & Documentation

OpenClaw Mastery — The Complete Agent Engineering & Operations System

3891
from openclaw/skills

> Built by AfrexAI — the team that runs 9+ production agents 24/7 on OpenClaw.

DevOps & Infrastructure

afrexai-claude-code-production

3891
from openclaw/skills

Complete Claude Code productivity system — project setup, prompting patterns, sub-agent orchestration, context management, debugging, refactoring, TDD, and shipping 10X faster. Zero scripts needed.

openclaw-safe-change-flow

3891
from openclaw/skills

Safe OpenClaw config change workflow with backup, minimal edits, validation, health checks, and rollback. Single-instance first; secondary instance optional.

DevOps & Infrastructure

jqopenclaw-node-invoker

3891
from openclaw/skills

统一通过 Gateway 的 node.invoke 调用 JQOpenClawNode 能力(file.read、file.write、process.exec、process.manage、system.run、process.which、system.info、system.screenshot、system.notify、system.clipboard、system.input、node.selfUpdate)。当用户需要远程文件读写、文件移动/删除、目录创建/删除、进程管理(列表/搜索/终止)、远程进程执行、命令可执行性探测、系统信息采集、截图采集、系统弹窗、系统剪贴板读写、输入控制(鼠标/键盘)、节点自更新、节点命令可用性排查或修复 node.invoke 参数错误时使用。

DevOps & Infrastructure

openclaw-stock-skill

3891
from openclaw/skills

使用 data.diemeng.chat 提供的接口查询股票日线、分钟线、财务指标等数据,支持 A 股等市场。

Data & Research

openclaw-whatsapp

3891
from openclaw/skills

WhatsApp bridge for OpenClaw — send/receive messages, auto-reply agents, QR pairing, message search, contact sync

Workflow & Productivity

ask-claude

3891
from openclaw/skills

Delegate a task to Claude Code CLI and immediately report the result back in chat. Supports persistent sessions with full context memory. Safe execution: no data exfiltration, no external calls, file operations confined to workspace. Use when the user asks to run Claude, delegate a coding task, continue a previous Claude session, or any task benefiting from Claude Code's tools (file editing, code analysis, bash, etc.).

Coding & Development

polymarket-openclaw-trader

3891
from openclaw/skills

Reusable Polymarket + OpenClaw trading operations skill for any workspace. Use when the user needs to set up, run, tune, monitor, and deploy an automated Polymarket trading project (paper/live), including env configuration, risk controls, reporting, and dashboard operations.

Trading Automation

openclaw-version-monitor

3891
from openclaw/skills

监控 OpenClaw GitHub 版本更新,获取最新版本发布说明,翻译成中文, 并推送到 Telegram 和 Feishu。用于:(1) 定时检查版本更新 (2) 推送版本更新通知 (3) 生成中文版发布说明

Workflow & Productivity