From skills
Gates commits and merges of AI-generated code by generating a comprehension quiz the user must pass. Use after substantial implementation sessions or when the user says 'quiz me'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skills:quiz-gateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The rule this skill enforces: **no merge you can't defend live.** After Claude implements something substantial, the user must be able to explain the changes as if they wrote them — in code review, in an interview, at 2am when it breaks. This skill generates a quiz about the just-completed work, grades the user's answers honestly, and only then clears the work for commit/merge.
The rule this skill enforces: no merge you can't defend live. After Claude implements something substantial, the user must be able to explain the changes as if they wrote them — in code review, in an interview, at 2am when it breaks. This skill generates a quiz about the just-completed work, grades the user's answers honestly, and only then clears the work for commit/merge.
The quiz tests the user, not Claude. Do not answer your own questions. Do not soften grading to be agreeable — a falsely passed quiz defeats the entire purpose.
Scope: everything implemented since the last passed quiz gate (or session start). If implementation-notes.md exists in the repo, read it — Deviations and Spec gaps entries are the highest-value question sources, because they're exactly the decisions the user didn't make personally.
Ask 3–6 questions. Scale with the size of the change. Every question must target something that would matter in code review or when debugging under pressure:
Never ask trivia: function names, syntax, line numbers, import paths, anything greppable in five seconds. If a question can be answered without understanding, cut it.
Present the quiz as a numbered list, then stop and wait for answers. Do not include the answers, hints, or a preamble that gives answers away.
Grade each answer as pass / partial / fail with one line of justification. Be honest — theory-of-mind check: if the user gave this answer to a skeptical senior engineer, would it hold?
For every partial or fail: explain the correct answer and point at the specific file/function/lines so the user reads the actual code, not just your summary. Then offer one follow-up question on the same topic to confirm the gap closed.
implementation-notes.md exists, append the open gaps under a ## Quiz debt section.Context: Claude implemented SSE fan-out in a Durable Object per the spec.
Quiz gate — 4 questions before this merges:
1. A client's SSE connection drops for 30s and reconnects. What does it
see — missed events, a gap, or a reset? What mechanism decides that?
2. Why does each session get its own Durable Object instead of one DO
with a sessions map? Name one concrete thing that breaks in the
single-DO design.
3. Where do posts live between creation and session expiry, and what
deletes them?
4. The plan called for Last-Event-ID replay. What shipped instead, and
what's the v2 implication? (from implementation-notes.md, Deviations)
A good grading line for a partial:
2. Partial — you're right that a single DO serializes all sessions'
writes, but the concrete break is SSE fan-out head-of-line blocking:
one slow client's stream backpressures the shared DO event loop.
See `SessionDO.broadcast()` in src/session-do.ts:88–114. Follow-up:
what bounds memory per DO when a client stops reading?
npx claudepluginhub nbbaier/agent-skillsGenerates a human-readable explanation of a completed change and quizzes the developer to verify understanding before merge approval.
Protocol for validating developer understanding of AI-generated technical decisions. Loaded by /plan, /pr, and the standalone /virtual-team:check command.
Prompts developers to explain AI-generated code or plans via rubber duck questioning to verify comprehension and prevent rubber-stamping.