DeepTutor CLI
HKUDS/DeepTutor
Teaches the agent to set up and run DeepTutor from the command line: chat and capabilities, knowledge bases, partners, memory, sessions, notebooks and the server or Web app.
A skill your agent uses when user wants to be tested or quizzed on any topic.
$ npx skills add kirilxd/claude-tutor --skill quiz -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kirilxd/claude-tutor quiz --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/kirilxd/claude-tutor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/quiz .claude/skills/quiz && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "quiz" agent skill from https://github.com/kirilxd/claude-tutor/tree/main/skills/quiz into .claude/skills/quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quiz", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/kirilxd/claude-tutor/tree/main/skills/quizType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add kirilxd/claude-tutor --skill quiz -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kirilxd/claude-tutor quiz --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kirilxd/claude-tutor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/quiz .agents/skills/quiz && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "quiz" agent skill from https://github.com/kirilxd/claude-tutor/tree/main/skills/quiz into .agents/skills/quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quiz", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kirilxd/claude-tutor --skill quiz -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kirilxd/claude-tutor quiz --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kirilxd/claude-tutor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/quiz .cursor/skills/quiz && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "quiz" agent skill from https://github.com/kirilxd/claude-tutor/tree/main/skills/quiz into .cursor/skills/quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quiz", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/kirilxd/claude-tutor.git --path skills/quiz--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add kirilxd/claude-tutor --skill quiz -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kirilxd/claude-tutor quiz --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kirilxd/claude-tutor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/quiz .gemini/skills/quiz && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "quiz" agent skill from https://github.com/kirilxd/claude-tutor/tree/main/skills/quiz into .gemini/skills/quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quiz", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kirilxd/claude-tutor quizInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kirilxd/claude-tutor --skill quiz -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kirilxd/claude-tutor.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/quiz .github/skills/quiz && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "quiz" agent skill from https://github.com/kirilxd/claude-tutor/tree/main/skills/quiz into .github/skills/quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quiz", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kirilxd/claude-tutor --skill quiz -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kirilxd/claude-tutor quiz --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kirilxd/claude-tutor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/quiz .opencode/skills/quiz && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "quiz" agent skill from https://github.com/kirilxd/claude-tutor/tree/main/skills/quiz into .opencode/skills/quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quiz", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
quizA skill your agent uses when user wants to be tested or quizzed on any topic.
Quiz is an agent skill from kirilxd/claude-tutor. Use when user wants to be tested or quizzed on any topic. Triggers on "quiz me", "test me", "test my knowledge", "practice questions", "check my understanding", or when asking for a quiz on something they've been learning. Also use when user finishes a learning module and wants to check understanding. Works with or without a prior learning plan.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Education, covering Quizzes and assessments. It works with Kubernetes. The repository describes itself as: Turn Claude Code into your personal tutor — personalized learning plans, adaptive quizzes, SM-2 spaced repetition, and a web dashboard. Works with any topic. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ce19469. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Quiz loads about 2.7k tokens when it runs. Until then it costs about 88 tokens; SKILL.md has 1,254 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from kirilxd/claude-tutor at commit ce19469, republished under its MIT licence (© kirilxd). 1,254 words, ~2,719 tokens.
.claude/skills/quiz/SKILL.md (or your agent's skills folder).ALWAYS use the AskUserQuestion tool when asking the user questions, in any context. If you have too many questions for the tool, split them up into multiple calls.
Generate and deliver mixed-format quiz questions based on the user's learning plan. Ask one question at a time, give immediate feedback, track scores, and adapt difficulty based on prior performance.
Quiz progress is saved to ONE specific directory:
~/.claude/learning/progress/{topic-slug}.jsonCORRECT path for quiz progress: ~/.claude/learning/progress/dns.json
WRONG path for quiz progress: ~/.claude/learning/plans/dns-2026-03-29.json
CORRECT — saving any learning data: ~/.claude/learning/progress/dns.json
WRONG — saving to project directory: ./learning/progress/dns.json
Always use the ABSOLUTE path ~/.claude/learning/ — never a relative path like ./learning/.
Never write quiz data (quizzes, weakAreas, strongAreas, spacedRepetition, overallScore) to plan files.
Never add extra fields beyond those defined in Step 6's schema.
Verify the path contains /progress/ before writing.
If the user specified a topic (e.g., /quiz kubernetes):
~/.claude/learning/index.jsonIf no topic specified (just /quiz):
lastActivityIf no learning plans exist:
<topic> to create one first, or tell me a topic and I'll quiz you on general knowledge."Module targeting:
You MUST read ~/.claude/learning/progress/[topic-slug].json before generating questions. This file contains quiz history, weak/strong areas, and spaced repetition schedules. If you skip this step, the quiz won't adapt to the user's level.
Adaptive difficulty — mention your adjustments to the user:
weakAreas from prior quizzesspacedRepetition data exists, check for concepts where nextReview is today or in the past. These are overdue for review — tell the user "You have N concepts due for review" and include them in the quizGenerate a set of questions (default: 5, user can request more/fewer).
Mix of formats:
| Format | Use for | Proportion |
|---|---|---|
| Multiple choice (4 options, one correct) | Factual recall, terminology, definitions | ~40% |
| True/False | Common misconceptions, nuanced distinctions | ~20% |
| Short answer (1-3 sentences) | Conceptual understanding, explanations | ~25% |
| Fill-in-the-blank | Syntax, commands, formulas, key terms | ~15% |
Question quality rules:
Ask ONE question per message. Use multiple choice with clear options and descriptions for every question. Wait for the user's answer before proceeding to the next.
Question format examples:
Multiple choice — "Q1/5 (Multiple Choice) — Which Kubernetes object ensures a specified number of pod replicas are running?" with 4 options, each with a short description.
True/False — "Q2/5 (True or False) — In TCP, the receiver sends acknowledgments for every individual packet." with True/False options, each with a clarifying description.
Fill-in-the-blank — "Q3/5 (Fill in the Blank) — The kubectl command to view all running pods is: kubectl _____ pods -n <namespace>" with 4 options.
Short answer — "Q4/5 (Short Answer) — Explain the difference between a Pod and a Deployment. Pick the closest answer." with 2-3 options plus "Other (None of these match my understanding)".
After the user answers, give feedback:
If correct:
Correct! [1-2 sentence explanation reinforcing the concept]
If incorrect:
Not quite. The answer is [correct answer]. [2-3 sentence explanation helping the user understand]
For short answers, evaluate for key concepts, not exact wording. If partially correct, say what they got right and what's missing. Be encouraging but honest.
Then immediately ask the next question — no extra text between feedback and the next question.
After all questions, present a summary:
── Results: [Topic] ──────────────────────
Score: [correct]/[total] ([percentage]%)
[For each question:]
[✓/✗] Q[n]: [brief concept label]
[If there are wrong answers:]
Weak areas: [list concepts that need review]
Suggestion: [specific actionable advice]
──────────────────────────────────────────The progress file at ~/.claude/learning/progress/{topic-slug}.json is the single source of truth for quiz data. The web dashboard also reads and writes this file. Always read the existing file first, then append/update — never overwrite from scratch.
~/.claude/learning/progress/{topic-slug}.json/progress/ — NOT /plans/~/.claude/learning/progress/ if it doesn't existquizzes array (do not replace existing quizzes)weakAreas, strongAreas, and overallScore from ALL quizzes (not just the latest)spacedRepetition for each concept tested{
"topic": "topic-slug",
"quizzes": [
{
"date": "YYYY-MM-DD",
"module": null,
"score": 4,
"total": 5,
"difficulty": "beginner",
"questions": [
{
"format": "mcq",
"concept": "concept-label",
"correct": true
}
]
}
],
"weakAreas": ["concept-a", "concept-b"],
"strongAreas": ["concept-c", "concept-d"],
"overallScore": 80
}CRITICAL format rules — the web dashboard reads these files, so the format must be exact:
overallScore is a percentage (0-100), NOT a fraction. 80 not 0.8.weakAreas and strongAreas are arrays of strings (concept names), NOT objects."weakAreas": ["DNS resolution", "CNAME records"]"weakAreas": [{"concept": "DNS resolution", "moduleId": 1}]spacedRepetition keys must be concept names (matching the concept field in questions), NOT module IDs."spacedRepetition": {"DNS resolution": {...}}"spacedRepetition": {"1": {...}, "2": {...}}spacedRepetition values must have easeFactor (number), intervalDays (integer), nextReview (YYYY-MM-DD string), repetitions (integer). None can be null.Compute weak/strong areas (aggregate across ALL quizzes):
weakAreas (as plain strings)strongAreas (as plain strings)overallScore = round(total correct across all quizzes / total questions across all quizzes × 100)Update spaced repetition schedule:
For each concept tested in this quiz, update the spacedRepetition field in the progress file using the SM-2 algorithm:
For each concept:
repetitions was 0): intervalDays = 1repetitions was 1): intervalDays = 6intervalDays = round(previous interval × easeFactor)repetitions += 1intervalDays = 1, repetitions = 0easeFactor = max(1.3, easeFactor + 0.1 - (5 - quality) × (0.08 + (5 - quality) × 0.02))nextReview = today + intervalDays (format: YYYY-MM-DD)For new concepts (not yet in spacedRepetition), initialize with easeFactor: 2.5, intervalDays: 1, repetitions: 0, nextReview: today + 1 day.
Validation before writing: Every SR entry must have all 4 fields set to non-null values. If any field would be null, use the default: easeFactor: 2.5, intervalDays: 1, repetitions: 0, nextReview: tomorrow.
Updated progress JSON structure:
{
"topic": "topic-slug",
"quizzes": [...],
"weakAreas": [...],
"strongAreas": [...],
"overallScore": 80,
"spacedRepetition": {
"concept-label": {
"easeFactor": 2.5,
"intervalDays": 6,
"nextReview": "2026-03-26",
"repetitions": 2
}
}
}This is backwards-compatible — if spacedRepetition is missing, treat all concepts as unscheduled.
~/.claude/learning/index.json:topics[slug].quizzesTaken = total number of quizzes in the progress filetopics[slug].overallScore = the computed overallScore (percentage, 0-100)topics[slug].lastActivity = today's date (YYYY-MM-DD)If a user asks to be quizzed on a topic with no existing learning plan:
© kirilxd, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/quiz of kirilxd/claude-tutor.
Open the folder on GitHubat commit ce19469
Quiz next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Quiz this skillkirilxd/claude-tutor | 135 | — | ~2.7k | Automated safety check: Pass | MIT | |
| DeepTutor CLIHKUDS/DeepTutor | 41k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| AI Engineering Placement Quizrohitg00/ai-engineering-from-scratch | 66k | — | ~2k | Automated safety check: Pass | MIT | |
| Codebase to Coursezarazhangrui/codebase-to-course | 5.7k | — | ~4.4k | Automated safety check: Pass | None | |
| AI Engineering Phase Quizrohitg00/ai-engineering-from-scratch | 66k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Scholar EvaluationK-Dense-AI/claude-scientific-writer | 2.4k | 2 repos | ~2.9k | Automated safety check: Notes | MIT |
HKUDS/DeepTutor
Teaches the agent to set up and run DeepTutor from the command line: chat and capabilities, knowledge bases, partners, memory, sessions, notebooks and the server or Web app.
rohitg00/ai-engineering-from-scratch
Runs a 10-question quiz across five areas to place a learner in the AI Engineering from Scratch curriculum, so they skip what they already know.
zarazhangrui/codebase-to-course
Turns a codebase into an interactive single-page HTML course for non-technical learners, with scroll modules, animated diagrams, quizzes and plain-English code translations.
rohitg00/ai-engineering-from-scratch
Quizzes you on a completed phase of the AI Engineering from Scratch course, taking a phase number or name and mapping it to that phase's directory.
K-Dense-AI/claude-scientific-writer
Provide qualitative-first, evidence-traceable developmental review of scholarly works and audit low-stakes research-assessment rubrics with optional local quality controls.
guanyang/open-agent-hub
This skill should be used when building agent evaluation systems: deterministic checks, regression suites, multi-dimensional rubrics, quality gates, production monitoring, baseline comparison, and…
kirilxd/claude-tutor
A skill your agent uses when user wants to learn a topic or create a study plan.
kirilxd/claude-tutor
A skill your agent uses when user asks for learning resources, recommendations, or materials on any topic.
kirilxd/claude-tutor
A skill your agent uses when user asks about their learning progress or wants study guidance.
kirilxd/claude-tutor
Use only when user explicitly asks to "open dashboard", "show dashboard", "launch dashboard", or "learning UI".
Works with
Categories
A skill your agent uses when user wants to be tested or quizzed on any topic. Quiz is an agent skill from kirilxd/claude-tutor. Use when user wants to be tested or quizzed on any topic.
Quiz fits situations like: user wants to be tested; quizzed on any topic; test my knowledge; practice questions.
Run `npx skills add kirilxd/claude-tutor --skill quiz -a claude-code`. Or copy the skill folder (skills/quiz in kirilxd/claude-tutor) into .claude/skills/quiz in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kirilxd/claude-tutor --skill quiz -a codex`. Or copy the skill folder (skills/quiz in kirilxd/claude-tutor) into .agents/skills/quiz in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kirilxd/claude-tutor --skill quiz -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/quiz, .gemini/skills/quiz, .github/skills/quiz and .opencode/skills/quiz in your project.
SKILL.md names no scripts, command-line tools or credentials: Quiz is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Quiz is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Quiz: DeepTutor CLI (HKUDS/DeepTutor, 41k stars), AI Engineering Placement Quiz (rohitg00/ai-engineering-from-scratch, 66k stars), Codebase to Course (zarazhangrui/codebase-to-course, 5.7k stars) and AI Engineering Phase Quiz (rohitg00/ai-engineering-from-scratch, 66k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kirilxd (a GitHub user) maintains it in kirilxd/claude-tutor, which has 135 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on July 20, 2026.
Source: kirilxd/claude-tutor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.