| name | codex |
| description | Codex CLI(OpenAI)を使用してコードや文言について相談・レビューを行う。
トリガー: "codex", "codexと相談", "codexに聞いて"
使用場面: (1) コードレビュー、(2) 設計の相談、(3) バグ調査、(4) 解消困難な問題の調査
対象外: 「隣の Codex / コーデックス」「デュエル」「疎通確認」「agent-duel」
のように side-by-side WezTerm pane との通信を指す場合は agent-duel スキルを使う。
|
Codex
位置付け(external-llm との関係)
Codex の呼び出しは状況に応じて 2 経路ある:
| 状況 | 推奨 |
|---|
3LLM アンサンブル並列レビュー(/implement ブロック5、/review-docs、/investigate-bug) | /external-llm 経由(Bash 並列発火 + flock 排他) |
| 個別の単発相談("このコードどう?" "この設計の弱点教えて") | 本スキルで直接呼ぶ |
| 認証チェック・トラブル対応 | 本スキル(後述のトークン期限チェックを使う) |
3LLM 並列時は external-llm/SKILL.md と scripts/run.sh が flock /var/lib/external-llm/codex.lock で同時起動を1に制限する(refresh_token_reused 競合防止)。本スキルで直接呼ぶ場合も、必要に応じて同じロックを併用すべし。
実行環境
- CLI:
codex(dev-adminにインストール済み)
- モデル: gpt-5.4-codex(デフォルト)、
-m で変更可
- 認証: OAuth(
codex auth login)。~/.codex/auth.json にトークン保存
- 制約: Synologyカーネルが seccomp 非対応のため
--full-auto 単体では動作しない(方式Aなら回避可能)
認証プリフライト(必須)
codex exec は非対話モードでトークンリフレッシュに失敗することがある(refresh_token_reused エラー)。
実行前に必ず以下のチェックを行い、失敗時はユーザーに再認証を依頼する。
python3 -c "
import json, time, base64, sys
try:
with open('$HOME/.codex/auth.json') as f:
d = json.load(f)
at = d.get('tokens', {}).get('access_token', '')
parts = at.split('.')
if len(parts) < 2:
print('ERROR: no access_token'); sys.exit(1)
payload = json.loads(base64.urlsafe_b64decode(parts[1] + '=='))
exp = payload.get('exp', 0)
if exp < time.time():
print(f'ERROR: access_token expired ({int((time.time() - exp) / 3600)}h ago)'); sys.exit(1)
print(f'OK: token valid for {int((exp - time.time()) / 3600)}h')
except Exception as e:
print(f'ERROR: {e}'); sys.exit(1)
"
チェック失敗時のメッセージ:
Codex の認証トークンが期限切れです。以下を実行して再認証してください:
! codex auth login
「認証切れ」と推測で報告しない。必ずこのチェックスクリプトで確認する。
実行方式
方式A: プロンプト埋め込み(デフォルト)
情報をプロンプトに直接埋め込む。ファイルアクセス不要のためseccomp制約を回避できる。
/implement ブロック5の自動レビューでは常にこの方式。
codex exec --full-auto --sandbox read-only --cd /workspace/apps/market-collector \
"${PROMPT}
確認や質問は不要です。具体的な提案・修正案・コード例まで自主的に出力してください。"
方式B: サンドボックス無効化(手動用)
Codexにファイルシステムへの直接アクセスを許可する。バグ調査等のアドホック利用に限定。
codex exec --dangerously-bypass-approvals-and-sandbox --cd /workspace/apps/market-collector \
"まず対象ファイルをcatで読み込んでから分析してください。${PROMPT}
確認や質問は不要です。具体的な提案・修正案・コード例まで自主的に出力してください。"
リスク: 任意コマンド実行可能(ただしDockerコンテナ内、git pushトークンなし、.secretsはtmpfsマスク)
選択基準
- 自動レビュー(/implement) → 常にA
- 手動: 情報を埋め込める → A / 広範囲の探索が必要 → B