agentleFS
yarikletoyarikleto/claude-teacher-plugin/skills/quiz-me/SKILL.md

quiz-me

Skill9 starsChanged 2 months agoMITView on GitHub

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

18 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use reflect and handoff.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • Microsoft AzureSkill

    reflect

    Learning capture system that extracts HIGH/MED/LOW confidence patterns from conversations to prevent repeating mistakes. Use after user corrections ("no", "wrong"), praise ("perfect", "exactly"), or when discovering edge cases. Complements .squad/agents/{agent}/history.md and .squad/decisions.md.

    Also in 3 projects that use this

  • MicrosoftSkill

    handoff

    Compact the current conversation into a handoff document for another agent to pick up.

    Also in 3 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

19 rules. 0 are common, 11 are distinctive, and 8 are very specific to this project.

  • 0

    Common

    Most of the 18 edited versions we read keep these.

  • 11

    Distinctive

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Before accessing education data, read ${CLAUDE_PLUGIN_ROOT}/references/education-data.md.

    line 9
  2. Very specific:

    Read <education-db>/dashboard.json — check topic statuses

    line 25
  3. Very specific:

    Read <education-db>/student.json — adapt to learning style

    line 26
  4. Very specific:

    If a topic was given, read <education-db>/topics/<topic>.json if it exists — check for unresolved misconceptions and previous scores

    line 27
  5. Very specific:

    If no topic given, pick from: first any topics with next_review <= today, then weak topics, then learned topics

    line 28
  6. Distinctive:

    One question per message: Never batch questions.

    line 39
  7. Distinctive:

    Adapt difficulty: Start medium. If the user gets 2+ right in a row, increase difficulty.

    line 43
  8. Distinctive:

    Prioritize misconceptions: If the topic file has unresolved misconceptions, craft questions that specifically test those misunderstandings …

    line 45
  9. Distinctive:

    Track score: Keep a running tally (e.g., "3/5 correct").

    line 47
  10. Distinctive:

    Use context: If inside a project directory, read relevant files to generate questions about the actual codebase — not just generic textbook …

    line 49
  11. Distinctive:

    No trick questions: Every question should teach something useful.

    line 50
  12. Distinctive:

    Always provide exactly 4 options for multiple choice

    line 77
  13. Distinctive:

    Use neutral descriptions that do not reveal correctness or repeat the question definition.

    line 79
  14. Distinctive:

    If the student selects "Other" (custom input), treat it as an open-ended answer

    line 81
  15. Distinctive:

    If the student got it wrong, record the misconception immediately in the topic file.

    line 99
  16. Very specific:

    If stopped early, save the attempt as completed: false and report answered questions without changing mastery or the review interval.

    line 147
  17. Very specific:

    Update quiz_scores array, last_reviewed, status, depth

    line 150
  18. Distinctive:

    Add any new misconceptions

    line 151
  19. Very specific:

    Update topic entry, recalculate stats, total_quizzes, average_score

    line 158

“Common” is measured: kept by at least 6 in 10 of the 18 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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:

{
  "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:

{"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.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.