diff --git a/.claude/hooks-config.toml b/.claude/hooks-config.toml index 82f996cf..ae96c326 100644 --- a/.claude/hooks-config.toml +++ b/.claude/hooks-config.toml @@ -24,7 +24,7 @@ # "jj-immutable" — jj --ignore-immutable # "jj-main-guard" — jj new main / jj edit main # "jj-push-guard" — jj git push / jj push 禁止 (pnpm push に誘導) -# "gh-pr-merge-guard" — gh pr merge ブロック (pnpm merge に誘導) +# "gh-pr-merge-guard" — gh pr merge ブロック (pnpm merge-pr に誘導) # "electron" — Electron GUI 実行ブロック # プリセット名以外の文字列は正規表現としてカスタムパターン扱い blocked_patterns = [ @@ -118,7 +118,7 @@ prompt = "optimize_commit_structure" # ─── Merge Pipeline: PR マージ + ローカル同期 ─── # -# pnpm merge で起動されるパイプライン。 +# pnpm merge-pr で起動されるパイプライン。 # PreToolUse の "gh-pr-merge-guard" プリセットにより直接の gh pr merge はブロックされ、 # このパイプラインを通すことが強制される。 # @@ -147,7 +147,7 @@ default_branch = "master" # "main" など、リポジトリに合わせて変 # ─── Post-PR Monitor: daemon + state file ─── # -# pnpm pr-create / pnpm push 実行時に daemon がバックグラウンドで起動し、 +# pnpm create-pr / pnpm push 実行時に daemon がバックグラウンドで起動し、 # check-ci-coderabbit.exe を定期ポーリングして結果を # .claude/pr-monitor-state.json に書き出す。 # Claude は CronCreate で state file を cat し、action に従って行動する。 diff --git a/.claude/settings.local.json.template b/.claude/settings.local.json.template index 325f6728..7bf00c5d 100644 --- a/.claude/settings.local.json.template +++ b/.claude/settings.local.json.template @@ -3,9 +3,11 @@ "allow": [ "Bash(pnpm build:all)", "Bash(pnpm check-ci *)", - "Bash(pnpm pr-create *)", + "Bash(pnpm create-pr)", + "Bash(pnpm create-pr *)", "Bash(cargo test:*)", - "Bash(pnpm merge)" + "Bash(pnpm merge-pr)", + "Bash(pnpm merge-pr *)" ] }, "hooks": { diff --git a/docs/adr/adr-009-post-pr-monitor.md b/docs/adr/adr-009-post-pr-monitor.md index 7f7efe7e..be118370 100644 --- a/docs/adr/adr-009-post-pr-monitor.md +++ b/docs/adr/adr-009-post-pr-monitor.md @@ -46,10 +46,10 @@ Claude が "gh pr create" を実行しようとする │ ▼ PreToolUse guard (gh-pr-create-guard) がブロック - └─ 「pnpm pr-create を使ってください」と誘導 + └─ 「pnpm create-pr を使ってください」と誘導 │ ▼ -Claude が "pnpm pr-create -- --title ..." を実行 +Claude が "pnpm create-pr -- --title ..." を実行 │ ▼ cli-pr-monitor.exe (スタンドアロン) diff --git a/docs/adr/adr-013-merge-pipeline.md b/docs/adr/adr-013-merge-pipeline.md index fc51cfd9..f3204eee 100644 --- a/docs/adr/adr-013-merge-pipeline.md +++ b/docs/adr/adr-013-merge-pipeline.md @@ -39,10 +39,10 @@ Claude が "gh pr merge" を実行しようとする ▼ PreToolUse (hooks-pre-tool-validate) ├─ "gh-pr-merge-guard" プリセットでブロック - └─ エラーメッセージ: 「pnpm merge を使用してください」 + └─ エラーメッセージ: 「pnpm merge-pr を使用してください」 │ ▼ -Claude が "pnpm merge" を実行する +Claude が "pnpm merge-pr" を実行する │ ▼ cli-merge-pipeline.exe (スタンドアロン) @@ -59,7 +59,7 @@ cli-merge-pipeline.exe (スタンドアロン) | 項目 | 決定 | 理由 | |---|---|---| | マージ戦略 | squash 固定 | master の履歴を 1 PR = 1 コミットに保つ | -| PR 検出 | jj bookmark から自動検出 | `pnpm push` / `pnpm pr-create` と同じ方式で一貫性がある | +| PR 検出 | jj bookmark から自動検出 | `pnpm push` / `pnpm create-pr` と同じ方式で一貫性がある | | ブランチ削除 | `--delete-branch` で自動削除 | マージ済みブランチの残留を防ぐ | | ローカル同期 | `jj git fetch` + `jj new master` | マージ後すぐに master 最新から作業を開始できる | | ステップ分離 | `pre_steps`(マージ前)/ `post_steps`(マージ後) | 学び提案等の post-merge 処理を正しいタイミングで実行 | diff --git a/package.json b/package.json index 6092dc53..b555cc87 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "build:all": "pnpm build:hooks-session-start && pnpm build:hooks-pre-tool-validate && pnpm build:hooks-post-tool-linter && pnpm build:hooks-stop-quality && pnpm build:cli-push-pipeline && pnpm build:cli-pr-monitor && pnpm build:cli-merge-pipeline && pnpm build:check-ci-coderabbit && pnpm build:hooks-settings", "review:ai": "claude -p \"/pre-push-review\"", "push": ".\\.claude\\cli-push-pipeline.exe && .\\.claude\\cli-pr-monitor.exe --monitor-only", - "pr-create": ".\\.claude\\cli-pr-monitor.exe", - "merge": ".\\.claude\\cli-merge-pipeline.exe", + "create-pr": ".\\.claude\\cli-pr-monitor.exe", + "merge-pr": ".\\.claude\\cli-merge-pipeline.exe", "check-ci": ".\\.claude\\check-ci-coderabbit.exe", "mark-notified": ".\\.claude\\cli-pr-monitor.exe --mark-notified", "check-monitor": "type .\\.claude\\pr-monitor-state.json 2>NUL || echo No active monitor", diff --git a/src/cli-merge-pipeline/src/main.rs b/src/cli-merge-pipeline/src/main.rs index ef416b94..298edf5c 100644 --- a/src/cli-merge-pipeline/src/main.rs +++ b/src/cli-merge-pipeline/src/main.rs @@ -1,6 +1,6 @@ //! Merge Pipeline ランナー (スタンドアロン exe) //! -//! pnpm merge から呼び出され、PR のマージとローカル同期を実行します。 +//! pnpm merge-pr から呼び出され、PR のマージとローカル同期を実行します。 //! hooks-config.toml の [merge_pipeline] セクションから設定を読み込みます。 //! //! 処理フロー: @@ -325,7 +325,7 @@ fn run_steps(phase: &str, steps: &[PipelineStepConfig], timeout: u64) -> Result< eprintln!("{}", output); } log_info(&format!( - "パイプライン中断: {} が失敗しました。問題を修正して pnpm merge を再実行してください。", + "パイプライン中断: {} が失敗しました。問題を修正して pnpm merge-pr を再実行してください。", step.name )); return Err(1); diff --git a/src/cli-pr-monitor/src/main.rs b/src/cli-pr-monitor/src/main.rs index 99afa7e5..1a0c7574 100644 --- a/src/cli-pr-monitor/src/main.rs +++ b/src/cli-pr-monitor/src/main.rs @@ -5,7 +5,7 @@ //! //! モード: //! デフォルト (PR 作成): gh pr create を実行 → daemon 起動 → CronCreate 指示を stdout 出力 -//! pnpm pr-create -- --title "..." --body "..." +//! pnpm create-pr -- --title "..." --body "..." //! //! --monitor-only: PR が存在すれば daemon 起動、なければ exit 0 //! pnpm push 完了後にチェインで呼ばれる diff --git a/src/hooks-pre-tool-validate/src/main.rs b/src/hooks-pre-tool-validate/src/main.rs index b90ddfcb..9234d34e 100644 --- a/src/hooks-pre-tool-validate/src/main.rs +++ b/src/hooks-pre-tool-validate/src/main.rs @@ -264,19 +264,19 @@ pnpm push ] } -/// プリセット: gh-pr-create-guard (gh pr create を禁止し pnpm pr-create に誘導) +/// プリセット: gh-pr-create-guard (gh pr create を禁止し pnpm create-pr に誘導) fn preset_gh_pr_create_guard() -> Vec { vec![ BlockedPattern { pattern: Regex::new(r#"(?im)(^|&&|;|\|\||\||&)\s*(?:[A-Za-z_][A-Za-z0-9_]*=\S+\s+|command\s+|env\s+)*gh\s+(?:.*\s+)?pr\s+create(\s|$)"#).unwrap(), message: r#"**gh pr create がブロックされました** -PR 作成は pnpm pr-create 経由で行ってください。 -pnpm pr-create は PR 作成後に CI・CodeRabbit の自動監視も開始します。 +PR 作成は pnpm create-pr 経由で行ってください。 +pnpm create-pr は PR 作成後に CI・CodeRabbit の自動監視も開始します。 **代わりに以下を実行してください:** ``` -pnpm pr-create -- --title "タイトル" --body "本文" +pnpm create-pr -- --title "タイトル" --body "本文" ``` -- 以降の引数はそのまま gh pr create に転送されます。"#, @@ -284,16 +284,16 @@ pnpm pr-create -- --title "タイトル" --body "本文" ] } -/// プリセット: gh-pr-merge-guard (gh pr merge を禁止し pnpm merge に誘導) +/// プリセット: gh-pr-merge-guard (gh pr merge を禁止し pnpm merge-pr に誘導) fn preset_gh_pr_merge_guard() -> Vec { let msg = r#"**gh pr merge がブロックされました** -PR マージは pnpm merge 経由で行ってください。 -pnpm merge は PR のマージに加え、ローカル環境の同期も自動で行います。 +PR マージは pnpm merge-pr 経由で行ってください。 +pnpm merge-pr は PR のマージに加え、ローカル環境の同期も自動で行います。 **代わりに以下を実行してください:** ``` -pnpm merge +pnpm merge-pr ``` 現在のブックマークから PR を自動検出してマージします。"#;