どこで止まるか

8つの層の止め金

AIに任せても大丈夫なのは、書く前、書いた後、合流の前に、止め金が何重にもあるからです。左の操作を1つ選ぶと、玉が上の層から落ちていき、止まる層が赤く光ります。

操作と止まる層

1
権限の設定
禁止(deny)と確認(ask)。手元は.claude/settings.json、夜のジョブはci/settings.ci.json
2
書く前のフック
guard_paths(触らない場所)、block-destructive(壊すコマンド)
3
書いた後のフック
check-phpver(PHPの版)、stop-gate(終える前の検査)
4
コミットの前
pre-commit(CLAUDE.mdの行数)
5
実装ジョブの確かめ
承認の確かめ直し、決まっていないこと、30ターンと25分、MRの前の確かめ
6
MRのパイプライン
lint、test、ai_scope、AIレビューとai_gate
7
mainの保護とマージの条件
直接のpushは誰もできない、パイプラインが通らないとマージできない
8
人の判断
差分を受け入れ条件と突き合わせて、マージするかを決める

左の操作を1つ選んでください。

Claude Desktopに頼んだ操作の行き先

Claude Desktopに頼んだ操作がそのまま動くか止まるかは、研修リポジトリの設定とフックで決めてあります。聞いてから動く操作では、確認のダイアログが出ます。

頼んだこと起きることと、決めている所
ファイルを読む、コードを説明するそのまま動き、ダイアログは出ない。読むだけの操作は、手動のモードでも許可が要らない
ファイルを書き換える(Edit、Write)1回ごとに確認のダイアログが出る。権限のモードが「手動」のため
コマンドを打つ(git switch、git commit、テストなど)1回ごとに確認のダイアログが出る。allowには何も書いていない
git push必ず確認のダイアログが出る。.claude/settings.jsonのaskに書いてある
mainへのpushダイアログで許可しても、GitLabの保護ブランチが受け付けない
MRのマージできない。mainに入るのはMRの画面のマージだけで、押せるのはMaintainerの講師
app/core/、db/schema.sql、db/seed.sqlをEditやWriteで書き換えるダイアログが出る前にフックguard_pathsが止め、理由がClaudeに返る。一覧は.claude/protected-paths
同じファイルにPowerShellのコマンドで書く止まらない。guard_pathsはEditとWriteにしか付いていないので、ダイアログで許可すると書けてしまう(プチ演習4。レベル3で塞ぐ)
git reset --hard、git push --force、git checkout --、git cleanダイアログを出さずに止まる。4つともsettings.jsonのdenyにあり、git reset --hardとgit push --forceはフックblock-destructiveも止める
git restoreで変更を捨てるダイアログで許可すれば動く。演習の戻しに使うので止めていない。コミットしていない変更は消える
rm -rf、Remove-Item -Recurseダイアログを出さずに止まる。フックblock-destructiveが止める
.envと認証情報を読む止まる。Readで開くのはsettings.jsonのdenyが、シェルのコマンドで触るのはフックblock-destructiveが止める
テストが赤のまま、作業を終える研修のPCにはPHPを入れていないので、フックstop-gateは何もせずに終わる。PHPがあるPCでは、ファイルを変えたまま終えるとテストを回し、赤なら直しを続けさせる(1セッションで2回まで)
GitLabのIssueやパイプラインの画面を読むできない。研修のGitLabはログインしないと開けないので、本文やログは受講者が貼って渡す

Claude Desktopで使えるコマンドと使えないコマンドは、GitLabの基礎の「Claude Desktopへの頼み方」にあります。

層ごとの役割

層止めるもの飛ばせるか
1権限の設定強制push、git reset --hard、.envの読み出し。夜はpushとcurlも手元は設定を書き換えれば外せる。夜のジョブは外せない
2書く前のフック触らない場所への書き込み、壊すコマンド手元は外せる。本体を消すと素通りするので、プチ演習8でラッパー(run_hook)に替え、止まる形を確かめる
3書いた後のフックPHP 7.4で動かない書き方手元は外せる。GitLabのlint-phpverが拾う
4コミットの前CLAUDE.mdの行数の超過--no-verifyで飛ばせる。GitLabのcheck-rulesが拾う
5実装ジョブの確かめ承認の無いIssue、決まっていないことの残るIssue、触らない場所の変更受講者からは外せない
6 MRのパイプライン構文、テスト、AIの止め金の書き換え受講者からは外せない
7 mainの保護直接のpush、赤のMRのマージ外せるのは管理者の設定だけ
8人の判断受け入れ条件と合わない変更ここは人にしか置けない

上の層ほど速く止まり、下の層ほど外しにくい作りです。手元のフックは飛ばせる速報で、飛ばされても6と7で止まります。