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

FileFormatPurposeWhen generated
cf-ready-report.mdMarkdownHuman-readable summary: scores, blockers, top findings, auto-fix hintsEvery scan
cf-ready-report.jsonJSONMachine-readable full scan result for CI and toolingEvery scan
migration-plan.mdMarkdownFramework-specific migration steps and open migration findingsEvery scan
security-findings.sarifSARIF 2.1.0Security findings for GitHub code scanning and CI gatesEvery scan
ai-readiness-report.mdMarkdownAI readiness findings with policy and recommendationsEvery scan
seo-readiness-report.mdMarkdownSEO findings grouped by severityEvery scan
go-live-checklist.mdMarkdownPre-launch checklist derived from open findingsEvery scan
rollback-plan.mdMarkdownRollback steps based on detected deployment targetEvery scan
deployment-manifest.jsonJSONDeployment metadata: framework, routes, wrangler presence, target URLEvery 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"]
}
FieldDescription
productionReadytrue when no open blockers and security gates pass (see Scoring)
scores.overallWeighted sum of category scores (0–100)
scores.categoriesPer-category score, weight, and weighted contribution
blockersArray of finding IDs with blocker severity
findingsComplete 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.