| name | cloudflare-wrangler-cli |
| description | Use when deploying Cloudflare Workers, managing R2 storage, or working with Cloudflare infrastructure |
Wrangler CLI
Purpose: Comprehensive reference for the Wrangler CLI tool (Cloudflare's developer platform CLI), covering all commands AI agents can use for Worker development, R2 storage management, and infrastructure deployment.
When to Use This Skill
Use this skill when you need to:
- Deploy Cloudflare Workers to staging or production
- Develop and test Workers locally
- Manage R2 buckets and objects
- Handle secrets and environment variables for Workers
- View Worker logs and deployment history
- Investigate Worker performance or errors
- Sync static assets to R2 storage
- Authenticate with Cloudflare platform
Critical Rules
- ALWAYS check pnpm scripts first - Use the general-pnpm-scripts skill to verify if a pnpm script exists before running CLI commands directly
- NEVER deploy to production without staging test - Always test in staging environment first
- ALWAYS use --env flag for production - Prevents accidental deployment to wrong environment
- NEVER commit secrets to wrangler.toml - Use
wrangler secret put for sensitive values
- ALWAYS use --remote flag for dev - Local mode doesn't support R2 bindings properly
CLI Installation & Authentication
Version Check
wrangler --version
Authentication
wrangler login
wrangler whoami
wrangler logout
Command Categories
Worker Development
| Command | Purpose | Example | Key Flags |
|---|
wrangler dev | Run worker locally | wrangler dev --remote | --remote, --local, --port |
wrangler deploy | Deploy worker | wrangler deploy --env staging | --env, --dry-run |
wrangler tail | View live logs | wrangler tail --format pretty | --env, --format |
wrangler deployments list | List deployments | wrangler deployments list --env production | --env |
Common Usage:
pnpm dev:w
wrangler dev --remote
pnpm w:deploy:staging
pnpm w:deploy:production
wrangler tail --env production --format pretty
R2 Storage Management
| Command | Purpose | Example | Key Flags |
|---|
wrangler r2 bucket create | Create R2 bucket | wrangler r2 bucket create my-bucket | --jurisdiction |
wrangler r2 bucket list | List buckets | wrangler r2 bucket list | - |
wrangler r2 object put | Upload object | wrangler r2 object put bucket/key --file path | --file, --content-type |
wrangler r2 object get | Download object | wrangler r2 object get bucket/key --file path | --file |
wrangler r2 object list | List objects | wrangler r2 object list bucket | --limit, --prefix |
wrangler r2 object delete | Delete object | wrangler r2 object delete bucket/key | - |
Common Usage:
wrangler r2 bucket create lightcraft-assets-staging
wrangler r2 bucket list
wrangler r2 object put lightcraft-assets-staging/logo.png --file ./assets/logo.png
wrangler r2 object list lightcraft-assets-staging --limit 100
wrangler r2 object get lightcraft-assets-staging/logo.png --file ./downloaded.png
Secret Management
| Command | Purpose | Example | Key Flags |
|---|
wrangler secret put | Set secret | wrangler secret put API_KEY --env production | --env |
wrangler secret list | List secret names | wrangler secret list --env production | --env |
wrangler secret delete | Delete secret | wrangler secret delete API_KEY --env production | --env |
Common Usage:
wrangler secret put DATABASE_URL --env staging
echo "secret-value" | wrangler secret put API_KEY --env production
wrangler secret list --env production
wrangler secret delete OLD_KEY --env staging
Account Management
| Command | Purpose | Example | Key Flags |
|---|
wrangler login | Authenticate | wrangler login | - |
wrangler whoami | Show current user | wrangler whoami | - |
wrangler logout | Logout | wrangler logout | - |
Environment Management
Wrangler uses environments defined in wrangler.toml:
| Environment | Flag | Use Case |
|---|
| dev (default) | (no flag) | Local development |
| staging | --env staging | Pre-production testing |
| production | --env production | Live production |
Configuration Example (wrangler.toml):
name = "file-delivery"
compatibility_date = "2024-11-01"
[env.staging]
account_id = "your-account-id"
vars = { ENVIRONMENT = "staging" }
[[env.staging.r2_buckets]]
binding = "ASSETS"
bucket_name = "lightcraft-assets-staging"
[env.production]
account_id = "your-account-id"
vars = { ENVIRONMENT = "production" }
[[env.production.r2_buckets]]
binding = "ASSETS"
bucket_name = "lightcraft-assets-production"
Key points:
- Default environment (dev) is used when no
--env flag is specified
- Each environment can have different bindings, variables, and configuration
- Secrets are environment-specific (set with
--env flag)
Integration with Related Skills
Before using this skill:
- Use general-pnpm-scripts - Check if a pnpm script wrapper exists
- If script exists, use it (e.g.,
pnpm w:deploy:staging instead of wrangler deploy --env staging)
- If no script exists, use direct CLI commands documented here
After using this skill:
- Review architecture docs - See
docs/spark/backend/cloudflare/r2+workers.md for system design
- Review backend practices - See
docs/spark/backend/cloudflare/practices.md for workflows
Common Workflows
1. Local Development
pnpm dev:w
curl http://localhost:8787/health
curl http://localhost:8787/assets/logo.png
2. Deploying to Staging
git status
pnpm w:deploy:staging
wrangler deployments list --env staging
curl https://file-delivery-staging.your-subdomain.workers.dev/health
wrangler tail --env staging --format pretty
3. Deploying to Production
pnpm w:deploy:production
wrangler deployments list --env production
curl https://file-delivery.your-subdomain.workers.dev/health
wrangler tail --env production --format pretty --status error
4. Managing R2 Assets
pnpm f:assets:gen
pnpm f:assets:push:staging
wrangler r2 object list lightcraft-assets-staging --limit 10
curl https://file-delivery-staging.workers.dev/assets/logo.png
pnpm f:assets:push:production
Troubleshooting
Authentication fails
Symptom: wrangler deploy fails with "Not authenticated"
Solution:
wrangler logout
wrangler login
wrangler whoami
Worker deployment fails
Symptom: Deploy command fails with validation error
Solution:
cat wrangler.toml
wrangler whoami
wrangler deploy --env staging --dry-run
R2 bucket not found in worker
Symptom: Worker throws "R2 bucket not found" error at runtime
Solution:
cat wrangler.toml | grep -A 3 "r2_buckets"
wrangler r2 bucket list
wrangler deploy --env staging
Secrets not working
Symptom: Worker can't access environment variables
Solution:
wrangler secret put MY_SECRET --env production
wrangler secret list --env production
Local dev mode issues with R2
Symptom: wrangler dev (local mode) can't access R2
Solution:
wrangler dev --remote
pnpm dev:w
Best Practices
✅ 1. Use --remote for development
wrangler dev --remote
wrangler dev --local
✅ 2. Always test in staging first
wrangler deploy --env staging
wrangler deploy --env production
wrangler deploy --env production
✅ 3. Use pnpm scripts when available
pnpm w:deploy:staging
wrangler deploy --env staging
✅ 4. Monitor logs after deployment
wrangler tail --env production --format pretty
wrangler tail --env production --status error
✅ 5. Use semantic commit messages
git add .
git commit -m "feat(worker): Add asset caching logic"
git push
pnpm w:deploy:staging
See Also:
examples.md - Detailed workflow examples
reference.md - Complete command reference and anti-patterns
docs/spark/backend/cloudflare/practices.md - Backend-specific practices
docs/spark/backend/cloudflare/r2+workers.md - Architecture documentation