Firecrawl
AgentSkills library: reusable skills for AI coding agents (AI SDK, Codex, LangGraph, Supabase, Docker, Vitest, pytest, Streamlit, Zod).
npx -y skills add BjornMelin/dev-skills --skill firecrawlAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Firecrawl CLI for web data. Use to search the web, scrape or fetch a URL, map or crawl a site, extract structured data, interact with a page by clicking or filling or paginating, monitor changes, download a site offline, or parse local PDF, DOCX, XLSX and HTML documents.
The file declares its own license as ISC. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
10.0 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it
Firecrawl CLI
Use the Firecrawl CLI for live web search, URL extraction, site discovery, bulk crawls, browser-backed interaction, recurring monitors, offline site download, and local document parsing.
Use the installed CLI as command truth. Run firecrawl --help or
firecrawl <command> --help before relying on version-sensitive flags. This
skill is written for released firecrawl-cli 1.19.x behavior; do not teach or
use unreleased GitHub-main flags unless local help confirms them.
Do not run firecrawl init, firecrawl setup skills, firecrawl setup mcp,
firecrawl launch, or firecrawl make default from this skill unless the user
explicitly asks for Firecrawl workstation maintenance. Those commands can
modify installed skills, MCP config, or native web-provider defaults.
First Checks
- Check setup with
firecrawl --status. - If a command or flag matters, confirm it with
firecrawl <command> --help. - Before paid Firecrawl commands, check
.firecrawl/for reusable artifacts withscripts/firecrawl-cache-index.mjs; see references/cache-reuse.md. - Write large outputs to
.firecrawl/with-o; do not stream large page content into the agent context. - Quote URLs and paths. Shells treat
?,&, spaces, and brackets specially. - Use deterministic artifact names so follow-up commands can find evidence.
- Do not send private, confidential, repo-proprietary, or secret-bearing material to Firecrawl unless the user explicitly permits external processing.
For setup/auth troubleshooting, read references/install-auth.md. For output safety, read references/output-security.md. For local drift checks, run scripts/firecrawl-doctor.mjs.
Command Selection
Read references/command-selection.md for the full decision tree. Default order:
searchwhen no exact URL is known.scrapewhen a URL is known.mapwhen a site is known but the exact page is not.crawlwhen many pages from a site/section are needed.monitorwhen the user needs ongoing change tracking.agentwhen the user wants structured data from complex sites and provides a schema, or schema-like target fields.interactonly afterscrapewhen content requires clicks, forms, login, pagination, session state, or browser actions.parsefor local documents, not URLs.x downloadwhen the user wants a local offline site copy.researchonly for Firecrawl-native public arXiv or GitHub-history research, and verify important claims against the underlying source.doctorandfeedbackfor diagnostics and concise upstream quality feedback.
Scope And Cost Defaults
- Use
--limitonsearch,map,crawl,agent, andx download. - Reuse fresh local
.firecrawlartifacts before spending credits. - Prefer
map --searchplus targetedscrapebefore broad crawls. - Keep
crawlscoped with--include-paths,--exclude-paths,--max-depth, and--wait. - Use
agent --max-creditsand a schema for complex structured extraction. - Use
--redact-piifor contact pages, PDFs, user-generated pages, lead research, or anything likely to enter logs, shared artifacts, or vector stores. - Do not crawl whole domains, allow external links, or allow subdomains unless the user explicitly needs that breadth.
Default Recipes
Prefer these short chains before opening a detailed reference. Read references/recipes.md for schema, monitor JSON, jq, output-shape probes, profile, feedback, and download variants.
Search local cache before fetching a known URL:
FIRECRAWL_SKILL_DIR="${FIRECRAWL_SKILL_DIR:-$HOME/.agents/skills/firecrawl}"
node "$FIRECRAWL_SKILL_DIR/scripts/firecrawl-cache-index.mjs" find \
--url "https://example.com/page" \
--intent docs \
--json
Search with page content, inspect, then send feedback:
firecrawl search "query" --scrape --json -o .firecrawl/search-query.json
jq -r '.data.web[] | "\(.title): \(.url)"' .firecrawl/search-query.json
firecrawl search-feedback "$(jq -r '.id' .firecrawl/search-query.json)" --rating good --valuable-sources '[{"url":"https://example.com","reason":"Useful result"}]' --silent &
Find a page on a known site, then scrape it:
firecrawl map "https://docs.example.com" --search "authentication" --json -o .firecrawl/map-auth.json
firecrawl scrape "https://docs.example.com/auth-page" -o .firecrawl/auth-page.md
Scoped docs crawl:
firecrawl crawl "https://docs.example.com" --include-paths /docs --limit 50 --wait --pretty -o .firecrawl/crawl-docs.json
Scrape, interact, then stop:
firecrawl scrape "https://example.com" --profile example-site
firecrawl interact "Click the pricing tab and extract the visible plans"
firecrawl interact stop
Parse a local document:
firecrawl parse "./report.pdf" -o .firecrawl/report.md
Offline docs copy:
firecrawl x download "https://docs.example.com" --include-paths /docs --format markdown,links --limit 50 -y
Basic recurring monitor:
firecrawl monitor create --name "Changelog" --schedule "every 30 minutes" --scrape-urls "https://example.com/changelog"
Artifact Names
Create .firecrawl/ first and use names that encode command plus subject:
.firecrawl/search-<slug>.json
.firecrawl/search-<slug>-scraped.json
.firecrawl/map-<site>-<topic>.json
.firecrawl/scrape-<site>-<page>.md
.firecrawl/scrape-<site>-<page>.json
.firecrawl/crawl-<site>-<scope>.json
.firecrawl/agent-<task>.json
.firecrawl/monitor-<name>.json
.firecrawl/parse-<document>.md
.firecrawl/schema-<purpose>.json
.firecrawl/index.jsonl
Evidence Closeout
Before finalizing web-data work, preserve enough evidence to audit the answer:
printf 'Command: %s\nArtifact: %s\n' \
'firecrawl scrape "https://example.com/page" -o .firecrawl/scrape-example-page.md' \
'.firecrawl/scrape-example-page.md' \
> .firecrawl/scrape-example-page.evidence.txt
rg -n "pricing|limit|changed|released" .firecrawl/scrape-example-page.md \
>> .firecrawl/scrape-example-page.evidence.txt
Final answers should cite source URLs and local artifact paths when Firecrawl evidence materially supports the claim.
Failure Recovery
- Auth/401: run
firecrawl --status; seereferences/install-auth.md. - Credits/402 or rate limit: reduce
--limit, narrow scope, or stop and report. - Failed run/job: use
firecrawl doctor --jsonorfirecrawl doctor <job-id> --query "why did this run fail?". - Timeout: add
--timeout, reduce scope, or use--wait-forfor rendering. - Blocked or JS-heavy page: retry
scrapewith--wait-for; escalate tointeractonly after a successful scrape. - Monitor unavailable: report the account/retention limitation and use one-off scrape plus local diff instead.
- Missing interact session: run
scrapefirst and pass--profileor--scrape-id. - Malformed JSON: save raw output, validate with
jq, and rerun with--jsonor--pretty. - CLI help differs from this skill: trust local
firecrawl <command> --helpand update the skill later.
Reference Loading
- Rich command chains: references/recipes.md
- Local cache/reuse: references/cache-reuse.md
- Reusable schemas: references/schemas.md
- Search/discovery first: references/search.md
- Known URL extraction: references/scrape.md
- Site URL discovery: references/map.md
- Bulk site extraction: references/crawl.md
- AI structured extraction: references/agent.md
- Browser interaction: references/interact.md
- Local document parsing: references/parse.md
- Recurring change tracking: references/monitor.md
- Offline site copy: references/download.md
- Firecrawl-native public paper/GitHub research: references/research.md
- Local maintenance/drift: references/maintenance.md
For Firecrawl SDK/API integration into an application, adding
FIRECRAWL_API_KEY to a project, or choosing product endpoints, do not use
this CLI skill as the implementation authority. Use the Firecrawl build skills
if installed. For outcome deliverables such as research briefs, SEO audits,
lead lists, QA reports, or design extraction, use the dedicated Firecrawl
workflow skills if installed.
Output Defaults
Use .firecrawl/ for fetched or parsed output unless the user explicitly wants
inline content:
mkdir -p .firecrawl
firecrawl search "query" --json -o .firecrawl/search-query.json
firecrawl scrape "https://example.com/page" -o .firecrawl/example-page.md
Inspect output incrementally:
wc -l .firecrawl/example-page.md
head -80 .firecrawl/example-page.md
rg -n "pricing|authentication" .firecrawl/example-page.md
Single-format scrape/parse output is raw content. Multiple formats usually
return JSON. When using search --scrape, do not re-scrape those result URLs
unless the scraped payload is missing what the task needs.
For command-specific output shapes and resilient jq probes, open the matching
reference file rather than a separate shape reference.
Validation
When maintaining this skill:
node scripts/firecrawl-doctor.mjs --json
node scripts/firecrawl-help-snapshot.mjs --output /tmp/firecrawl-help.json
The scripts are diagnostics only. They do not wrap Firecrawl operations and they do not install Firecrawl skills.