Wrangler CLI — SKILL.md

Raw skill file that agents receive when using this skill

Download
---
name: "Wrangler CLI"
description: "Skill for Wrangler CLI — auto-generated from documentation"
version: "1.0.0"
author: "skynet"
category: "infrastructure"
agents: ["claude-code", "codex", "gemini"]
tags: ["wrangler-cli", "infrastructure", "auto-generated"]
---

# Wrangler CLI

---
name: Wrangler CLI
description: Use this skill when working with Cloudflare Workers - deploying serverless functions, managing KV storage, handling D1 databases, configuring routes, and debugging Workers applications.
category: infrastructure
metadata:
  author: skynet
  version: 1.0.0
---

# Wrangler CLI

Cloudflare's command-line tool for managing Workers, KV storage, D1 databases, and other Cloudflare developer platform services.

## Installation & Authentication

```bash
# Install Wrangler
npm install -g wrangler

# Authenticate with Cloudflare
wrangler login

# Verify authentication
wrangler whoami
```

## Project Initialization

```bash
# Create new Worker project
wrangler init my-worker
wrangler init my-worker --type javascript
wrangler init my-worker --type typescript

# Initialize in existing directory
wrangler init

# Create with specific template
wrangler init my-api --template worker-typescript
wrangler init my-site --template worker-sites
```

## Development Workflow

```bash
# Start local development server
wrangler dev

# Dev with specific port
wrangler dev --port 8787

# Dev with remote resources (KV, D1)
wrangler dev --remote

# Dev with custom host
wrangler dev --host 0.0.0.0

# Test with specific compatibility date
wrangler dev --compatibility-date 2023-10-01
```

## Deployment Commands

```bash
# Deploy to production
wrangler deploy

# Deploy with custom name
wrangler deploy --name my-worker-prod

# Deploy specific script
wrangler deploy src/worker.js

# Deploy with environment variables
wrangler deploy --env production

# Dry run deployment
wrangler deploy --dry-run

# Deploy with compatibility flags
wrangler deploy --compatibility-flags nodejs_compat
```

## Environment Management

```bash
# List environments
wrangler env list

# Deploy to specific environment
wrangler deploy --env staging
wrangler deploy --env production

# Example wrangler.toml for environments
```

```toml
name = "my-worker"
main = "src/index.js"
compatibility_date = "2023-10-01"

[env.staging]
name = "my-worker-staging"
vars = { ENVIRONMENT = "staging" }

[env.production]
name = "my-worker-prod"
vars = { ENVIRONMENT = "production" }
routes = ["api.example.com/*"]
```

## KV Storage Management

```bash
# Create KV namespace
wrangler kv:namespace create "MY_NAMESPACE"
wrangler kv:namespace create "MY_NAMESPACE" --env production

# List namespaces
wrangler kv:namespace list

# Put key-value pair
wrangler kv:key put --binding MY_NAMESPACE "key" "value"
wrangler kv:key put --binding MY_NAMESPACE "config" '{"api": "v1"}'

# Get value
wrangler kv:key get --binding MY_NAMESPACE "key"

# List keys
wrangler kv:key list --binding MY_NAMESPACE

# Delete key
wrangler kv:key delete --binding MY_NAMESPACE "key"

# Bulk operations
wrangler kv:bulk put --binding MY_NAMESPACE data.json
wrangler kv:bulk delete --binding MY_NAMESPACE keys.json
```

## D1 Database Management

```bash
# Create D1 database
wrangler d1 create my-database

# List databases
wrangler d1 list

# Execute SQL commands
wrangler d1 execute my-database --command "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)"
wrangler d1 execute my-database --file schema.sql

# Query database
wrangler d1 execute my-database --command "SELECT * FROM users"

# Local D1 development
wrangler d1 execute my-database --local --command "INSERT INTO users (name) VALUES ('test')"
```

## R2 Storage Management

```bash
# Create R2 bucket
wrangler r2 bucket create my-bucket

# List buckets
wrangler r2 bucket list

# Upload file
wrangler r2 object put my-bucket/file.txt --file local-file.txt

# Download file
wrangler r2 object get my-bucket/file.txt --file downloaded-file.txt

# List objects
wrangler r2 object list my-bucket

# Delete object
wrangler r2 object delete my-bucket/file.txt
```

## Worker Management

```bash
# List Workers
wrangler list

# Get Worker details
wrangler status

# View logs
wrangler tail
wrangler tail --format pretty

# Delete Worker
wrangler delete
wrangler delete --name my-worker

# Update Worker settings
wrangler dispatch-namespace create my-namespace
```

## Secrets Management

```bash
# Set secret
wrangler secret put API_KEY
wrangler secret put API_KEY --env production

# List secrets
wrangler secret list

# Delete secret
wrangler secret delete API_KEY
```

## Routes & Domains

```bash
# List routes
wrangler route list

# Add route
wrangler route add "api.example.com/*" my-worker

# Delete route
wrangler route delete route-id
```

## Decision Tree: Deployment Strategy

```
Need to deploy Worker?
├─ First time deployment?
│  ├─ Yes → wrangler deploy
│  └─ No → Continue below
├─ Multiple environments?
│  ├─ Yes → wrangler deploy --env [staging|production]
│  └─ No → wrangler deploy
├─ Using external resources (KV, D1)?
│  ├─ Yes → Ensure bindings in wrangler.toml → wrangler deploy
│  └─ No → wrangler deploy
└─ Custom domain/routes?
   ├─ Yes → Add routes in wrangler.toml or use wrangler route add
   └─ No → Use default workers.dev subdomain
```

## Troubleshooting

### Common Errors & Solutions

**Error: "No wrangler.toml file found"**
```bash
# Solution: Initialize project or create wrangler.toml
wrangler init
# Or create minimal wrangler.toml:
echo 'name = "my-worker"\nmain = "src/index.js"' > wrangler.toml
```

**Error: "Authentication required"**
```bash
# Solution: Login to Cloudflare
wrangler login
# Or use API token
export CLOUDFLARE_API_TOKEN="your-token"
```

**Error: "Worker exceeded CPU time limit"**
```bash
# Solution: Optimize code or check for infinite loops
wrangler tail  # Monitor execution
# Add compatibility flags if needed
```

**Error: "KV binding not found"**
```bash
# Solution: Check wrangler.toml bindings
# Add to wrangler.toml:
[[kv_namespaces]]
binding = "MY_KV"
id = "your-namespace-id"
```

**Error: "Module not found" in development**
```bash
# Solution: Check module resolution
wrangler dev --compatibility-flags nodejs_compat
# Or update compatibility_date in wrangler.toml
```

**Error: "Route already exists"**
```bash
# Solution: List and remove conflicting routes
wrangler route list
wrangler route delete <route-id>
```

### Debug Commands

```bash
# Verbose logging
wrangler deploy --verbose

# Check Worker limits
wrangler status --verbose

# Validate configuration
wrangler deploy --dry-run

# Monitor real-time logs
wrangler tail --debug
```

### Configuration Validation

```bash
# Test local development
wrangler dev --inspect

# Verify bindings work
wrangler dev --remote

# Check compatibility
wrangler deploy --compatibility-date 2023-10-01 --dry-run
```

curl -s https://skills.skynet.ceo/api/skills/wrangler-cli/skill.md