본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

Cloudflare

Cloudflare Workers, Pages, 스토리지, DNS, 큐를 배포하고 관리하며 계정 상태를 확인하고 배포 문제를 조사합니다. Wrangler 프로젝트를 변환하거나 상태 비저장 Worker 형태의 MCP 서버를 구성할 수도 있습니다.

원문원문 설명 보기

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.

danielmiessler/LifeOS스타 19,636(GitHub 19,636 + cccskills 0)
연동 도구Cloudflare

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • Worker나 사이트를 Cloudflare에 배포할 때
  • DNS나 스토리지 상태를 확인할 때
  • 배포 인증 오류를 조사할 때
  • Wrangler 프로젝트를 이전할 때
  • Worker로 실행되는 MCP 서버를 만들 때

한국어 소개

할 수 있는 일

Cloudflare Workers, Pages, KV, R2, D1, DNS, Queues를 배포하고 관리하며 계정 상태와 로그를 확인합니다. 배포가 실패하면 인증 상태와 권한을 살펴 원인을 좁힙니다. Wrangler 프로젝트를 Cloudflare 설정 방식으로 변환하고, 상태 비저장 Worker로 실행되는 MCP 서버의 구성을 도울 수도 있습니다. 계정 작업은 전용 CfEnv 도구로 수행하며, 실행 전 코드 검토와 배포 후 작동 확인을 포함하는 절차를 따릅니다.

이럴 때 유용합니다

Worker나 사이트를 Cloudflare에 공개하거나, DNS 및 스토리지 설정을 확인하거나, 인증 오류를 조사할 때 유용합니다. 기존 Wrangler 프로젝트를 이전하거나 Cloudflare에서 실행할 MCP 서버를 설계할 때도 사용할 수 있습니다.

사용 예시

  • “이 MCP 서버를 Cloudflare에 배포해 주세요.”
  • “Cloudflare 계정에 있는 Worker 목록을 확인해 주세요.”
  • “배포 중 발생한 인증 오류를 조사해 주세요.”

주의 사항

사용하려면 Cloudflare API 토큰과 계정 ID를 설정해야 합니다. 계정 작업에는 cf CLI와 전용 실행 도구를 사용하며, 보통 배포 전에 코드 검토가 필요합니다. Pages 배포는 명시적으로 요청한 경우에만 진행합니다. Cloudflare 이외의 배포나 클라이언트로만 사용하는 MCP 서버의 설정에는 사용하지 않습니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

문서 점검

AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.

안전성전송·삭제·명령 실행 등을 명시하고 있는가
A양호쓰기 작업은 CfEnv를 거치며 검토와 Pages의 명시적 요청 조건이 적혀 있습니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
B일부 부족API 토큰, 계정 ID, 검토 모델이 필요하며 설정 세부 사항은 별도 문서를 참조합니다.

점수에는 넣지 않았습니다. 2026년 10월 28일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

포함된 파일(11)

  • SKILL.md15.2 KB
  • Intents/Create.md4.8 KB
  • Intents/Deploy.md13.5 KB
  • Intents/Explorer.md2.9 KB
  • Intents/Query.md3.3 KB
  • Intents/Troubleshoot.md6.2 KB
  • References/CfCli.md3.4 KB
  • References/McpServerSpec.md8.9 KB
  • References/RuntimeGotchas.md6.1 KB
  • References/StaticSiteConfig.md843 B
  • Setup.md7.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

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

IntentTriggerFile
DeployAny Cloudflare write (deploy, secret, D1 migration or write, KV/R2 write, queue create, Pages deploy), an approved teardown, and converting a Wrangler projectIntents/Deploy.md
CreateCreate a Worker or MCP serverIntents/Create.md
TroubleshootDeployment issuesIntents/Troubleshoot.md
QueryCloudflare state (list workers, versions, KV, DNS, D1, logs, analytics), read-only via cfIntents/Query.md
ExplorerInspect Worker bindings/data live via Local ExplorerIntents/Explorer.md
FileRead when
References/McpServerSpec.mdBefore 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.mdfinding 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.mdwriting 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.mdwriting or converting a project's cloudflare.config.ts and vite.config.ts, static sites especially
Setup.mdfirst-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.mdCfEnv'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 and LinkedIn link card, a public fetch that needs no setup.
  • Code Mode MCP is a fallback for API reads only when it is connected and CfEnv is unavailable (References/CfCli.md § Code Mode MCP fallback).

Wrangler is retired here. Projects carry cloudflare.config.ts + vite.config.ts (the @cloudflare/vite-plugin bundles the Worker, so no project needs Wrangler installed). A repo that still has a wrangler.toml|json|jsonc is unconverted: convert it (Intents/Deploy.md § Converting a Wrangler project) before deploying.

Workers-first doctrine

Default to Workers for everything, static sites included; use Pages only when the user explicitly asks for Pages. A static site (HTML/CSS/JS/JSON, with or without a build step) deploys as a Worker with Static Assets, configured by cloudflare.config.ts and vite.config.ts as in References/StaticSiteConfig.md. Then deploy through Intents/Deploy.md. Add an entrypoint Worker script only if the site needs server logic. Reach for cf pages deploy only when the user explicitly requests Pages.

Dev-URLs-off doctrine

Every worker serves only its authoritative URL. A worker with a custom domain or route ships workersDev: false + previewUrls: false, set explicitly as in References/StaticSiteConfig.md, so there is no *.workers.dev second origin. The one exception is a worker whose workers.dev URL is the authoritative URL because no custom domain exists (for example an internal worker, or one not yet launched on its domain). To turn a stray dev URL off: POST /accounts/{id}/workers/scripts/{name}/subdomain with {"enabled":false,"previews_enabled":false}. A scheduled check that GETs each routed worker's *.workers.dev origin and flags anything other than 404/410 is the backstop; if Config.md names one under dev_url_check:, read its latest result before treating the account as clean.

cf CLI

Every account-touching command runs as bun ~/.claude/LIFEOS/TOOLS/CfEnv.ts <cf args>, on the pinned version. A global cf serves only the plain calls (discovery, --help, --local, a project's dry run); updating it changes nothing CfEnv runs. Re-probe (--version, --help) on every pin move, because command names still move between betas.

bun add -g cf@latest        # plain cf for discovery and local work; LifeOS rule: bun only
cf cli telemetry status     # match PREFERENCES.md § Telemetry when the install sets one
  • Discovery. Keep cf cli search queries anonymous: describe the action and resource type, never a name, domain, ID or token.
  • Auth. CfEnv.ts auth whoami is the auth probe.
  • Safety. Delete and update commands hit the live API. Most accept --dry-run; use it first on anything destructive.

Credentials

A single master CLOUDFLARE_API_TOKEN lives in ~/.claude/.env: one Account API Token granted only the scopes your deploys use. A site that ships Workers with a D1 database on its own domain, for example, needs Workers Scripts edit, Workers Routes edit, D1 edit and Zone DNS edit, and nothing account-wide beyond that; add a product's scope when you start deploying it. The token's name and exact permission set are yours to record in Config.md, never here. Every Cloudflare operation — deploys, reads, secrets, Pages, D1, R2, KV, DNS — uses it through CfEnv. Code that needs the token at runtime resolves process.env.CLOUDFLARE_API_TOKEN only, never a per-product variant; per-product names (_WORKERS_EDIT, _WORKERS_READ, _D1) split one credential into several that drift apart. Never unset the token to coast on an OAuth login; that false fix hides the real fault and restarts the rotation loop. A Worker that needs the token at runtime gets it with CfEnv.ts secret put CLOUDFLARE_API_TOKEN --name <worker> --from-env, and every such Worker is re-threaded after a rotation; keep the list of them in Config.md.

Data & Config

First-time setup, the Config.md entries and a no-account proof: Setup.md.

  • Account-specific facts → <configRoot>/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Cloudflare/Config.md (configRoot is $CLAUDE_CONFIG_DIR when set, else ~/.claude): the token's name and permission set, the Workers that consume the token at runtime, and the optional new_zone_sweep:, dev_url_check: and scanner_registration: commands. The skill body reads it; no code parses it.
  • Optional preferences → PREFERENCES.md in the same directory; when present they override defaults here.
  • Credentials → CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID in ~/.claude/.env, read only by LIFEOS/TOOLS/CfEnv.ts, which stops with exit 2 when the token is missing.
  • Runtime ledgers → on every real deploy, success or failure, CfEnv appends one line to LIFEOS/MEMORY/STATE/deploys.jsonl (commit, review, probes, version and previous version, for rollback) and records one estate event in the Ledger through LIFEOS/TOOLS/LedgerDeployEvent.ts (MEMORY/SYSTEMUPDATES/deploys.jsonl).

Gotchas

  • A new apex domain ships bare until your baseline is applied. Zone settings and transform rules are per-zone, so a brand-new zone has none of what existing zones carry. The gate, and what DeployRegistrationGate checks, is in Intents/Deploy.md § Safety gates.
  • Wrong probe trap. /user/tokens/verify requires User Details: Read, which an Account API Token scoped to deploy work usually lacks, so it returns code 1000 on a valid token. Never use it to test the master. Use a scope-matching probe (e.g. /accounts/{id}/workers/scripts) or CfEnv.ts auth whoami. A false negative here leads straight into needless rotation loops.
  • Verify the token against what you deploy, not against its docs. A 200 from each product endpoint you use (/accounts/{id}/d1/database, /pages/projects, /r2/buckets, /storage/kv/namespaces, /workers/scripts, /analytics_engine/sql, /zones) is the proof of scope; older notes claiming a token lost a scope go stale.
  • The cf that answers is CfEnv's pin, not the global install. A stale CLI produces wrong errors (an old Wrangler once masked the real D1 scope state behind a misleading error), and cf is beta and moves fast. When an error looks wrong, check the command against the pinned version (bunx <CF_PACKAGE> <command> --help) before blaming the account; bun add -g cf@latest or bun add -d cf@latest updates only plain cf, never what CfEnv runs.
  • Project code must not spawn cf raw. Wrangler coasted on a saved OAuth login; cf reads CLOUDFLARE_API_TOKEN from its environment, which an interactive shell carries whenever its profile exports .env, so a raw call runs outside CfEnv's probes, review and allowlist, and fails wherever no shell export exists. Every script, package script or tool that calls the account runs bun "$HOME/.claude/LIFEOS/TOOLS/CfEnv.ts" <args> (TypeScript: spawn bun with CfEnv as the first argument). --local, --dry-run and discovery calls stay plain cf. A Wrangler-era repo usually has several raw calls in package scripts and tools; find them all when converting.
  • cf dry-run of a secret write prints the value. CfEnv refuses --dry-run on every secret put for that reason, before stdin or any credential is read.
  • cf deploy deletes every secret the config does not declare. A secret set with secret put survives only while cloudflare.config.ts lists it as NAME: bindings.secret() under env. Wrangler kept undeclared secrets, so every converted project is exposed. A dropped secret can lock every user out of a site with no error at deploy time. Declare every live secret before the next deploy (workers secrets list --worker <name> shows them), then re-list after deploying. Also: secret put --from-env KEY reads ~/.claude/.env, not the shell, so pipe other values on stdin (CfEnv.ts secret put NAME --name <worker> < file).
  • A generated deploy directory gets a whole-repo review. CfEnv reviews the directory it runs in; when that directory is git-ignored build output (for example a cf/build/<Worker> directory), it reviews the repository root instead, because the generated folder's own diff is always empty.
  • d1 query output through CfEnv is JSON on the combined stream. Capture with 2>&1 and parse from the first [; redirecting stderr to /dev/null can leave nothing to parse.

Examples

Example 1: Deploy a Worker

User: "deploy the MCP server to Cloudflare"
-> Deploy intent
-> "Deployed version <id>, live at https://<custom-domain>" — the version ID from cf's deploy output, confirmed in `CfEnv.ts workers versions list`, plus a live probe of the custom domain

Example 2: Query Cloudflare state

User: "list all my workers"
-> Query intent
-> A table of every deployed worker, read from `CfEnv.ts workers list` this turn

Example 3: Fix deployment error

User: "Cloudflare deploy is failing with auth error"
-> Troubleshoot intent
-> `CfEnv.ts auth whoami` and the scope-matching probe (/accounts/{id}/workers/scripts?per_page=1) run first; 200 means token is fine and failure is downstream; 403 or code 10000 means checking the account ID and scope against Config.md; only a 401 or an invalid-token error leads to rotation
-> "Probe returned 200 — token healthy; root cause was a stale binding in cloudflare.config.ts. Redeployed successfully."

Example 4: Check DNS records

User: "what DNS records does example.com have?"
-> Query intent
-> The full DNS record table from `CfEnv.ts dns records list -z <zone>`

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

AnnualReports

무료요약 있음

여러 업체와 공공기관의 사이버 보안 보고서를 검색하고 가져와 위협, 랜섬웨어, 침해 통계 등의 추세를 비교합니다. 분석에는 출처별 업체, 연도, 보고서를 표시하고 자료 간 차이도 따로 다룹니다.

  • 분류별 위협 보고서를 찾을 때
  • 특정 업체의 보고서를 가져올 때
  • 여러 업체의 랜섬웨어 동향을 비교할 때
danielmiessler/LifeOS2만2026년 10월 28일 업데이트

ApertureOscillation

무료요약 있음

기능이나 구성 요소 자체의 설계 요구와 시스템 전체의 목표를 세 단계로 비교합니다. 설계상의 충돌과 적절한 구현 범위를 정리하고, 제안한 설계가 전체 방향과 맞는지 평가합니다.

  • 서비스나 라이브러리를 분리할지 판단하기
  • 기능 요구와 제품 방향 비교하기
  • 새 구성 요소와 기존 시스템의 정합성 확인하기
danielmiessler/LifeOS2만2026년 10월 28일 업데이트

Aphorisms

무료요약 있음

글의 주제에 맞는 격언과 인용문을 찾아 저자와 선정 이유를 함께 제안합니다. 출처가 있는 인용문을 추가하고, 사상가의 말을 주제별로 조사하며, 사용 기록을 관리해 같은 인용문을 반복하지 않도록 돕습니다.

  • 뉴스레터에 어울리는 인용문 찾기
  • 출처와 함께 중복 없이 인용문 저장하기
  • 주제별로 사상가의 말 조사하기
danielmiessler/LifeOS2만2026년 10월 28일 업데이트

Art

무료요약 있음

블로그 삽화, 기술 도표, 비교 그림, 만화, 아이콘 등을 용도에 맞는 절차로 제작합니다. 구도와 색상, 이미지 모델을 정하고 검토용 이미지를 출력합니다.

  • 블로그 제목 이미지를 만들 때
  • 시스템 구조를 그림으로 설명할 때
  • 비교나 연대표를 시각화할 때
danielmiessler/LifeOS2만2026년 10월 28일 업데이트

ArtDirection

무료요약 있음

브리프와 제작 기준에 따라 이미지, 영상, 슬라이드, 사이트 화면 캡처의 시각 품질을 평가합니다. 두 비전 심사자가 점수와 결함 우선순위를 제시하고, 정해진 횟수 안에서 수정을 돕습니다. 평가를 통과한 결과물만 전달할 수 있으며, 사람의 점수와 의견은 별도 기록해 심사 보정에 활용합니다.

  • 이미지 수정 항목의 우선순위 정리
  • 기준에 따라 영상이나 슬라이드 평가
  • 공개 전 시각 품질 점검
danielmiessler/LifeOS2만2026년 10월 28일 업데이트

ArXiv

무료요약 있음

주제, 연구 분야, 논문 ID로 arXiv 논문을 찾고 제목, 저자, 초록, 링크를 정리합니다. 새 논문을 확인하고, 제공되는 경우 AlphaXiv의 AI 생성 개요도 가져옵니다.

  • AI·머신러닝 분야의 새 논문 확인
  • 특정 주제의 논문 검색
  • 논문 ID나 arXiv 주소로 조회
danielmiessler/LifeOS2만2026년 10월 28일 업데이트

danielmiessler의 스킬 모두 보기

이 스킬의 문제 신고