[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C4R7S9C8ZFDMRR65NDWEX4":3,"skill-same:01M6C4R7S9C8ZFDMRR65NDWEX4":76},{"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":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6C4R7S9C8ZFDMRR65NDWEX4","harness-loop",null,"Long-running task loop using \u002Floop (Claude Code dynamic mode) and ScheduleWakeup to re-enter with fresh context on each wake-up. Internally invokes harness-work through Agent. Trigger: long-running, loop, wake-up, autonomous. Do NOT load for: one-shot task execution, review, release, planning.","Chachamaru127\u002Fclaude-code-harness","Chachamaru127","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96473544?v=4","01M6C4N084DDDEK9SJPGFG9H9M","Chachamaru","01M6C4N0CCNFST9P8C7EJNVH42",3209,"MIT","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fopencode\u002Fskills\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],"harness","loop","harness loop","running","review","for","load","mode","re","with","long","trigger","fresh","task","do","up","autonomous","context","work","execution","release","planning","code","2026-11-10 10:12:30",false,"---\nname: harness-loop\ndescription: \"Long-running task loop using \u002Floop (Claude Code dynamic mode) and ScheduleWakeup to re-enter with fresh context on each wake-up. Internally invokes harness-work through Agent. Trigger: long-running, loop, wake-up, autonomous. Do NOT load for: one-shot task execution, review, release, planning.\"\n---\n\n# harness-loop\n\n`\u002Floop`（CC dynamic mode）と `ScheduleWakeup` を組み合わせ、\n長時間タスクを **wake-up 毎に fresh context で再入実行** するメタスキル。\n\n各 wake-up で `harness-work --breezing` を Agent 経由で呼び出し、\n1 サイクル = 1 タスク完結の再入可能ループを構成する。\n\n> **Long-session helpers (CC 2.1.108+)**:\n> 人が戻ってきたら `\u002Frecap` で要約を取り直してから `\u002Fharness-loop status` を見る。\n> 長めの離席や再入が多い運用では `ENABLE_PROMPT_CACHING_1H=1` を優先する。\n\n> **長時間セッション推奨 (CC 2.1.108+)**:\n> セッション長が 30 分を超える見込みの場合、plugin bundle root 解決後に `bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fenable-1h-cache.sh\"` を実行して 1 時間 prompt cache を opt-in すること。\n\n> **Codex 0.123.0 automatic bug fix inheritance**:\n> manual shell follow-up queue と `\u002Fcopy` after rollback は Codex 本体の TUI 修正として自動継承する。\n> loop runner は追加入力 queue、copy wrapper、rollback workaround を追加しない。\n> 長時間作業中に manual shell へ follow-up を投げた時の queueing は Codex runtime に任せる。\n\n## Quick Reference\n\n| 入力 | 動作 |\n|------|------|\n| `\u002Fharness-loop all` | 全未完了タスクをループ実行（default: max 8 サイクル） |\n| `\u002Fharness-loop all --max-cycles 3` | 3 サイクルで停止 |\n| `\u002Fharness-loop 41.1-41.3 --pacing ci` | タスク範囲を CI pacing で実行 |\n| `\u002Fharness-loop all --plan roadmap` | named Plans の `roadmap` を対象にループ実行 |\n| `\u002Fharness-loop all --pacing night` | 深夜バッチ（3600s 間隔） |\n| `\u002Fharness-loop status` | 進行中ランナーの状態確認 |\n| `\u002Fharness-loop stop` | 進行中ランナーの停止要求 |\n\n## オプション\n\n| オプション | 説明 | デフォルト |\n|----------|------|----------|\n| `all` | 全未完了タスクを対象 | - |\n| `N-M` | タスク番号範囲指定 | - |\n| `--plan NAME` | `plans\u002Fmanifest.json` の named plan を使う | active\u002Fdefault |\n| `--max-cycles N` | 最大サイクル数 | `8` |\n| `--pacing \u003Cmode>` | wake-up 間隔モード | `worker`（270s） |\n\n### pacing 値マッピング\n\n| pacing | delaySeconds | 用途 |\n|--------|-------------|------|\n| `worker` | 270 | Worker 完了直後（5 min 以内で cache warm） |\n| `ci` | 270 | CI 短時間ジョブ待ち |\n| `plateau` | 1200 | 20 min（plateau 検知後の再試行間隔） |\n| `night` | 3600 | 深夜の長時間放置 |\n\n> **制約**: `ScheduleWakeup` の `delaySeconds` はランタイムで **[60, 3600]** に clamp される。\n> `worker` \u002F `ci` の 270s および `night` の 3600s はこの範囲内。\n> `plateau` の 1200s も範囲内。値を直接指定する場合は必ず 60 以上 3600 以下にすること。\n\n## 起動フロー（wake-up 毎のエントリ）\n\n詳細版: [`${CLAUDE_SKILL_DIR}\u002Freferences\u002Fflow.md`](${CLAUDE_SKILL_DIR}\u002Freferences\u002Fflow.md)\n\n### plugin bundle root 解決\n\n`harness-loop` は host project の cwd ではなく、plugin bundle root 配下の helper script を呼ぶ。\nたとえると、作業机（host project）と工具箱（plugin bundle）を分けて扱う。\n\n各 wake-up の冒頭で次の順に `HARNESS_PLUGIN_ROOT` を決める:\n\n1. `CLAUDE_PLUGIN_ROOT` があり、`scripts\u002F` を含むならそれを使う\n2. `CLAUDE_PLUGIN_ROOT` がなければ、`CLAUDE_SKILL_DIR` から plugin bundle root を逆算する\n   - `skills\u002Fharness-loop` 配布なら `${CLAUDE_SKILL_DIR}\u002F..\u002F..`\n   - `.agents\u002Fskills\u002Fharness-loop` mirror 配布なら `${CLAUDE_SKILL_DIR}\u002F..\u002F..\u002F..`\n3. どちらでも解けない場合は停止し、`CLAUDE_PLUGIN_ROOT` を plugin bundle root に設定して再実行する\n\n`Plans.md` と `.claude\u002Fstate\u002F...` は host project 側に置く。\nhelper script だけを `${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002F...` から呼ぶ。\n\n複数 Plans.md がある repo では、長時間 run の起動時に `--plan NAME` を明示する。\nrunner は開始時に解決した Plans file を cycle 間で保持するため、途中で active plan を切り替えない。\n\n各サイクルは選択済み plan と最新の実行状態を読み、原依頼の目的、担当範囲、DoD、spec、証拠、承認の参照を Worker \u002F Advisor に渡す。\n再開時は既に決まった方針と理由、失敗した方法、未解決事項、直前の advisor response も回収する。前回の助言で元の契約を置き換えない。\n承認済み可逆作業は再確認せず進める。不足は読み取りで補い、軽微な仮定と仕様・権限の判断を区別する。未承認の保護操作や `STOP` は既定の停止条件を守る。\n必要なチェックとレビューを満たした task に追加機能や無条件の再テストを足さない。起動、実行中、検証済み完了を分けて報告する。\n\n```\nwake-up\n  │\n  ▼\n[Step 0] plugin bundle root を HARNESS_PLUGIN_ROOT に解決\n  CLAUDE_PLUGIN_ROOT が有効ならそれを使用\n  なければ CLAUDE_SKILL_DIR から plugin bundle root を逆算\n  ※ host project cwd の scripts\u002F は参照しない\n  │\n  ▼\n[Step 1] Plans.md を先に読む\n  cc:WIP \u002F cc:TODO の先頭タスクを特定（task_id を得る）\n  ※ 未完了タスクなし → ループ終了（正常完了）\n  │\n  ▼\n[Step 2] sprint-contract 存在確認 & 生成\n  .claude\u002Fstate\u002Fcontracts\u002F${task_id}.sprint-contract.json の有無を確認\n  無ければ node \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fgenerate-sprint-contract.js\" ${task_id} で生成\n  生成直後（初回のみ）: bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fenrich-sprint-contract.sh\" \u003Ccontract-path> \\\n    --check \"wake-up 自動承認（harness-loop のため DoD を reviewer 観点で確認）\" \\\n    --approve  ← draft → approved に昇格\n  （既存 contract は approved 済みのためスキップ）\n  │\n  ▼\n[Step 3] contract readiness チェック\n  bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fensure-sprint-contract-ready.sh\" \u003Ccontract-path>\n  │\n  ▼\n[Step 4] Resume pack 再読込\n  harness-mem resume-pack（コンテキスト再注入）\n  │\n  ▼\n[Step 4.5] Advisor consult（必要時のみ）\n  高リスク task の初回実行前 \u002F 同じ原因の 2 回目失敗後 \u002F plateau 直前で\n  `advisor-request.v1` を組み立てて相談する\n  │\n  ├── PLAN        → 次回 executor prompt に advice を prepend\n  ├── CORRECTION  → 局所修正の指示として再実行\n  └── STOP        → その場で loop を停止し、理由を残す\n  │\n  ▼\n[Step 5] 1 タスクサイクル実行\n  worker_result = Agent(\n      subagent_type=\"harness:worker\",  # worker エージェント（harness-work ではない）\n      prompt=\"タスク: ${task_id}\\n内容と目的: \u003C選択済み Plans.md の内容・理由>\\n担当範囲: \u003Cowned paths と除外範囲>\\nDoD: \u003CPlans.md から抽出>\\nplan\u002Fspec: \u003C選択済みパス>\\ncontract_path: ${CONTRACT_PATH}\\n証拠と前回結果: \u003C実行結果・失敗履歴・advisor response>\\n原依頼と承認の参照: \u003C適用範囲と参照先>\\nmode: breezing\\n担当範囲で方法を選び、他担当の変更を戻さず完了してください。判断理由、検証コマンドの実結果と証拠、未確認点を返してください。\",\n      isolation=\"worktree\",\n      run_in_background=false\n  )\n  # worker_result: { commit, branch, worktreePath, files_changed, summary }\n  │\n  ▼\n[Step 5.5] Lead レビュー実行\n  diff_text = git show worker_result.commit\n  verdict = codex_exec_review(diff_text) or reviewer_agent_review(diff_text)\n  ※ 詳細は flow.md 参照\n  │\n  ▼\n[Step 5.6] APPROVE → main に cherry-pick \u002F REQUEST_CHANGES → 修正ループ（contract の max_iterations 回、デフォルト 3）\n  APPROVE: git cherry-pick → Plans.md を cc:完了 [{hash}] に更新 → feature branch 削除\n  REQUEST_CHANGES x MAX_REVIEWS 後も否決: エスカレーション\n  ※ 詳細は flow.md 参照\n  │\n  ▼\n[Step 6] plateau 判定\n  bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fdetect-review-plateau.sh\" ${current_task_id}\n  │\n  ├── PIVOT_REQUIRED（exit 2）  → ループ停止 + ユーザーエスカレーション\n  ├── INSUFFICIENT_DATA（exit 1）→ 続行\n  └── PIVOT_NOT_REQUIRED（exit 0）→ 続行\n  │\n  ▼\n[Step 7] サイクル数チェック\n  │\n  ├── cycles >= max_cycles → ループ停止（上限到達）\n  │\n  ▼\n[Step 8] checkpoint 記録\n  harness_mem_record_checkpoint(\n      session_id, title, content=サイクル結果サマリ\n  )\n  │\n  ▼\n[Step 9] 次 wake-up 予約\n  ScheduleWakeup(\n      delaySeconds=\u003Cpacing値>,\n      prompt=\"\u002Fharness-loop \u003C同じ引数>\",\n      reason=\"サイクル {N}\u002F{max} 完了 — 次タスクへ\"\n  )\n```\n\n## サイクル停止条件\n\n| 条件 | 停止種別 | 対応 |\n|------|---------|------|\n| `cycles >= max_cycles` | 正常停止（上限到達） | ユーザーに報告 |\n| `PIVOT_REQUIRED`（exit 2） | 異常停止（エスカレーション） | ユーザーに判断を仰ぐ |\n| 未完了タスクなし | 正常停止（全完了） | 完了報告を出力 |\n\n`--max-cycles 3` 指定時は 3 サイクル完了後に停止する。\ndefault（`--max-cycles 8`）時は 8 サイクルで停止する。\n\n## 途中報告 \u002F Silence Policy\n\n長時間 loop では、途中報告は「安心のための heartbeat」ではなく「判断が変わった時の通知」として扱う。\nCodex `0.123.0` の background agent が transcript delta を受け取れる環境では、delta 到着だけを理由に返答せず、必要ない時は明示的に沈黙する。\n\n報告するもの:\n\n- cycle 完了、上限到達、全完了、blocked\n- validation failure、review `REQUEST_CHANGES`、plateau、advisor `STOP`\n- advisor \u002F reviewer drift、contract readiness failure\n- user が `status` を求めた時の要約\n\n沈黙してよいもの:\n\n- transcript delta だけが増え、task \u002F review \u002F advisor の状態が変わっていない時\n- log に残る細かな stdout だけが増えた時\n- 次 wake-up までの pacing 待機中\n\ndefault は「1 cycle につき最終報告 1 回」。\nただし Advisor request 未応答、Reviewer result 未到着、plateau 直前の警告は silence policy より優先して報告する。\n\n## \u002Floop との連携\n\nこのスキルは CC の `\u002Floop`（dynamic mode）と組み合わせて使用する。\n\n`\u002Floop` を有効にすると CC は自律的な再入実行を継続し、\n各サイクルの末尾で `ScheduleWakeup` を呼ぶことで次回 wake-up を予約する。\n\n`\u002Floop` のセンチネル: `\u003C\u003Cautonomous-loop-dynamic>>`\n\n各 wake-up は **fresh context** で開始されるため、前サイクルのコンテキスト汚染を防ぐ。\n`harness-mem resume-pack` による resume pack 再読込が必須（Step 2）。\n\n## checkpoint 記録\n\n`harness_mem_record_checkpoint` スキーマ:\n\n```json\n{\n  \"session_id\": \"\u003Cセッション ID>\",\n  \"title\": \"harness-loop cycle {N}\u002F{max}: {タスク名}\",\n  \"content\": \"cycle_result の 1 行サマリ + commit hash\"\n}\n```\n\n## Advisor Strategy\n\nこの skill の主役は executor で、advisor は必要な時だけ呼ぶ。\nたとえると、担当者が普段は自走し、難所だけベテランに相談する形。\n\n相談条件は固定で、自然言語の「自信が低い」判定は使わない。\n\n| 条件 | 相談するか |\n|------|-----------|\n| `needs-spike` \u002F `security-sensitive` \u002F `state-migration` | する |\n| `\u003C!-- advisor:required -->` | する |\n| 同じ原因の 2 回目失敗 | する |\n| plateau で停止する直前 | する |\n\n同じ trigger は 1 回しか相談しない。\nその判定には `trigger_hash = task_id + reason_code + normalized_error_signature` を使う。\n\n## 関連スキル\n\n- `harness-work` — 各サイクルで実行されるタスク実装スキル\n- `harness-plan` — ループ対象タスクの計画\n- `harness-review` — 個別タスクのレビュー\n- `session-control` — セッション状態管理\n","# harness-loop\n\n`\u002Floop`（CC dynamic mode）と `ScheduleWakeup` を組み合わせ、\n長時間タスクを **wake-up 毎に fresh context で再入実行** するメタスキル。\n\n各 wake-up で `harness-work --breezing` を Agent 経由で呼び出し、\n1 サイクル = 1 タスク完結の再入可能ループを構成する。\n\n> **Long-session helpers (CC 2.1.108+)**:\n> 人が戻ってきたら `\u002Frecap` で要約を取り直してから `\u002Fharness-loop status` を見る。\n> 長めの離席や再入が多い運用では `ENABLE_PROMPT_CACHING_1H=1` を優先する。\n\n> **長時間セッション推奨 (CC 2.1.108+)**:\n> セッション長が 30 分を超える見込みの場合、plugin bundle root 解決後に `bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fenable-1h-cache.sh\"` を実行して 1 時間 prompt cache を opt-in すること。\n\n> **Codex 0.123.0 automatic bug fix inheritance**:\n> manual shell follow-up queue と `\u002Fcopy` after rollback は Codex 本体の TUI 修正として自動継承する。\n> loop runner は追加入力 queue、copy wrapper、rollback workaround を追加しない。\n> 長時間作業中に manual shell へ follow-up を投げた時の queueing は Codex runtime に任せる。\n\n## Quick Reference\n\n| 入力 | 動作 |\n|------|------|\n| `\u002Fharness-loop all` | 全未完了タスクをループ実行（default: max 8 サイクル） |\n| `\u002Fharness-loop all --max-cycles 3` | 3 サイクルで停止 |\n| `\u002Fharness-loop 41.1-41.3 --pacing ci` | タスク範囲を CI pacing で実行 |\n| `\u002Fharness-loop all --plan roadmap` | named Plans の `roadmap` を対象にループ実行 |\n| `\u002Fharness-loop all --pacing night` | 深夜バッチ（3600s 間隔） |\n| `\u002Fharness-loop status` | 進行中ランナーの状態確認 |\n| `\u002Fharness-loop stop` | 進行中ランナーの停止要求 |\n\n## オプション\n\n| オプション | 説明 | デフォルト |\n|----------|------|----------|\n| `all` | 全未完了タスクを対象 | - |\n| `N-M` | タスク番号範囲指定 | - |\n| `--plan NAME` | `plans\u002Fmanifest.json` の named plan を使う | active\u002Fdefault |\n| `--max-cycles N` | 最大サイクル数 | `8` |\n| `--pacing \u003Cmode>` | wake-up 間隔モード | `worker`（270s） |\n\n### pacing 値マッピング\n\n| pacing | delaySeconds | 用途 |\n|--------|-------------|------|\n| `worker` | 270 | Worker 完了直後（5 min 以内で cache warm） |\n| `ci` | 270 | CI 短時間ジョブ待ち |\n| `plateau` | 1200 | 20 min（plateau 検知後の再試行間隔） |\n| `night` | 3600 | 深夜の長時間放置 |\n\n> **制約**: `ScheduleWakeup` の `delaySeconds` はランタイムで **[60, 3600]** に clamp される。\n> `worker` \u002F `ci` の 270s および `night` の 3600s はこの範囲内。\n> `plateau` の 1200s も範囲内。値を直接指定する場合は必ず 60 以上 3600 以下にすること。\n\n## 起動フロー（wake-up 毎のエントリ）\n\n詳細版: [`${CLAUDE_SKILL_DIR}\u002Freferences\u002Fflow.md`](${CLAUDE_SKILL_DIR}\u002Freferences\u002Fflow.md)\n\n### plugin bundle root 解決\n\n`harness-loop` は host project の cwd ではなく、plugin bundle root 配下の helper script を呼ぶ。\nたとえると、作業机（host project）と工具箱（plugin bundle）を分けて扱う。\n\n各 wake-up の冒頭で次の順に `HARNESS_PLUGIN_ROOT` を決める:\n\n1. `CLAUDE_PLUGIN_ROOT` があり、`scripts\u002F` を含むならそれを使う\n2. `CLAUDE_PLUGIN_ROOT` がなければ、`CLAUDE_SKILL_DIR` から plugin bundle root を逆算する\n   - `skills\u002Fharness-loop` 配布なら `${CLAUDE_SKILL_DIR}\u002F..\u002F..`\n   - `.agents\u002Fskills\u002Fharness-loop` mirror 配布なら `${CLAUDE_SKILL_DIR}\u002F..\u002F..\u002F..`\n3. どちらでも解けない場合は停止し、`CLAUDE_PLUGIN_ROOT` を plugin bundle root に設定して再実行する\n\n`Plans.md` と `.claude\u002Fstate\u002F...` は host project 側に置く。\nhelper script だけを `${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002F...` から呼ぶ。\n\n複数 Plans.md がある repo では、長時間 run の起動時に `--plan NAME` を明示する。\nrunner は開始時に解決した Plans file を cycle 間で保持するため、途中で active plan を切り替えない。\n\n各サイクルは選択済み plan と最新の実行状態を読み、原依頼の目的、担当範囲、DoD、spec、証拠、承認の参照を Worker \u002F Advisor に渡す。\n再開時は既に決まった方針と理由、失敗した方法、未解決事項、直前の advisor response も回収する。前回の助言で元の契約を置き換えない。\n承認済み可逆作業は再確認せず進める。不足は読み取りで補い、軽微な仮定と仕様・権限の判断を区別する。未承認の保護操作や `STOP` は既定の停止条件を守る。\n必要なチェックとレビューを満たした task に追加機能や無条件の再テストを足さない。起動、実行中、検証済み完了を分けて報告する。\n\n```\nwake-up\n  │\n  ▼\n[Step 0] plugin bundle root を HARNESS_PLUGIN_ROOT に解決\n  CLAUDE_PLUGIN_ROOT が有効ならそれを使用\n  なければ CLAUDE_SKILL_DIR から plugin bundle root を逆算\n  ※ host project cwd の scripts\u002F は参照しない\n  │\n  ▼\n[Step 1] Plans.md を先に読む\n  cc:WIP \u002F cc:TODO の先頭タスクを特定（task_id を得る）\n  ※ 未完了タスクなし → ループ終了（正常完了）\n  │\n  ▼\n[Step 2] sprint-contract 存在確認 & 生成\n  .claude\u002Fstate\u002Fcontracts\u002F${task_id}.sprint-contract.json の有無を確認\n  無ければ node \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fgenerate-sprint-contract.js\" ${task_id} で生成\n  生成直後（初回のみ）: bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fenrich-sprint-contract.sh\" \u003Ccontract-path> \\\n    --check \"wake-up 自動承認（harness-loop のため DoD を reviewer 観点で確認）\" \\\n    --approve  ← draft → approved に昇格\n  （既存 contract は approved 済みのためスキップ）\n  │\n  ▼\n[Step 3] contract readiness チェック\n  bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fensure-sprint-contract-ready.sh\" \u003Ccontract-path>\n  │\n  ▼\n[Step 4] Resume pack 再読込\n  harness-mem resume-pack（コンテキスト再注入）\n  │\n  ▼\n[Step 4.5] Advisor consult（必要時のみ）\n  高リスク task の初回実行前 \u002F 同じ原因の 2 回目失敗後 \u002F plateau 直前で\n  `advisor-request.v1` を組み立てて相談する\n  │\n  ├── PLAN        → 次回 executor prompt に advice を prepend\n  ├── CORRECTION  → 局所修正の指示として再実行\n  └── STOP        → その場で loop を停止し、理由を残す\n  │\n  ▼\n[Step 5] 1 タスクサイクル実行\n  worker_result = Agent(\n      subagent_type=\"harness:worker\",  # worker エージェント（harness-work ではない）\n      prompt=\"タスク: ${task_id}\\n内容と目的: \u003C選択済み Plans.md の内容・理由>\\n担当範囲: \u003Cowned paths と除外範囲>\\nDoD: \u003CPlans.md から抽出>\\nplan\u002Fspec: \u003C選択済みパス>\\ncontract_path: ${CONTRACT_PATH}\\n証拠と前回結果: \u003C実行結果・失敗履歴・advisor response>\\n原依頼と承認の参照: \u003C適用範囲と参照先>\\nmode: breezing\\n担当範囲で方法を選び、他担当の変更を戻さず完了してください。判断理由、検証コマンドの実結果と証拠、未確認点を返してください。\",\n      isolation=\"worktree\",\n      run_in_background=false\n  )\n  # worker_result: { commit, branch, worktreePath, files_changed, summary }\n  │\n  ▼\n[Step 5.5] Lead レビュー実行\n  diff_text = git show worker_result.commit\n  verdict = codex_exec_review(diff_text) or reviewer_agent_review(diff_text)\n  ※ 詳細は flow.md 参照\n  │\n  ▼\n[Step 5.6] APPROVE → main に cherry-pick \u002F REQUEST_CHANGES → 修正ループ（contract の max_iterations 回、デフォルト 3）\n  APPROVE: git cherry-pick → Plans.md を cc:完了 [{hash}] に更新 → feature branch 削除\n  REQUEST_CHANGES x MAX_REVIEWS 後も否決: エスカレーション\n  ※ 詳細は flow.md 参照\n  │\n  ▼\n[Step 6] plateau 判定\n  bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fdetect-review-plateau.sh\" ${current_task_id}\n  │\n  ├── PIVOT_REQUIRED（exit 2）  → ループ停止 + ユーザーエスカレーション\n  ├── INSUFFICIENT_DATA（exit 1）→ 続行\n  └── PIVOT_NOT_REQUIRED（exit 0）→ 続行\n  │\n  ▼\n[Step 7] サイクル数チェック\n  │\n  ├── cycles >= max_cycles → ループ停止（上限到達）\n  │\n  ▼\n[Step 8] checkpoint 記録\n  harness_mem_record_checkpoint(\n      session_id, title, content=サイクル結果サマリ\n  )\n  │\n  ▼\n[Step 9] 次 wake-up 予約\n  ScheduleWakeup(\n      delaySeconds=\u003Cpacing値>,\n      prompt=\"\u002Fharness-loop \u003C同じ引数>\",\n      reason=\"サイクル {N}\u002F{max} 完了 — 次タスクへ\"\n  )\n```\n\n## サイクル停止条件\n\n| 条件 | 停止種別 | 対応 |\n|------|---------|------|\n| `cycles >= max_cycles` | 正常停止（上限到達） | ユーザーに報告 |\n| `PIVOT_REQUIRED`（exit 2） | 異常停止（エスカレーション） | ユーザーに判断を仰ぐ |\n| 未完了タスクなし | 正常停止（全完了） | 完了報告を出力 |\n\n`--max-cycles 3` 指定時は 3 サイクル完了後に停止する。\ndefault（`--max-cycles 8`）時は 8 サイクルで停止する。\n\n## 途中報告 \u002F Silence Policy\n\n長時間 loop では、途中報告は「安心のための heartbeat」ではなく「判断が変わった時の通知」として扱う。\nCodex `0.123.0` の background agent が transcript delta を受け取れる環境では、delta 到着だけを理由に返答せず、必要ない時は明示的に沈黙する。\n\n報告するもの:\n\n- cycle 完了、上限到達、全完了、blocked\n- validation failure、review `REQUEST_CHANGES`、plateau、advisor `STOP`\n- advisor \u002F reviewer drift、contract readiness failure\n- user が `status` を求めた時の要約\n\n沈黙してよいもの:\n\n- transcript delta だけが増え、task \u002F review \u002F advisor の状態が変わっていない時\n- log に残る細かな stdout だけが増えた時\n- 次 wake-up までの pacing 待機中\n\ndefault は「1 cycle につき最終報告 1 回」。\nただし Advisor request 未応答、Reviewer result 未到着、plateau 直前の警告は silence policy より優先して報告する。\n\n## \u002Floop との連携\n\nこのスキルは CC の `\u002Floop`（dynamic mode）と組み合わせて使用する。\n\n`\u002Floop` を有効にすると CC は自律的な再入実行を継続し、\n各サイクルの末尾で `ScheduleWakeup` を呼ぶことで次回 wake-up を予約する。\n\n`\u002Floop` のセンチネル: `\u003C\u003Cautonomous-loop-dynamic>>`\n\n各 wake-up は **fresh context** で開始されるため、前サイクルのコンテキスト汚染を防ぐ。\n`harness-mem resume-pack` による resume pack 再読込が必須（Step 2）。\n\n## checkpoint 記録\n\n`harness_mem_record_checkpoint` スキーマ:\n\n```json\n{\n  \"session_id\": \"\u003Cセッション ID>\",\n  \"title\": \"harness-loop cycle {N}\u002F{max}: {タスク名}\",\n  \"content\": \"cycle_result の 1 行サマリ + commit hash\"\n}\n```\n\n## Advisor Strategy\n\nこの skill の主役は executor で、advisor は必要な時だけ呼ぶ。\nたとえると、担当者が普段は自走し、難所だけベテランに相談する形。\n\n相談条件は固定で、自然言語の「自信が低い」判定は使わない。\n\n| 条件 | 相談するか |\n|------|-----------|\n| `needs-spike` \u002F `security-sensitive` \u002F `state-migration` | する |\n| `\u003C!-- advisor:required -->` | する |\n| 同じ原因の 2 回目失敗 | する |\n| plateau で停止する直前 | する |\n\n同じ trigger は 1 回しか相談しない。\nその判定には `trigger_hash = task_id + reason_code + normalized_error_signature` を使う。\n\n## 関連スキル\n\n- `harness-work` — 各サイクルで実行されるタスク実装スキル\n- `harness-plan` — ループ対象タスクの計画\n- `harness-review` — 個別タスクのレビュー\n- `session-control` — セッション状態管理\n",{"name":5,"description":7},"main","c2304c325d4432f51d632e0586d886767b0f41ea","opencode\u002Fskills\u002Fharness-loop",306,"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-11 17:18:34",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add Chachamaru127\u002Fclaude-code-harness --skill harness-loop",{"tool":62,"command":63},"bunx","bunx skills add Chachamaru127\u002Fclaude-code-harness --skill harness-loop",{"tool":65,"command":66},"pnpm","pnpm dlx skills add Chachamaru127\u002Fclaude-code-harness --skill harness-loop","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fopencode\u002Fskills\u002Fharness-loop\u002FSKILL.md",true,[70],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fflow.md","REFERENCE","参考文档",28576,"https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fopencode\u002Fskills\u002Fharness-loop\u002Freferences\u002Fflow.md",[77,95,103,122,148,171],{"skillNo":78,"name":79,"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":80,"categories":81,"keywords":87,"publishedAt":42},"01M6C4VZCJB9EN3KZXGNARAF6P","escape-skill","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fzz-review-escape\u002FSKILL.md",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[88,89,90,91,92,93,94],"escape skill","escape","Tools","false","true","path","quoted",{"skillNo":96,"name":97,"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":98,"categories":99,"keywords":100,"publishedAt":42},"01M6C4VYAJW332S5R2MM3RNE0G","zz-review-empty","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fzz-review-empty\u002FSKILL.md",[],[23,101,102,91,92],"zz review empty","empty",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":110,"publishedAt":42},"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",[109],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[111,112,113,114,115,116,117,118,119,120,121],"session","session send","send","handoff","session handoff","Bash","user","message","notify","requests","when",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":129,"publishedAt":42},"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",[128],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[124,130,131,132,19,133,134,135,116,136,137,37,138,139,140,141,117,111,142,143,144,33,145,146,147,92,25,24,121],"MCP","sync","notes","search","memory search","guardian","migrate","tool","decisions","read","write","edit","use","migration","manage","learnings","promotion","reviews",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":42},"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",[],[150,23,155,156,157,39,158,159,160,116,161,162,139,140,141,163,111,34,164,165,33,166,167,30,168,169,92,25,24,170],"development","cleanup","run","state","file","logs","archive","grep","new feature","log","files","feature","plans","整理","split","new",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":189,"publishedAt":42},"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",[177,180,183,184],{"categoryNo":178,"categoryName":179,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":181,"categoryName":182,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},{"categoryNo":185,"categoryName":186,"taxonomyType":187,"taxonomyTypeDesc":188},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[190,191,192,23,193,157,194,195,116,196,197,198,199,139,200,201,142,202,203,204,205,206,207,208,209,210,211,212,213,214,121,215],"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"]