Install
openclaw skills install claude-code-cli-openclawInstall, authenticate, and use Claude Code CLI as a native coding tool for any OpenClaw agent system.
openclaw skills install claude-code-cli-openclawThis 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:
Use Cases:
| 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 dashboard via JARVIS integration |
pty: true with exec tool)npm install -g @anthropic-ai/claude-code
which claude && claude --version
Expected output:
/usr/bin/claude
2.1.75
Use the provided installation script:
cd /root/.openclaw/workspace/skills/claude-code
bash scripts/install.sh
The script handles:
Claude Code requires browser-based OAuth authentication using a Claude Max subscription. Raw API keys (sk-ant-api03-*) will NOT work.
Run this in a PTY terminal (requires TTY):
claude setup-token
Flow:
https://claude.ai/oauth/authorize?code=true&client_id=...&code_challenge=...
Paste code here if prompted >✓ Long-lived authentication token created successfully!sk-ant-oat01-xxxxx (valid for 1 year)The token must be available as the CLAUDE_CODE_OAUTH_TOKEN environment variable.
Option 1: Shell RC Files (Recommended)
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
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.
CRITICAL: Never commit your CLAUDE_CODE_OAUTH_TOKEN to version control.
.env* files to .gitignoreAdd to your .gitignore:
.env
.env.local
.env.*.local
openclaw.json
config.patch
echo $CLAUDE_CODE_OAUTH_TOKEN
# Should output: sk-ant-oat01-xxxxx
Integrate Claude Code as a CLI backend in OpenClaw, enabling it as a model option and fallback.
Create or append to ~/.openclaw/config.patch:
{
"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"
]
}
}
]
}
}
gateway config.patch
Verify in gateway logs or test by spawning a coding session.
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.
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.
# 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
Copy the provided template and customize:
cp /root/.openclaw/workspace/skills/claude-code/templates/CLAUDE.md.template /path/to/your/project/CLAUDE.md
# Edit with project-specific details
For MissionDeck project, we created:
/root/.openclaw/workspace/missiondeck/CLAUDE.mdStep 1: Sync Project
cd /path/to/project
git pull origin main
Step 2: Run Claude Code with Task
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:
Step 4: Build Check
npm run build # or npm test, cargo build, etc.
Step 5: Commit and Push
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)
gh pr create --title "Fix signup redirect" --body "Fixes redirect bug in AuthVerify.tsx"
For agents using the exec tool:
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
})
Once ACP harness is configured:
sessions_spawn({
runtime: "acp",
agentId: "claude-code",
message: "Fix the navbar bug in components/Navbar.tsx",
label: "claude-code-navbar-fix"
})
Effective prompts yield better results. Here are proven patterns:
"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
"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
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
"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
"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
❌ 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"
| 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
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
"Remove the offer/discount banner from MissionDeck navbar"
Claude Code Execution:
cd /root/.openclaw/workspace/missiondeck
CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "Remove the discount banner from the navbar"
What Happened:
DiscountBanner component in src/components/Navbar.tsximport { DiscountBanner } from './DiscountBanner'<DiscountBanner /> JSX elementnpm run build ✓oracle/disable-discount-bannerToken Usage: ~450 tokens
Time: 30 seconds
Result: Precise, working, deployed
Cause: Token expired or invalid
Fix:
claude setup-token # Re-authenticate
# Update token in environment and OpenClaw config
Cause: NPM global bin not in PATH
Fix:
export PATH="$PATH:$(npm bin -g)"
echo 'export PATH="$PATH:$(npm bin -g)"' >> /root/.bashrc
Cause: Project missing CLAUDE.md file
Fix:
cp /root/.openclaw/workspace/skills/claude-code/templates/CLAUDE.md.template /path/to/project/CLAUDE.md
# Edit with project details
Cause: claude setup-token needs TTY
Fix (with OpenClaw exec):
exec({
command: "claude setup-token",
pty: true // Enable pseudo-terminal
})
Cause: Running Claude Code from wrong directory
Fix: Always cd into project root first
cd /path/to/project
CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "your task"
Cause: Claude Code proposes changes, but requires approval in interactive mode
Fix: Use --print flag for non-interactive mode (outputs to stdout)
claude --print "your task" # No approval needed, just shows output
For interactive mode (approval required):
claude # Interactive, will wait for y/n approval
Process multiple tasks sequentially:
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"
Force specific model:
claude --model opus-4.6 --print "Complex architecture refactor"
claude --model sonnet-4.6 --print "Quick bug fix"
# 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
git pull to avoid conflictsNext Steps:
npm install -g @anthropic-ai/claude-codeclaude setup-tokenconfig.patchCLAUDE_CODE_OAUTH_TOKEN=$token claude --print "your task"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 · Free tier · No credit card required