lesson-quiz について
Claude Code 向けのクイズスキルで、用意された問題バンクを使い、10種類のチュートリアルから選んだ1課を出題します。選択肢をシャッフルして複数ラウンドで提示し、各問のフィードバックと結果、復習案内を返します。
主な機能
- 0110課から1課を出題
- 02用意された問題バンクを使用
- 03選択肢のシャッフル
- 04各ラウンド後のフィードバック
- 05採点と復習案内
- 06受験時期に応じた結果説明
活用シーン
- 01受講前の知識確認
- 02学習中の理解度確認
- 03受講後の習熟度確認
- 04間違えたテーマの復習
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ luongnv89/ claude-howto --skill lesson-quizインストール後、Claude Code で/lesson-quizを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/question-bank.mdresults-template.md詳細
レッスンクイズ
特定の Claude Code レッスンの理解度を確認するインタラクティブなクイズです。10 問を出題し、各問題へのフィードバックを提供して、復習が必要な分野を特定します。
前提条件
このスキルには、次のものが必要です。
- チュートリアルのリポジトリをチェックアウトしており、レッスンディレクトリ
01-slash-commands/…10-cli/と、それぞれのREADME.mdを読み取れること。 - このスキル内に
references/question-bank.mdがあること(すべての問題の出典です)。
開始する前に、対象レッスンの README.md が存在することを確認してください。見つからない場合は問題をでっち上げず、ユーザーに警告して、リポジトリの構成を確認するよう依頼してください(「エラー処理」を参照)。
ガードレール:
- 問題や回答を決して作り出さないでください。 選択したレッスンについて、
references/question-bank.mdにある問題のみを出題してください。問題バンクにそのレッスンの項目がない場合は、作り出さずにその旨を伝えてください。 - 正確に採点してください。 シャッフル後の各問題の正解の位置を記録し、回答が正解と一致するかを確認してください。採点を推測してはいけません。
- 採点前にタイミングを確認してください。 「前/途中/後」の選択によって結果の伝え方が変わります。省略してはいけません。
手順
Step 1:レッスンを決定する
ユーザーが引数でレッスンを指定した場合(例:/lesson-quiz hooks または /lesson-quiz 03)、次の対応表に従ってレッスンディレクトリを決定してください。
レッスン対応表:
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-cli
引数が指定されていない場合は、AskUserQuestion を使って選択肢を提示してください。
質問 1(ヘッダー:「レッスン」): 「どのレッスンのクイズに挑戦しますか?」 選択肢:
- 「スラッシュコマンド(01)」— カスタムコマンド、スキル、フロントマター、引数
- 「メモリ(02)」— CLAUDE.md、メモリ階層、ルール、自動メモリ
- 「スキル(03)」— プログレッシブ・ディスクロージャー、自動呼び出し、SKILL.md
- 「サブエージェント(04)」— タスクの委任、エージェント設定、分離
質問 2(ヘッダー:「レッスン」): 「どのレッスンのクイズに挑戦しますか?(続き)」 選択肢:
- 「MCP(05)」— 外部連携、トランスポート、サーバー、ツール検索
- 「フック(06)」— イベントの自動化、PreToolUse、終了コード、JSON 入出力
- 「プラグイン(07)」— パッケージ化されたソリューション、マーケットプレイス、plugin.json
- 「その他のレッスン...」— チェックポイント、高度な機能、CLI
「その他のレッスン...」が選択された場合は、次を提示してください。
質問 3(ヘッダー:「レッスン」): 「レッスンを選択してください:」 選択肢:
- 「チェックポイント(08)」— 巻き戻し、復元、安全な実験
- 「高度な機能(09)」— 計画、権限、プリントモード、思考
- 「CLI リファレンス(10)」— フラグ、出力形式、スクリプト作成、パイプ処理
Step 2:レッスンの内容を読む
コンテキストを確認するため、レッスンの README.md ファイルを読みます。
- ファイルを読む:
<lesson-directory>/README.md
次に、そのレッスンの問題バンク references/question-bank.md を使います(回答と解説付きの、あらかじめ作成された 10 問)。コンテキストの使用量を抑えるため、選択した 1 つのレッスンの README のみを読み、10 レッスンすべては読まないでください。
Step 3:クイズを出題する
クイズを受けるタイミングをユーザーに尋ねます。
AskUserQuestion を使用してください(ヘッダー:「タイミング」): 「レッスンに対して、いつクイズを受けますか?」 選択肢:
- 「前(事前テスト)」— まだレッスンを読んでおらず、これまでの知識を試します
- 「途中(進捗確認)」— レッスンを読み進めている途中です
- 「後(習熟度確認)」— レッスンを修了し、理解度を確認したいです
このコンテキストは、結果の伝え方に影響します(Step 5 を参照)。
ステップ 4: 問題をラウンド形式で出題する
問題バンクから 10 問を、2 問ずつのラウンドで出題します(全 5 ラウンド)。各問題では、問題文と 3〜4 個の回答選択肢を指定して AskUserQuestion を使用します。
重要: AskUserQuestion は 1 問あたり最大 4 個の選択肢、1 ラウンドあたり 2 問で使用してください。
各ラウンドで 2 問を出題します。ユーザーが各ラウンドに回答したら、すぐに問題ごとのフィードバックを表示します。各回答が正解か不正解か、不正解の場合は正解と簡単な解説を表示します。その後、次のラウンドへ進みます。5 ラウンドすべてが終了したら、最終採点へ進みます。
各ラウンドの問題形式:
問題バンクの各問題には次のものがあります。
question: 問題文options: 3〜4 個の回答選択肢(1 つが正解で、バンク内でラベル付けされています)correct: 正解のラベルexplanation: その回答が正しい理由category: 「conceptual」または「practical」
重要 — 回答選択肢をシャッフルする: 各問題について、AskUserQuestion で出題する前に回答選択肢の順序を必ずランダム化してください。問題バンクに記載されている順序(A、B、C、D)のまま出題してはいけませんし、正解を先頭に置いてもいけません。問題ごとに異なるランダムな並び順を使用してください。正確に採点できるよう、シャッフル後のどの位置に正解があるかを記録してください。
例: 問題バンクに選択肢 A(正解)、B、C、D の順で記載されている場合、C、A、D、B として出題することがあります。この場合、正解は 2 番目の位置になります。
AskUserQuestion を使用して各問題を出題します。各問題についてユーザーの回答を記録します。
ステップ 5: 採点して結果を表示する
すべてのラウンドが終了したら、スコアを計算して結果を表示します。
採点:
- 正解 1 問につき 1 点
- 満点は 10 点
評価スケール:
- 9〜10: マスター — 優れた理解
- 7〜8: 熟達 — よく理解しているが、小さな穴がある
- 5〜6: 発展途上 — 基礎は理解しているが、復習が必要
- 3〜4: 初級 — 大きな穴があり、復習を推奨
- 0〜2: 未到達 — このレッスンの最初から始めてください
出力形式: references/results-template.md のレポートテンプレートに従ってください。このテンプレートでは、スコア行、問題ごとの結果表、「不正解 — ここを復習しましょう」ブロック、タイミング別のメッセージ(事前テスト / 実施中 / 実施後)、および「推奨される次のステップ」セクションが定義されています。その角括弧のプレースホルダーを、今回の実行データで埋めてください。
ステップ 6: フォローアップを提案する
結果を表示した後、AskUserQuestion を使用します。
「次に何をしますか?」 選択肢:
- 「このクイズを再受験する」 — 同じレッスンのクイズにもう一度挑戦する
- 「別のレッスンのクイズを受ける」 — 別のレッスンに切り替える
- 「間違えたトピックを解説する」 — 不正解だった回答について詳しい解説を受ける
- 「終了する」 — クイズセッションを終了する
再受験の場合: ステップ 4 に戻ります(タイミングの質問はスキップし、同じタイミングを使用します)。 別のレッスンのクイズの場合: ステップ 1 に戻ります。 トピックを解説の場合: どの問題番号かを尋ね、レッスンの README.md から該当セクションを読み、例を挙げて解説します。
受け入れ基準
完了したクイズの実行は、これらすべてを満たしている必要があります — 最終結果を提示する前に、それぞれを検証してください:
- 質問が尋ねられる前に、ちょうど 1 つのレッスン (01〜10) が解決されていること。
- タイミングコンテキスト (前 / 中 / 後) が AskUserQuestion を介して取得されていること。
- そのレッスンの
references/question-bank.mdから 10 問が、2 問ずつ 5 ラウンドで提示され、各質問の回答選択肢がシャッフルされていること。 - すべての回答が追跡された正解位置に対して採点され、0〜10 の範囲の整数スコアが生成されていること。
- 期待される出力: スコア行 (
Score: N/10と評価ラベルを含む)、質問ごとの結果テーブル、不正解ごとの「Incorrect Answers — Review These」ブロック、およびタイミング固有のメッセージを含む## Lesson Quiz Resultsレポート。 - フォローアッププロンプト (再受験 / 別のレッスン / 解説 / 終了) が提示されていること。
例: Hooks に関する 7/10 の「後」の実行では、レポートは Score: 7/10 — Proficient を示し、結果テーブルに 10 行すべてをリストし、不正解の 3 問を正解、解説、復習の指針とともに展開します。
エッジケースとエラー処理
無効なレッスン引数
引数がいずれのレッスンにも一致しない場合は、有効なレッスンの一覧を表示し、ユーザーに 1 つ選ぶよう求めます。
クイズの途中でユーザーが終了を希望
いずれかのラウンド中にユーザーが中止を希望した場合は、それまでに回答した質問の部分的な結果を提示します (10 問中ではなく、試行した数に対するスコア)。
レッスンの README が見つからない
期待されるパスに README.md ファイルが存在しない場合は、ユーザーに通知し、リポジトリ構造を確認するよう提案します。でっち上げた内容で続行しないでください。
レッスンの問題バンクにエントリがない
references/question-bank.md に解決されたレッスンの質問がない場合は、ユーザーに伝えて停止します — 不足を埋めるために質問を捏造しないでください。
検証
テストスイートのトリガー
トリガーすべき:
- "quiz me on hooks"
- "lesson quiz"
- "test my knowledge of lesson 3"
- "practice quiz for MCP"
- "do I understand skills"
- "quiz me on slash commands"
- "lesson-quiz 06"
- "test me on checkpoints"
- "how well do I know the CLI"
- "quiz me before I start the memory lesson"
トリガーすべきでない:
- "assess my overall level" (/self-assessment を使用)
- "explain hooks to me"
- "create a hook"
- "what is MCP"
- "review my code"