Back to skills
SKILL.md
Review Poll
ASecuritycodex auto-review (chatgpt-codex-connector[bot]) の reactions / reviews を polling して PASS / RETRY / BACK_FALLBACK を判定する。GitHub 限定。
- 15 stars
- 0 votes
- 0 copies
- 0 views
- Added October 1, 2026
Works with
Security analysis
100/100npx -y skills add apokamo/kaji --skill review-poll --agent claude-codeAre you the author of Review Poll?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/apokamo-review-poll)---
description: codex auto-review (chatgpt-codex-connector[bot]) の reactions / reviews を polling して PASS / RETRY / BACK_FALLBACK を判定する。GitHub 限定。
name: review-poll
exec_script: kaji_harness.scripts.review_poll_entry
---
# Review Poll
GitHub `chatgpt-codex-connector[bot]` (id `199175422`) の auto-review シグナルを polling し、
verdict を出力する skill。`review` skill との二重起動を避け、auto-review クレジット不足時のみ
`BACK_FALLBACK` 経由で既存 `review` skill (codex agent) に fallback させる。
本 skill は LLM agent を起動しない deterministic skill であり、`kaji_harness.scripts.review_poll_entry`
module を直接 subprocess 実行する。entry module が env から PR 情報を解決し、polling 本体
`kaji_harness.scripts.codex_review_poll` に委譲する。
起動経路は 2 系統あり、いずれも同じ entry module に合流する:
- **builtin workflow(`dev` / `dev-thorough` / `docs`)**:
各 YAML が `exec: [kaji, pr, review-poll]` で installed `kaji` CLI 経由で起動し、
CLI 側 (`kaji pr review-poll`) が同 entry module(`review_poll_entry.main`)へ委譲する。
dispatch の正本は YAML 側の `exec` step であり、agent / model / effort はスキーマレベルで
指定不可(指定すると `kaji validate` が reject)。対象 repo の Python 環境ではなく installed
`kaji` CLI 経由で起動するため可搬性が高い。
- **skill 単体起動・再利用**: frontmatter の `exec_script: kaji_harness.scripts.review_poll_entry`
が契約となり、harness が同 entry module を ``python -m`` で subprocess 実行する。
どちらの経路でも、入力(env)/ verdict 仕様の正本は entry module(`review_poll_entry`)であり、
本ファイルの記述はその契約のミラーである。
## いつ使うか
| タイミング | このスキル |
|-----------|-----------|
| PR 作成後、codex auto-review が走っている GitHub 環境 | ✅ 必須 |
| `provider.type='local'` 配下 | ❌ ABORT verdict |
| `review-poll` で `BACK_FALLBACK` を受けた場合 | 既存 `review` skill (codex agent) に進む |
**ワークフロー内の位置**: i-pr → [PR 作成] → **review-poll**(builtin workflow では `exec` step として起動)→ (PASS=close / RETRY=pr-fix / BACK_FALLBACK=review fallback)
## 入力(harness が env として注入)
| env 変数 | 必須 | 説明 |
|---------|------|------|
| `KAJI_ISSUE_ID` | ✅ | PR 解決の検索キー |
| `KAJI_PROVIDER_TYPE` | ✅ | `github` 以外は ABORT |
| `KAJI_GIT_REMOTE` | ✅ | owner/repo 解決 (`git remote get-url`) |
| `KAJI_WORKTREE_DIR` | ✅ | `git remote get-url` 実行 cwd |
| `KAJI_PR_ID` | 任意 | harness 側で解決済みの場合のみ。未設定なら `kaji pr list` で取得 |
これらの env は entry module(`review_poll_entry`)が正本として解釈する。builtin workflow の
`exec` step は `agent` / `model` / `effort` をスキーマで拒否するため、これらを指定する余地はない。
## 検出ロジック(仕様)
| 観測 | verdict |
|------|---------|
| bot による `+1` reaction かつ `+1.created_at >= head_committed_at` (freshness guard) | `PASS` |
| bot による COMMENTED review (body は `body.lstrip().startswith("### 💡 Codex Review")` で判定) かつ `commit_id == head_sha` | `RETRY` |
| `NO_REACTION_TIMEOUT_SEC` (60s) 経過しても上記いずれも観測されず(stale `+1` のみ存在も含む) | `BACK_FALLBACK` |
| `IN_PROGRESS_TIMEOUT_SEC` (1800s) 経過しても結論が出ない、または GitHub API 連続失敗 | `ABORT` |
完了済み COMMENTED review は reactions API では検出できない(reactions は現在値のみ)が、
reviews API は履歴を返すため `commit_id == head_sha` で workflow 起動前の auto-review を
検出可能(PR #176 シナリオ)。
bot 識別は **id 一致**(`199175422`)を主、login を副チェックにする。
## 運用パラメータ
`kaji_harness/scripts/codex_review_poll.py` の定数:
| 名前 | 値 | 用途 |
|------|-----|------|
| `POLL_INTERVAL_SEC` | 10 | GitHub API 呼び出し間隔 |
| `NO_REACTION_TIMEOUT_SEC` | 60 | bot reaction 無しのまま経過 → `BACK_FALLBACK` |
| `IN_PROGRESS_TIMEOUT_SEC` | 1800 | `eyes` 観測後の全体 cap → `ABORT` |
| `EYES_GRACE_SEC` | 10 | `eyes` 消失後の伝搬待ち |
## Verdict 出力
entry module / polling 本体が `---VERDICT---` ブロックを stdout に出力する:
| status | 条件 |
|--------|------|
| PASS | bot `+1` reaction を観測 |
| RETRY | 現在 head に対する bot COMMENTED review を観測 |
| BACK_FALLBACK | timeout までいずれも観測されず → `review` step に fallback |
| ABORT | provider mismatch / PR 未解決 / head 情報欠落 / remote url parse 失敗 / GitHub API 連続失敗 / IN_PROGRESS_TIMEOUT 超過 |
deterministic script のため verdict 出力後は **必ず `return 0`** で終了する。catastrophic 失敗
(`gh` CLI 不在 / 通信不能等)は raise させ、harness が `ScriptExecutionError` で fail-loud
扱いとする(Issue #204 設計書 § exit code と verdict の優先順位)。
> **規約**: 本 skill 出力に auto-close hazard pattern(`Clos(e[sd]?|ing)` /
> `Fix(e[sd]|ing)?` / `Resolv(e[sd]?|ing)` / `Implement(s|ing|ed)?` の直後 `#[0-9]`)を
> 書かない。
Attribution
Comments
Loading comments…