Skip to content
Development
Skill

/firecrawl

Search the web and scrape pages into clean markdown with the Firecrawl API — query-based discovery, single-URL extraction including public PDFs, driven by curl with a vault-stored API key.

From plugin
penguin-harness
1.1k16 skills
Install
$ npx -y skills add Prism-Shadow/penguin-harness --skill firecrawl --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/firecrawl

Context preview

The summary Claude sees to decide when to auto-load this skill.

Search the web and scrape pages into clean markdown with the Firecrawl API — query-based discovery, single-URL extraction including public PDFs, driven by curl with a vault-stored API key.

SKILL.md

firecrawl.SKILL.md
name: firecrawl
description: Search the web and scrape pages into clean markdown with the Firecrawl API — query-based discovery, single-URL extraction including public PDFs, driven by curl with a vault-stored API key.
short_description: Web search and page scraping via Firecrawl.
short_description_zh: 用 Firecrawl 做网络搜索与页面抓取。
version: 1
updated: 2026-07-20T14:00:00Z

Firecrawl

Firecrawl turns the live web into agent-ready markdown over a plain REST API (`https://api.firecrawl.dev/v2`, `Authorization: Bearer $FIRECRAWL_API_KEY`). Two calls cover most web work: `/search` to discover pages by query, `/scrape` to extract clean content from a URL you already have. Use it whenever a task needs current web information or the content of a specific page.

Before you start

If the user's message only invokes this skill (e.g. "use firecrawl skill") without a concrete task, ask what they want to search or scrape. When the task is concrete, check the credential first:

[ -n "$FIRECRAWL_API_KEY" ] && echo ok || echo missing

If missing (also visible in your Vault Keys section), ask the user to add `FIRECRAWL_API_KEY` to this agent's **key vault** — gear icon on the agent card → settings → key vault tab; keys come from the Firecrawl dashboard (https://www.firecrawl.dev/signin). Vault values reach your shell environment on the next task. Only fall back to the keyless tier (below) when the user cannot provide a key right now.

Search

curl -sS -X POST https://api.firecrawl.dev/v2/search \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" -H "content-type: application/json" \
  -d '{"query": "<what you are looking for>", "limit": 5}' \
  | jq '[.data.web[] | {url, title, description}]'
  • Results live in `.data.web[]`, each with `url` / `title` / `description`; `limit` defaults to 10 (per source).
  • Adding `"scrapeOptions": {"formats": ["markdown"]}` returns each result's page content inline — prefer the two-step search → scrape flow instead when only a hit or two matters; content-included search costs far more credits and context.
  • Useful filters: `"sources": [{"type": "news"}]` (or `images`), `"includeDomains": ["docs.example.com"]`, `"categories": ["github"]` (or `research` / `pdf`), `"tbs"` for time-bounded queries.

Scrape

curl -sS -X POST https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" -H "content-type: application/json" \
  -d '{"url": "<page url>"}' \
  | jq -r '.data.markdown' > <topic>.md
  • Markdown is the default format; the page's main content only (`onlyMainContent` defaults to true). Metadata sits in `.data.metadata` (`title`, `sourceURL`, `statusCode`).
  • Public document URLs (PDF, DOCX, …) scrape to markdown the same way.
  • JS-heavy pages that come back empty: retry with `"waitFor": 2000`.

Workflow and context economy

Search first for discovery, scrape once you have the URL. Never dump full page markdown into your context or reply: pipe it to a file (as above) and read the relevant parts with shell (`grep`/`sed`), then cite `metadata.sourceURL` for every claim you take from a page.

No key available

The keyless free tier only works through official Firecrawl clients and is rate-limited:

npx -y firecrawl-cli@latest search "<query>"
npx -y firecrawl-cli@latest scrape <url> -o page.md

Use it as a stopgap and tell the user to add a real key to the vault — accounts unlock the full API and higher limits.

Errors

  • `401` — missing/invalid key: re-check the vault entry name `FIRECRAWL_API_KEY`.
  • `402` / `429` — out of credits or rate-limited: report to the user; do not retry-loop.
  • Anything else: `https://docs.firecrawl.dev` is the source of truth for request/response schemas.
Read more
Ships withpenguin-harness

🐧 Automated Agent Builder. Create Self-Evolving Agents in One Click (DeepSeek/Kimi/GPT/Claude/Gemini)

Get the whole plugin
Stats
1,106
Stars
104
Forks
Active
Maintenance
TypeScript
Language
Apache-2.0
License
1h ago
Last commit
22d ago
Created

Repo: Prism-Shadow/penguin-harness