クイズ10問と解説

AIカスタム研修Day2/ 午後の終わりに解きます

D2とsmart3pmのハーネスで何が起きるかを答える10問です。どの問いも、今日のプチ演習で起こしたことから出ます。

解き方

進め方

解き方

10問とも、D2(d2_harness_20260828)かsmart3pm(smart3pm-harness-review)の実物のハーネスの話です。問いの頭に、どちらのハーネスかを書いています。前提には、そのハーネスのファイルが何を見て何を返すかを書いています。

どの問いも、今日のプチ演習で自分の手で起こしたことと同じ形です。1問1点で、8点以上を目安にしてください。解説は、全部解いた後に開きます。

選択肢を押すと、その答えを選べます。別の選択肢を押すと選び直しになる作りです。10問選んだら、ページの下の「採点する」を押してください。点数と、各問の正解の印が出ます。

10問

smart3pm-harness-reviewQ1 core.mdの行数の検査
前提
  • rules/core.mdは、どのセッションでも開始時に全文が読み込まれるルールのファイル。上限は80行と決めている
  • harness/check-guidelines.shが、コミットの前とpushの前に動く。core.mdの行数をwc -lで数え、80行を超えていたら止める
場面
  • core.mdは今79行。1行が600文字のルールを1本足して、80行にした。これをコミットする
問い

check-guidelines.shの行数の検査はどうなる?

正解と解説(解いた後に開く)

正解A

根拠:check-guidelines.shの検査1(wc -lの行数だけを上限と比べる。178-185行目)

誤答:Bは文字数も見ているという思い込み。Cは「80行まで」を「80行未満」と取り違え。Dは検査が知らせるだけだという思い込み

プチ演習1(ハンズオンガイド)で、自分のCLAUDE.mdに600文字の1行を足し、行数だけの検査が通すのを見ました。

d2_harness_20260828Q2 agents/の読み込み
前提
  • CLAUDE.mdの中に@ファイル名と書いたファイルは、セッションを開いた時点で中身ごと読み込まれる
  • D2のCLAUDE.mdは、7行目の@AGENTS.mdでAGENTS.mdを読み込んでいる
  • AGENTS.mdの「読み分けガイド」には、「コーディングの前にagents/03(コーディング規約)を読むこと」と文章で書いてある。@は付いていない
  • 開始時に動くフックsessionstart_info.ps1が出すのは、ブランチ名と変更の状態だけ
  • D2のフックは、この開始時の1本と、ツールの実行の前後に動くものだけ。依頼を送ったときに動くフックは無い
場面
  • D2のリポジトリで新しいセッションを開いた。まだ何も頼んでいない
問い

この時点で、agents/03の中身は読み込まれている?

正解と解説(解いた後に開く)

正解B

根拠:CLAUDE.md:7(@はAGENTS.mdの1本だけ)、AGENTS.md:76-78(読み分けガイドは文章の指示)、sessionstart_info.ps1(出すのはブランチとステータス)

D2自身もagents/07:76-77で「入口のトリガーが弱い」と書いている

誤答:Aは@の取り込みが、文章で書いた参照にまで連なると思う誤解。CとDはフックが知識を入れると思う誤解

プチ演習2(ハンズオンガイド)で、名前で指しただけのREVIEW.mdを、Claudeが後から開く表示を見ました。

d2_harness_20260828Q3 featureブランチでDB/に書く
前提
  • D2では、DB/(SQLファイルの置き場)を書き換えてよいのはdevelopとmasterのブランチだけ
  • .claude/hooks/guard_db_branch.ps1は、EditとWriteの実行前(PreToolUse)に動くフック。今のブランチがdevelopとmaster以外で、書き先がDB/の中なら、理由をstderrに書いて終了コード2を返す
場面
  • feature/s6000/s6010_d2_documentブランチで、ClaudeがWriteでDB/sql/x.sqlを新しく作ろうとした
問い

どうなる?

正解と解説(解いた後に開く)

正解C

根拠:guard_db_branch.ps1:40-43(DB/配下はdevelop・master以外でexit 2)、cases db-feat-01

誤答:Bは実行後の検査と混同。Dは終了コード2を確認の依頼と思う誤解

プチ演習3(ハンズオンガイド)で、guard_pathsが書く前に止め、理由を返すのを見ました。

smart3pm-harness-reviewQ4 Bashのsed -iでmigrationを書き換える
前提
  • 既存のmigration(app/Database/Migrations/の中)は書き換えず、新しく足す決まり。backendユニットの.claude/immutable-paths(書き換え禁止の一覧)に載っている
  • guard-write-scope.shは、EditとWriteの実行前に動く。書き先が担当範囲の外か、immutable-pathsに載っていれば止める
  • guard-bash-write.shは、Bashの実行前に動く。止める条件は、書き先が担当範囲の外であることだけ
  • app/Database/Migrations/は、backendユニットの担当範囲の中にある
場面
  • ClaudeがBashでsed -i 's/old/new/' app/Database/Migrations/001_init.phpを実行しようとした(確認の画面は出ない設定とする)
問い

どうなる?

正解と解説(解いた後に開く)

正解C

根拠:guard-write-scope.sh:150(immutable-pathsを見るのはEdit系だけ)、guard-bash-write.sh:189-208(スコープの判定だけ)

誤答:AはEditと同じ一覧を見ると思う誤解。Dはフックがどのツールにも効くと思う誤解

プチ演習4(ハンズオンガイド)で、Editを止めるフックだけのときに、シェルの書き込みが通るのを見ました。

d2_harness_20260828Q5 LFのmdを書いた後
前提
  • D2では、テキストファイルの改行はCRLFと決めている
  • .claude/hooks/check_crlf_bom.ps1は、EditとWriteの実行後(PostToolUse)に動くフック。LFだけの改行を見つけると、理由をstderrに書いて終了コード2を返す
場面
  • feature/s6000/s6010_d2_documentブランチで、ClaudeがWriteで、LF改行のdoc/notes/memo.mdを新しく作った
問い

どうなる?

正解と解説(解いた後に開く)

正解A

根拠:check_crlf_bom.ps1:38-43(単独のLFでexit 2)、cases cb-02

誤答:Bは実行前と実行後の混同。Cは検査が直すと思う誤解。Dは実行後のフックの結果が捨てられると思う誤解

プチ演習5(ハンズオンガイド)で、check-phpverが、ファイルを残したまま結果を返すのを見ました。

smart3pm-harness-reviewQ6 ハーネスの本体が無いとき
前提
  • ハーネスのフックの本体は、smart3pm_guidelinesフォルダに1つだけある
  • 各ユニットの.claude/settings.jsonのフックは、親のフォルダをたどって本体を探し、見つけたら呼ぶ短いコマンドになっている。Bashの実行前に動くコマンドの要所は[ -r "$H" ] || { …; exit 2; }
  • $Hは見つけた本体のパス。[ -r "$H" ]は「そのファイルが読めるか」を確かめる書き方で、読めなければ||の後ろが動く
場面
  • 親のどこにもsmart3pm_guidelinesが無い場所でユニットを開いた。Claudeが最初にBashでlsを実行しようとした
問い

どうなる?

正解と解説(解いた後に開く)

正解D

根拠:harness/settings.backendのBash用command([ -r "$H" ] || { …; exit 2; })、design/harness-reference-type.md:33,71

誤答:Aは、安全装置が無くても作業は進むと思う誤解(設計原則のFail loudに反する)。Cは実行前と実行後の混同

プチ演習8(ハンズオンガイド)で、フックの本体が無いとき、直接の登録では素通りし、ラッパーを挟むと止まるのを見ました。

d2_harness_20260828Q7 レビュー役の前捌き
前提
  • D2の作業の順番は、実装 → レビュー②(人が行う2回目のレビュー)→ マージ待ち → マージ
  • .claude/agents/d2-code-reviewer.mdは、レビュー②の前に差分を読むサブエージェント。定義ファイルでpermissionModeをplan(読むだけ)にし、「コードを直さない」「人が確かめる点を分けて書く」と決めている
場面
  • 実装が終わり、d2-code-reviewerを動かした
問い

実際に起こるのはどれ?

正解と解説(解いた後に開く)

正解D

根拠:d2-code-reviewer.md「報告の契約」(コードを直さない、要人間確認を分ける)、CLAUDE.md:23、d2-task-start/SKILL.md:35(レビュー②待ちは人の手番)

誤答:Aは「AIレビュー= AIが直す」という期待。BとCはレビュー②を機械の工程と思う誤解

プチ演習6(ハンズオンガイド)で、AIレビューが指摘を書くだけで、コードを変えないのを見ました。

smart3pm-harness-reviewQ8 承認の後で計画書を直す
前提
  • ゲート①は、人が計画書を承認する工程。承認するとnew-approval-receipt.shが、計画書のsha256をレシートに書く
  • sha256は、ファイルの中身から計算する指紋のような値。1文字でも変わると別の値になる
  • verify-approval-receipt.shは、作業フォルダにある今の計画書からsha256を計算し直し、レシートの値と比べる
場面
  • 承認(レシートの発行とコミット)の後で、担当ユニットのplan-backend.mdの誤字を1文字直した。まだコミットしていない
問い

verify-approval-receipt.shの結果は?

正解と解説(解いた後に開く)

正解C

根拠:verify-approval-receipt.sh(作業ツリーのsha256を計算し直す)、plan-feature.md:73-91

誤答:Aはレシートが計画書に追いつくと思う誤解。Dはコミット済みだけを見ると思う誤解

プチ演習9(ハンズオンガイド)で、承認の後に1文字直すとINVALIDになるのを見ました。

d2_harness_20260828Q9 夜間にClaudeがpushしようとする
前提
  • D2では、push、マージ、ブランチ作成は人の作業と決めている
  • .claude/settings.jsonのdenyにBash(git push:*)とPowerShell(git push:*)がある
  • guard_shell_policy.ps1も、BashとPowerShellの実行前にgit pushを見つけると、終了コード2を返す
場面
  • 夜、誰も画面を見ていない状態でClaudeにIssueを実装させた。実装の後で、Claudeがgit push origin feature/s7000/s7001_xを実行しようとした
問い

どうなる?

正解と解説(解いた後に開く)

正解B

根拠:settings.json:17,21(deny)、guard_shell_policy.ps1のgit guard(pushをexit 2)

誤答:Aはdenyとaskの混同。Dは、人がいないと決まりが緩むと思う誤解

プチ演習10(ハンズオンガイド)で、denyは確認なしで止まり、askは確認のダイアログが出るのを見比べました。

smart3pm-harness-reviewQ10 push --no-verify
前提
  • smart3pmの最後の検査は、gitのpre-pushフック。pushの直前に、手元のPCで動く
  • GitLab側(サーバ)には検査を置いていない(design/harness-server-free.md)
  • ワークスペースでセッションを開くと、検査を通っていないpushがあれば警告を出す
場面
  • 人が端末でgit push --no-verifyを実行した
問い

何が起こる?

正解と解説(解いた後に開く)

正解A

根拠:design/harness-server-free.md:252(git push --no-verifyは素通り。事後の検知だけ)、harness/check-pushed-state.sh(ワークスペースのSessionStartで警告)

誤答:Bは--no-verifyがフックを飛ばすことを知らない。Cは、前提の「GitLab側には検査を置いていない」を見落としている。DはClaudeのセッションの外の操作だと気づいていない

プチ演習7(ハンズオンガイド)で、手元のpre-commitを--no-verifyで飛ばし、GitLabのcheck-rulesで止まるのを見ました。研修リポジトリにはcheck-rulesがあるので止まりました。smart3pmには、それに当たる検査がありません。

採点と答え合わせ

0 / 10問を選びました

一覧を開く(解いた後に)
問ハーネス正解起こしたプチ演習
Q1smart3pm-harness-reviewAプチ演習1
Q2d2_harness_20260828Bプチ演習2
Q3d2_harness_20260828Cプチ演習3
Q4smart3pm-harness-reviewCプチ演習4
Q5d2_harness_20260828Aプチ演習5
Q6smart3pm-harness-reviewDプチ演習8
Q7d2_harness_20260828Dプチ演習6
Q8smart3pm-harness-reviewCプチ演習9
Q9d2_harness_20260828Bプチ演習10
Q10smart3pm-harness-reviewAプチ演習7
ページの先頭へ