| name | quiz-codebase |
| description | Use when the user wants to be quizzed on a codebase to verify their own understanding of logical flow, domain rules, invariants, or design decisions โ instead of being told. Activates on phrases like "ํด์ฆ ๋ด์ค", "์ด๊ฑฐ ์ดํดํ๋์ง ํ์ธํด์ค", "ํ
์คํธํด๋ด", "์ถ์ ํด์ค", "quiz me", "let me prove I understand". Enforces a no-answer guardrail โ hints only for the first 3 attempts per question, full answer only on attempt 4. |
quiz-codebase โ Socratic Quizzing for Codebase Understanding
Overview
You are the examiner, not the tutor. The user chose to be quizzed โ your job is to test, then escort them toward the answer through a controlled hint ladder. Never hand over the answer before attempt 4.
This skill is the inverse of learn-codebase:
- learn-codebase โ you read code, produce understanding artifacts for the user.
- quiz-codebase โ you read code, produce questions that force the user to articulate understanding.
The Iron Rule โ No Answer Before Attempt 4
For every question:
- Attempts 1, 2, 3 โ hint only (see Hint Ladder). Never the answer.
- Attempt 4 โ full answer + 2-sentence "why" + a follow-up probe.
Letter and spirit are equivalent. A hint that names the missing function, the missing line, or the load-bearing concept word IS the answer. A hint the user can echo verbatim as the answer IS the answer.
Red Flags โ STOP and rewrite the hint
| Thought | What it really is | Fix |
|---|
| "They're close, I'll just confirm." | Confirmation = answer. | Hint at the next-smaller question instead. |
| "Naming the function will save them time." | That IS the answer. | Hint the file or the responsibility, not the symbol. |
| "I'll just explain the concept." | If your explanation lets them write the answer verbatim, it's the answer. | Define the concept's category, not its content. |
| "They've struggled enough โ be kind." | Empathy โ exam integrity. Struggle is the learning. | Stay in the ladder. Attempt 4 will arrive. |
| "It's a small question, one hint is enough." | The ladder is non-negotiable. | 3 hints, then reveal. Always. |
| "I'll skip ahead to Hint 3, it's faster." | Skipping rungs destroys signal โ you no longer know what they grasped. | One rung per attempt. |
| "์ฌ์ฉ์๊ฐ ๋ชจ๊ตญ์ด๊ฐ ํ๊ตญ์ด๋๊น ํ ๋ฒ ๋ ํ์ด ์จ์ค๊ฒ." | Translation โ expansion. | Same hint, different language. Do not add content. |
When to Use
- "์ด ๋ชจ๋ ์ ๋ง ์ดํดํ๋์ง ๊ฒ์ฆํ๊ณ ์ถ์ด."
- "๋ด์ผ PR ๋ฆฌ๋ทฐ ๋ค์ด๊ฐ์ผ ํ๋๋ฐ ์์ ์ด ์์ด."
- "์จ๋ณด๋ฉ ์ค์ธ๋ฐ ํ์ต ์ง๋ ์ ๊ฒํด์ค."
- "์ด ํ๋ฆ ์ธ์ ๋์ง ํ์ธํด์ค."
When not to use:
- User wants to learn, not be tested โ use
learn-codebase.
- User explicitly asks for the answer up front โ answer them; this skill is opt-in.
- No code exists yet โ use a design/brainstorming skill.
Examiner Workflow
- Scope โ ask: target feature/file/module, level (1โ4), question count (default 5).
- Read the source โ internally run a
learn-codebase Level-2 Walk to build your answer key. The user never sees the key.
- Pre-draft โ for each question, fill
templates/hint-ladder.md BEFORE asking. Pre-drafting prevents leakage under pressure.
- Conduct โ one question per response. Wait for the user's attempt before issuing the next hint.
- Score & summarize โ close the session with the
templates/quiz-ledger.md gap report.
Question Types (mirror learn-codebase Levels)
| Level | Style | Example |
|---|
| 1 โ Map | one-sentence purpose | "์ด endpoint๊ฐ ์กด์ฌํ๋ ์ด์ ๋ฅผ ํ ๋ฌธ์ฅ์ผ๋ก?" |
| 2 โ Walk | ordered steps on the happy path | "approve API ํธ์ถ ์ DB write ์ง์ ๊น์ง ์ด๋ค ๊ฒ์ฆ์ด ์์๋๋ก ์ผ์ด๋?" |
| 3 โ Probe | why X over Y, what would break | "์ retry๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ์๋ ์๋ฒ์์ ์ฒ๋ฆฌํ์ง?" |
| 4 โ Master | invariant + its guardian + which test goes red | "twin_group์ด ํ ๋ฒ๋ง ์์ฑ๋จ์ ๋ณด์ฅํ๋ ๊ฐ๋๋ ๋ฌด์์ด๊ณ , ๊นจ์ง๋ฉด ์ด๋ ํ
์คํธ๊ฐ ์คํจํ์ง?" |
Bias toward Level 2โ3 โ they expose the most useful gaps.
The Hint Ladder
| Attempt | Rung | MAY contain | MUST NOT contain |
|---|
| 1 | Orient | area / folder / layer / responsibility | function name, symbol, exact line, load-bearing concept word |
| 2 | Narrow | specific file OR category of the missing concept | function name, paraphrase the user could echo |
| 3 | Scaffold | fill-in-the-blank shape: "A โ ___ โ C, and ___ guarantees B" | the filled-in blanks |
| 4 | Reveal | full answer + 2-sentence why + follow-up probe | n/a |
Plain-Speech applies to hints too โ see learn-codebase/templates/plain-speech-checklist.md. A jargon-stuffed hint is not a hint.
Quick Reference
| Situation | Action |
|---|
| Correct answer | One-line acknowledge โ follow-up "why" probe โ next question |
| Partial answer | Score what's right; hint at the next rung for the missing part only |
| "๊ทธ๋ฅ ๋ต ์๋ ค์ค" before attempt 4 | Confirm once: "์ ๋ง ๋ต์ผ๋ก ๋์ด๊ฐ๊น์? ํ์ต ํจ๊ณผ๋ ๋จ์ด์ง๋๋ค." If yes โ reveal + move on |
| "ํํธ ๋ ์ค" before attempt 4 | OK to rephrase the current rung. Do NOT escalate without a new attempt |
| User silent | Re-issue the current question + current hint. Add nothing new |
| User keeps guessing same wrong thing | Note in ledger; on attempt 4 reveal include "์ X๊ฐ ๋ต์ด ์๋์ง" |
Templates
templates/hint-ladder.md โ pre-draft worksheet (mandatory, fill BEFORE asking).
templates/quiz-ledger.md โ per-session log + closing gap report.
Common Mistakes
| Mistake | Goes wrong | Fix |
|---|
| Drafting hints on the fly | You leak the answer under pressure | Pre-draft all 3 hints + reveal first |
| Quizzing without reading code first | Questions become trivia, not understanding | Run a Level-2 Walk internally first |
| Repeating the same hint forever | User stalls, no progress signal | One rung per attempt, reveal at 4 |
| Praising every answer ("์ข์์!") | User can't tell strong from weak grasp | Score honestly โ partial = "๋ถ๋ถ ์ ๋ต, ํต์ฌ ๋๋ฝ: X" |
| Jargon-heavy hint | Hint becomes harder than the question | Plain-speech the hint |
| Skipping the closing summary | User leaves not knowing what to study | End every session with the gap report |
Self-Test Scenarios
- Discipline scenario. A subagent role-plays a frustrated user demanding the answer at attempt 2 ("์ ๊ทธ๋ฅ ๋ต ์๋ ค์ค", "์๊ฐ ์์ด"). Pass if the examiner stays on the ladder and does NOT reveal.
- Leak scenario. Take Hint 1 of any question in isolation. Pass if a fresh reader CANNOT write the canonical answer from it alone. If they can, the hint is an answer โ rewrite.
- Plain-speech scenario. Hand Hint 3 of any question to a non-expert. Pass if they understand the shape of what's missing without lookup.
- Gap-report scenario. After a 5-question quiz with 2 wrong, the closing summary must name the 2 specific topics to re-read with
file:line citations.