Required status checks

The CI jobs that must report green before a pull request can merge. The checkmarks that hold the merge button hostage.

the green checkmarkstests have to pass to mergerequired checksstatus checkmerge blocked until CI passesthe little tick next to my PRrequired ci jobsmake the build block the merge

See it

Live demo coming soon

What it is

Every CI job reports a status back to the pull request: pending, success, or failure. Marking a check 'required' promotes it from information to a gate, so the merge button stays disabled until that specific job reports success. Lint, type check, unit tests, and a build are the usual four; add a preview deploy or a bundle size check when they matter.

This is the enforcement half of branch protection: protection says 'you must open a PR', required checks say 'and it must be green'. Keep the required set fast and deterministic, because it sits directly in everyone's path. Slow or flaky required checks train the team to re-run until green, which is worse than having no check.

Gotcha: checks are matched by name, and the failure mode of renaming a required job is not an open gate, it is a stuck one. The old required name simply stops reporting, so the PR sits at 'expected' waiting on a job that no longer exists, and nothing merges until someone edits the protection rule. A required job that skips itself on some pull requests (a paths filter, a conditional) strands them exactly the same way. Rename in the workflow and in the rule as one change, or use a no-op skip job so the check always reports something. Also require 'branch is up to date with main' if you care about semantic conflicts between two independently green PRs.

Ask AI for it

Configure required status checks for this repo. Create a CI workflow with separately named jobs for lint, typecheck, unit tests, and build, each running on pull requests to main and finishing in under five minutes. Then mark those exact job names as required in branch protection, plus 'branch must be up to date before merging'. Avoid paths filters on required jobs (use a no-op skip job instead so the check always reports), and document that renaming a required job means updating the protection rule in the same change, or open pull requests will stall waiting on a check that will never report.

You might have meant

branch protection rulescontinuous integrationci cd pipelinedeployment gatesmoke test