mcpField
L
lesson-quiz

lesson-quiz

github.com/luongnv89エージェントワークフロー45.9k110 回インストール今日更新
リポジトリ

lesson-quiz について

Claude Code 向けのクイズスキルで、用意された問題バンクを使い、10種類のチュートリアルから選んだ1課を出題します。選択肢をシャッフルして複数ラウンドで提示し、各問のフィードバックと結果、復習案内を返します。

主な機能

  1. 0110課から1課を出題
  2. 02用意された問題バンクを使用
  3. 03選択肢のシャッフル
  4. 04各ラウンド後のフィードバック
  5. 05採点と復習案内
  6. 06受験時期に応じた結果説明

活用シーン

  1. 01受講前の知識確認
  2. 02学習中の理解度確認
  3. 03受講後の習熟度確認
  4. 04間違えたテーマの復習

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/luongnv89/claude-howto --skill lesson-quiz

インストール後、Claude Code で/lesson-quizを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
references/
question-bank.md
results-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-commands
  • 02、memory → 02-memory
  • 03、skills → 03-skills
  • 04、subagents、agents → 04-subagents
  • 05、mcp → 05-mcp
  • 06、hooks → 06-hooks
  • 07、plugins → 07-plugins
  • 08、checkpoints、checkpoint → 08-checkpoints
  • 09、advanced、advanced-features → 09-advanced-features
  • 10、cli → 10-cli

引数が指定されていない場合は、AskUserQuestion を使って選択肢を提示してください。

質問 1(ヘッダー:「レッスン」): 「どのレッスンのクイズに挑戦しますか?」 選択肢:

  1. 「スラッシュコマンド(01)」— カスタムコマンド、スキル、フロントマター、引数
  2. 「メモリ(02)」— CLAUDE.md、メモリ階層、ルール、自動メモリ
  3. 「スキル(03)」— プログレッシブ・ディスクロージャー、自動呼び出し、SKILL.md
  4. 「サブエージェント(04)」— タスクの委任、エージェント設定、分離

質問 2(ヘッダー:「レッスン」): 「どのレッスンのクイズに挑戦しますか?(続き)」 選択肢:

  1. 「MCP(05)」— 外部連携、トランスポート、サーバー、ツール検索
  2. 「フック(06)」— イベントの自動化、PreToolUse、終了コード、JSON 入出力
  3. 「プラグイン(07)」— パッケージ化されたソリューション、マーケットプレイス、plugin.json
  4. 「その他のレッスン...」— チェックポイント、高度な機能、CLI

「その他のレッスン...」が選択された場合は、次を提示してください。

質問 3(ヘッダー:「レッスン」): 「レッスンを選択してください:」 選択肢:

  1. 「チェックポイント(08)」— 巻き戻し、復元、安全な実験
  2. 「高度な機能(09)」— 計画、権限、プリントモード、思考
  3. 「CLI リファレンス(10)」— フラグ、出力形式、スクリプト作成、パイプ処理
Step 2:レッスンの内容を読む

コンテキストを確認するため、レッスンの README.md ファイルを読みます。

  • ファイルを読む:<lesson-directory>/README.md

次に、そのレッスンの問題バンク references/question-bank.md を使います(回答と解説付きの、あらかじめ作成された 10 問)。コンテキストの使用量を抑えるため、選択した 1 つのレッスンの README のみを読み、10 レッスンすべては読まないでください。

Step 3:クイズを出題する

クイズを受けるタイミングをユーザーに尋ねます。

AskUserQuestion を使用してください(ヘッダー:「タイミング」): 「レッスンに対して、いつクイズを受けますか?」 選択肢:

  1. 「前(事前テスト)」— まだレッスンを読んでおらず、これまでの知識を試します
  2. 「途中(進捗確認)」— レッスンを読み進めている途中です
  3. 「後(習熟度確認)」— レッスンを修了し、理解度を確認したいです

このコンテキストは、結果の伝え方に影響します(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 を使用します。

「次に何をしますか?」 選択肢:

  1. 「このクイズを再受験する」 — 同じレッスンのクイズにもう一度挑戦する
  2. 「別のレッスンのクイズを受ける」 — 別のレッスンに切り替える
  3. 「間違えたトピックを解説する」 — 不正解だった回答について詳しい解説を受ける
  4. 「終了する」 — クイズセッションを終了する

再受験の場合: ステップ 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"

コメント