Skip to content
Back to skills

Code Assimilation Quiz

ASecurity

Post-implementation assimilation quiz — a teaching code review run as multiple-choice questions, one at a time, so the developer takes ownership of the code the AI wrote. Use ONLY when the user explicitly asks for it, never automatically. Typical triggers — "run the live code review", "quiz me on what was implemented", "check that I understood the code", "multiple-choice questions on the diff", "help me assimilate what you coded", "teaching code review". Do not confuse with a standard code re...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 18, 2026
ai-agentsgotestingrefactoringgit

Security analysis

A100/100

Scanned October 18, 2026

npx -y skills add baov/proof-over-vibes --skill code-assimilation-quiz --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Code Assimilation Quiz?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Code Assimilation Quiz
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/baov-code-assimilation-quiz/badge)](https://www.skillsdirectory.com/skills/baov-code-assimilation-quiz)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: code-assimilation-quiz
description: Post-implementation assimilation quiz — a teaching code review run as multiple-choice questions, one at a time, so the developer takes ownership of the code the AI wrote. Use ONLY when the user explicitly asks for it, never automatically. Typical triggers — "run the live code review", "quiz me on what was implemented", "check that I understood the code", "multiple-choice questions on the diff", "help me assimilate what you coded", "teaching code review". Do not confuse with a standard code review (hunting for defects) — the goal here is the developer's learning, not criticism of the code.
---

# Live Code Review — Assimilation quiz

## Why this skill exists

When an AI implements code, the developer risks becoming a passive rubber
stamp: the code works, they merge it, but they could neither maintain it nor
defend it in review. This skill flips the dynamic: after an implementation,
the developer takes a multiple-choice quiz built on the real diff. The point
is not to trap them or to grade them, but to turn passive reading into active
recall — the most effective way to remember something and to spot your own
fuzzy areas.

Keep that goal in mind at every step: anything that humiliates, traps or
drowns the developer is counterproductive. Anything that makes them ask
themselves a real question about the code is productive.

## Why this skill matters more as agents write more

One objection comes up naturally: if the trend is to delegate implementation
to agents and read less and less code, what good is a quiz on code nobody
will read? The opposite is true, and it is worth knowing why.

Delegating without reading only works if mechanical constraints hem the agent
in: architecture invariants, shape thresholds, acceptance tests, mutation
testing. But **calibrating those constraints takes judgment that is only
acquired by having read a lot of code**. Knowing that a function is too big,
that a coupling will cost you later, that an edge case is missing — none of
that is learned from reading thresholds, it is learned from having seen the
damage.

Adopting "I don't read the code anymore" as a shortcut, without having built
that judgment first, is a very different bet, and a far riskier one, than the
same sentence coming from an experienced developer. The wording is the same;
what it covers is not.

This skill is one of the places where that judgment is forged. It is not
there to check the code — `premerge-review` handles that — but to make sure
the developer who will be steering agents tomorrow knows what they are
steering. That is also why it stays useful when everything is green: a diff
without a single defect is excellent learning material.

Practical consequence: when the developer says they already know the area
well, take them at their word and shorten the quiz. When they are discovering
a technique, a pattern or a part of the codebase, that is when the quiz pays
off most.

## Step 1 — Define the scope

The quiz is based on the **git diff**, not on your memory of the conversation
(which can diverge from what is actually on disk).

1. Look at uncommitted changes first: `git status`, then `git diff` and
   `git diff --staged`.
2. If nothing is uncommitted, look at the latest commits:
   `git log --oneline -10`, then the diff of the commits involved.
3. If the scope is ambiguous (several recent commits, mixed topics), ask the
   developer which one to cover before going further. A single question, with
   the options you identified.

Read the whole diff, and open the modified files when the diff alone is not
enough to understand the context (signatures being called, neighboring
classes). You cannot write good questions about code you have not actually
read.

## Step 2 — Calibrate the quiz

Number of questions, proportional to the size of the change:

| Diff size | Questions |
|---|---|
| Small (< ~50 lines, 1-2 files) | 3 |
| Medium (~50-300 lines) | 5 |
| Large (> 300 lines or many files) | 7 |

Announce the format to the developer before starting: how many questions,
and the fact that they come one at a time.

Ask the questions in the language the developer and the project use. This
skill talks to a human being, and this repository being written in English
does not make English the language of the quiz.

## Step 3 — Build the questions

Before asking the first question, build the complete list of questions in
your head (or in a reasoning block). That guarantees coverage of the three
axes and avoids redundancy.

The questions cover **three axes**, to be balanced across the whole quiz:

1. **The WHAT** — structure of the change: which files/modules are touched,
   where a given responsibility lives, what the call flow is.
2. **The WHY** — design choices: why this structure rather than an
   alternative, what problem the choice avoids, what trade-off it makes.
3. **Risks / edge cases** — what breaks if you pass a given input, which case
   is not covered, where the fragile spot is.

Quality rules for the questions:

- **Anchored in the real diff.** Every question must cite its anchor (file,
  function, even line). No general-knowledge question that could be answered
  without having seen the code.
- **4 options (A-D), exactly one correct.** The distractors must be
  *plausible* — typically the design alternatives genuinely on the table, or
  the likely confusions. An absurd distractor is an option handed over for
  free.
- **No trick wording.** The difficulty must come from understanding the
  code, never from a subtlety of phrasing or an insignificant memory detail
  (exact order of the parameters, precise name of a local variable).
- **The WHY wins when you have to choose.** If the question quota forces a
  trade-off, favor design and risk questions: those are the ones that make
  the developer able to maintain the code.

## Step 4 — Run the quiz, one question at a time

This is the cardinal rule of the skill: **one question per message, then wait
for the answer**. Never list several questions ahead of time, never move on
without an answer. Active recall only works if the developer commits to an
answer before seeing the correction.

Presentation format: the question, then the options as a **bullet list** (one
per line, more readable than a paragraph):

```
Question 2/5 — [axis: why]
In `OrderService.cancel()`, the refund is delegated to an asynchronous event
rather than called directly. Why?

- **A.** ...
- **B.** ...
- **C.** ...
- **D.** ...
```

The developer answers with the letter. Only use an interactive choice
mechanism (buttons, selection widget) **if it can display the full question
AND its four options in the same place**. A widget that shows nothing but
A/B/C/D buttons detached from the question makes the developer answer blind —
in that case, plain text is better.

**After a correct answer**: confirm briefly, and add in one or two sentences
the *why* of the right answer (confirmation on its own teaches nothing). Then
the next question.

**After a wrong answer**:

1. Give the right answer with a teaching explanation, pointing at the exact
   spot in the code (`file:function`) so that the developer can go and look.
2. **Note the notion that was missed.** Later in the quiz (not right away —
   leave at least one question in between), ask a **reworded** question on
   the same notion: different angle, different wording, different options. A
   re-question is a fresh test of the notion, not the same question recycled
   — otherwise you are testing short-term memory, not understanding.
3. Re-questions add to the initial quota (a 5-question quiz with 2 mistakes
   can grow to 7). Mention it naturally ("we'll come back to this").

Tone to hold: supportive and factual. A mistake from the developer is useful
information (a fuzzy area detected), never a failure. No condescension, and
no excessive praise either.

## Step 5 — Final wrap-up

At the end of the quiz, in conversation (no file to produce):

1. **Score**: x/n on the first try, plus the result of the re-questions.
2. **Breakdown by area**:
   - *Solid* — the notions answered correctly the first time.
   - *To revisit* — the notions that were missed, even the ones recovered on
     a re-question, each with its code pointer (`file:function`) for targeted
     rereading.
3. **A suggested next step** when relevant: for example "reread the
   try/except block in `retry.py` and ask yourself what happens if X" — an
   active reading instruction beats "reread the file".

Do not turn the wrap-up into a bureaucratic report: a few sentences per area
are enough.

## What this skill does not do

- It does not criticize the code and does not propose refactorings — it is
  not a quality review. If you spot a genuine problem in the diff while
  preparing the questions, raise it *after* the quiz, separately.
- It never triggers on its own. Even at the end of an implementation, you
  may at most *mention* that the skill exists if the context lends itself to
  it, never start the quiz without being asked.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.