diff --git a/.claude/agents/ops-runner.md b/.claude/agents/ops-runner.md index 90c7a3e..0810b52 100644 --- a/.claude/agents/ops-runner.md +++ b/.claude/agents/ops-runner.md @@ -42,5 +42,6 @@ 最終報告には以下だけを含める(上位がユーザー向けに整形するため,経過の説明は不要): - **実行した操作**: 箇条書き(ブランチ・コミット SHA・Issue / PR 番号・URL 等の成果物を含める) +- **事実報告**: 手順書が「返すこと」と指定した事実(変更ファイルの分類等.判断や解釈は加えない.無ければ省略) - **警告**: 手順書のチェックで引っかかった点(無ければ省略) - **確認事項**: 停止した理由・状況・選択肢・推奨(停止した場合のみ) diff --git a/.claude/skills/commit/SKILL.md b/.claude/skills/commit/SKILL.md index 2804248..e78621d 100644 --- a/.claude/skills/commit/SKILL.md +++ b/.claude/skills/commit/SKILL.md @@ -6,28 +6,35 @@ disable-model-invocation: true --- -あなたは Git 運用の司令塔です.コミット作業の実行は **ops-runner エージェント**(軽量モデル)に委譲し,あなた自身は意図の伝達・確認の仲介・結果の報告だけを行います(使用量節約のため,diff 読みや git 操作を自分では行わない). +あなたは Git 運用の司令塔です.コミット作業の実行は **ops-runner エージェント**(軽量モデル)に委譲し,あなた自身は**判断**(意図・docs 更新の要否)・確認の仲介・結果の報告だけを行います(使用量節約のため,diff 読みや git 操作を自分では行わない.逆に価値判断は ops-runner にさせない). -## ステップ 1: 意図サマリの作成 (Intent) +## ステップ 1: 意図サマリと docs 要否の判断 (Intent & Docs Decision) -このセッションで行った作業を把握している場合は,以下を 1〜3 行で作る.把握していない場合(セッション開始直後の `/commit` 等)は「意図情報なし」とする. +このセッションで行った作業を把握している場合は,以下を作る(**判断はここで行う**): -- 何をなぜ変更したか(コミットメッセージの材料) -- コミットメッセージの品質を確実にしたい場合(重要な変更等)は,`.claude/rules/git-conventions.md` の書式でメッセージ全文を自分で確定させてよい +- **意図サマリ**(1〜3 行): 何をなぜ変更したか(コミットメッセージの材料).重要な変更なら `.claude/rules/git-conventions.md` の書式でメッセージ全文を確定させてもよい +- **docs 更新の要否**(3 択): 変更が API・データ構造・環境設定・開発計画の進捗・規約やルールに関わるかを,セッションの知識で判断する + - **更新済み**: 今回の変更に `docs/`・CLAUDE.md「開発進捗」・`docs/PROGRESS.md` の更新も含めてある + - **不要**: 該当しない + - **要**: 委譲する前に必要な更新を行う(内容に迷う場合はユーザーに確認する).docs を同じコミットに含めるため +- `.claude/commit-context.md` がある場合(`/implement` 経由)は,そこに記録された判断を正とし,改めて判断しない + +セッションを把握していない場合(起動直後の `/commit` 等)は「意図情報なし・要否は事後判断」とする. ## ステップ 2: 委譲 (Delegate) ops-runner エージェントを起動し,プロンプトに以下を含める: - 手順書: `.claude/skills/commit/reference.md` の「コミット実行手順」と `.claude/rules/git-conventions.md` を読んで従うこと -- ステップ 1 の意図サマリ(またはメッセージ全文) +- ステップ 1 の意図サマリ(またはメッセージ全文).意図情報なしの場合はその旨 - $ARGUMENTS(`push` / `merge` キーワードの有無を明示する) - 確認が必要な事態では停止して報告すること ## ステップ 3: 結果報告 (Report) - エージェントの報告(ブランチ・コミット SHA・メッセージ・PR URL 等)をユーザーに簡潔に伝える -- エージェントが返した警告(docs/・CLAUDE.md・`docs/PROGRESS.md` の更新漏れの可能性等)はそのまま表示し,判断はユーザーに委ねる +- **意図情報なしで委譲した場合**は,エージェントの「事実報告」(変更ファイルの分類)を見て docs 更新の要否を事後判断し,必要と思われれば「⚠ docs/・CLAUDE.md の開発進捗・`docs/PROGRESS.md` の更新が必要かもしれません」とユーザーに伝える(追加コミットで対応してよい) +- エージェントが返した警告(意図と diff の食い違い等)はそのまま表示し,判断はユーザーに委ねる - エージェントが「確認事項」で停止した場合は,ユーザーに確認し,回答を「承認済み」として添えて再委譲する ## 注意事項 (Notes) diff --git a/.claude/skills/commit/reference.md b/.claude/skills/commit/reference.md index 3c9ba35..0f3e0e7 100644 --- a/.claude/skills/commit/reference.md +++ b/.claude/skills/commit/reference.md @@ -19,29 +19,24 @@ 1. 変更内容から git-conventions のブランチ命名規則に従い,適切なプレフィックスと英単語 2〜4 語のブランチ名を決定する 2. `git checkout -b {ブランチ名}` で作業ブランチを作成する -### ステップ 2: docs/ 更新漏れチェック +### ステップ 2: ドキュメント関連の事実収集 -`.claude/commit-context.md` が存在し `docs_updated` が記録されている場合,このステップをスキップする. -ファイルが存在しない場合(`/implement` を経由していない場合),変更内容が以下に該当するにもかかわらず docs/ が更新されていないときは,最終報告の「警告」に「⚠ docs/ の更新が必要かもしれません」を含める(更新自体は行わない): +docs 更新の要否の**判断はしない**(司令塔が行う).以下の事実を最終報告の「事実報告」に含める: -- API やデータ構造の変更/環境設定の変更/開発計画の進捗に関わる変更/規約やルールに関わる変更 +- `.claude/commit-context.md` の有無と,あれば記録されたフラグ(`docs_updated` / `claude_md_updated` / `progress_md_updated`) +- 変更ファイルの分類: `docs/` 配下・`CLAUDE.md`・`docs/PROGRESS.md` のそれぞれを含むか,およびそれ以外の変更ファイル一覧 ### ステップ 3: コミットメッセージの生成 上位から渡された意図サマリ・引数と変更内容をもとに,git-conventions の「コミットメッセージ」書式で生成する.上位がメッセージ全文を確定して渡した場合はそのまま使う.意図サマリと実際の diff に食い違いがある場合は,diff を正としつつ食い違いを「警告」に含める. -### ステップ 4: CLAUDE.md / PROGRESS.md 更新漏れチェック - -`.claude/commit-context.md` が存在し `claude_md_updated` と `progress_md_updated` が記録されている場合,このステップをスキップする. -記録がなく,変更内容に対して CLAUDE.md の「開発進捗」(最新 1 行)や `docs/PROGRESS.md`(追記型フルログ)の更新が必要と思われる場合は「警告」に含める(更新自体は行わない). - -### ステップ 5: コミット +### ステップ 4: コミット 1. `git add` で関連ファイルをステージングする(CLAUDE.md / `docs/PROGRESS.md` の変更がある場合はそれも含める.`.env` やクレデンシャルファイルはステージングしない) 2. `git commit -m "{コミットメッセージ}"` でコミットする 3. `.claude/commit-context.md` が存在する場合は削除する -### ステップ 6: プッシュ・PR・マージ +### ステップ 5: プッシュ・PR・マージ 上位から渡された引数に以下のキーワードが含まれる場合のみ実行する(いずれも無ければスキップ).