agentsclimarketplace

Pop quiz

Skill marnickvda/pop-quiz/skills/pop-quiz

Use when the user wants to be quizzed or tested on work that was just built for them. Triggers include "quiz me", "test my understanding", "do I actually get this", "pop quiz on what you built", "test me on this branch". Not for explaining or re-teaching the work — only when they want to be tested on it.From its SKILL.md

Install
npx -y skills add marnickvda/pop-quiz --skill pop-quiz

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 5 commands, including `git merge-base HEAD main` and 4 more.

SKILL.md

8.5 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it

Pop Quiz

Overview

After an agent builds something, this skill flips the roles: the agent springs an oral exam on the user about the work — the concepts, the terms, and above all the design tradeoffs behind each decision. The user asked for it, so the surprise isn't that there's an exam — it's which decisions get probed, and how deep the "why" goes.

Core principle: You don't understand a decision until you can explain why the rejected alternatives are worse. Target the why, not the what; grade the answer, never the person. The goal is sharper calls next time, not a humbling.

When to use

When the user asks to be quizzed/tested on work just built — not when they want it explained (that's a walkthrough). For trivial/mechanical work (renames, formatting, version bumps) there's little to learn: don't pad a typo into a fake exam — say so, and offer to quiz the one judgment call, the surrounding code, or skip it.

Non-negotiables

Every run must (1) make the user reason about at least one rejected alternative, and (2) grade honestly — at least one "partial/missed" when an answer earns it. Can't name a single alternative you rejected for this work? You're quizzing on too little: widen scope before asking — never fall back to pure recall.

Workflow

1. Gather the material — silently, before you ask

Honor an explicit focus first. If the user named a topic or file, that is the scope — even if other areas are richer. If it wasn't touched this session, say so and ask whether to quiz it from the code as-is or from the actual changes.

Otherwise gather richest-first:

  • A — This session (if you built it). You remember what you rejected and why; the diff only shows surviving code. Recall each decision, the options compared, the tradeoffs and risks you flagged. Fresh session or someone else's branch? No such memory — say so, skip A, build from B/C. Never fabricate "alternatives we rejected" you have no record of.
  • B — Git, for scope and exact facts (memory for the why; code for the what). Find the base defensively: git merge-base HEAD main, else master, else git symbolic-ref refs/remotes/origin/HEAD; then git diff <base>..HEAD and git log <base>..HEAD --oneline. No base? Use uncommitted work (git diff HEAD, --staged). No repo? Rely on the conversation.
  • C — Rationale written down: why-comments, ADRs, design docs, linked PRs/issues.

Stop at 5–8 decisions with a known why — don't read the whole branch. Spanning unrelated changes? Drop the mechanical ones and tell the user what you picked and skipped. Conversation and git both empty? Don't invent a quiz — say there's nothing to test and ask them to point you at it.

Warm-up from last time: if a lessons file (step 6) holds unresolved items more than a few days old, open with one as a spaced re-test.

2. Build the answer key — then announce

Draft (silently) one line per decision:

concept/term · the choice made · the alternatives rejected · the deciding tradeoff · what breaks if it's wrong

That line is your grading key and it writes the question. Aim for 5–8 (never fewer than 5), ordered easy → hard — a default order, not a script (step 3 adapts it). If building the key surfaces a likely bug in your own implementation, flag it before starting.

Announce the exam in one line — topics, not questions — and start. Short on time? Pick the highest-value tradeoff questions and skip the warm-ups.

Example: "📝 Pop quiz on the rate limiter — algorithm, storage, and behavior under failure. Pens down, paper out — question 1…"

3. Run the quiz — one question at a time, adapt live

  • Ask ONE question, then wait. Never reveal the answer in the question; no giveaway multiple-choice. Match the user's language.
  • Mix the types: mostly "why X over Y", plus at least one transfer ("same design, but now <new constraint> — what gives?") and one prediction ("predict where this breaks under <stress>"). Recall only warms up.
  • Read confidence before grading: "how sure — low / medium / high?"
  • Adapt difficulty (aim ~70% right):
    • Two weak answers running → step down: scaffold ("forget the tradeoff — what does this do on each request?"), rebuild a win, resume.
    • Two sharp answers running → skip the warm-ups; jump to the hardest tradeoff or a transfer.
  • Stuck or done? "I don't know" / "just tell me" → answer plainly, mark it unanswered, move on. "Stop" → go straight to the scorecard. A repeated wipeout → switch from exam to guided walk-through: explain, then ask.

4. Grade each answer — honest, never about the person

  • Verdict — correct / partial / missed. Don't soften a wrong answer into "sort of right" — but grade the answer ("that's not it"), never the learner ("you don't get this"). A miss is a useful find, not a failing.
  • Make them generate first. If the answer's incomplete, don't hand over the rest — nudge them to reach ("you've got the what; take a shot at the why — what would the alternative have cost?"). A reveal they struggled toward sticks; one they read doesn't.
  • Then reveal the why — the rejected alternatives and the deciding tradeoff. Sure and wrong? Say so plainly ("you were confident — and it's the other way round; that's the one to burn in"). Unsure and right? Tell them they know it better than they think.
  • The key is a draft, not gospel. Credit a different-but-sound answer. If they dispute a grade, re-check the actual code instead of defending the key — and own it if you were wrong.

5. Scorecard — lead with the plan, not the grade

Close in this order:

  • Decisions to remember — 1–3 tradeoffs to carry into future calls.
  • Gaps to revisit — what to study next.
  • Strengths — what's solid.

A score is optional and goes last — a snapshot ("solid on the what, shakier on failure modes"), never a grade on them. Always give the scorecard for whatever was actually answered, even a 2-question run.

6. Offer to save the lessons — ask first

Don't write anything silently. Ask: "Want me to save these takeaways so they stick?" Only on yes, append a dated, re-testable entry to an existing notes file (or LEARNINGS.md, or the working dir if there's no repo):

- [ ] 2026-06-18 · rate limiter · Q: "Why token bucket over a sliding-window-log?" · A: the log stores a timestamp per request — memory grows with traffic

Storing the question (not just the note) lets a later quiz re-test it (step 1). On no, save nothing.

Question Design

TypeWeak (avoid)Strong (use)
Recall"What's a token bucket?"Warm-up only
Closed"Did we use Redis?" (yes/no leaks it)"Why store bucket state in Redis over in-process — and when would in-process win?"
Tradeoff"We picked token bucket over a sliding-window-log. What does the log buy you, and why wasn't it worth it?"
Transfer"Same limiter, now per-tenant with 10k mostly-idle tenants. Does Redis-per-bucket still hold? What gives first?"
Prediction"Predict what happens under a retry storm — where does it bend, where does it break?"
Failure mode"If Redis goes down, what happens — and was that an acceptable tradeoff?"

Red Flags — STOP if you catch yourself

  • Listing several questions at once → ask one, then wait.
  • Leaking the answer (yes/no, handing over options), or revealing the why before they've attempted it → make them reach first.
  • Building the quiz off the diff alone, or falling back to recall because "no alternatives came up" → mine the conversation; widen scope until you have a real tradeoff.
  • Softening a wrong answer to be nice → honest verdict, warm frame.
  • Grading the person instead of the answer, or stacking blunt "missed it"s → a miss is a find; keep it safe.
  • Defending your answer key against a sound answer or a caught bug → the key is a draft; re-check and own it.
  • Force-marching a stuck or out-of-time user → offer a hint, the answer, or the scorecard.
  • Saving a lessons file unprompted, or quizzing in the wrong language → offer first; match the conversation.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 1 of the 12 instructions most study practice skills give in ~2.1k tokens

Counted across 85 of the 97 authors here whose files we hold, read 2026-09-06

  • Ask one question at a timehere, and in 17 of 85
  • Give immediate feedback after each answerin 7 of 85
  • Write five to eight quiz questionsin 6 of 85
  • Ask one question per messagein 4 of 85
  • Wait for each answer before continuingin 4 of 85
  • Wait for the user's answer before feedbackin 4 of 85
  • Present multiple-choice via AskUserQuestion with exactly four optionsin 4 of 85
  • Treat pass as merge-readyin 2 of 85
  • Present one word at a timein 2 of 85
  • Verify a story project exists before startingin 2 of 85, across 1 file
  • Clarify the revision pass type firstin 2 of 85, across 1 file
  • Read chapter and continuity context before editingin 2 of 85, across 1 file

Said here and by no other author read

  • Make them reason about a rejected alternative
  • Give an honest partial or missed when earned
  • Grade the answer, never the person
  • Target the why, not the what
  • Gather material silently before asking
  • Draft a silent answer key first

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.