firecrawl-prod-checklist
Pre-launch validation steps for applications using Firecrawl APIs.
Install
mkdir -p .claude/skills/firecrawl-prod-checklist && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3094" && unzip -o skill.zip -d .claude/skills/firecrawl-prod-checklist && rm skill.zipInstalls to .claude/skills/firecrawl-prod-checklist
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Execute Firecrawl production deployment checklist and rollback procedures.Key capabilities
- →Verify production API key security.
- →Configure crawl safety limits like `limit` and `maxDepth`.
- →Implement error handling for rate limits and credit exhaustion.
- →Set up monitoring for scrape success/failure rates and credit consumption.
- →Execute a rollback procedure to disable Firecrawl integration.
How it works
This skill provides a checklist and instructions to validate Firecrawl deployments, covering security, crawl limits, error handling, and monitoring. It includes bash and TypeScript examples to perform checks and implement safe crawling.
Inputs & outputs
When to use firecrawl-prod-checklist
- →Preparing for production launch
- →Setting crawl safety limits
- →Configuring webhook security
About this skill
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.
Prerequisites
Limitations
- →All `crawlUrl` calls must have `limit` parameter set.
- →`maxDepth` must be configured to prevent unbounded crawling.
- →Credit budget tracking must be implemented.
How it compares
This skill provides a structured checklist and code examples for Firecrawl production deployment, unlike a generic deployment process.
Compared to similar skills
firecrawl-prod-checklist side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| firecrawl-prod-checklist (this skill) | 1 | 27d | Caution | Intermediate |
| gcp-cloud-run | 5 | 5mo | Review | Intermediate |
| flow-nexus-platform | 6 | 4mo | Review | Beginner |
| smithery-mcp-deployment | 8 | 8mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
gcp-cloud-run
aj-geddes
Deploy containerized applications on Google Cloud Run with automatic scaling, traffic management, and service mesh integration. Use for container-based serverless computing.
flow-nexus-platform
ruvnet
Comprehensive Flow Nexus platform management - authentication, sandboxes, app deployment, payments, and challenges
smithery-mcp-deployment
CaullenOmdahl
Best practices for creating, optimizing, and deploying MCP servers to Smithery. Use this skill when:(1) Creating new MCP servers for Smithery deployment(2) Optimizing quality scores (achieving 90/100)(3) Troubleshooting deployment issues (0/0 tools, missing annotations, low scores)(4) Migrating existing MCP servers to Smithery format(5) Understanding Smithery's schema format requirements(6) Adding workflow prompts, tool annotations, or documentation resources(7) Configuring smithery.yaml and package.json for deployment
deployment-pipeline-design
wshobson
Design multi-stage CI/CD pipelines with approval gates, security checks, and deployment orchestration. Use when architecting deployment workflows, setting up continuous delivery, or implementing GitOps practices.
vercel-deployment
davila7
Expert knowledge for deploying to Vercel with Next.js Use when: vercel, deploy, deployment, hosting, production.
netlify-deploy
openai
Deploy web projects to Netlify using the Netlify CLI (`npx netlify`). Use when the user asks to deploy, host, publish, or link a site/repo on Netlify, including preview and production deploys.