Agent skill

Servo Fetch

by konippi in konippi/servo-fetch

Fetch and render web pages using the Servo browser engine — a single binary with JS execution, CSS layout, screenshots, and content extraction.

Apache-2.0Auto-check passedFrontend & Design

Install Servo Fetch

skills CLI
$ npx skills add konippi/servo-fetch --skill servo-fetch -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install konippi/servo-fetch servo-fetch --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/konippi/servo-fetch.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/servo-fetch .claude/skills/servo-fetch && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
servo-fetch
GitHub stars
157
Token cost
~1.9k tokens
SKILL.md length
614 words
Files
2 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
Apache-2.0

At a glance

Fetch and render web pages using the Servo browser engine — a single binary with JS execution, CSS layout, screenshots, and content extraction.

  • A URL returns empty
  • SKILL.md covers When to use, When NOT to use, Tools (MCP) and CLI, plus 1 more section
  • Reaches a.com and b.com
  • Incomplete content with plain HTTP fetch

What it does

Servo Fetch is an agent skill from konippi/servo-fetch. Fetch and render web pages using the Servo browser engine — a single binary with JS execution, CSS layout, screenshots, and content extraction. Use when a URL returns empty or incomplete content with plain HTTP fetch, when you need a screenshot without GPU, or when you need to run JavaScript in a page context. No browser download required.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/guide.md`).

It sits in Frontend & Design. It works with JavaScript, Model Context Protocol and Rust. The repository describes itself as: A self-contained browser engine that fetches, renders, and extracts web content as Markdown, JSON, or screenshots — no Chromium, no API key, no setup. The licence is Apache-2.0.

When your agent uses it

  • A URL returns empty
  • Incomplete content with plain HTTP fetch
  • You need a screenshot without GPU
  • You need to run JavaScript in a page context

Example prompts

  • “/servo-fetch”

Requirements

  • Docker

What it can do on your machine

Read from SKILL.md and the folder at commit 914241d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • a.com
    • b.com
    • docs.rs

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Servo Fetch loads about 1.9k tokens when it runs, and up to ~3.4k if it reads all its reference files. Until then it costs about 88 tokens; SKILL.md has 614 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~88
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from konippi/servo-fetch at commit 914241d, republished under its Apache-2.0 licence (© konippi). 614 words, ~1,880 tokens.

Download SKILL.mdSave it as .claude/skills/servo-fetch/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
servo-fetch
description
Fetch and render web pages using the Servo browser engine — a single binary with JS execution, CSS layout, screenshots, and content extraction. Use when a URL returns empty or incomplete content with plain HTTP fetch, when you need a screenshot without GPU, or when you need to run JavaScript in a page context. No browser download required.

servo-fetch

When to use

  • A URL returns empty or incomplete content with simple HTTP fetch (SPA, React, Vue)
  • You need a screenshot of a web page in CI/Docker (no GPU available)
  • You need to evaluate JavaScript in a page context (DOM queries, data extraction)
  • You want clean Markdown from a documentation site, blog, or article
  • You need to crawl an entire documentation site or blog for RAG / knowledge ingestion
  • You need the accessibility tree with bounding boxes for a page

When NOT to use

  • The page is simple static HTML (use curl or built-in web fetch instead)
  • You need to interact with the page (click, fill forms) — servo-fetch is read-only
  • You need full Chromium compatibility for complex web apps

Tools (MCP)

Start the MCP server: servo-fetch mcp (stdio) or servo-fetch mcp --port 8080 (Streamable HTTP)

Large multi-block responses can omit URL-labeled blocks and include an omitted-count summary; paginate fetch output with maxLength and startIndex. Extracted Markdown and JSON use the final document URL after redirects, while batch and crawl block labels preserve the requested URL.

fetch

Extract readable content from a URL. JavaScript is executed, CSS layout is computed, and navigation noise (navbars, sidebars, footers, cookie banners) is stripped automatically.

Parameters:

  • url (required): URL to fetch (http/https only)
  • format: "markdown" (default), "json", "html", "text", or "accessibility_tree"
  • selector: CSS selector to extract a specific section instead of full-page extraction
  • maxLength: max characters to return (default 5000)
  • startIndex: character offset for pagination
  • visibility: "moderate" (default), "strict", or "off"
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
text
fetch(url: "https://docs.rs/tokio", format: "markdown")
fetch(url: "https://example.com", format: "json", selector: "article")
fetch(url: "https://example.com", format: "accessibility_tree")

PDF URLs are auto-detected via Content-Type and extracted directly.

batch_fetch

Fetch multiple URLs in parallel. Results are returned as separate content entries in completion order. Failed URLs are reported inline without aborting the batch.

Parameters:

  • urls (required): array of URLs to fetch (http/https only, max 20)
  • format: "markdown" (default), "json", "html", "text", or "accessibility_tree"
  • selector: CSS selector to extract a specific section
  • maxLength: max characters per URL result (default 5000)
  • visibility: "moderate" (default), "strict", or "off"
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
text
batch_fetch(urls: ["https://a.com", "https://b.com"], format: "markdown")
batch_fetch(urls: ["https://a.com", "https://b.com"], format: "json", selector: "article")
Show full SKILL.md (268 more words)Show less
crawl

Crawl a website starting from a URL, following same-site links via BFS. JavaScript is executed, CSS layout is computed, and navigation noise is stripped. Respects robots.txt.

Parameters:

  • url (required): starting URL to crawl (http/https only)
  • limit: max pages to crawl (default 50, max 500)
  • maxDepth: max link depth from seed (default 3, max 10)
  • format: "markdown" (default) or "json"
  • include: URL path patterns to include (e.g. ["/docs/**"])
  • exclude: URL path patterns to exclude
  • maxLength: max characters per page result (default 5000)
  • selector: CSS selector to extract a specific section per page
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
text
crawl(url: "https://docs.example.com", limit: 20, maxDepth: 3)
crawl(url: "https://docs.example.com", include: ["/guide/**"], limit: 50)
screenshot

Capture a PNG screenshot. Uses Servo's software renderer — works without GPU.

Parameters:

  • url (required): URL to capture
  • fullPage: capture the full scrollable page (default false)
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
text
screenshot(url: "https://example.com")
screenshot(url: "https://example.com", fullPage: true)
execute_js

Evaluate a JavaScript expression after the page loads. Console messages (log, warn, error) are appended to the result.

Parameters:

  • url (required): URL to load
  • expression (required): JavaScript expression to evaluate
  • common: timeout (s, default 30), settleMs (ms, default 0), userAgent, cookiesFile, headers
text
execute_js(url: "https://example.com", expression: "document.title")
execute_js(url: "https://example.com", expression: "[...document.querySelectorAll('h2')].map(e => e.textContent)")

CLI

bash
servo-fetch https://example.com                                  # Markdown (default)
servo-fetch https://example.com --format json                    # Structured JSON
servo-fetch URL1 URL2 URL3                                       # Parallel batch (Markdown with separators)
servo-fetch URL1 URL2 --format json                              # Parallel batch (NDJSON)
servo-fetch https://example.com --format png -o out.png          # Save PNG screenshot
servo-fetch https://example.com --js "document.title"            # Run JavaScript and print result
servo-fetch https://example.com --selector article               # Extract a section by CSS selector
servo-fetch https://example.com --schema schema.json             # Schema-driven JSON
servo-fetch https://example.com --cookies cookies.txt            # Send session cookies
servo-fetch https://example.com --cookie-jar cookies.txt         # Save session cookies (includes HttpOnly)
servo-fetch https://example.com -H "Authorization: Bearer TOKEN" # Custom request header (repeatable)
servo-fetch https://example.com --format html                    # Raw HTML
servo-fetch https://example.com --format text                    # Plain text
servo-fetch https://example.com -t 60                            # Custom timeout
servo-fetch https://example.com --settle 500                     # Extra wait for SPAs
servo-fetch crawl https://docs.example.com --limit 20            # Crawl a site (BFS)
servo-fetch crawl https://docs.example.com --include "/docs/**"  # Crawl with path filter
servo-fetch URL --output page.md                                 # Save a single URL to a file
servo-fetch crawl URL --output-dir ./pages/                      # One file per page

Gotchas

  • Servo's web compatibility is improving but not at Chromium level — best for docs, blogs, and SSR sites
  • Private/reserved IP addresses are blocked (SSRF protection)
  • CLI batch fetch exits non-zero on any fetch failure that servo-fetch detects, while crawl page failures exit non-zero only when every attempted page fails
  • Default timeout is 30 seconds; increase with timeout parameter for slow pages
  • Cookie banners and newsletter popups are stripped via injected user stylesheets

For pagination patterns, format selection, and MCP configuration, see references/guide.md.

© konippi, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/servo-fetch of konippi/servo-fetch.

  • SKILL.md
  • references/guide.md

Open the folder on GitHubat commit 914241d

Compare with similar skills

Servo Fetch next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Servo Fetch compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Servo Fetch this skillkonippi/servo-fetch157—~1.9kAutomated safety check: PassApache-2.0
Figma use_figma Plugin API Ruleswarpdotdev/warp65k4 repos~4.4kAutomated safety check: PassAGPL-3.0
Web Performancemozilla/firefox-devtools-mcp474—~1.2kAutomated safety check: PassCustom licence
Golemuigolemui/golemui113—~2.2kAutomated safety check: PassMIT
Creating Share ImagesDicklesworthstone/meta_skill205—~1.3kAutomated safety check: PassCustom licence
SlintMoosync/Moosync259—~2.4kAutomated safety check: PassGPL-3.0

Similar skills

  • Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.

    65k GitHub starsUsed in 4 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • Web Performance

    mozilla/firefox-devtools-mcp

    Find and fix why a website is slow by capturing and analyzing a Firefox performance profile, or by analyzing a profile the user already has (a saved file or a profiler.firefox.com share link).

    474 GitHub stars~1.2k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Golemui

    golemui/golemui

    Build, validate, and debug GolemUI forms in React, Angular, Vue, Lit, or vanilla JS.

    113 GitHub stars~2.2k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Creating Share Images

    Dicklesworthstone/meta_skill

    Create OpenGraph and Twitter share images for Next.js applications using next/og ImageResponse.

    205 GitHub stars~1.3k tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • Slint

    Moosync/Moosync

    Expert guidance for building, debugging, and working with Slint GUI applications.

    259 GitHub stars~2.4k tokensUpdated 7 days ago
    DevelopmentAuto-check passed
  • Triage Frontend Issues

    getsentry/skills

    Official

    Triage new issues in the Sentry javascript project by archiving non-actionable noise.

    1k GitHub stars~2k tokensUpdated 6 days ago
    Frontend & DesignAuto-check passed

Questions about Servo Fetch

What does Servo Fetch do?

Fetch and render web pages using the Servo browser engine — a single binary with JS execution, CSS layout, screenshots, and content extraction. Servo Fetch is an agent skill from konippi/servo-fetch. Fetch and render web pages using the Servo browser engine — a single binary with JS execution, CSS layout, screenshots, and content extraction.

When should I use Servo Fetch?

Servo Fetch fits situations like: A URL returns empty; incomplete content with plain HTTP fetch; you need a screenshot without GPU; you need to run JavaScript in a page context.

How do I install Servo Fetch in Claude Code?

Run `npx skills add konippi/servo-fetch --skill servo-fetch -a claude-code`. Or copy the skill folder (skills/servo-fetch in konippi/servo-fetch) into .claude/skills/servo-fetch in your project. Claude Code loads it when a task matches its description.

How do I install Servo Fetch in Codex?

Run `npx skills add konippi/servo-fetch --skill servo-fetch -a codex`. Or copy the skill folder (skills/servo-fetch in konippi/servo-fetch) into .agents/skills/servo-fetch in your project. Codex loads it when a task matches its description.

Can I use Servo Fetch in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add konippi/servo-fetch --skill servo-fetch -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/servo-fetch, .gemini/skills/servo-fetch, .github/skills/servo-fetch and .opencode/skills/servo-fetch in your project.

What does Servo Fetch need to run?

SKILL.md names no scripts, command-line tools or credentials: Servo Fetch is instructions for the agent only. Our summary lists: Docker.

Does Servo Fetch access the network?

SKILL.md names 3 domains. In commands or code: a.com, b.com and docs.rs; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Servo Fetch safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Servo Fetch use?

Servo Fetch is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Servo Fetch use?

About 1.9k tokens (SKILL.md is roughly 7.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.6k tokens, read only when the agent opens those files.

What are the alternatives to Servo Fetch?

Skills that share tags, products or a category with Servo Fetch: Figma use_figma Plugin API Rules (warpdotdev/warp, 65k stars), Web Performance (mozilla/firefox-devtools-mcp, 474 stars), Golemui (golemui/golemui, 113 stars) and Creating Share Images (Dicklesworthstone/meta_skill, 205 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Servo Fetch?

konippi (a GitHub user) maintains it in konippi/servo-fetch, which has 157 GitHub stars. The repository was last updated on October 3, 2026.

Source: konippi/servo-fetch on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.