/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.
$ npx -y skills add Prism-Shadow/penguin-harness --skill firecrawl --agent claude-codeHow 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.mdname: 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
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.
🐧 Automated Agent Builder. Create Self-Evolving Agents in One Click (DeepSeek/Kimi/GPT/Claude/Gemini)
Repo: Prism-Shadow/penguin-harness
Other skills on penguin-harness.
- /agent-creation
Create or configure an Agent State from a user requirement by writing AGENTS.md, setting identity metadata, and installing only needed Skills.
Open skill - /agent-evaluation
Run one specified Test Agent on one specified Benchmark Case exactly once, privately score that execution, and return one protocol result.
Open skill - /agent-optimization
Improve an Agent State through versioned scores and score-linked Traces from a frozen Benchmark.
Open skill - /agenthub-models
Call model APIs through @prismshadow/agenthub — streaming text generation, image generation, speech synthesis, embeddings and the supported-model registry with one client.
Open skill - /benchmark-design
Design and calibrate a multi-Case capability Benchmark and establish a traceable Formal Baseline.
Open skill - /bento-slides
Create and edit Bento presentations — self-contained .bento.html decks whose document is JSON. Use whenever the user wants a slide deck or presentation: from scratch, from source material, or by improving an existing file.
Open skill

