Firecrawl prod checklist
425 plugins, 2,810 skills, 200 agents for Claude Code. Open-source marketplace at tonsofskills.com with the ccpi CLI package manager.
npx -y skills add jeremylongshore/claude-code-plugins-plus-skills --skill firecrawl-prod-checklistAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
'Execute Firecrawl production deployment checklist and rollback procedures.
The file declares its own license as MIT. 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
5.3 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Firecrawl Production Checklist
Overview
Pre-deployment validation checklist for applications using Firecrawl's scrape, crawl, map, and extract APIs. Covers credential management, crawl safety limits, error handling, monitoring, and rollback.
Prerequisites
- Staging environment tested and passing
- Production API key from firecrawl.dev/app
- Monitoring infrastructure ready
Pre-Deployment Checklist
Credentials & Security
- Production
FIRECRAWL_API_KEYin secure vault (not in code or .env) - Key starts with
fc-and is scoped to production - Different API keys for dev/staging/production
-
.envfiles in.gitignore - Webhook secrets stored securely
- Git history scanned for leaked keys
Crawl Safety
- All
crawlUrlcalls havelimitparameter set -
maxDepthconfigured to prevent unbounded crawling -
includePaths/excludePathsfilters applied where appropriate - Credit budget tracking implemented (daily limit alerts)
- No hardcoded URLs in production code
Error Handling
- 429 rate limit handling with exponential backoff
- 402 credit exhaustion handled gracefully (no crash)
- 401 auth failure logged and alerted
- Async crawl jobs have timeout with deadline
- Fallback from crawl to individual scrape on failure
- Empty markdown detection (JS rendering issues)
Monitoring & Alerting
- Scrape success/failure rate tracked
- Credit consumption monitored
- Crawl job completion rate tracked
- Alert on credit balance below threshold
- Alert on error rate > 5%
- Webhook delivery failures logged
Instructions
Step 1: Verify API Connectivity
set -euo pipefail
# Test production key
curl -s https://api.firecrawl.dev/v1/scrape \
-H "Authorization: Bearer $FIRECRAWL_API_KEY_PROD" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","formats":["markdown"]}' | jq '.success'
# Check credit balance
curl -s https://api.firecrawl.dev/v1/team/credits \
-H "Authorization: Bearer $FIRECRAWL_API_KEY_PROD" | jq .
Step 2: Health Check Endpoint
import FirecrawlApp from "@mendable/firecrawl-js";
const firecrawl = new FirecrawlApp({
apiKey: process.env.FIRECRAWL_API_KEY!,
});
export async function healthCheck() {
const start = Date.now();
try {
const result = await firecrawl.scrapeUrl("https://example.com", {
formats: ["markdown"],
});
return {
status: result.success ? "healthy" : "degraded",
latencyMs: Date.now() - start,
hasContent: (result.markdown?.length || 0) > 0,
};
} catch (error: any) {
return {
status: "unhealthy",
latencyMs: Date.now() - start,
error: error.statusCode || error.message,
};
}
}
Step 3: Production-Safe Crawl Wrapper
export async function productionCrawl(url: string, opts: {
maxPages: number;
paths?: string[];
timeout?: number;
}) {
// Hard credit safety — never exceed configured limit
const limit = Math.min(opts.maxPages, 500);
const job = await firecrawl.asyncCrawlUrl(url, {
limit,
maxDepth: 3,
includePaths: opts.paths,
scrapeOptions: { formats: ["markdown"], onlyMainContent: true },
});
// Poll with timeout
const deadline = Date.now() + (opts.timeout || 600000);
let pollInterval = 2000;
let status = await firecrawl.checkCrawlStatus(job.id);
while (status.status === "scraping" && Date.now() < deadline) {
await new Promise(r => setTimeout(r, pollInterval));
pollInterval = Math.min(pollInterval * 1.5, 30000);
status = await firecrawl.checkCrawlStatus(job.id);
}
if (status.status !== "completed") {
throw new Error(`Crawl ${job.id} did not complete: ${status.status}`);
}
return status;
}
Step 4: Rollback Procedure
set -euo pipefail
# Immediate rollback — disable Firecrawl integration
kubectl set env deployment/app FIRECRAWL_ENABLED=false
kubectl rollout restart deployment/app
# Verify rollback
curl -s https://app.example.com/health | jq '.services.firecrawl'
Alerting Rules
| Alert | Condition | Severity |
|---|---|---|
| API unreachable | Health check fails 3x | P1 |
| Credits < 1000 | Balance check | P2 |
| Error rate > 5% | 429/5xx rate | P2 |
| Crawl timeout | Job stuck > 10min | P3 |
| Auth failure | Any 401 response | P1 |
Resources
Next Steps
For version upgrades, see firecrawl-upgrade-migration.