Go-live reports generated by CF Ready
A full cf-ready scan writes nine report files to your configured outputDir (default: project root). The report command regenerates reports from the last scan context without re-running inspectors.
All report files
| File | Format | Purpose | When generated |
|---|---|---|---|
cf-ready-report.md | Markdown | Human-readable summary: scores, blockers, top findings, auto-fix hints | Every scan |
cf-ready-report.json | JSON | Machine-readable full scan result for CI and tooling | Every scan |
migration-plan.md | Markdown | Framework-specific migration steps and open migration findings | Every scan |
security-findings.sarif | SARIF 2.1.0 | Security findings for GitHub code scanning and CI gates | Every scan |
ai-readiness-report.md | Markdown | AI readiness findings with policy and recommendations | Every scan |
seo-readiness-report.md | Markdown | SEO findings grouped by severity | Every scan |
go-live-checklist.md | Markdown | Pre-launch checklist derived from open findings | Every scan |
rollback-plan.md | Markdown | Rollback steps based on detected deployment target | Every scan |
deployment-manifest.json | JSON | Deployment metadata: framework, routes, wrangler presence, target URL | Every scan |
Output location. Set
outputDir in cf-ready.config.json to write reports elsewhere. Reports are always overwritten on scan (force: true).
JSON report fields
cf-ready-report.json includes these top-level fields:
{
"version": "0.1.0",
"scannedAt": "2026-07-08T12:00:00.000Z",
"projectName": "my-app",
"framework": "nextjs",
"packageManager": "npm",
"deploymentTarget": "vercel",
"productionReady": false,
"scores": {
"overall": 62,
"migration": 0,
"security": 75,
"aiReadiness": 70,
"seo": 80,
"deployment": 95,
"categories": [
{ "category": "migration", "score": 0, "weight": 0.35, "weightedScore": 0, "findingCount": 3 }
]
},
"inspection": {
"routes": ["/", "/about"],
"apiRoutes": ["/api/users"],
"importantFiles": { "package.json": true },
"hasWranglerConfig": false,
"nextJs": { "router": "app", "hasMiddleware": true }
},
"findings": [ /* full finding objects */ ],
"blockers": ["finding-id-1", "finding-id-2"]
}
| Field | Description |
|---|---|
productionReady | true when no open blockers and security gates pass (see Scoring) |
scores.overall | Weighted sum of category scores (0–100) |
scores.categories | Per-category score, weight, and weighted contribution |
blockers | Array of finding IDs with blocker severity |
findings | Complete list with id, category, severity, status, recommendation |
Commands
cf-ready scan # Run all checks and write 9 reports
cf-ready scan --json # Print JSON to stdout (also writes files)
cf-ready report # Regenerate reports from cached scan
The GitHub Action uploads cf-ready-scan.json (stdout capture) and security-findings.sarif as CI artifacts.