Use this skill when working with Cloudflare DNS, Tunnels, Pages, or Workers. Triggers on questions about DNS records, tunnel management, static site deployment, or serverless workers. <example> Context: User wants to add a DNS record user: "add a DNS record for api.example.com" </example> <example> Context: User wants to deploy a site user: "deploy this to Cloudflare Pages" </example>
From psnnpx claudepluginhub aladac/claude-pluginsThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Optimizes cloud costs on AWS, Azure, GCP via rightsizing, tagging strategies, reserved instances, spot usage, and spending analysis. Use for expense reduction and governance.
| Tool | Purpose |
|---|---|
Bash | Execute flarectl, cloudflared, wrangler commands |
Read | Read config files (wrangler.toml, config.yml) |
Write | Create/update config files |
Edit | Modify existing configs |
| Command | Purpose |
|---|---|
/cf:list_zones | List all zones |
/cf:zone_info | Zone details |
/cf:add_host | Add DNS record |
/cf:del_host | Delete DNS record |
/cf:list_tunnels | List tunnels |
/cf:add_tunnel | Create tunnel |
/cf:del_tunnel | Delete tunnel |
/cf:tunnel_info | Tunnel details |
/cf:pages_list | List Pages projects |
/cf:pages_deploy | Deploy to Pages |
/cf:pages_destroy | Delete project |
/cf:workers_list | List Workers |
/cf:worker_info | Worker details |
/cf:worker | Worker operations |
psn:devops-cf - Cloudflare infrastructure agentComprehensive guide for Cloudflare infrastructure management.
wrangler CLI installed and authenticatedcloudflared installed| Type | Purpose | Example |
|---|---|---|
| A | IPv4 address | 192.168.1.1 |
| AAAA | IPv6 address | 2001:db8::1 |
| CNAME | Alias to another domain | www → example.com |
| TXT | Text record (SPF, DKIM, verification) | v=spf1 include:... |
| MX | Mail server | mail.example.com (priority 10) |
# A record with proxy
/cf:add_host example.com A www 192.168.1.1 true
# CNAME record
/cf:add_host example.com CNAME blog myblog.pages.dev false
# TXT record (verification)
/cf:add_host example.com TXT @ "google-site-verification=..."
/cf:del_host example.com www
Cloudflare Tunnels expose local services without opening ports.
/cf:add_tunnel my-tunnel
Edit ~/.cloudflared/config.yml:
tunnel: <tunnel-id>
credentials-file: ~/.cloudflared/<tunnel-id>.json
ingress:
- hostname: app.example.com
service: http://localhost:8080
- hostname: api.example.com
service: http://localhost:3000
- service: http_status:404
cloudflared tunnel route dns my-tunnel app.example.com
/cf:list_tunnels
/cf:tunnel_info my-tunnel
/cf:del_tunnel my-tunnel
Deploy static sites to Cloudflare Pages.
# Deploy build output
/cf:pages_deploy ./dist my-site main
# Production deployment
/cf:pages_deploy ./build production-site main
/cf:pages_list
/cf:pages_destroy my-old-site
For framework-specific builds, use wrangler.toml:
name = "my-site"
pages_build_output_dir = "./dist"
[build]
command = "npm run build"
After deployment:
Serverless functions at the edge.
# Initialize new worker
/cf:worker init my-worker
# Run locally
/cf:worker dev my-worker
# Deploy to production
/cf:worker deploy my-worker
# View logs
/cf:worker tail my-worker
# Delete worker
/cf:worker delete my-worker
/cf:workers_list
/cf:worker_info my-worker
my-worker/
├── wrangler.toml
├── src/
│ └── index.ts
├── package.json
└── tsconfig.json
// src/index.ts
export default {
async fetch(request: Request): Promise<Response> {
const url = new URL(request.url);
if (url.pathname === '/api/hello') {
return new Response(JSON.stringify({ message: 'Hello!' }), {
headers: { 'Content-Type': 'application/json' }
});
}
return new Response('Not found', { status: 404 });
}
};
name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-01-01"
[vars]
ENVIRONMENT = "production"
[[kv_namespaces]]
binding = "MY_KV"
id = "xxx"
/cf:list_zones
/cf:zone_info example.com
Returns:
# 1. Create tunnel
/cf:add_tunnel my-app
# 2. Configure ingress (edit config.yml)
# 3. Route DNS
cloudflared tunnel route dns my-app app.example.com
# 4. Run tunnel
cloudflared tunnel run my-app
# 1. Build site
npm run build
# 2. Deploy
/cf:pages_deploy ./dist my-site main
# 3. (Optional) Add custom domain via dashboard
# 1. Init
/cf:worker init my-api
# 2. Develop locally
/cf:worker dev my-api
# 3. Deploy
/cf:worker deploy my-api
# 4. Add route (via dashboard or wrangler.toml)
cloudflared is running/cf:tunnel_info <name>/cf:worker tail <name>