SlopBlock watches a pull request when it opens, updates, or becomes ready for review.
SlopBlock is a GitHub App that blocks merges behind a short quiz built from the diff. It skips obvious changes, asks focused questions for risky ones, and keeps the status check tied to actual code comprehension instead of vibes.
Instead of approving a merge because the author opened the PR, SlopBlock asks them to explain the changed code in context.
SlopBlock watches a pull request when it opens, updates, or becomes ready for review.
It decides whether the diff is trivial enough to skip or worth turning into a quiz.
The PR author answers multiple-choice questions tied directly to the changed code.
Passing the quiz updates the required status check so the PR can merge.
This is the kind of quiz SlopBlock would generate for an actual pull request. The changed lines are shown first, then the questions test whether the author understands what the diff really did.
This example is based on a realistic server change: the answer endpoint now validates the submitted answer map and returns a 400 when a question is missing instead of silently accepting incomplete submissions.
diff --git a/src/routes/api/session/[token]/answer/+server.ts b/src/routes/api/session/[token]/answer/+server.ts
@@
if (action === "pass") {
const answers = body?.answers;
if (!answers || typeof answers !== "object" || Array.isArray(answers)) {
return json({ ok: false, message: "Answers are required." }, { status: 400 });
}
try {
const result = await markQuizPassed({ octokit, session, answers });
return json(result);
} catch (error) {
return json({ ok: false, message: error instanceof Error ? error.message : "Failed to grade quiz." }, { status: 400 });
}
}SlopBlock gives maintainers a lightweight gate when they want authors to demonstrate real understanding of risky diffs, generated code, or LLM-assisted changes.