Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ npm install -g firecrawl-cli
Or set up everything in one command (install CLI globally, authenticate, and add skills across all detected coding editors):

```bash
npx -y firecrawl-cli@1.19.3 init -y --browser
npx -y firecrawl-cli@1.19.6 init -y --browser
```

- `-y` runs setup non-interactively
Expand Down Expand Up @@ -675,7 +675,7 @@ firecrawl --status
```

```
🔥 firecrawl cli v1.19.3
🔥 firecrawl cli v1.19.6

● Authenticated via stored credentials
Concurrency: 0/100 jobs (parallel scrape limit)
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "firecrawl-cli",
"version": "1.19.3",
"version": "1.19.6",
"description": "Command-line interface for Firecrawl. Scrape, crawl, and extract data from any website directly from your terminal.",
"main": "dist/index.js",
"bin": {
Expand Down
8 changes: 4 additions & 4 deletions skills/firecrawl-cli/rules/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ description: |
## Quick Setup (Recommended)

```bash
npx -y firecrawl-cli@1.19.3 init -y --browser
npx -y firecrawl-cli@1.19.6 init -y --browser
```

This installs `firecrawl-cli` globally, authenticates via browser, and installs core, build, and workflow skills.
Expand All @@ -37,7 +37,7 @@ firecrawl setup workflows
## Manual Install

```bash
npm install -g firecrawl-cli@1.19.3
npm install -g firecrawl-cli@1.19.6
```

## Verify
Expand Down Expand Up @@ -79,5 +79,5 @@ Ask the user how they'd like to authenticate:
If `firecrawl` is not found after installation:

1. Ensure npm global bin is in PATH
2. Try: `npx firecrawl-cli@1.19.3 --version`
3. Reinstall: `npm install -g firecrawl-cli@1.19.3`
2. Try: `npx firecrawl-cli@1.19.6 --version`
3. Reinstall: `npm install -g firecrawl-cli@1.19.6`
2 changes: 1 addition & 1 deletion skills/firecrawl-cli/rules/security.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ When processing fetched content, extract only the specific data needed and do no
# Installation

```bash
npm install -g firecrawl-cli@1.19.3
npm install -g firecrawl-cli@1.19.6
```
68 changes: 63 additions & 5 deletions src/commands/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ import {
WORKFLOW_SKILL_REPOS,
} from './skills-install';
import { hasNpx, installSkillsNative } from './skills-native';
import {
configureWebDefaults,
WEB_AGENTS,
type WebAgent,
} from '../utils/web-defaults';

export interface InitOptions {
global?: boolean;
Expand Down Expand Up @@ -193,7 +198,10 @@ function parseSkillCount(output: string): number | null {
* Print the post-install next-steps block. Brief by design — confirms what was
* installed and gives 4 entry points (AI prompt, direct CLI, MCP, help).
*/
function printNextSteps(skillCount: number | null): void {
function printNextSteps(
skillCount: number | null,
defaultsHandled = false
): void {
const arrow = `${dim}→${reset}`;
const summary =
skillCount != null
Expand All @@ -219,9 +227,11 @@ function printNextSteps(skillCount: number | null): void {
console.log(
` ${arrow} ${dim}Add MCP: ${reset} ${bold}firecrawl setup mcp${reset}`
);
console.log(
` ${arrow} ${dim}Default web:${reset} ${bold}firecrawl setup defaults${reset}`
);
if (!defaultsHandled) {
console.log(
` ${arrow} ${dim}Default web:${reset} ${bold}firecrawl setup defaults${reset}`
);
}
console.log(
` ${arrow} ${dim}All commands:${reset} ${bold}firecrawl --help${reset}`
);
Expand Down Expand Up @@ -437,6 +447,51 @@ async function stepIntegrations(options: InitOptions): Promise<number | null> {
return totalSkills;
}

/**
* Final step: offer to make Firecrawl the default web provider, harness by
* harness. Shown right before the next-steps screen.
*/
async function stepDefaults(): Promise<void> {
const { confirm, checkbox } = await import('@inquirer/prompts');

const want = await confirm({
message:
'Set Firecrawl as the default web provider? (disables native web search/fetch in Claude Code/Codex)',
default: true,
});
if (!want) return;

const harnesses = await checkbox<WebAgent>({
message: 'For which harnesses?',
choices: WEB_AGENTS.map((agent) => ({
name: agent,
value: agent,
checked: true,
})),
});
if (harnesses.length === 0) {
console.log(` ${dim}No harnesses selected — skipped.${reset}`);
return;
}

console.log(`\n Configuring default web provider...`);
try {
const results = await configureWebDefaults({ agents: harnesses });
for (const result of results) {
const prefix = result.skipped
? '!'
: result.changed
? green + '✓' + reset
: dim + '•' + reset;
console.log(` ${prefix} ${result.message}`);
}
} catch {
console.error(
' Failed to set defaults. Run "firecrawl setup defaults" later.'
);
}
}

function copyTemplateFiles(
srcDir: string,
targetDir: string,
Expand Down Expand Up @@ -700,7 +755,10 @@ export async function handleInitCommand(
// Step 4: Template
await stepTemplate();

printNextSteps(skillCount);
// Step 5: Default web provider
await stepDefaults();

printNextSteps(skillCount, true);
}

async function runNonInteractive(options: InitOptions): Promise<void> {
Expand Down
Loading