cloudflare
Headless browser automation via Cloudflare Browser Run — screenshot pages, render PDFs, extract markdown/HTML/links, scrape DOM elements with CSS selectors…
Skill by Deibler
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/deibler-cloudflare
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, frontend, cloud
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/cloudflare
What's inside
- Skill name
cloudflare- Description
- Headless browser automation via Cloudflare Browser Run — screenshot pages, render PDFs, extract markdown/HTML/links, scrape DOM elements with CSS selectors, or AI-extract structured JSON. Runs real Chrome on Cloudflare's global network; handles JavaScript-heavy SPAs. All outputs are saved to the sandbox under cloudflare/<type>/.
- License
- MIT
- Instructions
- 181 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# cloudflare — Browser Run
Run real Chrome on Cloudflare's global network. No Puppeteer setup, no headless browser to manage. One tool call, one output file.
## Tool reference
| Tool | What it does | Output dir |
|------|-------------|------------|
| `cf_screenshot` | Full-page or viewport screenshot (PNG) | `cloudflare/screenshot/` |
| `cf_pdf` | Render page or HTML as PDF | `cloudflare/pdf/` |
| `cf_markdown` | Extract clean Markdown (strips nav, ads, scripts) | `cloudflare/markdown/` |
| `cf_content` | Full rendered HTML after JS execution | `cloudflare/content/` |
| `cf_snapshot` | Screenshot + HTML in one call | `cloudflare/screenshot/` + `cloudflare/html/` |
| `cf_links` | All links (or visible-only / same-domain) | `cloudflare/json/` |
| `cf_scrape` | DOM element data by CSS selector | `cloudflare/json/` |
| `cf_json` | AI-powered structured data extraction | `cloudflare/json/` |
All files are saved with a `<timestamp>-<url-slug>.<ext>` filename inside the sandbox.
## async: true — works for ALL slow tools
The `async: true` pattern is generic across the harness. It works for:
- All `cf_*` tools (screenshot, pdf, markdown, content, snapshot, links, scrape, json)
- `generate_image`, `generate_video`, `generate_audio`
- `transcribe_audio` (for long audio)
- `web_fetch` (for slow / large fetches)
Whenever a tool is slow enough to make the user wait, pass `async: true`. Same mechanic everywhere: detached worker, cron wake-up, result in the envelope.
## ⚠️ Always pass `async: true`
**Every CF tool takes 15-90 seconds.** Calling them synchronously holds the session lock — the user gets zero responses until the tool returns. Never do this.
Every CF tool accepts `async: true`. When set, the tool:
1. Spawns a detached worker process that makes the actual API call
2. Returns immediately with a background job id (session lock releases instantly)
3. Saves the output to the sandbox as the worker completes
4. Fires an automatic wake-up event in this session once done — you get invoked again with the result path in the envelope
The correct pattern:
```
user: "screenshot example.com"
edmund: send_message("on it, give me a sec")
cf_screenshot({ url: "https://example.com", full_page: true, async: true })
→ "Background job started: bg_xyz123. ... End your turn now."
[TURN ENDS] ← session lock released, user can keep messaging
[worker runs, saves PNG, fires wake-up cron]
edmund wakes up with event:
"Background tool job finished (status: done). ... Saved: /path/to/screenshot.png"
edmund: send_attachment("/path/to/screenshot.png", "here you go")
```
Never do this:
```
edmund: cf_screenshot({ url: "...", full_page: true }) ← NO async:true, blocks session 30-90s
```
**Rule:** if in doubt, pass `async: true`. Inline sync mode is only for rare cases where you need the result within the same turn (e.g., you're already mid-chain and need the data to continue a calculation). For user-facing "fetch/capture/extract X", it's always async.
## `check_bg_job` / `list_bg_jobs`
You usually don't need these — completed background jobs wake you up automatically with the result included. But:
- `list_bg_jobs` — see what's currently running ("what are you working on?")
- `check_bg_job(id)` — inspect a specific job's status
## When to use which tool
**Reading an article or doc?** → `cf_markdown`. Returns the content inline + saves to disk. Cheapest and fastest.
**Need the visual?** → `cf_screenshot`. Returns path only — follow up with `send_attachment(path)` to share.
**Generating a report or invoice from HTML?** → `cf_pdf`. Always use `send_attachment(path)` to share.
**JS-heavy page (SPA, React, Vue)?** → add `wait_until: "networkidle0"` to any tool. This waits for all network activity to settle before capturing.
**Full DOM including dynamically injected elements?** → `cf_content`. Saves rendered HTML; use the Read tool to inspect it.
**Both screenshot and HTML at once?** → `cf_snapshot`. Single API call, two output files.
**Site mapping, crawl seeding, link auditing?** → `cf_links`. Use `visible_only: true` to skip hidden/footer links; `exclude_external: true` to stay on-domain.
**Scraping specific data fields?** → `cf_scrape` with CSS selectors for precise extraction without AI overhead.
**Structured data in a known shape?** → `cf_json` with a `schema`. For less structured extraction, use `prompt` alone.
## Delivery
All tools return the **local sandbox path** of the saved file. To share with the user:
- **Images / screenshots**: `send_attachment(path)` — iMessage delivers inline.
- **PDFs**: `send_attachment(path)` — iMessage delivers as downloadable.
- **Markdown**: already returned inline, no attachment needed for short content.
- **JSON / HTML**: if the user wants to see it, `send_attachment(path)` or summarize inline.
**Never** just print the path and say "here's the file" — the user can't see your filesystem.
## JavaScript-heavy pages
If you get empty or incomplete results, add `wait_until: "networkidle0"`:
```
cf_markdown({ url: "https://app.example.com/dashboard", wait_until: "networkidle0" })
```
For very slow pages, try `"networkidle2"` (waits for ≤2 open connections instead of 0).
## Sending a screenshot example
```
1. cf_screenshot({ url: "https://example.com", full_page: true })
→ saved to /sandbox/cloudflare/screenshot/2026-04-20T12-30-00-example-com.png
2. send_attachment("/sandbox/cloudflare/screenshot/2026-04-20T12-30-00-example-com.png",
"here's the screenshot")
```From Deibler/edmund-harness, MIT.
More from Deibler/edmund-harness
- 0.592score
iterative-design
Deibler
Use this skill whenever the user is iterating on a visual — flat graphics, logos, badges, t-shirt prints, hockey/sports graphics, or subtle photo edits across…
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
hike
Deibler
Build a hike brief with a real topographic map, the traced route from OpenStreetMap, trailhead coordinates, and verified conditions.
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
radaromega
Deibler
THE weather source — all weather questions route here, from "is it gonna rain" to severe outbreaks.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
summarize
Deibler
TL;DR a URL, YouTube video, or local PDF/file via the `summarize` CLI (Gemini Flash).
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
gifgrep
Deibler
Search Tenor/Giphy and send a GIF into the chat.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
skycam
Deibler
The sky camera over the house (openskycam, camera sky01, Lancaster County PA), through the `mcp__openskycam__*` tools.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
deep-research
Deibler
Multi-agent deep-research orchestrator.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
agents
Deibler
Delegate long-running work (research, deep summaries, multi-step analysis) to detached sub-agents.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
fishing
Deibler
Ground any PA, MD, NJ, or DE fishing question in the local fishing dataset—waters, bass and other species, stocking, catches, boat access, motor rules, depth…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
teams
Deibler
Coordinate multiple sub-agents as one unit — parallel investigation, multi-stage pipelines, or side-by-side comparisons.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
trading-loop
Deibler
The autonomous trading decision loop for Quant.
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
generation
Deibler
Comprehensive multimodal generation via OpenRouter — images (with reference photos), videos (text/image/reference-to-video), and spoken audio.
SkillAFreshness: A★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 4, 2026 (1 month ago)
- Last release
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Deibler/edmund-harness
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Deibler
- 0.592score
iterative-design
Deibler
Use this skill whenever the user is iterating on a visual — flat graphics, logos, badges, t-shirt prints, hockey/sports graphics, or subtle photo edits across…
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
radaromega
Deibler
THE weather source — all weather questions route here, from "is it gonna rain" to severe outbreaks.
SkillAFreshness: A★ 1Claude Code +9 - 0.589score
hike
Deibler
Build a hike brief with a real topographic map, the traced route from OpenStreetMap, trailhead coordinates, and verified conditions.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
gifgrep
Deibler
Search Tenor/Giphy and send a GIF into the chat.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
deep-research
Deibler
Multi-agent deep-research orchestrator.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
skycam
Deibler
The sky camera over the house (openskycam, camera sky01, Lancaster County PA), through the `mcp__openskycam__*` tools.
SkillAFreshness: A★ 1Claude Code +9
Cite this page
cloudflare skill. Agent Mart. https://agentmart.dev/skills/deibler-cloudflare (last updated 2026-10-24)