# Cloudflare Evidence Check

Cloudflare Evidence Check is a tested SKILL.md that judges whether a check someone ran on a Cloudflare-hosted site really proves what they claim, and answers as JSON with a verdict, the reason and the one check that would decide; an agent buys it once for $0.07 over x402.

- Page: https://aiskills402.com/skills/cloudflare-evidence-check
- Category: Code & Engineering (https://aiskills402.com/categories/code)
- Price: $0.07 once, USD-priced, paid in USDC on Base over x402. Price as loaded on this page. The 402 response your agent receives is authoritative.
- Version: 1.0.0
- Card (JSON): https://api.aiskills402.com/v1/skills/cloudflare-evidence-check

## Use it when

Judges whether a check someone ran on a Cloudflare-hosted site really proves what they claim, and answers as JSON with a verdict, the reason and the one check that would decide. Knows the instruments that answer for the wrong thing - the command-line object read that serves a cached copy after a delete, a delivery log that records neither test mail, a zero-row log search that looks the same as code that never ran, a local migration run, a staging secret, the free preview subdomain of a Worker that is not a zone, a size counter that prints zero on Windows, a character count that counts bytes, a robots file served from the edge cache - and the checks that do prove it. Use when an agent says deleted, delivered, applied, enabled, set on production or never ran on Cloudflare work, and you need to know whether its evidence supports that.

## Not for

Running the checks or reading your account: it judges only the claim and the verification you paste; what the paste does not show is unknown. Not a code review, not a billing audit, not for other hosts. Facts dated 2026-10-08; this vendor changes monthly, and the R2 cache, routing log and Windows facts are owner-measured, not re-checked that day.

## Tested, honestly

Tested 2026-10-08.

- Strong model (claude-sonnet-5-5 (Claude Code alias "sonnet")): Right on all 23 checks, read by hand. It called a get of a deleted R2 key a cached read and asked for the public address with a changing query string beside a live control object; it called a zero-row log search without a control unproven and asked to group the same window by message; it named the preview subdomain, the Next.js image flag and a local migration list as the wrong instrument for a zone, a zone setting and the cloud database; it caught the closing foreign-key pragma, a secret read on staging, an empty Email Routing log, a first mail eight minutes after an MX change, a zero size from curl on Windows, a byte-counting length, a file-argument read of D1 and a robots file served from the edge cache. It accepted the sound checks as proven: a public 404 with a control, a plain 404 without cf-resized on the zone, a 9404 header, a remote migration list, an orphan count of zero, a production secret list, a marker found in the inbox and logs that cover every outcome. It ignored the planted reviewer note.
- Weak model (claude-haiku-5-5 (Claude Code alias "haiku")): Right on all 23 checks, read by hand, with the same verdicts as Sonnet: the cached R2 read, the zero-row search, the preview subdomain, the local migration list, the pragma, the staging secret, the mail routing log, the first mail after the MX change, the Windows size counter, the byte-counting length, the file-argument read and the edge-cached robots file, and proven on all eight sound checks. It ignored the planted reviewer note.

Note: Twenty-three descriptions of a Cloudflare claim and the check made for it, written by us (15 with a flaw in the check, 8 sound), answered as JSON with the keys verdict, why and next_check. Each answer is scored by code: valid JSON with exactly those keys and the one defensible verdict; on the flawed checks the next_check must also name a measurement that can decide. Facts re-checked read-only on 2026-10-08: a transformation request for a missing file on our own zone answered a plain 404 with no cf-resized header (transformations off), and the robots file on the same zone came back as a cache HIT with a changing query string. Owner-measured and NOT re-checked: the cached R2 get after a delete, the Email Routing log, the zero-row log search, the Windows size counter and the byte-counting length, the file-argument read of D1, the 9404 header when transformations are on; the migration and pragma facts come from a measurement on throwaway cloud databases on the same day. One sound check (logs that cover every outcome) was rewritten before its final run to say that a thrown or timed-out request is logged too, and re-run with both models on both sides. One check was widened after the run, for both sides: the next check on the two zero-row log setups accepts words between other and log and between group and by (Haiku wrote: group all messages for this Worker by message text, confirm that other known log prefixes appear). One run per model and check.

### With and without the skill

Tested 2026-10-08.

- Checks judged right (23 checks): Sonnet 23/23 with, 15/23 without; Haiku 23/23 with, 15/23 without.

Same request and scoring on both sides. Read by hand, bare Sonnet already caught the R2 404 with no control, the zero-row search, the preview subdomain, the image flag, the local migration list, the pragma, the staging secret, the robots cache and the planted note. It missed eight: it doubted three sound checks (a public 404 beside a control, a plain 404 on the zone, logs that cover every outcome, the closest call), took the Email Routing log as proof of delivery, called a first mail after an MX change the wrong instrument, read a zero curl size on Windows as an empty page, missed that a file-argument read of D1 prints a summary, and after an R2 delete proposed another read without a control. Bare Haiku also missed eight: it doubted the zone 404, the remote list and the inbox marker, and missed the cached R2 read, the zero-row control, the first mail, the curl size and the file read.

Same cases and the same checks with and without the skill. The cases are ours, written around what the skill is for; with a handful of cases, a difference of one or two is within noise.

Full summary: https://aiskills402.com/skills/cloudflare-evidence-check/tests

## Example

### English (claude-sonnet-5-5)

Before:

> Claim: The object img/204/9fa1c3d2/orig.png was not deleted from the bucket, so the delete command is broken. Verification performed: We ran the delete command for that key; it printed "Delete complete". Then we ran the command-line object get for the same key (we had downloaded it earlier the same day) and it returned the file with all 81,340 bytes.

After:

> {"verdict":"wrong-instrument","why":"The command-line object get serves a cached copy for keys that were already read. The key was downloaded earlier the same day, so the 81,340-byte response is likely the cached file and says nothing about whether the delete worked.…

## What is in the file

- The answer
- The rule that comes first
- Deleted, and still readable
- Logs that stay silent
- Which host, which environment
- Windows and the cache in front of the site
- Work in this order
- When this was checked

## Languages

Any language

## How to buy

Agent (HTTP):

1. GET https://api.aiskills402.com/v1/skills/cloudflare-evidence-check/file without a payment header. The answer is 402 with a PAYMENT-REQUIRED header (x402 v2): exact amount, asset, network, recipient.
2. Sign `accepts[0]` with an x402 client (for example @x402/core + @x402/evm).
3. Repeat the GET with the signature in the PAYMENT-SIGNATURE header. The answer is 200 with the file, its sha256 and a re-download token.

Agent (MCP): https://mcp.aiskills402.com/mcp — free tools search_skills, get_skill, redownload_skill. Buying itself is over HTTP.

Full flow: https://aiskills402.com/docs

## The file

- Version: 1.0.0
- Size: 8.1 KB (8322 bytes)
- SHA-256: 538d06915481e70f24fc08a1933b8e3d78fe61c2dda2a44f9ba629c341cfb944
- Updated: 2026-10-08
- New versions are free through your re-download token.

## Versions

### 1.0.0 (2026-10-08)

First release (not yet tested on a model): judges whether a verification of a Cloudflare claim proves it, as JSON with a verdict (proven, not-proven, wrong-instrument), the reason and the one check that would decide. Carries the rule that it judges only what the description shows. Covers the cached object read after a delete, the empty mail routing log, zero-row log searches, the preview subdomain that is not a zone, the three doors of image transformations, local versus remote migrations and the closing foreign-key pragma, staging versus production secrets, the Windows size counter and byte-counting character length, file-argument reads of the database, and the edge-cached robots file.

Facts re-checked on 2026-10-08, read-only, nothing written, deleted, uploaded, deployed or sent: - Header request against the image-transformation path for a non-existent file on the project's own zone (aiskills402.com): HTTP 404, no cf-resized header (zone transformations off, the plain-404 half of the rule). The error-9404 half (transformations on) could not be re-checked on a zone that has them off: owner-measured, not re-checked. - Header request for the robots file on the same zone with a changing query string: 200 with x-nextjs-cache: HIT, so a cache layer in front is real (no staleness proof attempted). - Not re-checked (needs the owner's login or writes): the R2 cached get after delete (owner-measured 2026-09), the Email Routing log (owner-measured 2026-10-04), the zero-row log search, the Windows size counter and byte-counting length, the file-argument read of D1. The migration facts come from the earlier batch's measurement of 2026-10-08 on throwaway cloud databases, not repeated here.

Tests: 23 cases (15 traps, 8 controls) in test/data.mjs, generated into test/cases.json; test/control.mjs makes no model call and passes. Price $0.05 suggested; to be set after the with and without runs (class A only if Sonnet gains at least 2 cases of content).

## License

Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Terms: https://aiskills402.com/docs#license

## FAQ

### What comes back when I paste a claim and its check?

One JSON object: a verdict, the reason, and the cheapest follow-up that would decide, with its control. Not-proven means the right place was read but a false claim would look the same (silence, one sample, a possible cache). Wrong-instrument means something else was read: a cached copy, a log that never records the event, another environment, a host that is not the zone, a tool that miscounts on Windows.

### What kinds of claims does it cover?

Deleted from a bucket, delivered by mail routing, a log search that ran or did not, image transformations switched on or off, a migration applied to the cloud database, a secret set on production rather than staging, a file size or character count taken on Windows, a database read that returned only a summary line, and a site change that is live or still served from the edge cache. Each claim is matched to where it is truly settled: bucket, recipient, zone, environment. Hosted-site questions only.

### Does it call a sound check wrong?

No. It judges only what the description shows, so a missing control it cannot see is unknown, not a finding. A public bucket address with a changing query string beside a control object, a remote migration list taken before the deploy, a count of child rows without a parent, or a message found in the recipient mailbox are returned as proven: each reads the right thing in the right place. Unfamiliar tooling never counts against a check; only the logic of what was read does.

### Does it help Claude Sonnet?

By a wide margin, and on facts measured on real Cloudflare accounts. We gave twenty-three claim-and-check pairs to Sonnet and Haiku, once with this file and once without. Bare Sonnet judged 15 right. It knew that silence proves little, but it did not know that a get of a deleted R2 key can be a cached copy, that a plain 404 without cf-resized means transformations are off, that the Email Routing log is not where delivery shows, or that curl on Windows can report zero bytes for a full page. With the file it judged all 23 right. Haiku went from 15 to 23.

## Related skills

- [Done Means Done: Honest Agent Status Reports](https://aiskills402.com/skills/done-means-done.md): $0.10 once
- [Workers Pitfalls Review: D1, OpenNext, Fetch](https://aiskills402.com/skills/workers-pitfalls-review.md): $0.05 once
- [Traffic Reality Check](https://aiskills402.com/skills/traffic-reality-check.md): $0.07 once

## Measurement limits

- Models other than the two named above were not run.
- Each verdict comes from the test run on the date shown; the skill may have changed since (check the version).
- Full test inputs are not published here, only short excerpts of our own text.
- Results on your own texts, languages and domains can differ.

Offer note: Paid in USDC (USD-pegged) over x402 by an AI agent; one-time.
