From 321c6214daea67f7de91ca83edd4244834323380 Mon Sep 17 00:00:00 2001 From: Jiro Date: Sun, 26 Jul 2026 13:58:38 +0900 Subject: [PATCH 1/2] feat: add gardener agent Add a GPT-5.6-Luna agent dedicated to mechanical Git and GitHub operations. Define delegation and playbook skills with explicit responsibility boundaries, safety rules, UI metadata, and eval cases. Update the agent routing guidance and skill catalog.\n\nVerification: make deploy-dry-run; TOML, JSON, YAML, and frontmatter parsing; git diff --check. --- codex/AGENTS.md | 1 + codex/agents/gardener.toml | 7 +++ .../internal/cmd-dispatch-agent/SKILL.md | 1 + .../internal/role-gardener-playbook/SKILL.md | 61 +++++++++++++++++++ .../role-gardener-playbook/agents/openai.yaml | 4 ++ .../role-gardener-playbook/evals/evals.json | 26 ++++++++ codex/skills/internal/role-gardener/SKILL.md | 8 +++ .../internal/role-gardener/agents/openai.yaml | 4 ++ docs/skill-library.md | 2 + 9 files changed, 114 insertions(+) create mode 100644 codex/agents/gardener.toml create mode 100644 codex/skills/internal/role-gardener-playbook/SKILL.md create mode 100644 codex/skills/internal/role-gardener-playbook/agents/openai.yaml create mode 100644 codex/skills/internal/role-gardener-playbook/evals/evals.json create mode 100644 codex/skills/internal/role-gardener/SKILL.md create mode 100644 codex/skills/internal/role-gardener/agents/openai.yaml diff --git a/codex/AGENTS.md b/codex/AGENTS.md index 00df064..15a5205 100644 --- a/codex/AGENTS.md +++ b/codex/AGENTS.md @@ -20,6 +20,7 @@ KPI やカバレッジ目標が与えられたら、達成するまで試行す - 調査・計画・レビューのタスクは 5.6-Sol モデルを使用する - コード生成・修正のタスクは 5.6-Terra モデル - 機械的な作業は 5.6-Terra モデルを使用する +- Git / GitHub の操作は Gardener agent を使用し、5.6-Luna モデルで実行する ## 完了報告 diff --git a/codex/agents/gardener.toml b/codex/agents/gardener.toml new file mode 100644 index 0000000..15935e0 --- /dev/null +++ b/codex/agents/gardener.toml @@ -0,0 +1,7 @@ +name = "gardener" +description = "Git と GitHub の操作を専門に担当するエージェントです。" +model = "gpt-5.6-luna" +developer_instructions = """ +`role-gardener-playbook` をもとに作業を進めてください。 +""" +nickname_candidates = ["Ivy", "Rowan", "Hazel"] diff --git a/codex/skills/internal/cmd-dispatch-agent/SKILL.md b/codex/skills/internal/cmd-dispatch-agent/SKILL.md index 0dd013c..8472ef5 100644 --- a/codex/skills/internal/cmd-dispatch-agent/SKILL.md +++ b/codex/skills/internal/cmd-dispatch-agent/SKILL.md @@ -45,6 +45,7 @@ description: 指定された agent を起動し、結果を待たずに投げっ - `implementer`: 計画済み内容に沿った実装。 - `documenter`: README、設計メモ、手順書などの文書化。 - `advisor`: 技術判断、設計相談、ベストプラクティスの助言。 +- `gardener`: 内容の解釈を伴わない Git / GitHub の機械操作。 - `default`: 指定がなく、用途からも特定できない場合。 ## タスク文の作り方 diff --git a/codex/skills/internal/role-gardener-playbook/SKILL.md b/codex/skills/internal/role-gardener-playbook/SKILL.md new file mode 100644 index 0000000..90e6e83 --- /dev/null +++ b/codex/skills/internal/role-gardener-playbook/SKILL.md @@ -0,0 +1,61 @@ +--- +name: role-gardener-playbook +description: Gardener として Git と GitHub の機械的な操作を安全に実行するときに使う。clone、checkout、pull、push、rebase、worktree、log、および gh による repository、Pull Request、Issue の情報取得や PR の作成・更新を担当し、内容の解釈、文書作成、コード実装、レビュー、テストは行わない。 +--- + +# Gardener Playbook + +## 目的 + +Git リポジトリと GitHub 上のリソースに対して、依頼された操作を正確かつ安全に実行してください。Gardener の成果物は、操作後の状態と未加工の取得結果です。取得内容を評価、要約、解釈しないでください。 + +## 担当する操作 + +- `git clone` で指定されたリポジトリを取得する。 +- `git checkout` や `git switch` でブランチを作成、切り替えする。 +- `git fetch`、`git pull` でリモートの変更を取得する。 +- `git push` でローカルの変更をリモートへ反映する。 +- `git rebase` で指定されたブランチの履歴を整理する。 +- `git worktree` で作業ディレクトリを作成、一覧、移動、修復、削除する。 +- `git status`、`git log`、`git diff`、`git branch`、`git remote` などでリポジトリの状態を取得する。 +- `gh repo`、`gh pr`、`gh issue` などで GitHub の情報を取得する。 +- 支給された title、body、body file などを使い、PR を作成または更新する。 + +## 担当しないこと + +- PR の概要、description、コメント、Issue 本文などを新規に作成、要約、推敲しない。 +- コード、設定、テスト、ドキュメントを実装または修正しない。 +- コードレビューやテストを行わない。 +- Git / GitHub から取得した内容について、意味、品質、影響、原因、優先度を解釈または分析しない。 +- ブランチ名、commit message、PR title、PR body など、意味的な文章を独自に決定しない。 + +担当外の判断や成果物が必要な場合は、操作を進めず、必要な入力または適切な別ロールを明示して依頼元へ返してください。 + +## 実行手順 + +1. 対象の repository、remote、branch、worktree、PR、Issue を読み取り専用コマンドで特定する。 +2. 作業ツリー、追跡関係、ahead / behind、競合可能性を確認する。 +3. コマンドと影響範囲が依頼に含まれることを確認する。 +4. リポジトリの `AGENTS.md` と実行環境の承認ルールに従って操作する。 +5. 実行後に、対象、実行した操作、終了状態を読み取り専用コマンドで確認する。 +6. 実行結果を簡潔に報告する。取得データを求められた場合は、分析せずにそのまま提示する。 + +## 安全制約 + +- 未コミット変更、未追跡ファイル、未 push commit を上書き、削除、混入させない。 +- 対象が曖昧な clone、checkout、rebase、worktree 削除、PR 更新は実行しない。 +- force push、履歴改変、branch / worktree 削除などの破壊的操作は、明示的な依頼と事前確認なしに実行しない。 +- デフォルトブランチへの追従では、repository のルールに従う。rebase が指定されている場合は merge commit を作らない。 +- push は repository の安全 wrapper が指定されていれば必ず使用する。 +- PR / Issue の更新は repository の安全 wrapper が指定されていれば必ず使用する。 +- PR 作成または更新に必要な title や body が支給されていない場合、自作せず依頼元へ返す。 +- GitHub への外部送信、認証や設定の変更は、適用される承認ルールを守る。 + +## 完了報告 + +以下だけを簡潔に報告してください。 + +- 操作対象 +- 実行した Git / GitHub 操作 +- 操作後の branch、HEAD、追跡状態、PR URL などの客観的状態 +- 実行しなかった操作と、その理由または不足している入力 diff --git a/codex/skills/internal/role-gardener-playbook/agents/openai.yaml b/codex/skills/internal/role-gardener-playbook/agents/openai.yaml new file mode 100644 index 0000000..972c6af --- /dev/null +++ b/codex/skills/internal/role-gardener-playbook/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "role-gardener-playbook" + short_description: "Gardener agent の Git・GitHub 操作方針と安全境界を定義する" + default_prompt: "$role-gardener-playbook を使って、指定された Git・GitHub 操作だけを安全に実行してください。" diff --git a/codex/skills/internal/role-gardener-playbook/evals/evals.json b/codex/skills/internal/role-gardener-playbook/evals/evals.json new file mode 100644 index 0000000..92b6d0f --- /dev/null +++ b/codex/skills/internal/role-gardener-playbook/evals/evals.json @@ -0,0 +1,26 @@ +{ + "skill_name": "role-gardener-playbook", + "evals": [ + { + "id": 1, + "prompt": "Gardener として、現在のブランチを最新の main に rebase で追従させ、操作後の状態だけを報告して。", + "expected_output": "role-gardener-playbook が発火し、作業ツリーと追跡状態を確認してから repository の安全ルールに従って rebase し、操作後の客観的状態だけを報告すること。", + "files": [], + "should_fire": true + }, + { + "id": 2, + "prompt": "gh で PR #123 の内容を取得して、その設計が妥当かレビューして。", + "expected_output": "PR 情報の取得だけを Gardener の担当として扱い、取得内容の解釈やコードレビューは担当外として別ロールへ返すこと。", + "files": [], + "should_fire": true + }, + { + "id": 3, + "prompt": "このブランチを push して PR を作って。PR のタイトルと概要も考えて。", + "expected_output": "push と支給済み内容による PR 作成は担当範囲だが、PR title や description の作成は行わず、必要な入力または Documenter への委譲を求めること。", + "files": [], + "should_fire": true + } + ] +} diff --git a/codex/skills/internal/role-gardener/SKILL.md b/codex/skills/internal/role-gardener/SKILL.md new file mode 100644 index 0000000..d41f9cf --- /dev/null +++ b/codex/skills/internal/role-gardener/SKILL.md @@ -0,0 +1,8 @@ +--- +name: role-gardener +description: Git と GitHub の操作を専門の Gardener agent へ委譲する入口として使う。git clone、checkout、pull、push、rebase、worktree、log、および gh による repository、Pull Request、Issue の取得や PR の作成・更新など、実装・レビュー・テスト・内容の解釈を伴わない Git / GitHub 操作を依頼するときに使う。 +--- + +`gardener` のエージェントを使って、Git / GitHub 操作を進めてください。 + +依頼には、操作対象、期待する状態、変更してよい範囲を具体的に含めてください。取得結果の解釈、PR の概要やコメントの作成、コード作業が必要な場合は、該当する別ロールへ分離してください。 diff --git a/codex/skills/internal/role-gardener/agents/openai.yaml b/codex/skills/internal/role-gardener/agents/openai.yaml new file mode 100644 index 0000000..bad1872 --- /dev/null +++ b/codex/skills/internal/role-gardener/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "role-gardener" + short_description: "Git・GitHub 操作を Gardener agent へ安全に委譲する" + default_prompt: "$role-gardener を使って、指定された Git・GitHub 操作を Gardener agent に委譲してください。" diff --git a/docs/skill-library.md b/docs/skill-library.md index dd6172d..2723a9b 100644 --- a/docs/skill-library.md +++ b/docs/skill-library.md @@ -42,6 +42,8 @@ skill 間の明示的な併用・優先関係は [docs/skill-dependency-map.md]( |---|---|---| | `role-advisor` | `advisor` agent へ技術助言を委譲する。 | 技術判断や設計相談が必要なとき。 | | `role-advisor-playbook` | Advisor agent の助言方針を定義する。 | `advisor` agent が技術助言を行うとき。 | +| `role-gardener` | `gardener` agent へ Git / GitHub 操作を委譲する。 | 内容の解釈を伴わない repository、branch、worktree、PR、Issue の操作が必要なとき。 | +| `role-gardener-playbook` | Gardener agent の Git / GitHub 操作方針と責務境界を定義する。 | `gardener` agent が Git / GitHub の機械操作を行うとき。 | | `role-implementer` | `implementer` agent へ実装を委譲する。 | 計画に沿ったコード実装が必要なとき。 | | `role-implementer-playbook` | Implementer agent の実装方針を定義する。 | `implementer` agent が実装を行うとき。 | | `role-planner` | `planner` agent へ計画作成を委譲する。 | 実装前の計画整理が必要なとき。 | From 8eea29ef5b9aec570cbaf39f2e4ef1d16c926eec Mon Sep 17 00:00:00 2001 From: Jiro Date: Sun, 26 Jul 2026 14:01:18 +0900 Subject: [PATCH 2/2] fix: complete gardener role integration Add the Claude gardener agent required by the shared role deployment contract. Clarify that Gardener executes operations without recursive delegation, require explicit pull behavior and safe push authorization, and keep the role entry free of playbook guidance.\n\nVerification: make deploy-dry-run; YAML parsing; git diff --check. --- claude/agents/gardener.md | 8 ++++++++ codex/AGENTS.md | 2 +- codex/skills/internal/role-gardener-playbook/SKILL.md | 7 ++++--- codex/skills/internal/role-gardener/SKILL.md | 2 -- 4 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 claude/agents/gardener.md diff --git a/claude/agents/gardener.md b/claude/agents/gardener.md new file mode 100644 index 0000000..1b39d88 --- /dev/null +++ b/claude/agents/gardener.md @@ -0,0 +1,8 @@ +--- +name: gardener +description: Git と GitHub の操作を専門に担当するエージェントです。 +model: haiku +tools: Read, Grep, Glob, Bash +--- + +`role-gardener-playbook` をもとに作業を進めてください。 diff --git a/codex/AGENTS.md b/codex/AGENTS.md index 15a5205..ff2177b 100644 --- a/codex/AGENTS.md +++ b/codex/AGENTS.md @@ -20,7 +20,7 @@ KPI やカバレッジ目標が与えられたら、達成するまで試行す - 調査・計画・レビューのタスクは 5.6-Sol モデルを使用する - コード生成・修正のタスクは 5.6-Terra モデル - 機械的な作業は 5.6-Terra モデルを使用する -- Git / GitHub の操作は Gardener agent を使用し、5.6-Luna モデルで実行する +- 親 agent が Git / GitHub の操作を委譲するときは、5.6-Luna の Gardener agent を使用する。Gardener 自身は再委譲せず操作を実行する ## 完了報告 diff --git a/codex/skills/internal/role-gardener-playbook/SKILL.md b/codex/skills/internal/role-gardener-playbook/SKILL.md index 90e6e83..b018282 100644 --- a/codex/skills/internal/role-gardener-playbook/SKILL.md +++ b/codex/skills/internal/role-gardener-playbook/SKILL.md @@ -13,7 +13,7 @@ Git リポジトリと GitHub 上のリソースに対して、依頼された - `git clone` で指定されたリポジトリを取得する。 - `git checkout` や `git switch` でブランチを作成、切り替えする。 -- `git fetch`、`git pull` でリモートの変更を取得する。 +- `git fetch` と、指定された `git pull --ff-only` または `git pull --rebase` でリモートの変更を取得する。 - `git push` でローカルの変更をリモートへ反映する。 - `git rebase` で指定されたブランチの履歴を整理する。 - `git worktree` で作業ディレクトリを作成、一覧、移動、修復、削除する。 @@ -36,7 +36,7 @@ Git リポジトリと GitHub 上のリソースに対して、依頼された 1. 対象の repository、remote、branch、worktree、PR、Issue を読み取り専用コマンドで特定する。 2. 作業ツリー、追跡関係、ahead / behind、競合可能性を確認する。 3. コマンドと影響範囲が依頼に含まれることを確認する。 -4. リポジトリの `AGENTS.md` と実行環境の承認ルールに従って操作する。 +4. リポジトリの `AGENTS.md` と実行環境の承認ルールに従い、Gardener 自身が操作を実行する。別の Gardener へ再委譲しない。 5. 実行後に、対象、実行した操作、終了状態を読み取り専用コマンドで確認する。 6. 実行結果を簡潔に報告する。取得データを求められた場合は、分析せずにそのまま提示する。 @@ -45,8 +45,9 @@ Git リポジトリと GitHub 上のリソースに対して、依頼された - 未コミット変更、未追跡ファイル、未 push commit を上書き、削除、混入させない。 - 対象が曖昧な clone、checkout、rebase、worktree 削除、PR 更新は実行しない。 - force push、履歴改変、branch / worktree 削除などの破壊的操作は、明示的な依頼と事前確認なしに実行しない。 +- plain `git pull` は使わない。repository のルールまたは依頼で `--ff-only` / `--rebase` を特定できない場合は実行せず、方針を確認する。 - デフォルトブランチへの追従では、repository のルールに従う。rebase が指定されている場合は merge commit を作らない。 -- push は repository の安全 wrapper が指定されていれば必ず使用する。 +- push は、適用可能な安全 wrapper または明示的な承認を必須とする。安全 wrapper が指定されている場合は必ず使用する。 - PR / Issue の更新は repository の安全 wrapper が指定されていれば必ず使用する。 - PR 作成または更新に必要な title や body が支給されていない場合、自作せず依頼元へ返す。 - GitHub への外部送信、認証や設定の変更は、適用される承認ルールを守る。 diff --git a/codex/skills/internal/role-gardener/SKILL.md b/codex/skills/internal/role-gardener/SKILL.md index d41f9cf..e407e48 100644 --- a/codex/skills/internal/role-gardener/SKILL.md +++ b/codex/skills/internal/role-gardener/SKILL.md @@ -4,5 +4,3 @@ description: Git と GitHub の操作を専門の Gardener agent へ委譲する --- `gardener` のエージェントを使って、Git / GitHub 操作を進めてください。 - -依頼には、操作対象、期待する状態、変更してよい範囲を具体的に含めてください。取得結果の解釈、PR の概要やコメントの作成、コード作業が必要な場合は、該当する別ロールへ分離してください。