diff --git a/.claude/agents/ops-runner.md b/.claude/agents/ops-runner.md index 2d66bf8..ef3419a 100644 --- a/.claude/agents/ops-runner.md +++ b/.claude/agents/ops-runner.md @@ -34,7 +34,7 @@ 1. **手順書が唯一の根拠**: 最初に,指示で指定された手順書(reference.md 等)と規約ファイルを読む.手順書に書かれていない操作はしない 2. **判断しない**: 手順書が「ユーザーに確認」としている分岐や,想定外の状態(コンフリクト・権限エラー・対象が見つからない等)に遭遇したら,作業を安全な状態にして停止し,「確認事項」として状況・選択肢・推奨を報告する.自分で判断して先に進まない.停止する前に,確認不要で完了できる残りの作業は済ませ,他にも確認が要りそうな点があればまとめて洗い出す(上位との往復を減らす) -3. **破壊的操作の禁止**: force push・`git reset --hard`・`main` への直接コミット・ファイル削除は,手順書に明記されている場合を除き行わない.`.env` やクレデンシャルファイルはステージングしない +3. **破壊的操作の禁止**: force push・`git reset --hard`・`main` への直接コミット・`gh pr merge --admin` によるブランチ保護の迂回・ファイル削除は,手順書に明記されている場合を除き行わない.`.env` やクレデンシャルファイルはステージングしない 4. **分類器ブロックはそのまま報告**: auto mode のセキュリティ分類器によりコマンドが**実行される前に**ブロックされた場合は,リポジトリ設定や権限の問題と混同せず,「分類器ブロック」として表示された文言をそのまま報告して停止する.別のコマンドや手順で迂回しない 5. **正確な報告**: 成功・失敗を装飾なく報告する.失敗したコマンドは出力の要点を添える diff --git a/.claude/skills/commit/SKILL.md b/.claude/skills/commit/SKILL.md index 6f331c3..aa1eb34 100644 --- a/.claude/skills/commit/SKILL.md +++ b/.claude/skills/commit/SKILL.md @@ -37,6 +37,10 @@ - **意図情報なしで委譲した場合**は,エージェントの「事実報告」(変更ファイルの分類)を見て docs 更新の要否を事後判断し,必要と思われれば「⚠ docs/・CLAUDE.md の開発進捗・`docs/PROGRESS.md` の更新が必要かもしれません」とユーザーに伝える(追加コミットで対応してよい) - エージェントが返した警告(意図と diff の食い違い等)はそのまま表示し,判断はユーザーに委ねる - エージェントが「確認事項」で停止した場合は,ユーザーに確認し,回答を「承認済み」として添えて再委譲する + - ただし停止理由が**分類器ブロック**(auto mode のセキュリティ分類器により,コマンドが実行される前に遮断された)の場合は,再委譲しても同じ地点で止まるため**再委譲しない**.`.claude/settings.json` の `permissions.allow` の確認・追加とセッション再起動をユーザーに案内して終了する(詳細は `.claude/skills/commit/reference.md` の「gh コマンドが実行される前にブロックされた場合」を参照) +- **ops-runner の起動(Agent ツール呼び出し)自体が分類器にブロックされた場合**は,委譲そのものが成立しない(プロンプトの文言を変えても通らない.`.claude/settings.json` の permissions 変更を含む変更のコミットを委譲したところ,Agent 起動が 2 回ブロックされた実測例がある).この場合は状況をユーザーに伝え,**ユーザーの承認を得た上で**次のいずれかで進める + - 司令塔(メインループ)が直接コミット操作を行う(メインループからは同じ操作が通ることを確認済み).これは冒頭の「git 操作を自分では行わない」原則の**例外**とする + - ユーザーが `! git ...` で手動コミットする ## 注意事項 (Notes) diff --git a/.claude/skills/commit/reference.md b/.claude/skills/commit/reference.md index fc7d289..19be2d8 100644 --- a/.claude/skills/commit/reference.md +++ b/.claude/skills/commit/reference.md @@ -80,6 +80,7 @@ - マージ方式は「Create a merge commit」を使用する(作業ブランチの全コミット履歴が `main` に残る). - 「Squash and merge」「Rebase and merge」は使用しない. - **先に `main` へ移ってから**マージする.PR ブランチ上で `--delete-branch` を実行すると gh が暗黙に `main` への切替と pull を行い,ブランチ削除より前に pull が走る(post-merge hook 等の後処理が削除前の状態を見てしまう).手順を明示的にして順序を固定する. +- ブランチ保護・必須レビュー・必須チェック未完了でマージが拒否された場合も,`gh pr merge --admin` で迂回しない(状況を報告して停止する). ```bash git checkout main @@ -148,8 +149,10 @@ `gh pr merge` 等が実行される前に遮断され,`gh` の出力が返ってこない場合は,auto mode のセキュリティ分類器によるブロックである.リポジトリ側の制約(ブランチ保護・必須レビュー・権限不足)とは原因が異なるため,混同して報告しない. - **見分け方**: リポジトリ側の制約ならコマンドは実行され `gh` がエラーメッセージを返す.分類器ブロックではコマンド自体が実行されない. -- **対処**: `.claude/settings.json` の `permissions.allow` に `Bash(gh pr merge:*)` があるか確認する.無ければ**ユーザーが手で追加**し,セッションを再起動する(permissions の変更は再起動後に反映される.Claude 自身が `settings.json` の permissions を編集することは分類器にブロックされるため,自分では追加できない). +- **対処**: `.claude/settings.json` の `permissions.allow` に `Bash(gh pr merge:*)` があるか確認する.無ければ**ユーザーが追加**し,セッションを再起動する(permissions の変更は再起動後に反映される.現状は Claude 自身が `settings.json` の permissions を編集することも分類器にブロックされるため,自分では追加できない). + - 追加の経路は 2 つある: `settings.json` を手で編集する,または `/permissions` ダイアログから allow ルールを追加する. - auto mode では `Bash(gh *)` のような広い allow ルールは分類器に回されるため効かない.`Bash(gh pr merge:*)` のように**操作を特定した狭いルール**にする必要がある. + - ※ `~/.claude/settings.json`(ユーザー設定)に `autoMode.classifyAllShell: true` が設定されている場合は,狭い allow ルールも含めすべてのシェルコマンドが分類器に回るため,この対処自体が効かない.allow ルールを追加しても通らないときは,まず該当設定の有無を確認する. - **やってはいけないこと**: 別コマンドでの迂回(`main` への直接 push 等)や,設定を緩めての強行.ブロックされた事実と対処法をそのままユーザーに伝えて停止する. ### 間違えて main にコミットしてしまった場合 diff --git a/.claude/skills/deps-update/SKILL.md b/.claude/skills/deps-update/SKILL.md index 86e9610..7354ac4 100644 --- a/.claude/skills/deps-update/SKILL.md +++ b/.claude/skills/deps-update/SKILL.md @@ -101,3 +101,4 @@ - ローカル検証中にコンフリクト・環境エラーで検証が成立しない → その PR は Tier C として分析行きに回し,他の PR の処理は続ける - `gh pr merge` が**リポジトリ側の制約**で失敗(ブランチ保護・必須レビュー・必須チェック未完了・権限不足) → その PR は報告に回し,失敗理由を伝える.team モードで「他メンバー Approve 必須」のブランチ保護が効いている場合は,本スキルはマージ可と判定した PR の一覧を提示するにとどめる - `gh pr merge` が **auto mode の分類器にブロック**された(コマンドが実行される前に遮断され,`gh` の出力が返らない) → **環境側の制約であって,リポジトリ設定の問題ではない**(ブランチ保護と混同して報告しない).`.claude/settings.json` の `permissions.allow` に `Bash(gh pr merge:*)` があるか確認し,無ければ「ユーザーが手で追加してセッションを再起動する必要がある」と報告する(Claude 自身は permissions を編集できず,設定変更はセッション再起動後に反映される).該当 PR は「マージ可と判定したが未実行」として報告し,`main` への直接 push 等でマージを迂回しない + - ※ allow ルールの追加は `settings.json` の手編集のほか `/permissions` ダイアログからも行えるが,`~/.claude/settings.json` に `autoMode.classifyAllShell: true` があると狭い allow ルールも分類器に回るためこの対処は効かない(追加しても通らないときは該当設定の有無を確認する)