[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C4SFSFZP9JNN3YW6YPQ8GP":3,"skill-same:01M6C4SFSFZP9JNN3YW6YPQ8GP":91},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":63,"commitSha":64,"skillDirectory":65,"forksCount":66,"repositoryHtmlUrl":67,"repositoryHomepageUrl":6,"ownerHtmlUrl":68,"ownerBlogUrl":69,"ownerDescription":70,"updatedAt":71,"install":72,"resources":84},"01M6C4SFSFZP9JNN3YW6YPQ8GP","harness-loop",null,"HAR: Codex-native long-running loop runner. Uses a real background runner that executes one ready batch per cycle through Breezing by default, with status\u002Fstop controls. Trigger: long-running, loop, autonomous, background, Codex. Do NOT load for: one-shot implementation, normal review, release.","Chachamaru127\u002Fclaude-code-harness","Chachamaru127","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96473544?v=4","01M6C4N084DDDEK9SJPGFG9H9M","Chachamaru","01M6C4N0CCNFST9P8C7EJNVH42",3205,"MIT","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fskills-codex\u002Fharness-loop\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"harness","harness loop","loop","read","normal","loops","executor","end","worker","cycle","runner","default","breezing","ready","orchestrator","autonomous","review","delegate","work","Bash","execution","ci","batch","release","run","core","workflow","codex","2026-11-10 10:12:30",false,"---\nname: harness-loop\ndescription: \"HAR: Codex-native long-running loop runner. Uses a real background runner that executes one ready batch per cycle through Breezing by default, with status\u002Fstop controls. Trigger: long-running, loop, autonomous, background, Codex. Do NOT load for: one-shot implementation, normal review, release.\"\ndescription-en: \"HAR: Codex-native long-running loop runner. Uses a real background runner that executes one ready batch per cycle through Breezing by default, with status\u002Fstop controls. Trigger: long-running, loop, autonomous, background, Codex. Do NOT load for: one-shot implementation, normal review, release.\"\ndescription-ja: \"HAR: Codex 専用の長時間ループ実行。実際のバックグラウンドランナーが ready batch を Breezing で進め、status \u002F stop で監視できる。長時間、loop、ループ、autonomous、background、Codex で起動。\"\nkind: workflow\npurpose: \"Run long-lived Codex ready-batch execution loops\"\ntrigger: \"long-running, loop, autonomous, background, Codex\"\nshape: delegate\nrole: orchestrator\nbase: harness-work\npair: harness-sync\nowner: harness-core\nsince: \"2026-05-05\"\nallowed-tools: [\"Read\", \"Bash\"]\nargument-hint: \"[all|TASK|START-END|START..END] [--max-cycles N] [--max-workers N|max] [--executor breezing|task] [--pacing worker|ci|plateau|night]\"\ndisable-model-invocation: true\n---\n\n# Harness Loop\n\nCodex 版の `harness-loop` は、説明だけの擬似ループではなく、\n**実際にバックグラウンドで回るランナー**を起動する。\n\n## ひとことで\n\n`$harness-loop` は、1 回だけの実装依頼ではなく、\n「今すぐ実行できる未完了タスクのまとまりを、Breezing で自動実行し続ける当番」を起動する入口。\n\nここでいう `ready batch` は、Depends が満たされていて、今すぐ並列実行できる `cc:TODO` \u002F `cc:WIP` のまとまり。\n1 cycle は 1 task ではなく、原則として 1 ready batch を処理する。\n\n## たとえると\n\n人が横でずっと見張る代わりに、\n「同時に進められる作業をまとめて見つける → Breezing に任せる → 結果を確認する → 次のまとまりへ進む」\nを繰り返す監督係を、裏で常駐させるイメージ。\n\n## Quick Reference\n\n| 入力 | 動作 |\n|------|------|\n| `$harness-loop all` | 未完了タスク全体を長時間ループで開始 |\n| `$harness-loop 41.1-41.4` | 範囲を絞って開始 |\n| `$harness-loop JLB3R-02..JLB3R-08` | Plans.md の task ID 順で範囲を絞って開始 |\n| `$harness-loop all --max-cycles 3` | 最大 3 サイクルで停止 |\n| `$harness-loop all --max-workers 4` | 1 cycle の ready batch を最大 4 worker までに制限 |\n| `$harness-loop all --max-workers max` | ready batch 内で実行可能なタスク数を上限として並列化 |\n| `$harness-loop all --plan roadmap` | named Plans の `roadmap` を対象にループ実行 |\n| `$harness-loop all --executor task` | 旧来の 1 task per cycle local worker 実行へ逃がす |\n| `$harness-loop all --pacing night` | サイクル間の待機を長めにする |\n| `$harness-loop status` | 現在の実行状況を確認 |\n| `$harness-loop stop` | 進行中ジョブを止めてループ停止要求を出す |\n\n## 実行コマンド\n\n### 開始\n\n```bash\nharness codex-loop start all\n```\n\n範囲指定:\n\n```bash\nharness codex-loop start 41.1-41.4 --max-cycles 5 --pacing worker\nharness codex-loop start JLB3R-02..JLB3R-08 --max-cycles 5 --pacing worker\nharness codex-loop start all --max-workers max --pacing worker\nharness codex-loop start all --plan roadmap --max-cycles 5\nharness codex-loop start all --executor task --max-cycles 5\n```\n\n`START..END` は、`Plans.md` に並んでいる task ID をそのまま使う範囲指定。\n英字やハイフンを含む task ID は `..` を優先する。\n`41.1-41.4` のような従来の数値レンジも引き続き使える。\n\n`--max-workers` は、Breezing が 1 cycle で同時に動かす worker 数の上限。\n`max` は、選択範囲内で Depends が満たされた ready task の数をそのまま上限にする。\n`--executor task` は、Breezing ではなく local worker に 1 task だけ渡す互換用の逃げ道。\n問題切り分けや、並列実行したくない危険な作業で使う。\n複数 Plans.md がある repo では、長時間 run の起動時に `--plan NAME` を明示する。\nrunner は開始時に解決した Plans file を cycle 間で保持するため、途中で active plan を切り替えない。\n\n起動前に、選択済み plan の目的、担当範囲、DoD、spec、検証証拠、原依頼と承認の参照を確認する。状態確認だけの依頼で `start` を呼ばない。\n再開時は最新の run state と選択済み plan を読み、決定と理由、失敗履歴、残る判断、直前の advisor response を回収する。助言で元の契約や承認境界を置き換えない。\n不足は読み取りで補い、軽微な仮定を明示する。承認済み可逆作業は再確認せず進め、保護操作や `STOP` は既定の停止条件を守る。\n起動成功は作業完了の証拠ではない。`status`、job の実結果、DoD と review の証拠を照合して報告する。必須チェック後の追加検証は新しい変更、失敗、未解決の懸念がある場合に限る。\n\n### 状態確認\n\n```bash\nharness codex-loop status\nharness codex-loop status --json\n```\n\n### 停止\n\n```bash\nharness codex-loop stop\n```\n\n## どう動くか\n\n1. project root の `.claude\u002Fstate\u002Fcodex-loop\u002F` に Harness loop の実行状態を書き出す\n2. 受け取った selection を Plans.md から正規化する\n3. Plans.md から Depends が満たされた `cc:TODO` \u002F `cc:WIP` を集め、ready batch を作る\n4. `--max-workers` で ready batch の同時実行数を制限する\n5. 既定では Breezing executor が ready batch を Lead \u002F Worker \u002F Reviewer 分離で実行する\n6. `--executor task` の時だけ、互換用 local worker が 1 task per cycle で `codex exec` を起動する（`CODEX_LOOP_TASK_DRIVER=companion` の時だけ `bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcodex-companion.sh\" task --background --write ...` を使う）\n7. 高リスク task \u002F 2 回目失敗 \u002F plateau 直前では advisor consult を挟む\n8. ready batch 完了後に review \u002F checkpoint \u002F plateau 判定を行う\n9. まだ対象タスクが残っていれば、待機後に次サイクルへ進む\n\n## Realtime Handoff \u002F Silence Policy\n\nCodex `0.123.0` 以降の background agent は realtime handoff で transcript delta を受け取れる。\nこの delta は「状況把握用の追記」であり、毎回ユーザーへ返答する合図ではない。\n\nひとことで: background agent は、必要な時だけ報告し、何も判断が変わらない時は明示的に沈黙する。\n\nたとえると、見張り役が廊下でずっと実況するのではなく、異常・完了・判断待ちだけを知らせる形。\n\n報告してよいタイミング:\n\n- loop 開始、停止、`already running`、`stop` 受理など、ユーザー操作に関わる lifecycle 境界\n- 1 ready batch cycle の最終結果、commit、`RESULT: APPROVED` \u002F `RESULT: BLOCKED`\n- Breezing Lead が task 完了を progress feed としてまとめて出す時\n- task が blocked、validation failure、review `REQUEST_CHANGES`、plateau、advisor `STOP` で止まる時\n- user が `status` を実行した時、または明示的に途中状況を聞いた時\n- advisor \u002F reviewer drift、contract readiness failure など、放置すると品質判定がずれる時\n\n沈黙するタイミング:\n\n- transcript delta を受け取っただけで、task \u002F review \u002F advisor の状態が変わっていない時\n- `runner.log` \u002F `jobs\u002F*.log` に既に残る細かな stdout だけが増えた時\n- `pacing` 待機中で、次 cycle まで新しい判断材料がない時\n\n途中報告の頻度:\n\n- default は「1 ready batch cycle につき最終報告 1 回」。\n- Breezing の task-level progress feed は、batch 内の完了数が動いた時だけ出す。\n- 長い cycle でも、material state change がない限り heartbeat は出さない。\n- 詳細な流れは `harness codex-loop status --json` と project root の `.claude\u002Fstate\u002Fcodex-loop\u002Frunner.log` に寄せ、会話側には要点だけ出す。\n\nAdvisor \u002F Reviewer drift との関係:\n\n- silence policy は drift 検知を弱めるためのものではない。\n- `advisor-request.v1` に response がない、`review-result.v1` が返らない、contract が未承認などの異常は必ず state \u002F log に残し、必要ならユーザーへ報告する。\n- Advisor は `PLAN` \u002F `CORRECTION` \u002F `STOP` の相談役、Reviewer は最終品質判定役のまま分離する。\n\n## pacing\n\n| 値 | 用途 | 待機秒数 |\n|----|------|---------|\n| `worker` | 通常の開発ループ | 270 |\n| `ci` | 短めに確認したい時 | 270 |\n| `plateau` | 行き詰まり気味の再試行 | 1200 |\n| `night` | 長めの放置実行 | 3600 |\n\n## State Path Policy\n\nCodex 版 `harness-loop` は、Codex native の会話・実行キャッシュと、Harness が共有する project state を分けて扱う。\n\n- **Harness 共通 state**: project root の `.claude\u002Fstate\u002F` 配下に置く。Claude 側の advisor \u002F review \u002F checkpoint と共有するため、`harness codex-loop status` もここを読む。\n- **Codex loop runner state**: project root の `.claude\u002Fstate\u002Fcodex-loop\u002F` 配下に置く。これは「Codex 全体の正本」ではなく、Harness loop runner の job \u002F cycle \u002F log 用 state。\n- **Codex native state**: `${CODEX_HOME:-~\u002F.codex}` 配下に残る Codex 自身の thread \u002F transcript \u002F cache。Harness loop の task status、advisor history、review result の正本にはしない。\n- **禁止**: `.Codex\u002F` や `~\u002F.Codex` を正本 path として案内しない。大文字 `Codex` ディレクトリは historical drift と見なす。\n\nつまり、`.claude\u002Fstate\u002Fcodex-loop\u002F` は「この project の Harness loop state」であり、Codex native state 全体の固定保存先ではない。\n\n## 状態ファイル\n\n以下はすべて project root 基準。\n\n- `.claude\u002Fstate\u002Fcodex-loop\u002Frun.json`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fcycles.jsonl`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Frunner.log`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fcurrent-job.json`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fjobs\u002F*.json`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fjobs\u002F*.log`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fjobs\u002F*.out`\n- `.claude\u002Fstate\u002Fadvisor\u002Fhistory.jsonl`\n- `.claude\u002Fstate\u002Fadvisor\u002Flast-request.json`\n- `.claude\u002Fstate\u002Fadvisor\u002Flast-response.json`\n- `.claude\u002Fstate\u002Flocks\u002Fcodex-loop.lock.d`\n\n## Advisor Consult\n\nAdvisor は「代わりに実装する役」ではなく、「次の一手だけ返す相談役」。\nloop では次の 3 箇所でだけ呼ぶ。\n\n| タイミング | reason_code | 何をするか |\n|-----------|-------------|-----------|\n| 高リスク task の初回実行前 | `high-risk-preflight` | 先に固める観点を聞く |\n| 同じ原因の 2 回目失敗後 | `retry-threshold` | 方針変更か局所修正かを聞く |\n| plateau による停止直前 | `plateau-pre-escalation` | 本当に止めるべきかを聞く |\n\ndecision は 3 種だけ。\n\n| decision | loop の扱い |\n|----------|-------------|\n| `PLAN` | advice を次の executor prompt 先頭に足して再実行 |\n| `CORRECTION` | 局所修正の指示として再実行 |\n| `STOP` | loop を停止し、理由を state と runner.log に残す |\n\n同じ trigger は `trigger_hash = task_id + reason_code + normalized_error_signature` で 1 回だけ相談する。\n相談回数は task ごとに最大 3 回で、それ以上はユーザー判断に上げる。\n\n## 注意点\n\n- これは **本当に裏で動く**。説明だけ返して終わるスキルではない。\n- 同時に 2 本は起動できない。既に走っている場合は `already running` で止まる。\n- 既定 executor は Breezing。旧来の 1 task per cycle 挙動が必要な時だけ `--executor task` を使う。\n- 失敗したタスクを無理に飛ばして次へ進めるのではなく、基本はその場で止まって理由を残す。\n- `status` と `runner.log` を見れば、今どこで止まっているか追いやすい。\n\n## 具体例\n\n「Phase 41 の残タスクを、今日の間は自動で回したい」なら:\n\n```bash\nharness codex-loop start 41.1-41.4 --max-cycles 8 --max-workers max --pacing worker\n```\n\n途中で様子を見る:\n\n```bash\nharness codex-loop status\n```\n\n夜になって止めたい:\n\n```bash\nharness codex-loop stop\n```\n\n## なぜこの形か\n\nCodex では Claude の `\u002Floop` と同じ wake-up 機構をそのまま使えない。\nその代わり、**Codex loop runner** を土台にして、\nHarness 側で状態管理と再入制御を持ち、実作業は Breezing の batch 実行に寄せる。\nそうすると、長時間タスクでも「止める」「再開する」「今の状態を見る」が素直になり、\n依存関係を満たした作業だけを安全にまとめて進められる。\n","# Harness Loop\n\nCodex 版の `harness-loop` は、説明だけの擬似ループではなく、\n**実際にバックグラウンドで回るランナー**を起動する。\n\n## ひとことで\n\n`$harness-loop` は、1 回だけの実装依頼ではなく、\n「今すぐ実行できる未完了タスクのまとまりを、Breezing で自動実行し続ける当番」を起動する入口。\n\nここでいう `ready batch` は、Depends が満たされていて、今すぐ並列実行できる `cc:TODO` \u002F `cc:WIP` のまとまり。\n1 cycle は 1 task ではなく、原則として 1 ready batch を処理する。\n\n## たとえると\n\n人が横でずっと見張る代わりに、\n「同時に進められる作業をまとめて見つける → Breezing に任せる → 結果を確認する → 次のまとまりへ進む」\nを繰り返す監督係を、裏で常駐させるイメージ。\n\n## Quick Reference\n\n| 入力 | 動作 |\n|------|------|\n| `$harness-loop all` | 未完了タスク全体を長時間ループで開始 |\n| `$harness-loop 41.1-41.4` | 範囲を絞って開始 |\n| `$harness-loop JLB3R-02..JLB3R-08` | Plans.md の task ID 順で範囲を絞って開始 |\n| `$harness-loop all --max-cycles 3` | 最大 3 サイクルで停止 |\n| `$harness-loop all --max-workers 4` | 1 cycle の ready batch を最大 4 worker までに制限 |\n| `$harness-loop all --max-workers max` | ready batch 内で実行可能なタスク数を上限として並列化 |\n| `$harness-loop all --plan roadmap` | named Plans の `roadmap` を対象にループ実行 |\n| `$harness-loop all --executor task` | 旧来の 1 task per cycle local worker 実行へ逃がす |\n| `$harness-loop all --pacing night` | サイクル間の待機を長めにする |\n| `$harness-loop status` | 現在の実行状況を確認 |\n| `$harness-loop stop` | 進行中ジョブを止めてループ停止要求を出す |\n\n## 実行コマンド\n\n### 開始\n\n```bash\nharness codex-loop start all\n```\n\n範囲指定:\n\n```bash\nharness codex-loop start 41.1-41.4 --max-cycles 5 --pacing worker\nharness codex-loop start JLB3R-02..JLB3R-08 --max-cycles 5 --pacing worker\nharness codex-loop start all --max-workers max --pacing worker\nharness codex-loop start all --plan roadmap --max-cycles 5\nharness codex-loop start all --executor task --max-cycles 5\n```\n\n`START..END` は、`Plans.md` に並んでいる task ID をそのまま使う範囲指定。\n英字やハイフンを含む task ID は `..` を優先する。\n`41.1-41.4` のような従来の数値レンジも引き続き使える。\n\n`--max-workers` は、Breezing が 1 cycle で同時に動かす worker 数の上限。\n`max` は、選択範囲内で Depends が満たされた ready task の数をそのまま上限にする。\n`--executor task` は、Breezing ではなく local worker に 1 task だけ渡す互換用の逃げ道。\n問題切り分けや、並列実行したくない危険な作業で使う。\n複数 Plans.md がある repo では、長時間 run の起動時に `--plan NAME` を明示する。\nrunner は開始時に解決した Plans file を cycle 間で保持するため、途中で active plan を切り替えない。\n\n起動前に、選択済み plan の目的、担当範囲、DoD、spec、検証証拠、原依頼と承認の参照を確認する。状態確認だけの依頼で `start` を呼ばない。\n再開時は最新の run state と選択済み plan を読み、決定と理由、失敗履歴、残る判断、直前の advisor response を回収する。助言で元の契約や承認境界を置き換えない。\n不足は読み取りで補い、軽微な仮定を明示する。承認済み可逆作業は再確認せず進め、保護操作や `STOP` は既定の停止条件を守る。\n起動成功は作業完了の証拠ではない。`status`、job の実結果、DoD と review の証拠を照合して報告する。必須チェック後の追加検証は新しい変更、失敗、未解決の懸念がある場合に限る。\n\n### 状態確認\n\n```bash\nharness codex-loop status\nharness codex-loop status --json\n```\n\n### 停止\n\n```bash\nharness codex-loop stop\n```\n\n## どう動くか\n\n1. project root の `.claude\u002Fstate\u002Fcodex-loop\u002F` に Harness loop の実行状態を書き出す\n2. 受け取った selection を Plans.md から正規化する\n3. Plans.md から Depends が満たされた `cc:TODO` \u002F `cc:WIP` を集め、ready batch を作る\n4. `--max-workers` で ready batch の同時実行数を制限する\n5. 既定では Breezing executor が ready batch を Lead \u002F Worker \u002F Reviewer 分離で実行する\n6. `--executor task` の時だけ、互換用 local worker が 1 task per cycle で `codex exec` を起動する（`CODEX_LOOP_TASK_DRIVER=companion` の時だけ `bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcodex-companion.sh\" task --background --write ...` を使う）\n7. 高リスク task \u002F 2 回目失敗 \u002F plateau 直前では advisor consult を挟む\n8. ready batch 完了後に review \u002F checkpoint \u002F plateau 判定を行う\n9. まだ対象タスクが残っていれば、待機後に次サイクルへ進む\n\n## Realtime Handoff \u002F Silence Policy\n\nCodex `0.123.0` 以降の background agent は realtime handoff で transcript delta を受け取れる。\nこの delta は「状況把握用の追記」であり、毎回ユーザーへ返答する合図ではない。\n\nひとことで: background agent は、必要な時だけ報告し、何も判断が変わらない時は明示的に沈黙する。\n\nたとえると、見張り役が廊下でずっと実況するのではなく、異常・完了・判断待ちだけを知らせる形。\n\n報告してよいタイミング:\n\n- loop 開始、停止、`already running`、`stop` 受理など、ユーザー操作に関わる lifecycle 境界\n- 1 ready batch cycle の最終結果、commit、`RESULT: APPROVED` \u002F `RESULT: BLOCKED`\n- Breezing Lead が task 完了を progress feed としてまとめて出す時\n- task が blocked、validation failure、review `REQUEST_CHANGES`、plateau、advisor `STOP` で止まる時\n- user が `status` を実行した時、または明示的に途中状況を聞いた時\n- advisor \u002F reviewer drift、contract readiness failure など、放置すると品質判定がずれる時\n\n沈黙するタイミング:\n\n- transcript delta を受け取っただけで、task \u002F review \u002F advisor の状態が変わっていない時\n- `runner.log` \u002F `jobs\u002F*.log` に既に残る細かな stdout だけが増えた時\n- `pacing` 待機中で、次 cycle まで新しい判断材料がない時\n\n途中報告の頻度:\n\n- default は「1 ready batch cycle につき最終報告 1 回」。\n- Breezing の task-level progress feed は、batch 内の完了数が動いた時だけ出す。\n- 長い cycle でも、material state change がない限り heartbeat は出さない。\n- 詳細な流れは `harness codex-loop status --json` と project root の `.claude\u002Fstate\u002Fcodex-loop\u002Frunner.log` に寄せ、会話側には要点だけ出す。\n\nAdvisor \u002F Reviewer drift との関係:\n\n- silence policy は drift 検知を弱めるためのものではない。\n- `advisor-request.v1` に response がない、`review-result.v1` が返らない、contract が未承認などの異常は必ず state \u002F log に残し、必要ならユーザーへ報告する。\n- Advisor は `PLAN` \u002F `CORRECTION` \u002F `STOP` の相談役、Reviewer は最終品質判定役のまま分離する。\n\n## pacing\n\n| 値 | 用途 | 待機秒数 |\n|----|------|---------|\n| `worker` | 通常の開発ループ | 270 |\n| `ci` | 短めに確認したい時 | 270 |\n| `plateau` | 行き詰まり気味の再試行 | 1200 |\n| `night` | 長めの放置実行 | 3600 |\n\n## State Path Policy\n\nCodex 版 `harness-loop` は、Codex native の会話・実行キャッシュと、Harness が共有する project state を分けて扱う。\n\n- **Harness 共通 state**: project root の `.claude\u002Fstate\u002F` 配下に置く。Claude 側の advisor \u002F review \u002F checkpoint と共有するため、`harness codex-loop status` もここを読む。\n- **Codex loop runner state**: project root の `.claude\u002Fstate\u002Fcodex-loop\u002F` 配下に置く。これは「Codex 全体の正本」ではなく、Harness loop runner の job \u002F cycle \u002F log 用 state。\n- **Codex native state**: `${CODEX_HOME:-~\u002F.codex}` 配下に残る Codex 自身の thread \u002F transcript \u002F cache。Harness loop の task status、advisor history、review result の正本にはしない。\n- **禁止**: `.Codex\u002F` や `~\u002F.Codex` を正本 path として案内しない。大文字 `Codex` ディレクトリは historical drift と見なす。\n\nつまり、`.claude\u002Fstate\u002Fcodex-loop\u002F` は「この project の Harness loop state」であり、Codex native state 全体の固定保存先ではない。\n\n## 状態ファイル\n\n以下はすべて project root 基準。\n\n- `.claude\u002Fstate\u002Fcodex-loop\u002Frun.json`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fcycles.jsonl`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Frunner.log`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fcurrent-job.json`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fjobs\u002F*.json`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fjobs\u002F*.log`\n- `.claude\u002Fstate\u002Fcodex-loop\u002Fjobs\u002F*.out`\n- `.claude\u002Fstate\u002Fadvisor\u002Fhistory.jsonl`\n- `.claude\u002Fstate\u002Fadvisor\u002Flast-request.json`\n- `.claude\u002Fstate\u002Fadvisor\u002Flast-response.json`\n- `.claude\u002Fstate\u002Flocks\u002Fcodex-loop.lock.d`\n\n## Advisor Consult\n\nAdvisor は「代わりに実装する役」ではなく、「次の一手だけ返す相談役」。\nloop では次の 3 箇所でだけ呼ぶ。\n\n| タイミング | reason_code | 何をするか |\n|-----------|-------------|-----------|\n| 高リスク task の初回実行前 | `high-risk-preflight` | 先に固める観点を聞く |\n| 同じ原因の 2 回目失敗後 | `retry-threshold` | 方針変更か局所修正かを聞く |\n| plateau による停止直前 | `plateau-pre-escalation` | 本当に止めるべきかを聞く |\n\ndecision は 3 種だけ。\n\n| decision | loop の扱い |\n|----------|-------------|\n| `PLAN` | advice を次の executor prompt 先頭に足して再実行 |\n| `CORRECTION` | 局所修正の指示として再実行 |\n| `STOP` | loop を停止し、理由を state と runner.log に残す |\n\n同じ trigger は `trigger_hash = task_id + reason_code + normalized_error_signature` で 1 回だけ相談する。\n相談回数は task ごとに最大 3 回で、それ以上はユーザー判断に上げる。\n\n## 注意点\n\n- これは **本当に裏で動く**。説明だけ返して終わるスキルではない。\n- 同時に 2 本は起動できない。既に走っている場合は `already running` で止まる。\n- 既定 executor は Breezing。旧来の 1 task per cycle 挙動が必要な時だけ `--executor task` を使う。\n- 失敗したタスクを無理に飛ばして次へ進めるのではなく、基本はその場で止まって理由を残す。\n- `status` と `runner.log` を見れば、今どこで止まっているか追いやすい。\n\n## 具体例\n\n「Phase 41 の残タスクを、今日の間は自動で回したい」なら:\n\n```bash\nharness codex-loop start 41.1-41.4 --max-cycles 8 --max-workers max --pacing worker\n```\n\n途中で様子を見る:\n\n```bash\nharness codex-loop status\n```\n\n夜になって止めたい:\n\n```bash\nharness codex-loop stop\n```\n\n## なぜこの形か\n\nCodex では Claude の `\u002Floop` と同じ wake-up 機構をそのまま使えない。\nその代わり、**Codex loop runner** を土台にして、\nHarness 側で状態管理と再入制御を持ち、実作業は Breezing の batch 実行に寄せる。\nそうすると、長時間タスクでも「止める」「再開する」「今の状態を見る」が素直になり、\n依存関係を満たした作業だけを安全にまとめて進められる。\n",{"base":52,"kind":45,"name":5,"pair":53,"role":33,"owner":54,"shape":36,"since":55,"purpose":56,"trigger":57,"description":7,"allowed-tools":58,"argument-hint":60,"description-en":7,"description-ja":61,"disable-model-invocation":62},"harness-work","harness-sync","harness-core","2026-05-05","Run long-lived Codex ready-batch execution loops","long-running, loop, autonomous, background, Codex",[59,38],"Read","[all|TASK|START-END|START..END] [--max-cycles N] [--max-workers N|max] [--executor breezing|task] [--pacing worker|ci|plateau|night]","HAR: Codex 専用の長時間ループ実行。実際のバックグラウンドランナーが ready batch を Breezing で進め、status \u002F stop で監視できる。長時間、loop、ループ、autonomous、background、Codex で起動。",true,"main","c2304c325d4432f51d632e0586d886767b0f41ea","skills-codex\u002Fharness-loop",304,"https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness","https:\u002F\u002Fgithub.com\u002FChachamaru127","https:\u002F\u002Fcanai.jp\u002F","Going all-in on the AI business from April 2025\r\nOSS release: 3k Stars\r\nAI adoption starting with \"I want\"\r\nAX Support | Tokenomics | AISDR |","2026-11-10 18:53:50",{"source":8,"skillName":5,"commands":73,"prompt":83,"zipAvailable":62},[74,77,80],{"tool":75,"command":76},"npx","npx skills add Chachamaru127\u002Fclaude-code-harness --skill harness-loop",{"tool":78,"command":79},"bunx","bunx skills add Chachamaru127\u002Fclaude-code-harness --skill harness-loop",{"tool":81,"command":82},"pnpm","pnpm dlx skills add Chachamaru127\u002Fclaude-code-harness --skill harness-loop","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fskills-codex\u002Fharness-loop\u002FSKILL.md",[85],{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"manifest.json","REFERENCE","参考文档",114,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FTesting\u002FOfficial-DotNet-Test\u002Fskills\u002Fmtp-hot-reload\u002Fmanifest.json",[92,110,118,136,164,188],{"skillNo":93,"name":94,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":102,"publishedAt":47},"01M6C4VZCJB9EN3KZXGNARAF6P","escape-skill","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fzz-review-escape\u002FSKILL.md",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[103,104,105,106,107,108,109],"escape skill","escape","Tools","false","true","path","quoted",{"skillNo":111,"name":112,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":47},"01M6C4VYAJW332S5R2MM3RNE0G","zz-review-empty","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fzz-review-empty\u002FSKILL.md",[],[35,116,117,106,107],"zz review empty","empty",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":125,"publishedAt":47},"01M6C4VWW4GNAZ2680GY04S3EW","session-send","This skill should be used when the user asks to notify other session, requests a session handoff, says tell other agent, or needs a cross-session message.","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fskills\u002Fsession-send\u002FSKILL.md",[124],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},[126,127,128,129,130,38,131,132,133,134,135],"session","session send","send","handoff","session handoff","user","message","notify","requests","when",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":143,"publishedAt":47},"01M6C4VSMYH6XQGR087HQ9Y7HT","memory","Manage SSOT, memory, and cross-tool memory search. Guardian of decisions.md and patterns.md. Use when user mentions memory, SSOT, decisions.md, patterns.md, merging, migration, SSOT promotion, sync memory, save learnings, memory search, harness-mem, past decisions, or record this. Do NOT load for: implementation work, reviews, ad-hoc notes, or in-session logging.","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fskills\u002Fmemory\u002FSKILL.md",[142],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},[138,144,145,146,19,147,148,149,38,150,151,37,152,22,153,154,131,126,155,156,157,158,159,160,161,107,162,163,135],"MCP","sync","notes","search","memory search","guardian","migrate","tool","decisions","write","edit","use","migration","manage","do","learnings","promotion","reviews","load","for",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":47},"01M6C4VQ3507BV9XRX4BDSES6J","maintenance","File cleanup and archiving. Tidies up bloated Plans.md, session-log.md, old logs, and state files. Trigger: \u002Fmaintenance, cleanup, archive, organize, split session-log. Do NOT load for: implementation, review, release, new feature development.","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fskills\u002Fmaintenance\u002FSKILL.md",[],[166,35,171,172,43,42,173,174,175,38,176,177,22,153,154,178,126,179,180,181,158,182,183,184,185,186,107,162,163,187],"development","cleanup","state","file","logs","archive","grep","new feature","up","log","files","feature","plans","trigger","整理","split","new",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":206,"publishedAt":47},"01M6C4VK473YJ872RNMBYK7P4R","japanese-writing-drafter","Detect when the operator corrects the agent's Japanese phrasing mid-conversation (rewrites a sentence, calls out a style problem, says 'this wording is bad, say it like X instead') and draft a pending writing-rule proposal into ~\u002F.claude\u002Fwriting-lint\u002Fproposals.jsonl for later human review. This skill is the ONLY writer of proposals.jsonl — it never edits rules.jsonl and never sets status to anything but pending. Promotion to rules.jsonl only happens via the human-run scripts\u002Fwriting-rule-approve.sh. Use when user mentions writing-rule proposal, 表現を直して, 文体を直して, その言い方はNG, writing lint 提案, 指摘をルール化して. Do NOT load for: approving or rejecting proposals (use scripts\u002Fwriting-rule-approve.sh), listing pending proposals (use scripts\u002Fwriting-rule-list.sh), or scanning text against the existing dictionary (the writinglint engine \u002F PostToolUse hook does that).","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fskills\u002Fjapanese-writing-drafter\u002FSKILL.md",[194,197,200,201],{"categoryNo":195,"categoryName":196,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":198,"categoryName":199,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},{"categoryNo":202,"categoryName":203,"taxonomyType":204,"taxonomyTypeDesc":205},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[207,208,209,35,210,43,211,212,38,213,214,215,216,22,217,218,155,219,220,221,222,223,224,225,226,227,228,229,230,231,135,232],"writing","japanese writing drafter","japanese","status","lint","operator","提案","text","engine","Rules","list","proposals","never","only","scanning","say","human review","later","conversation","writer","human","scripts","problem","proposal","jsonl","listing"]