| name | push-quiz |
| description | push 前にユーザーへ実装内容の理解度クイズを徹底出題し、全問正答 + 明示許可を得て初めて push を解禁するゲートスキル。トリガー: ship フローの quiz フェーズ到達時、または「クイズ出して」「push クイズ」「quiz me」等のユーザー指示。承認は `ship.sh quiz approve` で HEAD SHA に紐づけて記録する。 |
push-quiz — push 前の理解度クイズゲート
コミット済みの実装内容についてユーザーにクイズを出題し、ユーザーが内容を完全に理解し、明示的に push を許可するまで push を解禁しない。目的は push の安全確認ではなく、実装に使われた技術・設計判断をユーザーが学ぶこと。
ゲートはホスト PCmac24055 のみで有効 (他マシンでは ship の quiz フェーズが自動 skip される)。対象ホストは ship.sh の quiz_enabled() で判定している。
絶対原則
ship.sh quiz approve は、全問正答 + ユーザーの明示的な push 許可の両方が揃うまで絶対に実行しない。効率化・ユーザーの多忙・自明な変更を理由にした省略は禁止 (省略したい場合はユーザー自身に ship.sh skip quiz <理由> の意思を確認する)
- 出題前に必ず差分の実体を読む。記憶にある「書いたつもりの内容」ではなく
git diff の実物から出題する
- 答えを問題文や選択肢の並びで示唆しない。もっともらしい誤答選択肢を混ぜる。正解の位置は問題ごとに変える (LLM は正解を先頭に置きがち。作問後に「正解が同じ位置に並んでいないか」を確認し、偏っていたら並べ替えてから出題する)
手順
1. 出題範囲の把握
git diff origin/<default>...HEAD --stat
git diff origin/<default>...HEAD
git log origin/<default>..HEAD --oneline
2. 問題設計
選別基準: 「この問題に答える過程で、ユーザーが他の場面にも応用できる技術・パターン・判断基準を学べるか?」。クイズの目的は push の安全確認ではなく学習。Yes と言えない問題は出さない。この基準を満たすなら問題数は少なくてよい (目安: 3〜8 問。数合わせのための水増し禁止)。
全ての問題は差分に実在するコード・コマンド・機能に紐づける。実装から遊離した一般論・名前付き法則・メタな抽象問題 (「この現象を説明する原則は?」等) は学習目的でも禁止。問うのは「このコードのこの部分はどう動くか / なぜこう書いたか」。
出題してよい観点 (優先順):
| 観点 | 例 |
|---|
| 使われた技術の仕組み | 今回使ったコマンド・言語機能・API はどういう原理で動いているか (例: git commit-tree は何をする plumbing か) |
| 設計判断とトレードオフ | なぜ A 方式でなく B 方式か。捨てた代替案と、その選択で失ったもの |
| 一般化できるパターン | この実装で使った手法は、どんな種類の問題に応用できるか (例: 承認を SHA に紐づける = content-addressable な失効管理) |
| 落とし穴と回避策 | この技術を素朴に使うとハマる罠は何で、今回どう回避したか |
| 信頼境界・限界 | 機械的に保証される範囲と、規約・運用頼みの範囲の境目はどこか |
出題禁止 (表面的な振る舞い当てクイズ):
- 差分を一瞥すれば分かる事実確認 (「どこに挿入されたか」「何というコマンドが増えたか」「何行変わったか」)
- 変更の要約の復唱 (コミットメッセージや完了報告を読めば答えられる問題)
- 実装の細部の暗記 (変数名・ファイル名・数値の丸暗記)
3. 出題
- AskUserQuestion で 最大 4 問ずつ一括 出題する (1 回の呼び出しに複数 question を詰め、往復回数を最小化する)
- 4 択形式。誤答選択肢は差分を読んでいないと引っかかる程度にもっともらしくする
- 選択肢で表現しにくい問題 (設計理由の説明等) は、選択肢を出さず記述回答を求めてもよい
4. 採点とフィードバック
- ラウンドごとにまとめて採点し、正答は一言、誤答は正解と該当コード箇所 (
file:line) を示して解説する
- 誤答があった観点は再出題問題を次ラウンドに含める (これも他の問題と一括で出す)。クリアするまで合格にしない
5. 承認
全問正答後、最後に AskUserQuestion で「この内容で push を許可しますか?」を確認する。許可を得たら:
~/.claude/skills/ship/scripts/ship.sh quiz approve
承認後にコミットを積み直した場合は SHA 不一致で自動失効するため、再度このスキルを実行する。
非担当
- push・PR 作成そのもの → pr-create スキル (ship の pr フェーズ)
- 計画段階の深掘り尋問 → grill-me