Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 10480c9c02
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - [ ] Surprises & Discoveries: セクションが存在する(実装前は「なし」と記載) | ||
| - [ ] Decision Log: 設計判断が日付付きで記録されている | ||
| - [ ] Outcomes & Retrospective: セクションが存在する(実装前は「実装後に記載」と記載) |
There was a problem hiding this comment.
Surprises & Discoveries と Outcomes & Retrospective で「実装前は特定文言を記載」と求めている一方、同じチェックリストのフォーマット要件では「空セクションは見出しのみ(プレースホルダ説明なし)」を要求しており、作成者がどちらかを満たすともう一方を違反する状態になります。.agent/PLANS.md も空セクションは見出しのみを要求しているため、この矛盾は /validate-plan の判断基準を不安定にし、ExecPlan 作成フローで不要な差し戻しを発生させます。
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Pull request overview
このPRは、不具合解決(issue-resolver)と実行計画(exec-plan)の2つの新しいスキルを正式化し、OpenAI統合のためのエージェントインターフェース定義を追加するもの。.codex/ディレクトリ配下に新規スキル定義を追加し、既存の.claude/配下のissue-resolverスキルを更新して、Docker環境でのCLI実行、URL取得の制限外実行、エラー隠蔽禁止などの実行ルールを明確化している。
Changes:
- issue-resolverとexec-planの2スキルを
.codex/skills/配下に追加し、OpenAIエージェント向けYAML定義を含む完全なワークフロー仕様を提供 .claude/skills/issue-resolver/SKILL.mdを更新し、Docker環境での実行、URL取得戦略、エラー隠蔽禁止などの実行ルールを追加・明確化- ExecPlan品質チェックリストを
.codex/skills/exec-plan/references/に追加し、12セクション必須要件と非交渉要件を定義
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
.codex/skills/issue-resolver/agents/openai.yaml |
OpenAIエージェント向けのissue-resolverスキル表示名、説明、デフォルトプロンプトを定義 |
.codex/skills/issue-resolver/SKILL.md |
不具合解決スキルの完全な定義を追加(実行ルール、evo CLI参照、詳細ワークフロー含む) |
.codex/skills/exec-plan/references/quality-checklist.md |
ExecPlan品質検証用の12セクション必須項目、非交渉要件、フォーマット規則を定義 |
.codex/skills/exec-plan/agents/openai.yaml |
OpenAIエージェント向けのexec-planスキル表示名、説明、デフォルトプロンプトを定義 |
.codex/skills/exec-plan/SKILL.md |
実行計画スキルの完全な定義を追加(/create-plan、/validate-plan、/update-planコマンド含む) |
.claude/skills/issue-resolver/SKILL.md |
既存issue-resolverを更新し、実行ルール(Docker実行必須、URL取得戦略、エラー隠蔽禁止)を追加 |
|
|
||
| ### analyze-issue <URL|テキスト> | ||
| 1. URLならfetchで内容取得 | ||
| 1. URLなら最初から制限外実行で本文取得し、HTMLタグを除去したテキストのみを扱う: `curl -fsSL -A "Mozilla/5.0" "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を承認付きで実行 → 失敗時 `wget -qO- "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を同様に承認付きで実行 |
There was a problem hiding this comment.
このステップの記述が極端に長く(約500文字)、複数のコマンド、実行条件、エラー処理が1つの文に詰め込まれており、可読性が著しく低下している。以下に分割することを推奨する:(1) URL取得の基本方針、(2) curlコマンドの実行手順、(3) 失敗時のwgetへのフォールバック、(4) 取得後のテキスト処理。各要素を箇条書きまたは番号付きサブステップに分割することで、実行者が手順を追いやすくなる。
| 1. URLなら最初から制限外実行で本文取得し、HTMLタグを除去したテキストのみを扱う: `curl -fsSL -A "Mozilla/5.0" "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を承認付きで実行 → 失敗時 `wget -qO- "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を同様に承認付きで実行 | |
| 1. URLの場合は、次の手順で本文を取得する。 | |
| - 基本方針: 最初から制限外実行で本文を取得し、HTMLタグを除去したテキストのみを扱う。 | |
| - curl による取得: `curl -fsSL -A "Mozilla/5.0" "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を `require_escalated` で承認付き実行する。 | |
| - curl 失敗時の wget フォールバック: 上記と同じ PHP ワンライナーを用いて `wget -qO- "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を同様に `require_escalated` で実行する。 | |
| - 取得後テキスト処理: PHPワンライナー内で `strip_tags` によりHTMLタグを除去し、正規表現で空白を正規化したうえで `trim` したテキストのみを標準出力へ出力する。 |
| interface: | ||
| display_name: "不具合解決" | ||
| short_description: "不具合報告から修正完了までを一貫して進める" | ||
| default_prompt: "この不具合報告を分析し、再現手順を整理して原因仮説を最大3件示してください。原因判明後は先に調査報告(原因・影響範囲・修正方針案)を提示し、承認後にのみ修正へ進んでください。URL調査が必要な場合は最初から制限外実行で取得し、evo/DB確認はDockerコンテナ内で実行し、軽微な修正はExecPlan作成を省略して進め、問題が分かりにくい場合や修正が複雑な場合は先にexec-planを作成してください。いずれの場合も修正着手は調査報告への承認後に限定してください。エラー隠蔽を目的とした修正(例: `strpos()` へ渡る `null` を空文字へ変換して通すだけの対処)は行わず、原因データの発生源を修正してください。" |
There was a problem hiding this comment.
default_promptが極端に長い(約350文字)単一の文になっており、複数の指示事項が並列されている。これはプロンプト設計としては機能するが、YAMLファイルの可読性・保守性の観点から、論理的な区切りで改行を入れるか、複数のキーに分割することを推奨する。また、複数の条件分岐(「軽微な修正は」「問題が分かりにくい場合や」「いずれの場合も」)が混在しており、実行順序の優先度が不明瞭になっている。
| default_prompt: "この不具合報告を分析し、再現手順を整理して原因仮説を最大3件示してください。原因判明後は先に調査報告(原因・影響範囲・修正方針案)を提示し、承認後にのみ修正へ進んでください。URL調査が必要な場合は最初から制限外実行で取得し、evo/DB確認はDockerコンテナ内で実行し、軽微な修正はExecPlan作成を省略して進め、問題が分かりにくい場合や修正が複雑な場合は先にexec-planを作成してください。いずれの場合も修正着手は調査報告への承認後に限定してください。エラー隠蔽を目的とした修正(例: `strpos()` へ渡る `null` を空文字へ変換して通すだけの対処)は行わず、原因データの発生源を修正してください。" | |
| default_prompt: |- | |
| この不具合報告を分析し、再現手順を整理して原因仮説を最大3件示してください。 | |
| 原因が判明したら、まず調査報告(原因・影響範囲・修正方針案)を提示し、調査報告への承認が得られた場合にのみ修正へ進んでください。 | |
| URL調査が必要な場合は、最初から制限外実行で情報を取得してください。 | |
| evo/DBの確認はDockerコンテナ内で実行してください。 | |
| 軽微な修正の場合のみ、ExecPlanの作成を省略してそのまま修正に進んでください。 | |
| 問題が分かりにくい場合や修正が複雑な場合は、修正前にexec-planを作成してください。 | |
| いずれの場合も、修正着手は調査報告への承認後に限定してください。 | |
| エラー隠蔽を目的とした修正(例: `strpos()` へ渡る `null` を空文字へ変換して通すだけの対処)は行わず、原因データの発生源を修正してください。 |
| ## evo CLI(実用最小) | ||
|
|
||
| - `docker compose exec <app-service> php evo config:show <key>` | ||
| - `docker compose exec <app-service> php evo db:describe <table>` | ||
| - `docker compose exec <app-service> php evo db:count <table> --where=...` | ||
| - `docker compose exec <app-service> php evo db:query "SELECT ..."` | ||
| - `docker compose exec <app-service> php evo cache:clear` | ||
|
|
||
| 詳細リファレンスは `manager/includes/cli/README.md` を参照する。 | ||
| 本番接続情報や本番データを扱う前提は置かない。 |
There was a problem hiding this comment.
evo CLIセクションのコマンド例は、実際の使用時に必要な docker compose exec <app-service> php プレフィックスが省略されている。Workflowセクション(44行目以降)では一貫して docker compose exec <app-service> php evo 形式が使用されているため、このセクションでも同様の形式で統一すべき。実行ルール15でも「必ず Docker コンテナ内で実行する」と明記されており、この省略形は誤解を招く可能性がある。
| ## Workflow | ||
|
|
||
| ### analyze-issue <URL|テキスト> | ||
| 1. 入力が URL の場合は最初から制限外実行で本文取得し、HTMLタグを除去したテキストのみを扱う。`curl -fsSL -A "Mozilla/5.0" "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を承認付きで実行し、失敗時は `wget -qO- "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を同様に承認付きで実行する。取得テキストから事実情報(環境、手順、実際結果、期待結果)を抽出する。 |
There was a problem hiding this comment.
このステップの記述が極端に長く(約600文字)、複数のコマンド、実行条件、エラー処理、データ抽出処理が1つの文に詰め込まれており、可読性が著しく低下している。以下に分割することを推奨する:(1) URL取得の基本方針、(2) curlコマンドの実行手順、(3) 失敗時のwgetへのフォールバック、(4) 取得後のテキスト処理、(5) 情報抽出の観点。各要素を箇条書きまたは番号付きサブステップに分割することで、実行者が手順を追いやすくなる。
| 1. 入力が URL の場合は最初から制限外実行で本文取得し、HTMLタグを除去したテキストのみを扱う。`curl -fsSL -A "Mozilla/5.0" "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を承認付きで実行し、失敗時は `wget -qO- "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を同様に承認付きで実行する。取得テキストから事実情報(環境、手順、実際結果、期待結果)を抽出する。 | |
| 1. 入力が URL の場合は、次の方針と手順で本文を取得し、事実情報を抽出する。 | |
| - URL取得の基本方針 | |
| - 最初から制限外実行で HTML 本文を取得し、HTML タグを除去したテキストのみを扱う。 | |
| - curl コマンドによる本文取得 | |
| - `curl -fsSL -A "Mozilla/5.0" "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を承認付きで実行する。 | |
| - curl 失敗時の wget フォールバック | |
| - `wget -qO- "<URL>" | php -r '$h=stream_get_contents(STDIN); $t=strip_tags($h); $t=preg_replace("/\s+/u"," ",$t); echo trim($t), PHP_EOL;'` を同様に承認付きで実行する。 | |
| - 取得後のテキスト処理 | |
| - 上記 PHP ワンライナー内で HTML タグ除去と空白の正規化を行い、整形済みテキストのみを得る。 | |
| - 情報抽出の観点 | |
| - 取得テキストから事実情報(環境、手順、実際結果、期待結果)を抽出する。 |
This pull request introduces two new skills,
issue-resolverandexec-plan, to formalize and automate workflows for bug investigation, fix implementation, and complex task planning. The changes include detailed skill definitions, execution rules, workflow steps, and quality checklists. Additionally, agent interface descriptions are added for OpenAI integration. The most important changes are grouped below:New Skill Definitions and Workflows
.codex/skills/issue-resolver/SKILL.mdand.codex/skills/exec-plan/SKILL.mdto define comprehensive workflows for bug resolution and complex task planning. These documents specify execution rules, CLI commands, and step-by-step processes for investigation, reproduction, fix implementation, and archival. [1] [2]Quality Assurance and Checklist
.codex/skills/exec-plan/references/quality-checklist.md, detailing mandatory ExecPlan sections, non-negotiable requirements, anti-patterns, and formatting guidelines to ensure plan quality and completeness.Agent Interface Integration
.codex/skills/issue-resolver/agents/openai.yamland.codex/skills/exec-plan/agents/openai.yaml, enabling prompt-driven workflows and clear skill presentation in agent tools. [1] [2]Workflow and Rule Refinements
.claude/skills/issue-resolver/SKILL.mdto clarify execution rules, emphasize the use of Docker for CLI operations, streamline investigation and fix steps, and reinforce safe and efficient bug resolution practices.These changes establish robust, repeatable processes for bug handling and complex task execution, improve documentation and quality control, and enable seamless agent-driven operations for engineering teams.