Replace the noisy 'npx skills add' inherited stdout (banner, +/symlink
table, security report, ~80 lines per repo) with a single line per repo:
" ✓ firecrawl/cli" / " ✓ firecrawl/skills". TTY runs get a transient
"↓ <repo>" indicator while the install is in flight; non-TTY runs (CI,
piped) get only the final line.
Replace the trailing "Setup complete!" line with a printNextSteps()
block that surfaces:
- what just happened (skills installed globally)
- what firecrawl is for (search, scrape, crawl, interact)
- 4 example prompts (2 build-skill triggers, 2 direct CLI calls)
- pointer to firecrawl --help
Both interactive and non-interactive init paths use the same helpers,
so output is consistent regardless of how users enter the flow.
Bumped to 1.14.2.
when this cli is launched via 'npx -y firecrawl-cli@VERSION', npm injects
npm_command/npm_lifecycle_event/npm_execpath/INIT_CWD into the process
env. those vars leak into nested execSync('npx -y skills add ...') calls
and cause the loop's second iteration to silently exit after the first
install completes — published 1.14.0 only installs from firecrawl/cli
even though SKILL_REPOS contains both repos.
cleanNpmEnv() in skills-install.ts strips those vars; init.ts and
setup.ts pass it as the env to every nested execSync. added a
regression test that primes process.env with the leaking vars and
asserts every install call sees a clean env. bumped to 1.14.1.
onboarding (init) and setup skills now loop over a SKILL_REPOS list
so both the core cli skills and the build skills repo get installed
through the same npx/native paths. buildSkillsInstallArgs and
installSkillsNative take a repo parameter (defaulting to firecrawl/cli
for back compat). tests updated to assert both install invocations.
- rename skills/firecrawl-instruct → firecrawl-interact + update all cross-references
- hide deprecated browser command from --help (still works when called directly)
- group download, claude, codex, opencode under `firecrawl experimental` (alias: `firecrawl x`)
- remove browser references from passthrough system prompt quick reference
tmp_dir was declared local inside main(), but the EXIT trap
fires after main() returns when the local is out of scope.
With set -u this causes "unbound variable" on exit.
- trigger release on package.json version bump to main (not manual release)
- auto-create git tag + github release with all assets
- add nfpm.yaml for .deb, .rpm, .apk, .pkg.tar.zst generation
- use envsubst to render nfpm config per arch
- fix nfpm download url to use versioned filename
- add optional nfpm packaging to local build script
- build-binaries.sh: cross-compile via bun for darwin/linux/windows (x64+arm64)
- install.sh: curl|bash installer with checksum verification
- install.ps1: powershell installer for windows
- release-binaries.yml: github actions workflow to build + upload on release
- test.yml: cross-platform binary smoke tests on PRs
- homebrew formula: template for firecrawl/homebrew-firecrawl tap
scrape + grep/read is the default for coding agents — full content
stays local for agentic reasoning. --query is for quick targeted
answers without saving the page.