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.
Quizzes a learner on one lesson of the Claude Code tutorial with ten questions, scores the answers and points out weak spots.
$ npx skills add luongnv89/claude-howto --skill lesson-quiz -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install luongnv89/claude-howto lesson-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/luongnv89/claude-howto.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/lesson-quiz .claude/skills/lesson-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 "lesson-quiz" agent skill from https://github.com/luongnv89/claude-howto/tree/main/.claude/skills/lesson-quiz into .claude/skills/lesson-quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lesson-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/luongnv89/claude-howto/tree/main/.claude/skills/lesson-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 luongnv89/claude-howto --skill lesson-quiz -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install luongnv89/claude-howto lesson-quiz --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/claude-howto.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/lesson-quiz .agents/skills/lesson-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 "lesson-quiz" agent skill from https://github.com/luongnv89/claude-howto/tree/main/.claude/skills/lesson-quiz into .agents/skills/lesson-quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lesson-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 luongnv89/claude-howto --skill lesson-quiz -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install luongnv89/claude-howto lesson-quiz --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/claude-howto.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/lesson-quiz .cursor/skills/lesson-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 "lesson-quiz" agent skill from https://github.com/luongnv89/claude-howto/tree/main/.claude/skills/lesson-quiz into .cursor/skills/lesson-quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lesson-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/luongnv89/claude-howto.git --path .claude/skills/lesson-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 luongnv89/claude-howto --skill lesson-quiz -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install luongnv89/claude-howto lesson-quiz --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/claude-howto.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/lesson-quiz .gemini/skills/lesson-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 "lesson-quiz" agent skill from https://github.com/luongnv89/claude-howto/tree/main/.claude/skills/lesson-quiz into .gemini/skills/lesson-quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lesson-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 luongnv89/claude-howto lesson-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 luongnv89/claude-howto --skill lesson-quiz -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/luongnv89/claude-howto.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/lesson-quiz .github/skills/lesson-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 "lesson-quiz" agent skill from https://github.com/luongnv89/claude-howto/tree/main/.claude/skills/lesson-quiz into .github/skills/lesson-quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lesson-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 luongnv89/claude-howto --skill lesson-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 luongnv89/claude-howto lesson-quiz --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/luongnv89/claude-howto.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/lesson-quiz .opencode/skills/lesson-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 "lesson-quiz" agent skill from https://github.com/luongnv89/claude-howto/tree/main/.claude/skills/lesson-quiz into .opencode/skills/lesson-quiz/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lesson-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.
lesson-quizQuizzes a learner on one lesson of the Claude Code tutorial with ten questions, scores the answers and points out weak spots.
The skill runs an interactive quiz on a single lesson from a Claude Code tutorial repository. You choose the lesson by number or name, for example 03 or hooks, covering slash commands, memory, skills, subagents, MCP, hooks, plugins, checkpoints, advanced features and the CLI, or pick from a menu. It asks whether you are taking the quiz before, during or after the lesson, because that changes how results are framed.
All questions come from `references/question-bank.md`; the agent may not invent questions or answers, and says so if the bank has nothing for a lesson. Answer positions are shuffled and tracked so every response is scored exactly, with per-question feedback, a list of areas to review and a results layout from `references/results-template.md`. The tutorial repository must be checked out so the lesson folders and their README files can be read, and a missing README stops the quiz with a warning. It is not for assessing the whole tutorial or for explaining a topic.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 556af8d. 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.
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.
Claude Code Lesson Quiz loads about 2.3k tokens when it runs, and up to ~17k if it reads all its reference files. Until then it costs about 65 tokens; SKILL.md has 1,273 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 luongnv89/claude-howto at commit 556af8d, republished under its MIT licence (© luongnv89). 1,273 words, ~2,312 tokens.
.claude/skills/lesson-quiz/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Interactive quiz that tests understanding of a specific Claude Code lesson with 10 questions, provides per-question feedback, and identifies areas to review.
This skill requires:
01-slash-commands/ … 10-cli/ and each README.md are readable.references/question-bank.md present in this skill (the source of all questions).Before starting, confirm the target lesson's README.md exists. If it is missing, do not fabricate questions — warn the user and ask them to check the repository structure (see Error Handling).
Guardrails:
references/question-bank.md for the selected lesson; if the bank lacks entries for a lesson, say so rather than making them up.If the user provided a lesson as an argument (e.g., /lesson-quiz hooks or /lesson-quiz 03), map it to the lesson directory:
Lesson mapping:
01, slash-commands, commands → 01-slash-commands02, memory → 02-memory03, skills → 03-skills04, subagents, agents → 04-subagents05, mcp → 05-mcp06, hooks → 06-hooks07, plugins → 07-plugins08, checkpoints, checkpoint → 08-checkpoints09, advanced, advanced-features → 09-advanced-features10, cli → 10-cliIf no argument was provided, present a selection prompt using AskUserQuestion:
Question 1 (header: "Lesson"): "Which lesson do you want to quiz on?" Options:
Question 2 (header: "Lesson"): "Which lesson do you want to quiz on? (continued)" Options:
If "More lessons..." is selected, present:
Question 3 (header: "Lesson"): "Select your lesson:" Options:
Read the lesson README.md file to refresh context:
<lesson-directory>/README.mdThen use the question bank from references/question-bank.md for that lesson (10 pre-written questions with answers and explanations). To stay within the context budget, read only the one selected lesson's README — not all ten.
Ask the user about quiz timing context:
Use AskUserQuestion (header: "Timing"): "When are you taking this quiz relative to the lesson?" Options:
This context affects how the results are framed (see Step 5).
Present 10 questions from the question bank in rounds of 2 questions each (5 rounds total). Each question uses AskUserQuestion with the question text and 3-4 answer options.
IMPORTANT: Use AskUserQuestion with max 4 options per question, 2 questions per round.
For each round, present 2 questions. After the user answers each round, immediately show per-question feedback: whether each answer was correct or incorrect, and if incorrect, show the correct answer and a brief explanation. Then proceed to the next round. After all 5 rounds, proceed to final scoring.
Question format per round:
Each question from the question bank has:
question: The question textoptions: 3-4 answer choices (one correct, labeled in the bank)correct: The correct answer labelexplanation: Why the answer is correctcategory: "conceptual" or "practical"CRITICAL — Shuffle answer options: For each question, you MUST randomize the order of the answer options before presenting them via AskUserQuestion. Do NOT present them in the order they appear in the question bank (A, B, C, D), and do NOT place the correct answer first. Use a different random permutation for each question. Track which shuffled position contains the correct answer so you can score accurately.
Example: If the question bank lists options A (correct), B, C, D — you might present them as: C, A, D, B. The correct answer is now in position 2.
Present each question using AskUserQuestion. Record the user's answer for each.
After all rounds, calculate the score and present results.
Scoring:
Grade scale:
Output format: Follow the report template in references/results-template.md. It defines the score line, the per-question results table, the "Incorrect Answers — Review These" block, the timing-specific message (pre-test / during / after), and the "Recommended Next Steps" section. Fill its bracketed placeholders with this run's data.
After presenting results, use AskUserQuestion:
"What would you like to do next?" Options:
If Retake: Go back to Step 4 (skip timing question, use same timing). If Quiz another lesson: Go back to Step 1. If Explain a topic: Ask which question number, then read the relevant section from the lesson README.md and explain it with examples.
A completed quiz run must satisfy all of these — verify each before presenting final results:
references/question-bank.md for that lesson were presented, in 5 rounds of 2, with answer options shuffled per question.## Lesson Quiz Results report containing the score line (Score: N/10 with a grade label), the per-question results table, an "Incorrect Answers — Review These" block for each miss, and a timing-specific message.Example: for a 7/10 "after" run on Hooks, the report asserts Score: 7/10 — Proficient, lists all 10 rows in the results table, and expands the 3 incorrect questions with correct answer, explanation, and a review pointer.
If the argument doesn't match any lesson, show the valid lesson list and ask the user to pick one.
If the user indicates they want to stop during any round, present partial results for the questions answered so far (score out of the number attempted, not out of 10).
If the README.md file doesn't exist at the expected path, inform the user and suggest checking the repository structure. Do not proceed with fabricated content.
If references/question-bank.md has no questions for the resolved lesson, tell the user and stop — never invent questions to fill the gap.
Should trigger:
Should NOT trigger:
© luongnv89, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in .claude/skills/lesson-quiz of luongnv89/claude-howto.
Open the folder on GitHubat commit 556af8d
Claude Code Lesson 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 |
|---|---|---|---|---|---|---|
| Claude Code Lesson Quiz this skillluongnv89/claude-howto | 42k | — | ~2.3k | 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…
luongnv89/claude-howto
Guides refactoring in phases based on Martin Fowler's method: research, test coverage check, planning and small tested steps, with your approval at each phase.
luongnv89/claude-howto
Guides systematic, test-backed refactoring in the style of Martin Fowler, moving through research, planning and small incremental changes with your approval at each phase.
luongnv89/claude-howto
Guides drafting a blog post from an idea and optional source material: research, brainstorming, outlining and version-tracked drafts, with user approval at each step.
luongnv89/claude-howto
Ensure all communication matches brand voice and tone guidelines. Use when creating marketing copy, customer communications, public-facing content, or when…
luongnv89/claude-howto
Reviews code for security, performance, quality and maintainability, using a checklist, a finding template and two metrics scripts.
luongnv89/claude-howto
Runs a quick or deep quiz on Claude Code skills, scores ten feature areas and generates a personalized learning path with prioritized next steps.
Categories
Quizzes a learner on one lesson of the Claude Code tutorial with ten questions, scores the answers and points out weak spots. The skill runs an interactive quiz on a single lesson from a Claude Code tutorial repository. You choose the lesson by number or name, for example 03 or hooks, covering slash commands, memory, skills, subagents, MCP, hooks, plugins, checkpoints, advanced features and the CLI, or pick from a menu.
Claude Code Lesson Quiz fits situations like: testing yourself before starting a Claude Code lesson; checking what you retained after finishing a lesson; finding which lesson topics need another look.
Run `npx skills add luongnv89/claude-howto --skill lesson-quiz -a claude-code`. Or copy the skill folder (.claude/skills/lesson-quiz in luongnv89/claude-howto) into .claude/skills/lesson-quiz in your project. Claude Code loads it when a task matches its description.
Run `npx skills add luongnv89/claude-howto --skill lesson-quiz -a codex`. Or copy the skill folder (.claude/skills/lesson-quiz in luongnv89/claude-howto) into .agents/skills/lesson-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 luongnv89/claude-howto --skill lesson-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/lesson-quiz, .gemini/skills/lesson-quiz, .github/skills/lesson-quiz and .opencode/skills/lesson-quiz in your project.
SKILL.md names no scripts, command-line tools or credentials: Claude Code Lesson Quiz is instructions for the agent only. Our summary lists: A checkout of the Claude Code tutorial repository with lessons 01 to 10; The bundled question bank.
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.
Claude Code Lesson 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.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 15k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Claude Code Lesson 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.
luongnv89 (a GitHub user) maintains it in luongnv89/claude-howto, which has 41,780 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on September 30, 2026.
Source: luongnv89/claude-howto on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.