| name | cloudflare-management |
| description | Use when working with Cloudflare services (Workers, Pages, R2, D1, KV, DNS, SSL, WAF, Zero Trust, etc.).
Provides comprehensive management via Wrangler CLI (primary) and direct REST API access for services
not covered by Wrangler (DNS, SSL certificates, load balancers, security rules, analytics).
Triggers: "deploy worker", "manage cloudflare", "cloudflare dns", "wrangler setup", "r2 bucket",
"d1 database", "cloudflare api", "cf pages", "cloudflare ssl", "waf rules".
|
Cloudflare Management
Comprehensive Cloudflare service management using Wrangler CLI (primary tool) and REST API (for advanced/non-Wrangler services).
Tool Selection
| Service | Primary Tool | Alternative |
|---|
| Workers, Pages, KV, R2, D1, Queues, AI, Vectorize, Hyperdrive | Wrangler CLI | - |
| DNS, SSL/TLS, Zones, Load Balancers | REST API scripts | Terraform |
| WAF, Rate Limiting, Firewall Rules, Bot Management | REST API scripts | Terraform |
| Zero Trust, Access, Tunnels | cloudflared CLI + REST API | - |
| Analytics, Logs | GraphQL API + REST API | Dashboard |
Decision Flow:
- Developer Platform (Workers/Pages/Storage) โ Use Wrangler
- DNS/Zone/SSL โ Use
cf-zone-management.sh script
- Security (WAF/Firewall) โ Use
cf-security.sh script
- Custom/Advanced โ Use
cf-api.sh script with REST API
Quick Start
1. Install Wrangler
which wrangler
npm install -g wrangler@latest
wrangler --version
2. Authenticate
Interactive (recommended for local dev):
wrangler login
API Token (recommended for CI/CD):
export CLOUDFLARE_API_TOKEN="your_token_here"
export CLOUDFLARE_ACCOUNT_ID="your_account_id"
wrangler whoami
3. Common Workflows
Deploy a Worker:
npm create cloudflare@latest my-worker
cd my-worker
wrangler deploy
Manage KV Storage:
wrangler kv namespace create MY_KV
wrangler kv key put --namespace-id=<id> "mykey" "myvalue"
wrangler kv key get --namespace-id=<id> "mykey"
Deploy to Pages:
wrangler pages deploy ./dist
R2 Bucket Operations:
wrangler r2 bucket create my-bucket
wrangler r2 object put my-bucket/path/file.txt --file=./local-file.txt
wrangler r2 object list my-bucket
D1 Database:
wrangler d1 create my-database
wrangler d1 migrations apply my-database
wrangler d1 execute my-database --command="SELECT * FROM users"
Architecture
Cloudflare Management Skill
โ
โโโ Wrangler CLI (Primary)
โ โโโ Workers & Pages
โ โโโ Storage (KV, R2, D1, Queues)
โ โโโ AI & Vectorize
โ โโโ Development tools (dev, tail, secrets)
โ
โโโ REST API Scripts (Secondary)
โ โโโ cf-api.sh (generic wrapper)
โ โโโ cf-zone-management.sh (DNS, SSL, zones)
โ โโโ cf-security.sh (WAF, firewall, rate limits)
โ
โโโ References
โโโ api-surface.md (all 14 API categories)
โโโ wrangler-commands.md (comprehensive CLI reference)
โโโ authentication.md (token setup)
โโโ service-guides.md (quick-start patterns)
Wrangler Core Commands
| Command | Purpose | Example |
|---|
wrangler init | Create new project | wrangler init my-project |
wrangler dev | Local development | wrangler dev |
wrangler deploy | Deploy to production | wrangler deploy |
wrangler tail | Stream logs | wrangler tail my-worker |
wrangler secret put | Add secret | wrangler secret put API_KEY |
wrangler publish | Legacy deploy (use deploy) | - |
wrangler whoami | Check auth | wrangler whoami |
For complete command reference, see references/wrangler-commands.md.
REST API Access (Non-Wrangler Services)
For services not covered by Wrangler (DNS, SSL, WAF, etc.), use the provided scripts:
Zone Management
bash scripts/cf-zone-management.sh zones list
bash scripts/cf-zone-management.sh zones create example.com
bash scripts/cf-zone-management.sh zones delete example.com
bash scripts/cf-zone-management.sh zone get example.com
bash scripts/cf-zone-management.sh zone settings example.com
bash scripts/cf-zone-management.sh zone purge-cache example.com
DNS Management
bash scripts/cf-zone-management.sh dns list example.com
bash scripts/cf-zone-management.sh dns create example.com A "api" "192.0.2.1"
bash scripts/cf-zone-management.sh dns update example.com <record-id> A "api" "192.0.2.2"
bash scripts/cf-zone-management.sh dns delete example.com <record-id>
SSL Certificate Management
bash scripts/cf-zone-management.sh ssl list example.com
bash scripts/cf-zone-management.sh ssl settings example.com
bash scripts/cf-zone-management.sh ssl update example.com strict
Security Rules
bash scripts/cf-security.sh firewall list example.com
bash scripts/cf-security.sh ratelimit create example.com "/api/*" 100
bash scripts/cf-security.sh waf list example.com
Generic API Calls
bash scripts/cf-api.sh GET zones
bash scripts/cf-api.sh POST zones/<zone-id>/dns_records '{"type":"A","name":"test","content":"192.0.2.1"}'
bash scripts/cf-api.sh PATCH zones/<zone-id>/settings/ssl '{"value":"strict"}'
Configuration
wrangler.toml Structure
See assets/wrangler.toml.template for a comprehensive template.
Basic structure:
name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-01-01"
[[kv_namespaces]]
binding = "MY_KV"
id = "your_namespace_id"
[[r2_buckets]]
binding = "MY_BUCKET"
bucket_name = "my-bucket"
[[d1_databases]]
binding = "DB"
database_name = "my-database"
database_id = "your_database_id"
[vars]
ENVIRONMENT = "production"
routes = [
{ pattern = "example.com/*", zone_name = "example.com" }
]
Environment Variables
Required for authentication (see references/authentication.md):
CLOUDFLARE_API_TOKEN=your_token_here
CLOUDFLARE_ACCOUNT_ID=your_account_id
CLOUDFLARE_ZONE_ID=your_zone_id
Common Patterns
Multi-Environment Deployment
[env.staging]
name = "my-worker-staging"
vars = { ENVIRONMENT = "staging" }
[env.production]
name = "my-worker-production"
vars = { ENVIRONMENT = "production" }
wrangler deploy --env staging
wrangler deploy --env production
Secret Management
wrangler secret put API_KEY
wrangler secret put API_KEY --env production
wrangler secret list
Local Development with Bindings
wrangler dev
Remote Development (Wrangler v4+)
wrangler dev --remote
Service-Specific Guides
For detailed quick-start patterns for each service:
For complete API surface coverage:
Rate Limits & Quotas
Wrangler operations: Subject to account tier limits (Free/Pro/Business/Enterprise)
API operations:
- Client API per user/account token: 1,200 requests per 5 minutes
- Client API per IP: 200 requests per second
- GraphQL: 320 requests per 5 minutes (variable by query cost)
Best practices:
- Use Wrangler for bulk operations (built-in rate limit handling)
- For direct API calls, implement exponential backoff on 429 responses
- Cache API responses where appropriate (zone configs, etc.)
Troubleshooting
Common Issues
Authentication fails:
wrangler whoami
wrangler login
echo $CLOUDFLARE_API_TOKEN
echo $CLOUDFLARE_ACCOUNT_ID
Deploy fails:
wrangler deploy --dry-run
wrangler tail my-worker
wrangler config
KV/R2/D1 not accessible:
wrangler kv namespace list
wrangler r2 bucket list
wrangler d1 list
Script errors:
export CLOUDFLARE_API_TOKEN="your_token"
which jq || brew install jq
Migration from Legacy Tools
From cf-cli or flarectl
Both are deprecated. Migrate to:
- Wrangler for Workers/Pages/Storage
- REST API scripts (this skill) for DNS/SSL/Security
- Terraform provider for infrastructure-as-code
From Cloudflare Dashboard
Export existing configs:
bash scripts/cf-zone-management.sh dns export example.com > dns-records.json
bash scripts/cf-security.sh firewall export example.com > firewall-rules.json
Resources
Next Steps
- Install Wrangler:
npm install -g wrangler@latest
- Authenticate:
wrangler login
- Create your first Worker:
npm create cloudflare@latest
- Explore service guides: references/service-guides.md
- Review API surface: references/api-surface.md