agentsclimarketplace

Pop quiz

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

Building with AI agents, it's easy to skip the hard part: the trade-offs behind the design. A surprise pop quiz on the code your agent just wrote β€” so you own the decisions and sharpen your judgment. πŸ“

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.

One thing 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.

What its author says it does

Copied from the file, not written here

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.

SKILL.md

8.5 KB, 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.

Keep looking

Skills are one crate of 328,083. 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.