@craftsamo/cloudflare-tools

中文文档
0.8.1发布于 2026/11/09MITES Module零依赖构建来源已验证近 30 天下载 2952

Cloudflare tools for coding agents: zones, DNS, analytics, Workers, Pages, storage and tunnels.

原始使用文档
文档目录24 节
  1. Install
  2. OpenCode
  3. Claude Code
  4. Codex
  5. Grok Build
  6. Antigravity
  7. Hermes Agent
  8. Any other MCP host
  9. Tools and skills
  10. Account ( account )
  11. Zones ( zones )
  12. DNS ( dns )
  13. Analytics ( analytics )
  14. Workers ( workers )
  15. Pages ( pages )
  16. Storage ( storage )
  17. Tunnels ( tunnels )
  18. Email Routing ( email )
  19. Adding a tool
  20. Reads and writes
  21. Settings
  22. Credentials
  23. Layout
  24. License

cloudflare-tools

Cloudflare tools for coding agents: zones, DNS, analytics, Workers, Pages, storage and tunnels.

HarnessDeliveryPinned by
OpenCode V2native plugin (npm package, with skills)the version in the package
OpenCode V1native plugin (npm package, no skills)the version in the package
Claude Codeplugin: MCP server and skillsthe release tag, as the ref
Codexplugin: MCP server and skillsthe release tag, as the ref
Grok Buildplugin: MCP server and skillsthe release tag, as @ref
Antigravityplugin: MCP server and skillsthe release tag's tree URL
Hermes Agentnative plugin (Python, calls the command line)the release commit, as the SHA
other MCP hostMCP server from npmthe version in the package

The tools need Node.js 24 or later. docs/conventions.md describes how the tools are named and how they behave.

Install

Install from a release, never from the default branch: a release is a tag whose commit carries the built dist/, and the default branch does not. In the commands below, <version> is a release's version (1.2.3) and <sha> is the commit its tag names:

gh api repos/craft-agent/cloudflare-tools/commits/v<version> --jq .sha

OpenCode

OpenCode V2 takes the package and its options in opencode.json:

{
  "plugins": [{ "package": "@craftsamo/cloudflare-tools@<version>", "options": { "read_only": false } }],
  "permissions": [{ "action": "cloudflare_*", "resource": "*", "effect": "ask" }]
}

OpenCode V1 takes the package as a string, or as a pair with its options:

{
  "plugin": [["@craftsamo/cloudflare-tools@<version>", { "read_only": false }]],
  "permission": { "cloudflare_*": "ask" }
}

OpenCode allows any action no rule names, so the plugin's request is granted silently unless a rule says ask. Read tools never ask, so the cloudflare_* glob is safe.

The options are the settings. A toolset that is off by default is turned on by listing it in toolsets with the ones to keep, for example "options": { "toolsets": ["account", "zones", "dns", "workers", "pages", "email"] }.

V1 registers no skills. Unpack the package and copy its skills/* folders into ~/.config/opencode/skills/:

npm pack @craftsamo/cloudflare-tools@<version>
tar -xzf craftsamo-cloudflare-tools-<version>.tgz
mkdir -p ~/.config/opencode/skills
cp -r package/skills/* ~/.config/opencode/skills/
rm -rf package craftsamo-cloudflare-tools-<version>.tgz

Claude Code

claude plugin marketplace add craft-agent/cloudflare-tools#v<version>
claude plugin install cloudflare-tools@craft-agent

Codex

codex plugin marketplace add craft-agent/cloudflare-tools --ref v<version>
codex plugin add cloudflare-tools@craft-agent

Codex turns - into _ in server names, so it shows the tools as mcp__cloudflare_tools__cloudflare_*. It starts the MCP server in the plugin's install directory, which is never the caller's working tree.

Grok Build

grok plugin install craft-agent/cloudflare-tools@v<version> --trust

Grok starts the MCP server in the session's working directory.

Antigravity

Install from the tree of the release tag, never from the default branch, which has no built dist/; Antigravity clones the tag into ~/.gemini/config/plugins/cloudflare-tools.

agy plugin install https://github.com/craft-agent/cloudflare-tools/tree/v<version>

Hermes Agent

Hermes installs a commit, not a tag, and the plugin installs disabled:

hermes plugins install craft-agent/cloudflare-tools --ref <sha>
hermes plugins enable cloudflare-tools

Hermes scans a plugin when it installs it. From v0.7.0 the verdict is caution: the tunnel tools name the token permission Account → Cloudflare One Connector: cloudflared, and Hermes rates the word as a tunneling service. hermes plugins install then asks before installing; where it cannot ask (no terminal), add --force, which overrides a caution verdict and no other.

If a Hermes gateway is already running, restart it (hermes gateway restart) to load the plugin.

Any other MCP host

Add the server to the host's MCP configuration. Flags go in args:

{
  "mcpServers": {
    "cloudflare-tools": {
      "command": "npx",
      "args": ["-y", "@craftsamo/cloudflare-tools@<version>", "--read-only"]
    }
  }
}

Tools and skills

Each toolset comes with a skill that tells an agent how to use its tools.

Account (account)

Account credentials, token verification, and audit logs.

ToolWhat it doesClass
cloudflare_account_readview account details and token status, list configured accounts, or query audit logsread

The skill is cloudflare-account, shown as cloudflare-tools:cloudflare-account in Claude Code and cloudflare-tools:account in Hermes.

Zones (zones)

Zone lookup, settings (read and change), Universal SSL, certificates, and DNSSEC.

ToolWhat it doesClass
cloudflare_zone_readlist zones, view details, read settings, Universal ssl status, or dnssecread
cloudflare_zone_setting_editchange 1–20 zone settings in order; refuses a change that lowers protectionoverwrite
cloudflare_zone_setting_weakenchange zone settings in ways that lower a visitor's protection; always asks firstadministrative
cloudflare_zone_cache_purgepurge cached copies of up to 100 URLs, hosts, prefixes or tags in a zoneidempotent
cloudflare_zone_cache_purge_allpurge the whole cache of a zone; always asks firstadministrative
cloudflare_zone_dnssec_enableturn DNSSEC on for a zone; harmless until registrar publishes the DS recordidempotent
cloudflare_zone_dnssec_disableturn DNSSEC off for a zone; requires DS removed at registrar firstadministrative

The skill is cloudflare-zones, shown as cloudflare-tools:cloudflare-zones in Claude Code and cloudflare-tools:zones in Hermes.

DNS (dns)

DNS records: list, read one in full, export the zone file, add records, change them, and delete them.

ToolWhat it doesClass
cloudflare_dns_readlist records, view one in full, or export the zone file in BIND formread
cloudflare_dns_record_addadd 1–20 records of eight types in one all-or-nothing batchadd
cloudflare_dns_record_editchange 1–20 records by id in one all-or-nothing batch; never a record's typeoverwrite
cloudflare_dns_record_deletedelete 1–20 records by id, with replacements in the same batch; always asks firstadministrative

The skill is cloudflare-dns, shown as cloudflare-tools:cloudflare-dns in Claude Code and cloudflare-tools:dns in Hermes.

Analytics (analytics)

Analytics: read a zone's traffic per day (requests, bandwidth, cache hits, threats, page views and unique visitors), the most requested paths, client countries and response statuses, what the security features did (not on the Free plan) and the latest security events, and the account's Workers invocations, errors and CPU time, over a recent time range. This toolset is off by default; turn it on with the toolsets setting (see Settings).

ToolWhat it doesClass
cloudflare_analytics_readtraffic per UTC day; the top paths, countries and statuses; security and security_events; workersread

The token needs Zone → Analytics → Read, and Zone Read to look the zone up; workers needs Account → Account Analytics → Read instead.

The skill is cloudflare-analytics, shown as cloudflare-tools:cloudflare-analytics in Claude Code and cloudflare-tools:analytics in Hermes.

Workers (workers)

Workers: list them, read one's settings and bindings, deployments and versions, a zone's Worker routes, custom domains, cron triggers and secret names and types, and roll a Worker back to versions that served before. Building, uploading and deploying new code stay with Wrangler; routes, custom domains and cron triggers are read here and changed in wrangler.toml.

ToolWhat it doesClass
cloudflare_workers_readlist, view, deployments, versions, routes, domains, schedules, secrets (names only)read
cloudflare_workers_rollbackroll a Worker back to versions that served before; always asks firstadministrative

The token needs Workers Scripts Read; routes also needs Workers Routes Read; routes, and domains with zone, need Zone Read to look the zone up. The rollback needs Workers Scripts Write.

The skill is cloudflare-workers, shown as cloudflare-tools:cloudflare-workers in Claude Code and cloudflare-tools:workers in Hermes.

Pages (pages)

Pages: list projects, read their build settings, environment variable names and bindings, production and preview deployments, including which one is live, a build's logs, and custom domains; switch a project's production back or forward to a deployment that built successfully; and add or remove its custom domains. Building and deploying new code stay with Git and Wrangler; the DNS records of a custom domain stay with the DNS tools.

ToolWhat it doesClass
cloudflare_pages_readlist projects, view one, its deployments, a build's logs, custom domainsread
cloudflare_pages_rollbackswitch production to a deployment that built successfully; always asks firstadministrative
cloudflare_pages_domain_addadd a custom domain to a project, creating no DNS record; always asks firstadministrative
cloudflare_pages_domain_removeremove a custom domain from a project, deleting no DNS record; always asks firstadministrative

The token needs the Pages Read permission. The writes need Pages Write, and the DNS lookups of the domain tools need Zone Read and DNS Read.

The skill is cloudflare-pages, shown as cloudflare-tools:cloudflare-pages in Claude Code and cloudflare-tools:pages in Hermes.

Storage (storage)

Storage: list an account's R2 buckets and a bucket's objects and folders by name, size and date, and read whether a bucket is public (its r2.dev domain and custom domains), its CORS rules and the lifecycle rules that delete its objects; list Workers KV namespaces and their key names; list D1 databases and read one's size and schema; create an empty bucket, namespace or database, and delete one that is proven empty. An object's body, a KV value and a table's rows are never read, the D1 schema comes from one fixed statement, and only the default jurisdiction is listed. Cloudflare deletes a KV namespace or D1 database with its contents, so the delete tool proves the store empty first; emptying a store stays with the user. This toolset is off by default; turn it on with the toolsets setting (see Settings).

ToolWhat it doesClass
cloudflare_storage_readR2 buckets, a bucket's details, its objects; KV namespaces, their keys; D1 databases, a database's schemaread
cloudflare_storage_createcreate an empty R2 bucket, KV namespace or D1 database from a nameadd
cloudflare_storage_deletedelete a bucket, namespace or database only when it is proven empty; always asks firstadministrative

The token needs Account → Workers R2 Storage → Read, Workers KV Storage → Read or D1 → Read, for the store it reads; creating and deleting need the same permission's Edit.

The skill is cloudflare-storage, shown as cloudflare-tools:cloudflare-storage in Claude Code and cloudflare-tools:storage in Hermes.

Tunnels (tunnels)

Tunnels: list an account's Cloudflare Tunnels by name, status and connection times, and read one tunnel's active connectors, edge connections, colos and public-hostname ingress routing rules. A tunnel's run token is never exposed, connectors' internal ids and origin IP addresses are never read, and deleted tunnels are left out. For locally managed tunnels, ingress rules are kept on the host and cannot be read here. A hostname can be published through a dashboard-managed tunnel to a local service: the tool adds the rule and the proxied CNAME it needs, refuses a hostname that has other DNS records, and always asks first. Another tool changes the service a published hostname goes to, and one withdraws a hostname, deleting its CNAME to the tunnel when no other rule uses it and never touching other records; both always ask first. This toolset is off by default; turn it on with the toolsets setting (see Settings).

ToolWhat it doesClass
cloudflare_tunnel_readtunnels of the account; one tunnel's status and ingressread
cloudflare_tunnel_route_addpublish a hostname (and optional path) through a tunnel to a local service; always asks firstadministrative
cloudflare_tunnel_route_editchange the service a published hostname goes to, naming the current one; always asks firstadministrative
cloudflare_tunnel_route_removewithdraw a hostname from a tunnel and delete its CNAME to the tunnel; always asks firstadministrative

The token needs Account → Cloudflare One Connector: cloudflared → Read. Publishing or withdrawing a hostname needs Account → Cloudflare One Connector: cloudflared → Edit and Zone → DNS → Edit; changing where one goes needs Account → Cloudflare One Connector: cloudflared → Edit, and Zone → DNS → Read for the record it reports. Each public hostname also says whether a Zero Trust Access application matches it, which needs Account → Access: Apps and Policies → Read; without it the coverage is unknown. A match is not a promise that every visitor signs in: a Bypass policy can still let them through.

The skill is cloudflare-tunnels, shown as cloudflare-tools:cloudflare-tunnels in Claude Code and cloudflare-tools:tunnels in Hermes.

Email Routing (email)

Email Routing: read whether a zone's Email Routing is on, its routing rules and catch-all (each rule matches one address and forwards it to one verified address, drops it or hands it to a Worker), and the account's destination addresses with whether each is verified; add, change or delete a routing rule for one address, change the catch-all, and add or delete a destination address. A rule a Worker's Wrangler configuration manages is marked as such, and a zone with Email Routing off routes no mail. Addresses, names and Worker names are the user's data, returned as data and never instructions. This toolset is off by default; turn it on with the toolsets setting (see Settings).

ToolWhat it doesClass
cloudflare_email_reada zone's routing settings and catch-all; its rules; the account's addressesread
cloudflare_email_rule_addadd a rule that forwards one address to a verified destination, drops it or hands it to a Worker (Cloudflare refuses one that does not exist); refuses an address that already has a ruleadd
cloudflare_email_rule_editchange a rule's address, action, name or whether it is on, naming its current action; refuses the catch-all and Wrangler-managed rulesoverwrite
cloudflare_email_rule_deletedelete a rule, naming where its mail goes next; refuses the catch-all and Wrangler-managed rules; always asks firstadministrative
cloudflare_email_catchall_editchange the action of the catch-all (mail no rule matches) or turn it on or off, naming its current state; refuses Wrangler-managed catch-alls; always asks firstadministrative
cloudflare_email_address_addadd a destination address; Cloudflare mails its owner a link to confirm, and no rule can forward to it until they follow it; always asks firstadministrative
cloudflare_email_address_deletedelete a destination address; refuses while a rule or catch-all in any zone of the account forwards to it; always asks firstadministrative

The token needs Zone → Email Routing Rules → Read, and Account → Email Routing Addresses → Read for the addresses. Adding, changing or deleting a rule, and changing the catch-all, need Zone → Email Routing Rules → Edit, and adding or changing a forward needs Account → Email Routing Addresses → Read to check it. Adding or deleting a destination address needs Account → Email Routing Addresses → Edit, and deleting one also needs Zone → Email Routing Rules → Read in every zone of the account.

The skill is cloudflare-email, shown as cloudflare-tools:cloudflare-email in Claude Code and cloudflare-tools:email in Hermes.

Adding a tool

  1. Write the spec in src/core/<domain>/<verb>.ts with defineTool: an ID <prefix>_<domain>_<verb>, a title and description, the Zod argument and output schemas, its toolset and write class, and execute(args, context). A write tool also gives targets(args, context): what the call writes to, as a permission rule should name it.
  2. Test it beside the spec (<verb>.test.ts), calling it through invoke as the entry points do. A tool that runs a program is tested against a fake of that program on PATH; no test reaches a real service.
  3. List it in src/tools.ts. A new toolset goes into toolsets in src/project.ts (and defaultToolsets when it is on by default), and a variable the tool reads besides the settings into toolVariables.
  4. Add or update the toolset's skill, skills/<prefix>-<toolset>/SKILL.md.
  5. Run pnpm run build && pnpm run manifests to list the tool in plugin.yaml and its variables in Codex's manifest, then describe it under "Tools and skills".

docs/conventions.md has the rules each step follows.

Reads and writes

Every read tool is named <prefix>_<domain>_read. Reads can run unasked; writes are confirmed by the harness.

HarnessReads without asking
OpenCodealways; the plugin asks only before a write
Claude Codethe rule mcp__plugin_cloudflare-tools_cloudflare-tools__*_read in permissions.allow of ~/.claude/settings.json
Codexalways; Codex runs tools that declare readOnlyHint unasked, as the read tools do
Grok Buildgrok --allow 'MCPTool(cloudflare-tools__*_read)' --allow 'MCPTool(cloudflare_*_read)' (both rules; see below)
Antigravitythe rule mcp(cloudflare-tools_cloudflare-tools/<tool id>) in permissions.allow, one for each read tool
Hermesalways; the plugin asks only before a write

Where a write is asked about, and where it is not:

  • OpenCode grants any action no rule names, so a write runs unasked unless a rule asks for it: add the cloudflare_* rule shown under OpenCode.
  • Codex under codex exec, and Grok Build under grok -p, refuse a write they cannot ask about, unless it is allowed beforehand.
  • Grok Build calls the plugin's tools through its use_tool tool, and the agent often names a tool without its server first. Grok checks the rules against the name as given, so the server-qualified rule alone does not match that first call. The second rule matches the short name; a write still matches neither.
  • Antigravity asks before any MCP tool no rule allows, reads included, and names the plugin's server cloudflare-tools_cloudflare-tools (plugin, then server). agy -p refuses a tool it cannot ask about.
  • Hermes hermes chat -q refuses a write it cannot ask about; hermes -z and --yolo skip approval, so writes then run unasked.

Settings

Every entry point takes the same settings. A flag wins over its environment variable, and an option or setting wins over the variable too.

SettingFlagVariableMeaning
toolsets--toolsetsCLOUDFLARE_TOOLS_TOOLSETSthe toolsets that are on, or all; default those src/project.ts names
read_only--read-onlyCLOUDFLARE_TOOLS_READ_ONLYregisters no tool that writes; wins over every other setting
tools--toolsCLOUDFLARE_TOOLS_TOOLSsingle tools to add by ID, whatever their toolset
exclude_tools--exclude-toolsCLOUDFLARE_TOOLS_EXCLUDE_TOOLSsingle tools to remove by ID; wins over tools and toolsets
confirm--confirmCLOUDFLARE_TOOLS_CONFIRMMCP server only: harness (default) or elicitation, as the conventions say
language--languageCLOUDFLARE_TOOLS_LANGUAGEnative plugins only: the approval prompt's language, such as ja

Lists are comma-separated in a flag or a variable. Where each harness reads them:

  • OpenCode takes the plugin options shown above, with lists as arrays and read_only as a boolean, and falls back to the variables.

  • Hermes takes plugins.entries.cloudflare-tools.settings in config.yaml:

    plugins:
      entries:
        cloudflare-tools:
          settings:
            read_only: false
            exclude_tools: []
    

    Without a language setting, the approval card follows Hermes's own display.language (or HERMES_LANGUAGE), the language of its approval buttons, and else stays in English.

  • Claude Code, Grok Build and Antigravity start the plugin's server without flags and pass it the client's environment, so set the variables in the environment the harness runs in.

  • Codex passes a plugin's MCP server only a few basic variables (such as PATH and HOME) and those the plugin's manifest names, which are the variables above: set them in the environment Codex runs in. A variable the tools read besides the settings belongs in toolVariables in src/project.ts; pnpm run manifests adds it to the manifest after the settings' variables. To pass flags, or to give the server a variable the package does not name, add the server under [mcp_servers] in Codex's config.toml instead of using the plugin, with flags in args and the variables to forward in env_vars, as Credentials shows.

Where each harness takes the variables from, and when one needs a restart to see a change, is under Credentials.

Credentials

The tools call Cloudflare with API tokens read from the environment, never from a setting or an argument. Each token comes with the id of the one account it acts on:

VariablesPicked by
CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_IDaccount left out, or account: "default"
CLOUDFLARE_API_TOKEN_<LABEL>, CLOUDFLARE_ACCOUNT_ID_<LABEL>account: "<label>", the label in lowercase
  • The unlabeled pair has the names Wrangler reads. A label is 1 to 24 lowercase letters, digits and _, written in capitals in its variables (my_site → CLOUDFLARE_API_TOKEN_MY_SITE).
  • With account left out, a call takes the unlabeled pair, or the only label when there is no unlabeled pair; with several labels and no unlabeled pair it fails and lists them.
  • A CLOUDFLARE_API_TOKEN set without CLOUDFLARE_ACCOUNT_ID, as one exported for Wrangler may be, is still the unlabeled pair: a call that leaves account out fails, even when a complete labeled pair is set. Pass account, or unset the stray token.
  • Use an API token scoped to what the tools should do; a Global API Key is refused.

Set the variables where each harness starts the tools:

  • OpenCode V2 runs the plugin in its background service, which keeps the environment it started with: set them where the service starts, and restart it (opencode service restart) after setting or changing one. OpenCode V1 runs the plugin in its own process, so the environment it runs in is enough.

  • Claude Code, Antigravity and Grok Build pass the plugin's server the environment the harness runs in.

  • Hermes passes the environment it runs in, but a gateway already running keeps the one it started with: restart it (hermes gateway restart) after setting or changing one.

  • Codex passes a plugin's server only a few basic variables (such as PATH and HOME) and the settings' variables its manifest names, never the credentials. Add a server of the same name to ~/.codex/config.toml, which takes the plugin server's place (the plugin's skills stay), and name the variables to forward in env_vars. startup_timeout_sec gives npx time to fetch the package on the first start:

    [mcp_servers.cloudflare-tools]
    command = "npx"
    args = ["-y", "@craftsamo/cloudflare-tools@<version>"]
    env_vars = ["CLOUDFLARE_API_TOKEN_<LABEL>", "CLOUDFLARE_ACCOUNT_ID_<LABEL>"]
    startup_timeout_sec = 120
    
  • Any other MCP host takes them in the env of its server entry.

Layout

  • src/project.ts — the package's name, tool ID prefix, setting prefix, toolsets and the other variables its tools read.
  • src/core/ — the tool contract and the tools, free of any harness and of the project's names.
  • src/tools.ts — the list of every tool, which each entry point registers.
  • src/words.ts — the translations of the tools' words, per language, which the native plugins use in their approval prompts.
  • src/mcp/ — the MCP server, built to dist/mcp.js and run by cloudflare-tools.
  • src/opencode/ — the OpenCode plugin, built to dist/opencode.js.
  • src/cli/ — the command line the Hermes plugin calls, built to dist/cli.js and run by cloudflare-tools-cli.
  • src/hermes/, plugin.yaml and __init__.py — the Hermes plugin.
  • skills/ — one skill per toolset, skills/<name>/SKILL.md, which every harness that takes skills loads from the package or plugin root.
  • .claude-plugin/, .codex-plugin/, .agents/plugins/, .mcp.json, .antigravity-plugin/ and mcp_config.json — the plugin manifests of the other harnesses. Codex reads .codex-plugin/plugin.json; a root plugin.json would make it load the plugin as an Agent Plugin, whose tool budget hides tools past a fixed size. The root .mcp.json is the configuration Grok Build reads (with ${CLAUDE_PLUGIN_ROOT}, the variable both Grok Build and Claude Code expand); when working on this repository in Claude Code, decline the project MCP server it offers from that file.

How a release is made is in RELEASING.md.

License

MIT

版本与发布记录

@craftsamo/cloudflare-tools 共发布 13 个版本,首次发布于 2026/11/07;过去 12 个月发布了 13 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.8.1latest2026/11/091 天前
0.8.02026/11/091 天前
0.7.12026/11/082 天前
0.7.02026/11/082 天前
0.6.02026/11/082 天前
0.5.12026/11/073 天前

关于 @craftsamo/cloudflare-tools 的常见问题

@craftsamo/cloudflare-tools 是什么?

Cloudflare tools for coding agents: zones, DNS, analytics, Workers, Pages, storage and tunnels.

如何安装 @craftsamo/cloudflare-tools?

在项目目录运行 npm install @craftsamo/cloudflare-tools,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 cloudflare-tools、cloudflare-tools-cli,可以用 npx cloudflare-tools 直接运行。

@craftsamo/cloudflare-tools 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/craftsamo__cloudflare-tools 是否存在。

@craftsamo/cloudflare-tools 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@craftsamo/cloudflare-tools 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@craftsamo/cloudflare-tools 可以商用吗?

@craftsamo/cloudflare-tools 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@craftsamo/cloudflare-tools 的下载量有多少?

根据 npm 官方下载统计,@craftsamo/cloudflare-tools 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,952 次,日均约 98 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@craftsamo/cloudflare-tools 还在维护吗?

最新版本 0.8.1 发布于 2026/11/09(1 天前);至今共发布 13 个版本,其中过去 12 个月发布了 13 个;首次发布于 2026/11/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。