Use when the user wants to be quizzed, tested, or asked questions on any topic — programming concepts, protocols, algorithms, tools, or any subject they are studying
Scanned 9/12/2026
Install to Claude Code
npx -y skills add yarikleto/claude-teacher-plugin --skill quiz-me --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Quiz Me?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/yarikleto-quiz-me)More formats (shields.io, HTML) on the badges page.
---
name: quiz-me
description: Use when the user wants to be quizzed, tested, or asked questions on any topic — programming concepts, protocols, algorithms, tools, or any subject they are studying
argument-hint: "[topic]"
---
Requested topic/task: $ARGUMENTS
Before accessing education data, read `${CLAUDE_PLUGIN_ROOT}/references/education-data.md`. Resolve every `<education-db>` below using that contract. Current session ID: `${CLAUDE_SESSION_ID}`.
# Quiz Me
Interactive quiz that tests understanding through a mix of multiple-choice and open-ended questions. All results are saved to the global education DB.
## How to Use
Invoke with `/claude-teacher:quiz-me [topic]` or just `/claude-teacher:quiz-me` and specify the topic when asked.
Examples: `/claude-teacher:quiz-me TCP sockets`, `/claude-teacher:quiz-me git`, `/claude-teacher:quiz-me sorting algorithms`
## Quiz Flow
### Setup
1. Read `<education-db>/dashboard.json` — check topic statuses
2. Read `<education-db>/student.json` — adapt to learning style
3. If a topic was given, read `<education-db>/topics/<topic>.json` if it exists — check for unresolved misconceptions and previous scores
4. If no topic given, pick from: first any topics with `next_review <= today`, then `weak` topics, then `learned` topics
5. Also check project-local `memory/knowledge_gaps.md` for covered topics
### Question Loop
```
Determine topic → Check for unresolved misconceptions → Ask question → Wait for answer → Evaluate → (30% chance: ask "explain your thinking") → Record result → More questions? → Score summary → Save to DB
```
## Rules
1. **One question per message.** Never batch questions.
2. **Mix formats:** Alternate between multiple-choice (4 options via `AskUserQuestion` — arrow key selection) and open-ended (plain text). Use multiple-choice for factual recall, open-ended for conceptual understanding.
3. **Grade fairly:** For open-ended answers, accept correct reasoning even if wording is imprecise. If partially correct, say what was right and what was missing.
4. **Explain after every answer:** Whether right or wrong, give a brief explanation of WHY the correct answer is correct. This is the learning moment. **Use WebSearch to verify your explanation** — never hallucinate facts in quiz explanations. Include a source link when citing specific facts.
5. **Adapt difficulty:** Start medium. If the user gets 2+ right in a row, increase difficulty. If they get 2+ wrong, ease up and cover fundamentals.
6. **Only quiz on covered material:** NEVER ask about topics that haven't been taught yet. Check `dashboard.json` — only topics with status `weak`, `learned`, or `solid` are fair game. If a topic has no entry or hasn't been explained, it's off limits. If no quizzable topics exist: "Nothing to quiz on yet — let's learn something first!"
7. **Prioritize misconceptions:** If the topic file has unresolved misconceptions, craft questions that specifically test those misunderstandings FIRST.
8. **"Explain your thinking" check:** ~30% of correct answers, ask the student to explain WHY their answer is right. If their reasoning is wrong despite the correct answer, record it as a misconception.
9. **Track score:** Keep a running tally (e.g., "3/5 correct"). Show final summary when the quiz ends.
10. **Let the user control pace:** The quiz ends when the user says stop, or after 10 questions if no limit was specified. Ask "Continue?" after every 5 questions.
11. **Use context:** If inside a project directory, read relevant files to generate questions about the actual codebase — not just generic textbook questions.
12. **No trick questions.** Every question should teach something useful.
## Question Format
**Multiple choice — use `AskUserQuestion` tool:**
For every multiple-choice question, use the `AskUserQuestion` tool so the student can select answers with arrow keys. If the tool is unavailable, ask the same question with plain-text options and wait for an answer.
```
AskUserQuestion({
questions: [{
question: "Q3 (medium): What system call creates a new socket in C?",
header: "Q3",
multiSelect: false,
options: [
{ label: "a) connect()", description: "Choice A" },
{ label: "b) socket()", description: "Choice B" },
{ label: "c) bind()", description: "Choice C" },
{ label: "d) listen()", description: "Choice D" }
]
}]
})
```
The student selects with arrow keys and Enter — no typing needed. Option descriptions must be neutral; explain the choices after the student answers.
**Rules for AskUserQuestion quiz options:**
- Always provide exactly 4 options for multiple choice
- Randomize correct answer position (don't always put it in slot b)
- Use neutral descriptions that do not reveal correctness or repeat the question definition. Explain alternatives only after grading
- The `header` field should be the question number (e.g., "Q1", "Q2")
- If the student selects "Other" (custom input), treat it as an open-ended answer
**Open-ended — use plain text:**
```
Q4 (medium): In your own words, explain why FTP uses two separate TCP connections instead of one.
```
Open-ended questions are printed as plain text — the student types their answer freely.
## After Each Answer
```
Correct! [or] Not quite.
[Brief explanation of the correct answer and why it matters]
Score: 3/4
```
If the student got it wrong, record the misconception immediately in the topic file.
## Score Summary & DB Update
At the end of the quiz:
**1. Show summary:**
```
── Quiz Complete ──────────────────
Topic: [topic]
Score: 7/10 (70%)
Depth: [surface → working] (promoted!)
Strong areas: [what they got right]
Review these: [concepts they struggled with]
Misconceptions found: [list any new ones]
Next review: [calculated date]
───────────────────────────────────
```
**2. Save quiz record** to `<education-db>/quizzes/[date]_[topic-slug]_[quiz-id].json`:
```json
{
"quiz_id": "[stable UUID for this attempt]",
"session_id": "${CLAUDE_SESSION_ID}",
"completed": true,
"date": "[today]",
"topic": "[topic-slug]",
"questions": [
{
"question": "...",
"type": "multiple_choice|open_ended",
"student_answer": "...",
"correct_answer": "...",
"correct": true,
"reasoning_check": false,
"reasoning_was_sound": null
}
],
"score": 70,
"status_before": "learned",
"status_after": "learned",
"depth_before": "surface",
"depth_after": "working",
"notes": "..."
}
```
If stopped early, save the attempt as `completed: false` and report answered questions without changing mastery or the review interval. Avoid dividing by zero if no questions were answered.
**3. Update topic file** `<education-db>/topics/[topic-slug].json`:
- Update `quiz_scores` array, `last_reviewed`, `status`, `depth`
- Add any new misconceptions
- Recalculate `next_review` using spaced repetition:
- Score >=80%: double `review_interval_days`, set `next_review` accordingly
- Score <50%: reset interval to 1 day, demote to `weak`
- Score 50-79%: keep current interval
**4. Update dashboard** `<education-db>/dashboard.json`:
- Update topic entry, recalculate `stats`, `total_quizzes`, `average_score`
**5. Update project-local** `memory/knowledge_gaps.md` if it exists.
**6. Append to session log** `<education-db>/sessions/[date].jsonl`:
```jsonl
{"time": "[now]", "event": "quiz", "topic": "[slug]", "score": 70, "passed": false, "misconceptions_found": 1}
```
## Priority Order for Questions
1. **Unresolved misconceptions** on the topic (highest priority — targeted questions)
2. Topics marked **Weak** in dashboard (need remediation)
3. Topics marked **Learned** with `next_review <= today` (due for spaced repetition)
4. Topics marked **Learned** that haven't been verified at `working` depth
5. Topics marked **Solid** — for reinforcement and deeper questions
## Integration with Other Skills
- **`/claude-teacher:ascii [concept]`** — if a question involves a visual concept and the student got it wrong, offer to illustrate it.
- **`/claude-teacher:challenge [topic]`** — for hands-on practice after quiz identifies weak areas.
- **`/claude-teacher:progress`** — student can check their overall dashboard.
- **`/claude-teacher:save-progress`** — quiz results are auto-saved, but student can explicitly save mid-session.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!