Cloudflare Manager by ckorhonen/claude-skills
npx skills add https://github.com/ckorhonen/claude-skills --skill 'Cloudflare Manager'全面的 Cloudflare 服务管理技能,支持部署和配置 Workers、KV 存储、R2 存储桶、Pages、DNS 记录和路由。自动验证 API 凭证、提取部署 URL 并提供可操作的错误信息。
首次使用此技能前:
安装依赖项
cd ~/.claude/skills/cloudflare-manager
bun install
配置 API 密钥
在项目根目录创建 .env 文件:
CLOUDFLARE_API_KEY=your_api_token_here
CLOUDFLARE_ACCOUNT_ID=your_account_id # 可选,自动检测
获取 API 令牌 :
* 访问 <https://dash.cloudflare.com/profile/api-tokens>
* 点击"创建令牌"
* 使用"编辑 Cloudflare Workers"模板(或创建自定义令牌)
* 所需权限:
* 账户 > Workers 脚本 > 编辑
* 账户 > Workers KV 存储 > 编辑
* 账户 > Workers R2 存储 > 编辑
* 账户 > Cloudflare Pages > 编辑
* 区域 > DNS > 编辑(如果使用自定义域名)
3. 验证凭证
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
运行验证以检查 API 密钥和权限:
cd ~/.claude/skills/cloudflare-manager
bun scripts/validate-api-key.ts
预期输出 :
✅ API key is valid!
ℹ️ Token Status: active
ℹ️ Account: Your Account Name (abc123...)
🔑 Granted Permissions:
✅ Workers Scripts: Edit
✅ Workers KV Storage: Edit
✅ Workers R2 Storage: Edit
验证故障排除 :
* 如果验证失败并显示 401/403:检查 `.env` 中的 API 令牌是否正确
* 如果验证失败并显示网络错误:检查网络连接
* 使用 `--no-cache` 标志强制重新验证:`bun scripts/validate-api-key.ts --no-cache`
运行 bun scripts/validate-api-key.ts 以使用您当前的权限填充此部分。
部署新的 Worker 容器沙盒:
# 使用技能
bun scripts/workers.ts deploy worker-name ./worker-script.js
执行过程 :
https://worker-name.username.workers.dev)示例对话 :
User: "设置并部署一个名为 'api-handler' 的新 Cloudflare Worker 容器沙盒并返回 URL"
Claude: [使用 bun scripts/workers.ts deploy api-handler ./worker.js 部署 Worker]
返回 URL: https://api-handler.username.workers.dev
退出代码 :
0:成功 - Worker 已部署并返回 URL1:失败 - 检查错误信息以获取详情性能 :部署通常在 2-5 秒内完成
创建 KV 命名空间并存储数据:
# 创建命名空间
bun scripts/kv-storage.ts create-namespace user-sessions
# 返回:命名空间 ID(例如 abc123def456)
# 保存此 ID 以绑定到 Workers
# 写入键值对
bun scripts/kv-storage.ts write <namespace-id> "session:user123" '{"userId":"123","token":"abc"}'
# 读取值
bun scripts/kv-storage.ts read <namespace-id> "session:user123"
# 返回:{"userId":"123","token":"abc"}
# 列出所有键(用于调试)
bun scripts/kv-storage.ts list-keys <namespace-id>
# 删除键
bun scripts/kv-storage.ts delete <namespace-id> "session:user123"
重要提示 :KV 存储使用最终一致性。写入可能需要最多 60 秒才能全局传播。对于立即读取,请使用写入数据的同一边缘位置。
创建 R2 存储桶并管理对象:
# 创建存储桶
bun scripts/r2-storage.ts create-bucket media-assets
# 上传文件
bun scripts/r2-storage.ts upload media-assets ./images/logo.png logo.png
# 列出对象
bun scripts/r2-storage.ts list-objects media-assets
# 下载对象
bun scripts/r2-storage.ts download media-assets logo.png ./downloaded-logo.png
将静态站点或应用程序部署到 Pages:
# 创建 Pages 项目(或获取现有项目信息)
bun scripts/pages.ts deploy my-app ./dist
# 返回:https://my-app.pages.dev
# 设置环境变量
bun scripts/pages.ts set-env my-app API_URL https://api.example.com
# 为特定环境设置环境变量
bun scripts/pages.ts set-env my-app DEBUG true --env preview
# 获取部署 URL
bun scripts/pages.ts get-url my-app
自动提取的 URL :Pages 脚本会自动从部署响应中提取并返回 Cloudflare 生成的 URL(例如 https://my-app.pages.dev)。
注意 :API 创建项目结构,但对于实际文件上传,您需要 Wrangler CLI:
npx wrangler pages deploy ./dist --project-name=my-app
工作原理 :该技能创建/验证 Pages 项目并返回 URL。对于包含文件的初始部署,Wrangler 处理复杂的多部分上传过程。
创建 DNS 记录并配置 Worker 路由:
# 创建 DNS A 记录
bun scripts/dns-routes.ts create-dns example.com A api 192.168.1.1
# 将路由模式指向 Worker
bun scripts/dns-routes.ts create-route example.com "*.example.com/api/*" api-handler
设置包含 Worker、KV 存储和 R2 存储桶的完整应用程序:
为缓存创建 KV 命名空间
bun scripts/kv-storage.ts create-namespace app-cache
为媒体创建 R2 存储桶
bun scripts/r2-storage.ts create-bucket app-media
部署带绑定的 Worker
bun scripts/workers.ts deploy app-worker ./worker.js --kv-binding app-cache --r2-binding app-media
配置路由
bun scripts/dns-routes.ts create-route example.com "example.com/*" app-worker
更新现有 Worker 的代码或绑定:
# 更新 Worker 代码
bun scripts/workers.ts update worker-name ./new-worker-script.js
# 获取 Worker 详情
bun scripts/workers.ts get worker-name
# 列出所有 Workers
bun scripts/workers.ts list
对 KV 存储执行批量操作:
# 从 JSON 文件批量写入
bun scripts/kv-storage.ts bulk-write namespace-name ./data.json
# 删除多个键
bun scripts/kv-storage.ts bulk-delete namespace-name key1 key2 key3
如果缺少 .env 文件或未设置 CLOUDFLARE_API_KEY:
Error: CLOUDFLARE_API_KEY not found in environment
Solution: Create .env file in project root:
echo "CLOUDFLARE_API_KEY=your_token_here" > .env
如果 API 令牌缺少所需权限:
Error: Insufficient permissions for Workers deployment
Required: Workers Scripts: Edit
Current: Workers Scripts: Read
Solution: Update token permissions at:
https://dash.cloudflare.com/profile/api-tokens
如果请求过多:
Error: Rate limit exceeded (429)
Solution: Retry automatically with exponential backoff (3 attempts)
如果 API 无法访问:
Error: Failed to connect to Cloudflare API
Solution: Check internet connection and retry
安全 :
.env 文件 - 始终添加到 .gitignorewrangler secret put SECRET_NAME性能 :
开发工作流程 :
wrangler dev 用于本地测试bun scripts/validate-api-key.tswrangler tail worker-nameapi-v1、api-v2 的名称命名约定 :
user-auth-worker 而非 worker1)app-sessions、api-cache)media-assets-prod)资源管理 :
对于高级场景,包括:
请参阅 examples.md 获取全面的示例和模式。
所有脚本位于 ~/.claude/skills/cloudflare-manager/scripts/:
启动模板位于 ~/.claude/skills/cloudflare-manager/templates/:
问题 :"Worker 部署失败,未知错误"
症状 :部署命令以错误代码 1 退出,无特定错误信息
解决方案 :
node --check ./worker.jsls -lh ./worker.jsbun scripts/validate-api-key.ts --no-cache问题 :"KV 命名空间未找到"
症状 :尝试读取/写入命名空间时出错
解决方案 :
bun scripts/kv-storage.ts list-namespaces问题 :"R2 存储桶已存在" 或 "存储桶名称已被占用"
症状 :无法使用所选名称创建存储桶
解决方案 :
my-app-media-2024 而非 mediabun scripts/r2-storage.ts list-buckets问题 :"Pages 部署超时" 或 "部署挂起"
症状 :部署未完成,保持挂起状态
解决方案 :
bun scripts/pages.ts list-deployments project-name问题 :"DNS 记录创建失败"
症状 :无法创建 DNS 记录或路由
解决方案 :
bun scripts/dns-routes.ts list-zonesdig NS yourdomain.com问题 :"API 速率限制超出 (429)"
症状 :命令因"请求过多"而失败
解决方案 :
问题 :"环境中未找到 CLOUDFLARE_API_KEY"
症状 :命令立即因环境错误而失败
解决方案 :
.env 文件cat .env | grep CLOUDFLARE_API_KEYCLOUDFLARE_API_KEY=token(= 周围无空格).env 的项目根目录运行命令快速修复 :
cd /path/to/your/project
echo "CLOUDFLARE_API_KEY=your_token_here" > .env
bun scripts/validate-api-key.ts
每周安装
0
仓库
GitHub 星标
1
首次出现
Jan 1, 1970
安全审计
Comprehensive Cloudflare service management skill that enables deployment and configuration of Workers, KV Storage, R2 buckets, Pages, DNS records, and routing. Automatically validates API credentials, extracts deployment URLs, and provides actionable error messages.
Before using this skill for the first time:
Install Dependencies
cd ~/.claude/skills/cloudflare-manager
bun install
Configure API Key
Create a .env file in your project root:
CLOUDFLARE_API_KEY=your_api_token_here
CLOUDFLARE_ACCOUNT_ID=your_account_id # Optional, auto-detected
Getting your API token :
* Visit <https://dash.cloudflare.com/profile/api-tokens>
* Click "Create Token"
* Use "Edit Cloudflare Workers" template (or create custom token)
* Required permissions:
* Account > Workers Scripts > Edit
* Account > Workers KV Storage > Edit
* Account > Workers R2 Storage > Edit
* Account > Cloudflare Pages > Edit
* Zone > DNS > Edit (if using custom domains)
3. Validate Credentials
Run validation to verify your API key and check permissions:
cd ~/.claude/skills/cloudflare-manager
bun scripts/validate-api-key.ts
Expected output :
✅ API key is valid!
ℹ️ Token Status: active
ℹ️ Account: Your Account Name (abc123...)
🔑 Granted Permissions:
✅ Workers Scripts: Edit
✅ Workers KV Storage: Edit
✅ Workers R2 Storage: Edit
Troubleshooting validation :
* If validation fails with 401/403: Check your API token is correct in `.env`
* If validation fails with network error: Check internet connection
* Use `--no-cache` flag to force fresh validation: `bun scripts/validate-api-key.ts --no-cache`
Run bun scripts/validate-api-key.ts to populate this section with your current permissions.
To deploy a new worker container sandbox:
# Using the skill
bun scripts/workers.ts deploy worker-name ./worker-script.js
What happens :
https://worker-name.username.workers.dev)Example conversation :
User: "Set up and deploy a new cloudflare worker container sandbox named 'api-handler' and return the URL"
Claude: [Deploys worker using bun scripts/workers.ts deploy api-handler ./worker.js]
Returns URL: https://api-handler.username.workers.dev
Exit codes :
0: Success - worker deployed and URL returned1: Failure - check error message for detailsPerformance : Deployment typically completes in 2-5 seconds
To create a KV namespace and store data:
# Create namespace
bun scripts/kv-storage.ts create-namespace user-sessions
# Returns: Namespace ID (e.g., abc123def456)
# Save this ID for binding to workers
# Write key-value pair
bun scripts/kv-storage.ts write <namespace-id> "session:user123" '{"userId":"123","token":"abc"}'
# Read value
bun scripts/kv-storage.ts read <namespace-id> "session:user123"
# Returns: {"userId":"123","token":"abc"}
# List all keys (useful for debugging)
bun scripts/kv-storage.ts list-keys <namespace-id>
# Delete a key
bun scripts/kv-storage.ts delete <namespace-id> "session:user123"
Important : KV storage uses eventual consistency. Writes may take up to 60 seconds to propagate globally. For immediate reads, use the same edge location where you wrote the data.
To create an R2 bucket and manage objects:
# Create bucket
bun scripts/r2-storage.ts create-bucket media-assets
# Upload file
bun scripts/r2-storage.ts upload media-assets ./images/logo.png logo.png
# List objects
bun scripts/r2-storage.ts list-objects media-assets
# Download object
bun scripts/r2-storage.ts download media-assets logo.png ./downloaded-logo.png
To deploy a static site or application to Pages:
# Create Pages project (or get existing project info)
bun scripts/pages.ts deploy my-app ./dist
# Returns: https://my-app.pages.dev
# Set environment variable
bun scripts/pages.ts set-env my-app API_URL https://api.example.com
# Set environment variable for specific environment
bun scripts/pages.ts set-env my-app DEBUG true --env preview
# Get deployment URL
bun scripts/pages.ts get-url my-app
Auto-extracted URLs : The Pages script automatically extracts and returns the Cloudflare-generated URL (e.g., https://my-app.pages.dev) from the deployment response.
Note : The API creates the project structure, but for actual file uploads, you'll need Wrangler CLI:
npx wrangler pages deploy ./dist --project-name=my-app
Why this works : The skill creates/verifies the Pages project and returns the URL. For the initial deployment with files, Wrangler handles the complex multipart upload process.
To create DNS records and configure worker routes:
# Create DNS A record
bun scripts/dns-routes.ts create-dns example.com A api 192.168.1.1
# Route pattern to worker
bun scripts/dns-routes.ts create-route example.com "*.example.com/api/*" api-handler
To set up a complete application with worker, KV storage, and R2 bucket:
Create KV namespace for caching
bun scripts/kv-storage.ts create-namespace app-cache
Create R2 bucket for media
bun scripts/r2-storage.ts create-bucket app-media
Deploy worker with bindings
bun scripts/workers.ts deploy app-worker ./worker.js --kv-binding app-cache --r2-binding app-media
Configure route
bun scripts/dns-routes.ts create-route example.com "example.com/*" app-worker
To update an existing worker's code or bindings:
# Update worker code
bun scripts/workers.ts update worker-name ./new-worker-script.js
# Get worker details
bun scripts/workers.ts get worker-name
# List all workers
bun scripts/workers.ts list
To perform bulk operations on KV storage:
# Bulk write from JSON file
bun scripts/kv-storage.ts bulk-write namespace-name ./data.json
# Delete multiple keys
bun scripts/kv-storage.ts bulk-delete namespace-name key1 key2 key3
If .env file is missing or CLOUDFLARE_API_KEY is not set:
Error: CLOUDFLARE_API_KEY not found in environment
Solution: Create .env file in project root:
echo "CLOUDFLARE_API_KEY=your_token_here" > .env
If API token lacks required permissions:
Error: Insufficient permissions for Workers deployment
Required: Workers Scripts: Edit
Current: Workers Scripts: Read
Solution: Update token permissions at:
https://dash.cloudflare.com/profile/api-tokens
If too many requests are made:
Error: Rate limit exceeded (429)
Solution: Retry automatically with exponential backoff (3 attempts)
If API is unreachable:
Error: Failed to connect to Cloudflare API
Solution: Check internet connection and retry
Security :
.env files - always add to .gitignorewrangler secret put SECRET_NAMEPerformance :
Development Workflow :
wrangler dev for local testingbun scripts/validate-api-key.tswrangler tail worker-nameapi-v1, api-v2Naming Conventions :
user-auth-worker not worker1)app-sessions, api-cache)media-assets-prod)Resource Management :
For advanced scenarios including:
See examples.md for comprehensive examples and patterns.
All scripts are located in ~/.claude/skills/cloudflare-manager/scripts/:
Starter templates are available in ~/.claude/skills/cloudflare-manager/templates/:
Issue : "Worker deployment failed with unknown error"
Symptoms : Deployment command exits with error code 1, no specific error message
Solutions :
node --check ./worker.jsls -lh ./worker.jsbun scripts/validate-api-key.ts --no-cacheIssue : "KV namespace not found"
Symptoms : Error when trying to read/write to namespace
Solutions :
bun scripts/kv-storage.ts list-namespacesIssue : "R2 bucket already exists" or "Bucket name taken"
Symptoms : Cannot create bucket with chosen name
Solutions :
my-app-media-2024 instead of mediabun scripts/r2-storage.ts list-bucketsIssue : "Pages deployment timeout" or "Deployment pending"
Symptoms : Deployment doesn't complete, stays in pending state
Solutions :
bun scripts/pages.ts list-deployments project-nameIssue : "DNS record creation failed"
Symptoms : Cannot create DNS records or routes
Solutions :
bun scripts/dns-routes.ts list-zonesdig NS yourdomain.comIssue : "API rate limit exceeded (429)"
Symptoms : Commands fail with "Too many requests"
Solutions :
Issue : "CLOUDFLARE_API_KEY not found in environment"
Symptoms : Commands fail immediately with environment error
Solutions :
.env file in project root (not skill directory)cat .env | grep CLOUDFLARE_API_KEYCLOUDFLARE_API_KEY=token (no spaces around =).env existsQuick Fix :
cd /path/to/your/project
echo "CLOUDFLARE_API_KEY=your_token_here" > .env
bun scripts/validate-api-key.ts
Weekly Installs
0
Repository
GitHub Stars
1
First Seen
Jan 1, 1970
Security Audits