Skills Claude Code CLI for OpenClaw
Install, authenticate, and use Claude Code CLI as a native coding tool for any OpenClaw agent system.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/asif2bd/claude-code-cli-openclaw" ~/.claude/skills/clawdbot-skills-claude-code-cli-for-openclaw && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/asif2bd/claude-code-cli-openclaw" ~/.openclaw/skills/clawdbot-skills-claude-code-cli-for-openclaw && rm -rf "$T"
skills/asif2bd/claude-code-cli-openclaw/SKILL.mdSkill: 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 model in any agent (, ) |
| 🖥️ Direct CLI | Run from any project directory — no agent config needed |
| ☁️ With MissionDeck | Track Claude Code sessions live in your 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
with exec tool)pty: true - Git: Recommended for managing code changes in branches
- OpenClaw Gateway: Must be running to apply config patches
Installation
Step 1: Install Claude Code CLI
npm install -g @anthropic-ai/claude-code
Step 2: Verify Installation
which claude && claude --version
Expected output:
/usr/bin/claude 2.1.75
Quick Install
Use the provided installation script:
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):
claude setup-token
Flow:
- CLI shows spinner + authorization URL:
https://claude.ai/oauth/authorize?code=true&client_id=...&code_challenge=... - Copy URL and open in browser
- Authorize the application with your Claude Max account
- Browser shows authorization code
- Paste code back into terminal at prompt:
Paste code here if prompted > - Success:
✓ Long-lived authentication token created successfully! - Token format:
(valid for 1 year)sk-ant-oat01-xxxxx
Storing the Token
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.
🔒 Security Warning
CRITICAL: Never commit your
CLAUDE_CODE_OAUTH_TOKEN to version control.
- ✅ Store in environment variables or secrets manager
- ✅ Add
files to.env*.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:
.env .env.local .env.*.local openclaw.json config.patch
Verification
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:
{ "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
gateway config.patch
Verify in gateway logs or test by spawning a coding session.
Available Models
→ Claude Sonnet 4.6 (fast, general coding)claude-cli/sonnet-4.6
→ Claude Opus 4.6 (complex reasoning, architecture)claude-cli/opus-4.6
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
# 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:
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
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:
- Search the codebase
- Identify affected files
- Propose changes with diffs
- Explain reasoning
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"
OpenClaw Exec Pattern
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 })
Subagent Spawn Pattern (Future)
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" })
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:
cd /root/.openclaw/workspace/missiondeck CLAUDE_CODE_OAUTH_TOKEN=$CLAUDE_CODE_OAUTH_TOKEN claude --print "Remove the discount banner from the navbar"
What Happened:
- Claude Code searched codebase for "banner", "discount", "navbar"
- Found
component inDiscountBannersrc/components/Navbar.tsx - Identified exactly 2 changes needed:
- Remove
import { DiscountBanner } from './DiscountBanner' - Remove
JSX element<DiscountBanner />
- Remove
- Proposed changes with diff
- Build passed:
✓npm run build - Pushed to branch:
oracle/disable-discount-banner - 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:
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:
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:
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):
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
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)
claude --print "your task" # No approval needed, just shows output
For interactive mode (approval required):
claude # Interactive, will wait for y/n approval
Advanced Usage
Batch Operations
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"
Model Selection
Force specific model:
claude --model opus-4.6 --print "Complex architecture refactor" claude --model sonnet-4.6 --print "Quick bug fix"
Integration with Git Workflow
# 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
- Always create CLAUDE.md — It's the project brain, saves token overhead
- Use feature branches — Never commit directly to main
- Run builds before committing — Catch errors early
- Be specific in prompts — Include file paths, expected behavior
- Review proposed changes — Claude Code is good, but verify
- Store token securely — Use environment variables, not hardcoded
- Sync before working —
to avoid conflictsgit pull - Use plan-first for complex tasks — Get approval before implementation
References
- MissionDeck.ai — Cloud dashboard for Claude Code session tracking and multi-agent coordination
- ProSkills Homepage — More OpenClaw skills and resources
- Claude Code Official Docs — Anthropic documentation
- GitHub Repository — Skill source
- NPM Package — Claude Code CLI on npm
- Claude Max Subscription — 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:
- Install Claude Code:
npm install -g @anthropic-ai/claude-code - Authenticate:
claude setup-token - Configure OpenClaw: Add CLI backend to
config.patch - Create project CLAUDE.md: Copy template and customize
- Start coding:
CLAUDE_CODE_OAUTH_TOKEN=$token claude --print "your task"
More by Asif2BD
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