Skip to content
AI & Agents
Skill

/Cloudflare

Deploys and manages Cloudflare Workers, Pages, KV, R2, D1, DNS, and Queues with the cf CLI, converts Wrangler projects to cf, and authors MCP servers as Workers; never call cf or wrangler raw for a write. USE WHEN deploy worker, deploy pages, ship worker, push to cloudflare,

From plugin
danielmiessler-lifeos
20k97 skills13 agents34 commands

Claude Code

$ npx -y skills add danielmiessler/lifeos --skill Cloudflare --agent claude-code

SKILL.md

Cloudflare.SKILL.md
name: Cloudflare
metadata:
  short-description: "Deploy and manage Cloudflare Workers, storage, DNS, and queues; build Worker MCP servers through gated tooling. Excludes MCP client configuration."
version: 1.2.3
evals:
  manual:
    reason: "Judging a live deploy or DNS change needs the real account, and exercising a deployment or DNS mutation as a verifier would be unsafe."
    falsifier: "The requested resource is absent or in the wrong account, the required post-change probe fails, or the result lacks the resource identifier and verification output."
description: Deploys and manages Cloudflare Workers, Pages, KV, R2, D1, DNS, and Queues with the cf CLI, converts Wrangler projects to cf, and authors MCP servers as Workers; never call cf or wrangler raw for a write. USE WHEN deploy worker, deploy pages, ship worker, push to cloudflare, wrangler deploy, Cloudflare, Pages, DNS, KV, R2, D1, Queues, Workers AI, worker logs, build an MCP server, write an MCP server, expose this as MCP, MCP server structure, what shape should our MCP server be, MCP spec, server/discover, MCP stateless. NOT FOR non-Cloudflare deploys or MCP servers we only consume.

Cloudflare Skill

**Contents:** Ideal State · Intent Routing · How It Works · Data & Config · Gotchas · Examples

Deploys and manages Cloudflare Workers, Pages, KV, R2, D1, DNS, and Queues with one tool, Cloudflare's `cf` CLI, run through `LIFEOS/TOOLS/CfEnv.ts` so the master token reaches the cf process and nothing else. A raw Cloudflare CLI call either runs on whatever token the calling shell exports (a shell profile that exports `.env` puts it in every interactive shell, the agent's Bash shell included), outside CfEnv's probes and review, or coasts on a stale OAuth login, which produces false "the token is dead, rotate it" diagnoses. This skill encodes one tool, one credential, one runner, and one set of verified probes so deploys and queries land the first time.

Ideal State

  • Every account-touching Cloudflare call runs through `LIFEOS/TOOLS/CfEnv.ts`, so the master token from `.env` reaches one cf process and nothing else: no raw cf or Wrangler write, no sourced `.env`, no OAuth fallback.
  • Whatever is deployed or created answers only on its authoritative URL (custom domain with workers.dev and previews off, or workers.dev when no domain exists). The report proves it live with a version ID and a probe, and the code review, new-zone baseline and registration gates were passed rather than overridden.
  • Reads and diagnoses come from live cf output in the same turn. An auth failure is traced through `auth whoami` and a scope-matching probe before any rotation is considered.
  • An MCP server built here is a stateless Worker that meets `References/McpServerSpec.md`.

Intent Routing

| Intent | Trigger | File | |----------|---------|------| | Deploy | Any Cloudflare write (deploy, secret, D1 migration or write, KV/R2 write, queue create, Pages deploy), an approved teardown, and converting a Wrangler project | `Intents/Deploy.md` | | Create | Create a Worker or MCP server | `Intents/Create.md` | | Troubleshoot | Deployment issues | `Intents/Troubleshoot.md` | | Query | Cloudflare state (list workers, versions, KV, DNS, D1, logs, analytics), read-only via cf | `Intents/Query.md` | | Explorer | Inspect Worker bindings/data live via Local Explorer | `Intents/Explorer.md` |

| File | Read when | |------|-----------| | `References/McpServerSpec.md` | Before writing any MCP server. The normative `2026-07-28` build contract — stateless shape, `server/discover`, `resultType`, `CacheableResult`, required headers, MRTR, deprecated features not to adopt. Every MCP server built here uses this structure. | | `References/CfCli.md` | finding the cf command for a task (the decision table), cf output, auth order, `--local` mode, Access, previews, secrets-store and other capabilities, or falling back to Code Mode MCP | | `References/RuntimeGotchas.md` | writing or applying a D1 migration, exporting or backing up D1, long `waitUntil` or cron jobs, static-asset caching headers, Durable Object containers, deciding Container vs isolate, or probing an Astro POST route | | `References/StaticSiteConfig.md` | writing or converting a project's `cloudflare.config.ts` and `vite.config.ts`, static sites especially | | `Setup.md` | first-time setup: the two `.env` keys, the deploy review's reviewer and waivers, the Config.md entries, and the no-account check that CfEnv's allowlist guard is in place | | `LIFEOS/TOOLS/CfEnv.help.md` | CfEnv's usage, verb allowlist and refusals |

How It Works

  • **cf CLI** (open beta) is the only Cloudflare CLI this skill uses. Every account call runs the one version CfEnv pins as `CF_PACKAGE` in `LIFEOS/TOOLS/CfEnv.ts` (`cf@1.0.0-beta.5` when this was written; read the constant for the current pin), not whatever `cf` is installed globally. The pin costs container Workers: a Durable Object container needs `cf@1.0.0-beta.10` or later (`References/RuntimeGotchas.md` § Durable Object containers), so a container Worker cannot deploy through CfEnv until the pin moves. Moving it is a deliberate change: beta.14 dropped `observability telemetry query`, which scheduled log readers rely on (LifeOS's optional Vigil monitor is one), so check every command your callers run against the new version first. Its command map, discovery, output, local mode and extra capabilities are in `References/CfCli.md`.
  • **`LIFEOS/TOOLS/CfEnv.ts`** runs one cf command with `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID` from `~/.claude/.env` injected into that child process only, behind a verb allowlist. `secret put` is translated so the value travels on stdin, never as an argument. Every non-dry-run deploy first runs the independent code review (`LIFEOS/TOOLS/Review.ts`), which needs a reviewer model from the other vendor and fails closed without one (`Setup.md` § Deploy review); a blocker stops the deploy. After a deploy it checks each declared domain's X a
Read more
@danielmiessler
Ships withdanielmiessler-lifeos

⛰️ LifeOS — The universal AI Harness designed to move you from Current to Ideal state in both life and work.

20k97 skills13 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
19.7k
Star history of danielmiessler/lifeos on GitHub, a chart by star-history.com

Other skills on danielmiessler-lifeos.

More skills from other plugins.

Questions about Cloudflare.

Which coding agents can use Cloudflare?
Cloudflare installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.