feat: add firecrawl plugin - #60
Conversation
Wraps the firecrawl-cli binary as an agent skill: scrape, search, crawl, map, parse, interact, agent, and monitor commands behind the write-to-disk-then-Read pattern that keeps large results out of context, plus a gated maintainer update flow (UPSTREAM.md SHA tracking, two approval gates, recorded rollback version). Source-repo references generalized; update script resolves paths relative to itself and gains a source-guard plus a new self-contained regression suite. Preamble hardened for headless permission preflight (redundant credential-probe line dropped; narrow allowed-tools grants for the status and sync lines). Co-Authored-By: Claude <noreply@anthropic.com>
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_02c72919-0a68-4536-b9a2-40b901dc061b) |
|
Claude finished @kyle-sexton's task in 3m 7s —— View job PR Review: feat/publish-firecrawl
Overall this is a high-quality plugin submission. The structure, security posture, and documentation are solid. A few actionable issues below, ordered by severity. Medium —
|
There was a problem hiding this comment.
Stale comment
Risk: medium. Cursor Bugbot did not complete (check skipped; usage limit reached), so automated review is incomplete and I am not approving. Human review is needed before merge; no reviewers were assigned because no non-author maintainers were identified in this repository.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 59db20d4f1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
# Conflicts: # .claude-plugin/marketplace.json # README.md
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_34982183-f427-48f8-9c30-1162644f2dc2) |
|
Claude finished @kyle-sexton's task in 3m 19s —— View job PR Review: feat/publish-firecrawl
Trigger: This synchronize event is a merge of Medium —
|
There was a problem hiding this comment.
Risk: medium. Cursor Bugbot did not complete successfully (check skipped; usage limit reached), so automated review is incomplete and I am not approving. Human review is needed before merge; no reviewers were assigned because no non-author maintainers were identified in this repository.
Sent by Cursor Approval Agent: Pull Request Router and Approver
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3184b4e3f2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ## agent — natural-language web research task | ||
|
|
||
| ```bash | ||
| firecrawl agent "<prompt>" --model <spark-1-mini|spark-1-pro> -o <path> |
There was a problem hiding this comment.
Add --wait when saving agent results
For natural-language research tasks, the Firecrawl CLI starts an agent job asynchronously by default—the current CLI docs describe basic agent usage as returning a job ID immediately and show persisted results with --wait -o. As written, this reference tells Claude to run firecrawl agent ... -o <path> and then read the file, so the agent path will read only the job status/ID instead of the completed research output whenever this command is used; include --wait here or document an explicit poll step.
Useful? React with 👍 / 👎.


Closes melodic-software/medley#1296.
Publishes the
firecrawlplugin perdocs/MIGRATION-PLAYBOOK.md(per-plugin gate + acceptance security review).What ships
plugins/firecrawl/— one skill (/firecrawl:firecrawl): wraps thefirecrawl-clibinary for scrape/search/crawl/map/parse/interact/agent/monitor with the core write-to-disk-then-Read pattern (results land in tempfiles via-o; the agent reads only the needed slice — 32–35× token savings vs the MCP per the Scalekit benchmark cited in the skill).context/commands.md(full flag tables, carried verbatim),context/configuration.md+context/update-flow.md(adapted repo-agnostic).scripts/update.sh(--checkread-only CLI-version + upstream-SHA drift report;--applynpm upgrade +UPSTREAM.mdrewrite behind approval gates; never touches SKILL.md — content integration is a gated manual step) with a new self-containedupdate.test.sh(17 checks, network-free).UPSTREAM.mdsidecar (SHA-tracking sync state + rollback version).category: utilities. Explicitversion: 0.1.0inplugin.jsononly.Gate evidence
claude plugin validate ./plugins/firecrawl --strict— PASS; catalog--strict— PASSclaude plugin detailstoken cost: ~253 tok always-on, ~4.9k on-invokeupdate.test.sh17/17 PASS; shellcheck (repo rcfile) clean; shfmt clean; markdownlint 0 errors; typos clean; editorconfig-checker clean--plugin-dir— PASS: skill body loaded, answered the write-to-disk flag (-o) from the body, namespace confirmed asfirecrawl:firecrawl. The smoke run surfaced two real headless-permission defects that are fixed in this PR: a credential-shapedprintenv FIRECRAWL_API_KEYpreamble line was rejected by permission preflight (removed —firecrawl --statusalready reports auth), and the status/sync preamble lines needed narrowallowed-toolsgrants (Bash(command -v firecrawl*),Bash(firecrawl --status*),Bash(grep -m1 *UPSTREAM.md*)). Caveat: in a fully sandboxed scratch dir the preamble lines may still fall back to their error text; the skill body loads and functions regardless.Security review (playbook acceptance)
userConfig.firecrawl-clicallsapi.firecrawl.dev(or a self-hostedFIRECRAWL_API_URL) — that is the plugin's documented purpose. The credential is the consumer-ownedFIRECRAWL_API_KEYenv var; never stored in or written by the plugin. Env-var auth is preferred overfirecrawl login/configexplicitly to avoid a second credential store.registry.npmjs.org(version metadata) +www.firecrawl.dev(upstream skill source, hashed in a tmpdir).npm install -gand any SKILL.md rewrite sit behind two explicit approval gates;--checkis read-only.firecrawl init(would install a parallel MCP + skill copy) and documents the login/config divergence risk.UPSTREAM.mdvia the skill-dir substitution; no../reach-outs.Merge note: open PRs #53, #56, #57, #59 also touch
marketplace.json+ rootREADME.md— merge serially; later ones need a conflict-merge of the two shared files.Note
Medium Risk
New plugin steers agents toward external Firecrawl API egress and credit use via a user-installed CLI and
FIRECRAWL_API_KEY; maintainer--applyrunsnpm install -g, but there are no hooks/MCP and updates are gated.Overview
Adds a new
firecrawlplugin to the marketplace and root catalog, shipping/firecrawl:firecrawlas the maintainedfirecrawl-cliintegration (scrape, search, crawl, map, parse, interact, agent, monitor) instead of the Firecrawl MCP.The skill centers on write-to-disk then
Read(-otempfiles) with escalation tables for when to use Firecrawl vs WebFetch, narrowallowed-toolsfor the status/sync preamble (firecrawl --status,UPSTREAM.mdgrep), and prohibitions againstfirecrawl init/ login-style config drift. Supportingcontext/docs cover flags, env defaults, and the maintainer update pipeline;UPSTREAM.mdrecords upstream SHA and CLI rollback versions.Maintainer tooling:
scripts/update.sh(--checkread-only drift vs npm + upstream skill;--applyglobalnpm install+UPSTREAM.mdrewrite only, notSKILL.md) and network-freeupdate.test.shregression checks.Reviewed by Cursor Bugbot for commit 3184b4e. Bugbot is set up for automated code reviews on this repo. Configure here.