[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C4N6C45TY2SPR85PR86M83":3,"skill-same:01M6C4N6C45TY2SPR85PR86M83":101},{"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":23,"publishedAt":51,"linkOnly":52,"markdownContent":53,"markdownBody":54,"frontMatter":55,"refName":73,"commitSha":74,"skillDirectory":75,"forksCount":76,"repositoryHtmlUrl":77,"repositoryHomepageUrl":6,"ownerHtmlUrl":78,"ownerBlogUrl":79,"ownerDescription":80,"updatedAt":81,"install":82,"resources":94},"01M6C4N6C45TY2SPR85PR86M83","breezing",null,"Team execution mode (Codex host) — backward-compatible alias for harness-work with backend selection, including opt-in Cursor worker delegation. Composer\u002Fcomposer 2.5 maps to the cursor backend.","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\u002Fcodex\u002F.codex\u002Fskills\u002Fbreezing\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"orchestrator","send","mode","team execution","composer","close","host","worker","selection","maps","execution orchestration","backend","execution mode","review","spawn","cursor","read","work","Bash","team","execution","harness","delegation","core","workflow","orchestration","codex","2026-11-10 10:12:30",false,"---\nname: breezing\ndescription: \"Team execution mode (Codex host) — backward-compatible alias for harness-work with backend selection, including opt-in Cursor worker delegation. Composer\u002Fcomposer 2.5 maps to the cursor backend.\"\ndescription-en: \"Team execution mode (Codex host) — backward-compatible alias for harness-work with backend selection, including opt-in Cursor worker delegation. Composer\u002Fcomposer 2.5 maps to the cursor backend.\"\ndescription-ja: \"チーム実行モード（Codex ホスト版）— harness-work のチーム協調エイリアス。Codex からも opt-in で Cursor worker backend に委譲できる。breezing, チーム実行, 全部やって, composer, コンポーザー, composer 2.5 でトリガー。\"\nkind: workflow\npurpose: \"Wrap harness-work with Codex-host team execution orchestration\"\ntrigger: \"breezing, team execution, do everything, cursor worker, composer, composer 2.5, composer mode, コンポーザー\"\nshape: wrap\nrole: orchestrator\nbase: harness-work\npair: harness-review\nowner: harness-core\nsince: \"2026-05-05\"\nallowed-tools: [\"Read\", \"Bash\", \"spawn_agent\", \"send_input\", \"wait_agent\", \"close_agent\"]\nargument-hint: \"[all|N-M|--backend claude|codex|cursor|--cursor|--codex|--max-workers N|--no-discuss]\"\nuser-invocable: true\neffort: high\n---\n\n# Breezing — Team Execution Mode (Codex Host)\n\n> **この SKILL.md は Codex host 版です。**\n> Claude Code 版は `skills\u002Fbreezing\u002FSKILL.md` を参照してください。\n> backend は resolver で選びます。配布 plugin のフラグなし既定は `claude` 互換のままです。\n> `--cursor` \u002F `--backend cursor`、または `HARNESS_IMPL_BACKEND=cursor` を設定した環境では Cursor worker backend を使います。\n> frontmatter の `allowed-tools` も、この4つの Codex native tool 名に合わせます。\n\n**後方互換エイリアス**: `harness-work --breezing` をチーム実行モードで動かします。\n\n## Default Pipeline（plan → work → review → report を 1 コマンドで完走）\n\nClaude Code 版と同一の契約（operator 裁定 2026-07-24。正本: `skills\u002Fbreezing\u002FSKILL.md` の同名節）:\n\n1. **Plan gate**: 依頼スコープの task が Plans.md に無い\u002F不足なら、先に `harness-plan` を実行してから続行（スコープ既定は「今進められる全作業」）\n2. **Work**: 既存のチーム実行フロー（per-task review 含む）\n3. **Integrated Review Gate（既定 ON）**: 実装完了後・**最終化（完了報告・run 完了宣言）の前に**、run 全体 diff に `harness-review` を実行。review target は通常 `{base_ref}..HEAD`、`--no-commit` run は working tree（未 commit 変更 + untracked）。fresh-context 独立 reviewer + cross-CLI second opinion を併走させ、APPROVE まで修正 → 再レビューを反復（最大 3 回。未収束は影響 task を `cc:WIP` に戻して human escalation）\n4. **Finalize + Report**: gate APPROVE 後に Plans.md 更新・完了報告を確定。最終報告は easy 作法（host に `easy` skill があればその作法、なければ Completion Report テンプレート）\n\n低リスクの高速 run で 3 を省きたい時は `--no-review-gate`（per-task review は維持、統合レビューのみスキップ）。\n\n### Work Mode Lifecycle (`bin\u002Fharness work-mode`)\n\nClaude Code 版と同一の契約（正本: `skills\u002Fbreezing\u002FSKILL.md` の同名節）。\nLead は run 開始時（Plan gate に入る前）に `bin\u002Fharness work-mode on` を実行し、\nrun 終了時は**成功・失敗・中断の全経路**で `bin\u002Fharness work-mode off` を実行する。\nsession ID が解決できない場合、`work-mode` は非ゼロ終了し理由を stderr に出す。\n\n## Quick Reference\n\n```bash\nbreezing                        # スコープを聞いてから実行\nbreezing all                    # resolved backend で ready task を完走（配布既定は claude、現環境は user config で cursor 可）\nbreezing 3-6                    # resolved backend でタスク3〜6を完走\nbreezing composer 2.5 all       # 自然言語 trigger: cursor backend として扱う\nbreezing --backend cursor all    # Cursor worker backend を明示\nbreezing --backend claude all    # Codex native spawn_agent worker を明示\nbreezing --codex all             # Codex CLI worker backend を明示\nbreezing --cursor all            # Cursor worker backend を明示\nbreezing --max-workers 2 all     # ready task の同時 spawn 上限を2に\nbreezing --max-workers 1 all     # 旧来の直列挙動に戻す\nbreezing --no-discuss all       # 計画議論スキップで全タスク完走\n```\n\n## Options\n\n| Option | Description | Default |\n|--------|-------------|---------|\n| `all` | 全未完了タスクを対象 | - |\n| `N` or `N-M` | タスク番号\u002F範囲指定 | - |\n| `--backend \u003Cclaude\\|codex\\|cursor>` | worker backend を明示選択 | resolver result（配布既定は claude） |\n| `--cursor` | `--backend cursor` の別名 | false |\n| `--codex` | `--backend codex` の別名 | false |\n| `--max-workers N` | ready task の同時 spawn 数上限（breezing 固有オプション）。`1` で旧来の直列挙動 | max |\n| `--no-commit` | 非対応（Breezing では Worker の一時 commit と Lead の cherry-pick が必須） | - |\n| `--no-discuss` | 計画議論スキップ | false |\n\n## Execution\n\n**このスキルは `harness-work --breezing` に委譲します。** 以下の設定で実行してください:\n\n1. **引数を `harness-work --breezing` に渡す**（`--max-workers N` は breezing 固有オプションとして解釈し、`harness-work` の `--parallel` とは別概念）\n2. **チーム実行モードを強制** — Lead → Worker spawn → 必要時 Advisor → companion review Reviewer の四者分離\n3. **Lead は delegate 専念** — コードを直接書かず、Worker 実行中は仕様照合、独立した調査、証拠確認、統合準備を進める\n\n委譲本文には目的と理由、担当範囲、DoD、選択した plan \u002F spec、観測済み証拠、原依頼と承認の参照を含める。以降の `{task prompt}` もこの情報を持つ。\n独立して検証できる成果に ownership を割り当て、ready task と利用可能な同時実行上限を守る。他担当の変更を戻さず、関連 follow-up は同じ担当へ返す。Reviewer は fresh-context のまま分離する。\n担当は境界内で方法を選び、承認済み可逆作業を完了する。不足は読み取りで補い、軽微な仮定と重大な仕様判断・不足する権限を区別する。推定スコープを承認として扱わない。\n必須チェックと既定レビューが通ったら、新しい変更や未解決の懸念がない限り追加テストや機能を増やさず、実結果と証拠を返す。\n\n### Execution Backend (persistent)\n\nバックエンド選択（worker を `claude` \u002F `codex` \u002F `cursor` のどれで実装するか）の正本は\n`harness-work` の「Execution Backend Selection（実装バックエンド選択）」を参照する。\nそこに precedence、role-scope（review \u002F advisor は実装役から分離した担当別 route）、self_review スキップ、cursor banner が定義されている。\nbackend 判定は **必ず** resolver 経由にし、`HARNESS_IMPL_BACKEND` env だけを直読みしない。\nCCH のモデルと effort は未指定時の role 既定。利用者の明示指定と手動変更を尊重し、native profile \u002F 明示 override に従う。AI が文言から再調整したり、親の変更を全 Worker に配ったりしない。独立 Reviewer の隔離と read-only は維持する。\n\nCodex Breezing も配布 plugin では call-site default を変えない:\n\n```bash\nbash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fresolve-impl-backend.sh\"\n```\n\nprecedence は `--backend` \u002F `--cursor` \u002F `--codex` > `HARNESS_IMPL_BACKEND` env > project `env.local` >\nuser `~\u002F.config\u002Fclaude-harness\u002Fimpl-backend.env` > call-site default `claude`。\nつまり配布 plugin のフラグなし `breezing all` は互換性のため `claude` のまま。\nこの環境のように user\u002Fproject config で `HARNESS_IMPL_BACKEND=cursor` が設定されている場合だけ、\nフラグなしで Cursor worker backend になる。Codex native subagent worker を明示する時は `--backend claude` を指定する。\n\n`composer` \u002F `コンポーザー` \u002F `Composer で` \u002F `composer 2.5` \u002F `composer モード` は、正式に `cursor backend` の trigger として扱う。\nこれは `--cursor` 相当の intent であり、Lead は `resolve-impl-backend.sh` を経由して backend を確定する。\n解決時は明示 override として `--backend cursor` を渡し、env \u002F project \u002F user file \u002F default より優先させる。\n`composer` は Codex native Worker の内側に spawn する追加 agent ではなく、非 `claude` backend の規約どおり Lead が `cursor-companion.sh` を直接呼ぶ。\n\n既定の worker 数は **max**。\nここでの max は「対象スコープ内で Depends が満たされ、今すぐ実行できる ready task の最大数」を意味する。\n無制限に Worker を spawn する意味ではない。\n依存待ちのタスクは、前段タスクが完了して ready になるまで spawn しない。\n旧来の 1 件ずつ進める直列挙動に戻したい場合は `--max-workers 1` を指定する。\n\nWorker の実装は並列化できるが、レビューと main への cherry-pick は直列で行う。\nこれは同じ main worktree への書き込み競合を避けるため。\nGo の `HARNESS_TEAM_HIERARCHY=sublead` は CLI mini-plan 入口未実装、`HARNESS_REVIEW_ITERATE=on` は production brain runner 未提供（`claude-companion.sh` 欠損）のため end-to-end 未対応。この更新では有効化せず、既定の flat \u002F OFF を維持する。\nこの制約は Go opt-in 入口に限る。手動 Producer 分解と通常の Skill \u002F Native reviewer loop は別経路として維持する。\n\n### `harness-work` との違い\n\n| 特徴 | `harness-work` | `breezing` (このスキル) |\n|------|-----------------|------------------------|\n| デフォルトモード | Solo \u002F Sequential | **Breezing（チーム実行）** |\n| 並列手段 | companion `task` Bash 並列 | **`spawn_agent` によるサブエージェント委譲** |\n| Lead の役割 | 調整+実装 | **delegate (調整専念)** |\n| レビュー | Lead 自己レビュー | **companion review 独立レビュー** |\n| デフォルトスコープ | 次のタスク | **全部** |\n\n### Team Composition（Codex Native）\n\n| Role | 実行方式 | 権限 | 責務 |\n|------|---------|------|------|\n| Lead | (self) | 現セッション継承 | 調整・指揮・タスク分配・cherry-pick |\n| Worker ×N | resolver result: `spawn_agent` \u002F `codex-companion.sh` \u002F `cursor-companion.sh task --write --workspace \u003Cworktree>` | セッション権限継承 | 実装（git worktree 分離） |\n| Advisor | `harness:advisor` | 読み取り専用 | 方針助言 (`PLAN` \u002F `CORRECTION` \u002F `STOP`) |\n| Reviewer | companion `review --base` | read-only | 独立レビュー |\n\n## Flow Summary\n\n```\nbreezing [scope] [--backend claude|codex|cursor] [--max-workers N] [--no-discuss]\n    │\n    ↓ Load harness-work --breezing\n    │\nPhase 0: Planning Discussion (--no-discuss でスキップ)\nPhase A: Pre-delegate（チーム初期化 + worktree 準備）\nPhase B: Delegate（resolver-selected worker + 必要時 Advisor + companion review レビュー）\nPhase C: Post-delegate（統合検証 + Plans.md 更新 + commit）\n```\n\n## Advisor Protocol\n\nWorker は generic な subagent を増やさない。\n迷った時は構造化 JSON で相談要求だけ返し、Lead が advisor を呼ぶ。\n\n1. Worker → `advisor-request.v1`\n2. Lead → Advisor\n3. Advisor → `advisor-response.v1`\n4. Lead → 同じ Worker に advice を返して続行\n5. Reviewer は最後の成果物だけを見る\n\n相談条件は loop \u002F solo とそろえる。\n\n- 高リスク task（`needs-spike` \u002F `security-sensitive` \u002F `state-migration`）の初回実行前\n- 同じ原因の失敗が 2 回続いた後\n- plateau により `PIVOT_REQUIRED` を返す直前\n- 同じ `trigger_hash` は 1 回だけ。task ごとの相談回数は最大 3 回\n\n## Realtime Handoff \u002F Silence Policy\n\nCodex `0.123.0` 以降では、background agent が realtime handoff の transcript delta を受け取れる。\nBreezing ではこの仕組みを「余計な通知を増やす入口」ではなく、「必要な時だけ判断を更新するための入力」として扱う。\n\nひとことで: Worker \u002F Advisor \u002F Reviewer は、状態が変わらない transcript delta には反応せず、Lead への報告は material state change に絞る。\n\nたとえると、複数人の作業部屋で全員が独り言を実況するのではなく、担当作業が終わった時、詰まった時、判断待ちの時だけ声をかける形。\n\n報告するもの:\n\n- Worker の完了 JSON、blocked 理由、必要な `advisor-request.v1`\n- Advisor の `PLAN` \u002F `CORRECTION` \u002F `STOP`\n- Reviewer の `APPROVE` \u002F `REQUEST_CHANGES`\n- validation failure、contract readiness failure、plateau、drift 検知\n- Lead が出す task 完了単位の progress feed\n\n沈黙してよいもの:\n\n- transcript delta を受け取っただけで、task status、review verdict、advisor decision が変わっていない場合\n- tool stdout の細かな増分で、job log に残っていれば十分なもの\n- parallel spawn 中の待機 heartbeat。待機は `wait_agent` \u002F job status に任せる\n\n途中報告の頻度:\n\n- Lead の progress feed は task 完了ごとに 1 回を基本にする。\n- Worker \u002F Reviewer は「完了・差し戻し・ブロック」の結果だけを返し、delta ごとの小報告は避ける。\n- user が明示的に status を求めた場合だけ、Lead がまとめて現在地を返す。\n\nAdvisor \u002F Reviewer drift との関係:\n\n- silence policy は Advisor \u002F Reviewer を黙らせる免除ではない。\n- `advisor-request.v1` 送信後に response が返らない、reviewer profile に必要な result がない、review loop が plateau した場合は drift として扱う。\n- Advisor は方針助言、Reviewer は品質判定という役割分離を維持し、沈黙は「不要な通知を出さない」ためだけに使う。\n\n### Phase 0: Planning Discussion（構造化 3 問チェック）\n\n全タスク実行前に、以下の 3 観点を原依頼と Plans.md から確認する。回答済み事項は聞き直さず、読み取り調査でも解けない判断分岐だけ質問する。\n`--no-discuss` 指定時は全スキップ。\n\n**Q1. スコープ確認**:\n> 原依頼で指定された {{N}} 件と担当範囲を照合する。対象が複数候補のままなら範囲を確認する。\n\n**Q2. 依存関係確認**（Plans.md に Depends カラムがある場合のみ）:\n> {{X}} の Depends={{Y}} と完了証拠を照合し、ready task だけ委譲する。仕様上の依存が矛盾する場合だけ確認する。\n\n**Q3. リスクフラグ**（`[needs-spike]` タスクがある場合のみ）:\n> {{Z}} の [needs-spike] に対し、既存の調査結果と Advisor 条件を確認する。追加の仕様判断や保護操作が必要な場合だけ確認する。\n\n### Phase A: Pre-delegate\n\n1. Plans.md を読み込み、対象タスクを特定\n2. 依存グラフを解析し、実行順序を決定\n3. 各タスク用に git worktree を作成\n\n### Phase B: Delegate（Codex Host Orchestration）\n\n- If you grep the same symbol twice in the same session, switch to harness_ast_search.\n- For a bugfix where homologous implementations appear across multiple modules, run harness_ast_search to find all implementations before editing.\n- Only when changed files include .ts or .tsx, the DoD requires zero new harness_lsp_diagnostics errors; if the harness MCP is not connected or the changed file types are not eligible, treat diagnostics as not-configured and non-blocking.\n\n```\nfor task in execution_order:\n    # B-0. 作業ディレクトリ分離\n    worktree_path = \"\u002Ftmp\u002Fworker-{task.number}-$$\"\n    branch_name = \"worker-{task.number}-$$\"\n    git worktree add -b {branch_name} {worktree_path}\n    TASK_BASE_REF = git rev-parse HEAD\n\n    # B-1. sprint-contract を生成\n    contract_path = bash(\"node \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fgenerate-sprint-contract.js\\\" {task.number}\")\n    contract_path = bash(\"scripts\u002Fenrich-sprint-contract.sh {contract_path} --check \\\"DoD を reviewer 観点で確認\\\" --approve\")\n    bash(\"scripts\u002Fensure-sprint-contract-ready.sh {contract_path}\")\n\n    # B-2. Worker 委託\n    Plans.md: task.status = \"cc:WIP\"\n\n    resolver_backend_arg = \"\"\n    if explicit_backend_value in [\"claude\", \"codex\", \"cursor\"]:\n        resolver_backend_arg = \"--backend {explicit_backend_value}\"\n    backend = bash(\"bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fresolve-impl-backend.sh\\\" {resolver_backend_arg}\")\n    if explicit_flag == \"--cursor\":\n        backend = \"cursor\"\n    if explicit_flag == \"--codex\":\n        backend = \"codex\"\n\n    if backend == \"cursor\":\n        print(\"? cursor \u002F $(bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fmodel-routing.sh\\\" --host cursor --role worker --field model) \u002F {branch_name} \u002F {task.ID}\")\n        companion_prompt = \"{task prompt}\\n\\nAfter making changes, create exactly one git commit in this worktree before returning.\"\n        companion_output = bash(\"bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcursor-companion.sh\\\" task --write --workspace {worktree_path} \\\"{companion_prompt}\\\"\")\n        latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n        if git(\"-C\", worktree_path, \"status\", \"--porcelain\") != \"\":\n            git(\"-C\", worktree_path, \"add\", \"-A\")\n            git(\"-C\", worktree_path, \"-c\", \"user.name=cursor-composer\", \"-c\", \"user.email=cursor-composer@local\", \"commit\", \"--no-verify\", \"-m\", \"cursor: breezing delegated change\")\n            latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n        if latest_commit == TASK_BASE_REF:\n            raise EscalationError(\"cursor companion produced no commit\")\n        worker_result = {type: \"companion-result.v1\", baseCommit: TASK_BASE_REF, commit: latest_commit, worktreePath: worktree_path, branch: branch_name, files_changed: git(\"-C\", worktree_path, \"diff\", \"--name-only\", \"{TASK_BASE_REF}..HEAD\"), summary: companion_output}\n        worker_id = null\n    elif backend == \"codex\":\n        companion_prompt = \"{task prompt}\\n\\nAfter making changes, create exactly one git commit in this worktree before returning.\"\n        companion_state_file = \"{worktree_path}\u002F.claude\u002Fstate\u002Fcodex-primary-environment.json\"\n        companion_output = bash(\"CODEX_MODEL_TIER=worker HARNESS_CODEX_PRIMARY_ENV_STATE_FILE={companion_state_file} bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcodex-companion.sh\\\" task --write -C {worktree_path} \\\"{companion_prompt}\\\"\")\n        latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n        if latest_commit == TASK_BASE_REF:\n            raise EscalationError(\"codex companion produced no commit\")\n        worker_result = {type: \"companion-result.v1\", baseCommit: TASK_BASE_REF, commit: latest_commit, worktreePath: worktree_path, branch: branch_name, files_changed: git(\"-C\", worktree_path, \"diff\", \"--name-only\", \"{TASK_BASE_REF}..HEAD\"), summary: companion_output}\n        worker_id = null\n    else:\n        print(\"? claude \u002F native-subagent \u002F {branch_name} \u002F {task.ID}\")\n        worker_id = spawn_agent({\n            agent_type: \"worker\",\n            message: \"作業ディレクトリ: {worktree_path} で作業してください。\\n\\nタスク: {task.内容}\\n目的と理由: {purpose_and_why}\\n担当範囲: {owned_paths_and_non_goals}\\nDoD: {task.DoD}\\nplan\u002Fspec: {selected_plan_and_spec_paths}\\ncontract_path: {contract_path}\\n証拠と前回結果: {evidence_and_prior_advice}\\n原依頼と承認の参照: {authorization_references}\\n\\n担当範囲で方法を選び、他担当の変更を戻さず、承認済み作業を完了してください。完了後 git commit してください。\\n\\n完了時、以下の JSON を返してください。summary に判断理由、チェックの実結果と証拠の参照、未確認点を含めてください:\\n{\\\"commit\\\": \\\"\u003Chash>\\\", \\\"files_changed\\\": [...], \\\"summary\\\": \\\"...\\\"}\",\n            fork_turns: \"3\"\n        })\n        worker_result = wait_agent({ targets: [worker_id] })\n\n    # B-3. Worker が advice request を返した時だけ、Lead が Advisor を呼ぶ\n    if backend == \"claude\" and worker_result.type == \"advisor-request.v1\":\n        advisor_id = spawn_agent({\n            agent_type: \"default\",\n            message: worker_result.request_json\n        })\n        advisor_result = wait_agent({ targets: [advisor_id] })\n        close_agent({ target: advisor_id })\n        send_input({\n            target: worker_id,\n            message: \"advisor-response.v1: {advisor_result}\"\n        })\n        worker_result = wait_agent({ targets: [worker_id] })\n\n    # B-4. Lead がレビュー実行（TASK_BASE_REF 起点）\n    # 公式プラグイン companion review を使用（harness-work の「レビューループ」参照）:\n    #   bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcodex-companion.sh\" review --base {TASK_BASE_REF}\n    #   → verdict マッピング: approve→APPROVE, needs-attention→REQUEST_CHANGES\n    VERDICT = review_task(worktree_path, TASK_BASE_REF)  # static review（harness-work 参照）\n    PROFILE = jq(contract_path, \".review.reviewer_profile\")\n    BROWSER_MODE = jq(contract_path, \".review.browser_mode \u002F\u002F \\\"scripted\\\"\")\n    REVIEW_INPUT = \"review-output.json\"\n    if PROFILE == \"runtime\":\n        # worktree 内で runtime checks を実行\n        REVIEW_INPUT = bash(\"cd {worktree_path} && scripts\u002Frun-contract-review-checks.sh {contract_path}\")\n        RUNTIME_VERDICT = jq(REVIEW_INPUT, \".verdict\")\n        if RUNTIME_VERDICT == \"REQUEST_CHANGES\":\n            VERDICT = \"REQUEST_CHANGES\"\n        elif RUNTIME_VERDICT == \"DOWNGRADE_TO_STATIC\":\n            REVIEW_INPUT = \"review-output.json\"  # static review にフォールバック\n    if PROFILE == \"browser\":\n        # browser artifact は PENDING_BROWSER scaffold。reviewer agent が後続で実行。\n        BROWSER_ARTIFACT = bash(\"scripts\u002Fgenerate-browser-review-artifact.sh {contract_path}\")\n        # REVIEW_INPUT は static review のまま維持\n    if REVIEW_INPUT != \"review-output.json\" and jq(REVIEW_INPUT, \".verdict\") == \"DOWNGRADE_TO_STATIC\":\n        REVIEW_INPUT = \"review-output.json\"\n    bash(\"scripts\u002Fwrite-review-result.sh {REVIEW_INPUT} {commit_hash}\")\n\n    # B-5. 修正ループ（REQUEST_CHANGES 時、contract の max_iterations まで）\n    review_count = 0\n    # sprint-contract が存在するときのみ max_iterations を読む。存在しない場合は 3（後方互換）\n    MAX_REVIEWS = read_contract(contract_path, \".review.max_iterations\") or 3\n    while VERDICT == \"REQUEST_CHANGES\" and review_count \u003C MAX_REVIEWS:\n        if backend == \"claude\":\n            send_input({\n                target: worker_id,\n                message: \"指摘内容: {issues}\\n元の目的、DoD、担当範囲、承認を維持し、対応と検証証拠を返してください。修正して git commit --amend してください。修正後 JSON を再出力してください。\"\n            })\n            wait_agent({ targets: [worker_id] })\n        elif backend == \"cursor\":\n            previous_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            bash(\"bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcursor-companion.sh\\\" task --write --workspace {worktree_path} \\\"{task prompt}\\n\\nReview findings:\\n{issues}\\n\\nPreserve the original DoD, owned scope and authorization references. Fix the findings and create one new git commit before returning.\\\"\")\n            latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            if git(\"-C\", worktree_path, \"status\", \"--porcelain\") != \"\":\n                git(\"-C\", worktree_path, \"add\", \"-A\")\n                git(\"-C\", worktree_path, \"-c\", \"user.name=cursor-composer\", \"-c\", \"user.email=cursor-composer@local\", \"commit\", \"--no-verify\", \"-m\", \"cursor: breezing review fix\")\n                latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            if latest_commit == previous_commit:\n                raise EscalationError(\"cursor companion retry produced no new commit\")\n        else:\n            previous_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            companion_state_file = \"{worktree_path}\u002F.claude\u002Fstate\u002Fcodex-primary-environment.json\"\n            bash(\"CODEX_MODEL_TIER=worker HARNESS_CODEX_PRIMARY_ENV_STATE_FILE={companion_state_file} bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcodex-companion.sh\\\" task --write -C {worktree_path} \\\"{task prompt}\\n\\nReview findings:\\n{issues}\\n\\nPreserve the original DoD, owned scope and authorization references. Fix the findings and create one new git commit before returning.\\\"\")\n            latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            if latest_commit == previous_commit:\n                raise EscalationError(\"codex companion retry produced no new commit\")\n        VERDICT = review_task(worktree_path, TASK_BASE_REF)\n        review_count++\n\n    # B-6. Worker 終了\n    if backend == \"claude\":\n        close_agent({ target: worker_id })\n\n    # B-7. 結果処理\n    if VERDICT == \"APPROVE\":\n        commit_hash = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n        git cherry-pick --no-commit {TASK_BASE_REF}..{commit_hash}\n        git commit -m \"{task.内容}\"\n        Plans.md: task.status = \"cc:完了 [{short_hash}]\"\n    else:\n        → ユーザーにエスカレーション（Plans.md は cc:WIP のまま）\n        → 後続タスクも停止\n\n    # B-8. Worktree クリーンアップ\n    git worktree remove {worktree_path}\n    git branch -D {branch_name}\n\n    # B-9. Progress feed\n    print(\"? Progress: Task {completed}\u002F{total} 完了 — {task.内容}\")\n```\n\n### ready task の並列 spawn（既定 max \u002F `--max-workers N` 指定時）\n\nDepends が満たされた ready task が複数ある場合、既定では ready task の数まで同時 spawn する。\n`--max-workers N` を指定すると、同時 spawn 数を N 件までに制限する。\n`--max-workers 1` は旧来の直列挙動に戻す escape hatch。\n\n> **`wait_agent` のセマンティクス**: `wait_agent({targets: [a, b]})` は最初に完了した1つを返す（全完了待ちではない）。\n> したがって、全 Worker の完了を待つにはループで個別に `wait_agent` を呼ぶ。\n\n```\n# 独立タスク A, B を並列 spawn（各自 worktree 分離済み）\nworker_a = spawn_agent({ agent_type: \"worker\", message: \"作業ディレクトリ: \u002Ftmp\u002Fworker-a-$$ ...\", fork_turns: \"3\" })\nworker_b = spawn_agent({ agent_type: \"worker\", message: \"作業ディレクトリ: \u002Ftmp\u002Fworker-b-$$ ...\", fork_turns: \"3\" })\n\n# 各 Worker の完了を個別に待ち → レビュー → cherry-pick（直列）\n# wait_agent は最初の1つを返すので、残りの Worker はまだ動作中\nfor worker_id in [worker_a, worker_b]:\n    wait_agent({ targets: [worker_id] })    # この Worker の完了を待つ\n    VERDICT = review_task(worktree_path, TASK_BASE_REF)  # harness-work 参照\n    # 修正ループ（必要なら）...\n    close_agent({ target: worker_id })\n    if VERDICT == \"APPROVE\":\n        cherry-pick → Plans.md 更新\n```\n\n> **制約**: 並列化できるのは Depends が満たされた ready task のみ。\n> max は ready task 数の上限であり、無制限 spawn ではない。\n> レビュー → cherry-pick は直列実行（main への書き込みが競合するため）。\n\n### Worker の出力契約\n\nWorker プロンプトには、完了時に以下の JSON を返すことを明示する:\n\n```json\n{\n  \"commit\": \"a1b2c3d\",\n  \"files_changed\": [\"src\u002Ffoo.ts\", \"tests\u002Ffoo.test.ts\"],\n  \"summary\": \"foo モジュールに bar 機能を追加\"\n}\n```\n\nLead はこの JSON を解析して commit hash とファイル一覧を取得する。\nJSON の成功申告だけで完了にせず、差分、DoD、必須チェック、review の証拠を照合する。内部の思考過程は求めない。\n\n### Progress Feed（Phase B 中の進捗通知）\n\n```\n? Progress: Task 1\u002F5 完了 — \"harness-work に失敗再チケット化を追加\"\n? Progress: Task 2\u002F5 完了 — \"harness-sync に --snapshot を追加\"\n```\n\n### 完了報告（Phase C）\n\n全タスク完了後、Lead が以下の手順でリッチ完了報告を生成:\n\n1. `git log --oneline {session_base_ref}..HEAD` で全 cherry-pick コミットを収集\n2. `git diff --stat {session_base_ref}..HEAD` で全体の変更規模を取得\n3. Plans.md の残タスクを抽出\n4. Breezing テンプレートに従い出力\n\n## Claude Code 版との差分\n\n| 項目 | Claude Code 版 | Codex ネイティブ版（本ファイル） |\n|------|---------------|-------------------------------|\n| Worker spawn | Claude Code Agent tool + worktree isolation | resolver result: `spawn_agent`, `codex-companion.sh`, or `cursor-companion.sh` + `git worktree add` |\n| 完了待ち | `Agent` の戻り値 | `wait_agent({targets: [id]})` |\n| 修正指示 | Claude Code message tool | `send_input({target, message})` |\n| Worker 終了 | 自動 | `close_agent({target})` |\n| レビュー | Codex exec → Reviewer agent fallback | companion `review --base`（構造化出力） |\n| 権限 | `bypassPermissions` + hooks | companion `task --write` \u002F `spawn_agent`: セッション権限継承 |\n| Agent Teams | `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 環境変数 | Codex native（標準機能） |\n| Worktree | `isolation=\"worktree\"` 自動管理 | `git worktree add\u002Fremove` 手動管理 |\n| モード昇格 | タスク4件以上で自動 | `--breezing` 明示時のみ |\n\n## Related Skills\n\n- `harness-work` — 単一タスクからチーム実行まで（本体）\n- `harness-sync` — 進捗同期\n- `harness-review` — コードレビュー\n","# Breezing — Team Execution Mode (Codex Host)\n\n> **この SKILL.md は Codex host 版です。**\n> Claude Code 版は `skills\u002Fbreezing\u002FSKILL.md` を参照してください。\n> backend は resolver で選びます。配布 plugin のフラグなし既定は `claude` 互換のままです。\n> `--cursor` \u002F `--backend cursor`、または `HARNESS_IMPL_BACKEND=cursor` を設定した環境では Cursor worker backend を使います。\n> frontmatter の `allowed-tools` も、この4つの Codex native tool 名に合わせます。\n\n**後方互換エイリアス**: `harness-work --breezing` をチーム実行モードで動かします。\n\n## Default Pipeline（plan → work → review → report を 1 コマンドで完走）\n\nClaude Code 版と同一の契約（operator 裁定 2026-07-24。正本: `skills\u002Fbreezing\u002FSKILL.md` の同名節）:\n\n1. **Plan gate**: 依頼スコープの task が Plans.md に無い\u002F不足なら、先に `harness-plan` を実行してから続行（スコープ既定は「今進められる全作業」）\n2. **Work**: 既存のチーム実行フロー（per-task review 含む）\n3. **Integrated Review Gate（既定 ON）**: 実装完了後・**最終化（完了報告・run 完了宣言）の前に**、run 全体 diff に `harness-review` を実行。review target は通常 `{base_ref}..HEAD`、`--no-commit` run は working tree（未 commit 変更 + untracked）。fresh-context 独立 reviewer + cross-CLI second opinion を併走させ、APPROVE まで修正 → 再レビューを反復（最大 3 回。未収束は影響 task を `cc:WIP` に戻して human escalation）\n4. **Finalize + Report**: gate APPROVE 後に Plans.md 更新・完了報告を確定。最終報告は easy 作法（host に `easy` skill があればその作法、なければ Completion Report テンプレート）\n\n低リスクの高速 run で 3 を省きたい時は `--no-review-gate`（per-task review は維持、統合レビューのみスキップ）。\n\n### Work Mode Lifecycle (`bin\u002Fharness work-mode`)\n\nClaude Code 版と同一の契約（正本: `skills\u002Fbreezing\u002FSKILL.md` の同名節）。\nLead は run 開始時（Plan gate に入る前）に `bin\u002Fharness work-mode on` を実行し、\nrun 終了時は**成功・失敗・中断の全経路**で `bin\u002Fharness work-mode off` を実行する。\nsession ID が解決できない場合、`work-mode` は非ゼロ終了し理由を stderr に出す。\n\n## Quick Reference\n\n```bash\nbreezing                        # スコープを聞いてから実行\nbreezing all                    # resolved backend で ready task を完走（配布既定は claude、現環境は user config で cursor 可）\nbreezing 3-6                    # resolved backend でタスク3〜6を完走\nbreezing composer 2.5 all       # 自然言語 trigger: cursor backend として扱う\nbreezing --backend cursor all    # Cursor worker backend を明示\nbreezing --backend claude all    # Codex native spawn_agent worker を明示\nbreezing --codex all             # Codex CLI worker backend を明示\nbreezing --cursor all            # Cursor worker backend を明示\nbreezing --max-workers 2 all     # ready task の同時 spawn 上限を2に\nbreezing --max-workers 1 all     # 旧来の直列挙動に戻す\nbreezing --no-discuss all       # 計画議論スキップで全タスク完走\n```\n\n## Options\n\n| Option | Description | Default |\n|--------|-------------|---------|\n| `all` | 全未完了タスクを対象 | - |\n| `N` or `N-M` | タスク番号\u002F範囲指定 | - |\n| `--backend \u003Cclaude\\|codex\\|cursor>` | worker backend を明示選択 | resolver result（配布既定は claude） |\n| `--cursor` | `--backend cursor` の別名 | false |\n| `--codex` | `--backend codex` の別名 | false |\n| `--max-workers N` | ready task の同時 spawn 数上限（breezing 固有オプション）。`1` で旧来の直列挙動 | max |\n| `--no-commit` | 非対応（Breezing では Worker の一時 commit と Lead の cherry-pick が必須） | - |\n| `--no-discuss` | 計画議論スキップ | false |\n\n## Execution\n\n**このスキルは `harness-work --breezing` に委譲します。** 以下の設定で実行してください:\n\n1. **引数を `harness-work --breezing` に渡す**（`--max-workers N` は breezing 固有オプションとして解釈し、`harness-work` の `--parallel` とは別概念）\n2. **チーム実行モードを強制** — Lead → Worker spawn → 必要時 Advisor → companion review Reviewer の四者分離\n3. **Lead は delegate 専念** — コードを直接書かず、Worker 実行中は仕様照合、独立した調査、証拠確認、統合準備を進める\n\n委譲本文には目的と理由、担当範囲、DoD、選択した plan \u002F spec、観測済み証拠、原依頼と承認の参照を含める。以降の `{task prompt}` もこの情報を持つ。\n独立して検証できる成果に ownership を割り当て、ready task と利用可能な同時実行上限を守る。他担当の変更を戻さず、関連 follow-up は同じ担当へ返す。Reviewer は fresh-context のまま分離する。\n担当は境界内で方法を選び、承認済み可逆作業を完了する。不足は読み取りで補い、軽微な仮定と重大な仕様判断・不足する権限を区別する。推定スコープを承認として扱わない。\n必須チェックと既定レビューが通ったら、新しい変更や未解決の懸念がない限り追加テストや機能を増やさず、実結果と証拠を返す。\n\n### Execution Backend (persistent)\n\nバックエンド選択（worker を `claude` \u002F `codex` \u002F `cursor` のどれで実装するか）の正本は\n`harness-work` の「Execution Backend Selection（実装バックエンド選択）」を参照する。\nそこに precedence、role-scope（review \u002F advisor は実装役から分離した担当別 route）、self_review スキップ、cursor banner が定義されている。\nbackend 判定は **必ず** resolver 経由にし、`HARNESS_IMPL_BACKEND` env だけを直読みしない。\nCCH のモデルと effort は未指定時の role 既定。利用者の明示指定と手動変更を尊重し、native profile \u002F 明示 override に従う。AI が文言から再調整したり、親の変更を全 Worker に配ったりしない。独立 Reviewer の隔離と read-only は維持する。\n\nCodex Breezing も配布 plugin では call-site default を変えない:\n\n```bash\nbash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fresolve-impl-backend.sh\"\n```\n\nprecedence は `--backend` \u002F `--cursor` \u002F `--codex` > `HARNESS_IMPL_BACKEND` env > project `env.local` >\nuser `~\u002F.config\u002Fclaude-harness\u002Fimpl-backend.env` > call-site default `claude`。\nつまり配布 plugin のフラグなし `breezing all` は互換性のため `claude` のまま。\nこの環境のように user\u002Fproject config で `HARNESS_IMPL_BACKEND=cursor` が設定されている場合だけ、\nフラグなしで Cursor worker backend になる。Codex native subagent worker を明示する時は `--backend claude` を指定する。\n\n`composer` \u002F `コンポーザー` \u002F `Composer で` \u002F `composer 2.5` \u002F `composer モード` は、正式に `cursor backend` の trigger として扱う。\nこれは `--cursor` 相当の intent であり、Lead は `resolve-impl-backend.sh` を経由して backend を確定する。\n解決時は明示 override として `--backend cursor` を渡し、env \u002F project \u002F user file \u002F default より優先させる。\n`composer` は Codex native Worker の内側に spawn する追加 agent ではなく、非 `claude` backend の規約どおり Lead が `cursor-companion.sh` を直接呼ぶ。\n\n既定の worker 数は **max**。\nここでの max は「対象スコープ内で Depends が満たされ、今すぐ実行できる ready task の最大数」を意味する。\n無制限に Worker を spawn する意味ではない。\n依存待ちのタスクは、前段タスクが完了して ready になるまで spawn しない。\n旧来の 1 件ずつ進める直列挙動に戻したい場合は `--max-workers 1` を指定する。\n\nWorker の実装は並列化できるが、レビューと main への cherry-pick は直列で行う。\nこれは同じ main worktree への書き込み競合を避けるため。\nGo の `HARNESS_TEAM_HIERARCHY=sublead` は CLI mini-plan 入口未実装、`HARNESS_REVIEW_ITERATE=on` は production brain runner 未提供（`claude-companion.sh` 欠損）のため end-to-end 未対応。この更新では有効化せず、既定の flat \u002F OFF を維持する。\nこの制約は Go opt-in 入口に限る。手動 Producer 分解と通常の Skill \u002F Native reviewer loop は別経路として維持する。\n\n### `harness-work` との違い\n\n| 特徴 | `harness-work` | `breezing` (このスキル) |\n|------|-----------------|------------------------|\n| デフォルトモード | Solo \u002F Sequential | **Breezing（チーム実行）** |\n| 並列手段 | companion `task` Bash 並列 | **`spawn_agent` によるサブエージェント委譲** |\n| Lead の役割 | 調整+実装 | **delegate (調整専念)** |\n| レビュー | Lead 自己レビュー | **companion review 独立レビュー** |\n| デフォルトスコープ | 次のタスク | **全部** |\n\n### Team Composition（Codex Native）\n\n| Role | 実行方式 | 権限 | 責務 |\n|------|---------|------|------|\n| Lead | (self) | 現セッション継承 | 調整・指揮・タスク分配・cherry-pick |\n| Worker ×N | resolver result: `spawn_agent` \u002F `codex-companion.sh` \u002F `cursor-companion.sh task --write --workspace \u003Cworktree>` | セッション権限継承 | 実装（git worktree 分離） |\n| Advisor | `harness:advisor` | 読み取り専用 | 方針助言 (`PLAN` \u002F `CORRECTION` \u002F `STOP`) |\n| Reviewer | companion `review --base` | read-only | 独立レビュー |\n\n## Flow Summary\n\n```\nbreezing [scope] [--backend claude|codex|cursor] [--max-workers N] [--no-discuss]\n    │\n    ↓ Load harness-work --breezing\n    │\nPhase 0: Planning Discussion (--no-discuss でスキップ)\nPhase A: Pre-delegate（チーム初期化 + worktree 準備）\nPhase B: Delegate（resolver-selected worker + 必要時 Advisor + companion review レビュー）\nPhase C: Post-delegate（統合検証 + Plans.md 更新 + commit）\n```\n\n## Advisor Protocol\n\nWorker は generic な subagent を増やさない。\n迷った時は構造化 JSON で相談要求だけ返し、Lead が advisor を呼ぶ。\n\n1. Worker → `advisor-request.v1`\n2. Lead → Advisor\n3. Advisor → `advisor-response.v1`\n4. Lead → 同じ Worker に advice を返して続行\n5. Reviewer は最後の成果物だけを見る\n\n相談条件は loop \u002F solo とそろえる。\n\n- 高リスク task（`needs-spike` \u002F `security-sensitive` \u002F `state-migration`）の初回実行前\n- 同じ原因の失敗が 2 回続いた後\n- plateau により `PIVOT_REQUIRED` を返す直前\n- 同じ `trigger_hash` は 1 回だけ。task ごとの相談回数は最大 3 回\n\n## Realtime Handoff \u002F Silence Policy\n\nCodex `0.123.0` 以降では、background agent が realtime handoff の transcript delta を受け取れる。\nBreezing ではこの仕組みを「余計な通知を増やす入口」ではなく、「必要な時だけ判断を更新するための入力」として扱う。\n\nひとことで: Worker \u002F Advisor \u002F Reviewer は、状態が変わらない transcript delta には反応せず、Lead への報告は material state change に絞る。\n\nたとえると、複数人の作業部屋で全員が独り言を実況するのではなく、担当作業が終わった時、詰まった時、判断待ちの時だけ声をかける形。\n\n報告するもの:\n\n- Worker の完了 JSON、blocked 理由、必要な `advisor-request.v1`\n- Advisor の `PLAN` \u002F `CORRECTION` \u002F `STOP`\n- Reviewer の `APPROVE` \u002F `REQUEST_CHANGES`\n- validation failure、contract readiness failure、plateau、drift 検知\n- Lead が出す task 完了単位の progress feed\n\n沈黙してよいもの:\n\n- transcript delta を受け取っただけで、task status、review verdict、advisor decision が変わっていない場合\n- tool stdout の細かな増分で、job log に残っていれば十分なもの\n- parallel spawn 中の待機 heartbeat。待機は `wait_agent` \u002F job status に任せる\n\n途中報告の頻度:\n\n- Lead の progress feed は task 完了ごとに 1 回を基本にする。\n- Worker \u002F Reviewer は「完了・差し戻し・ブロック」の結果だけを返し、delta ごとの小報告は避ける。\n- user が明示的に status を求めた場合だけ、Lead がまとめて現在地を返す。\n\nAdvisor \u002F Reviewer drift との関係:\n\n- silence policy は Advisor \u002F Reviewer を黙らせる免除ではない。\n- `advisor-request.v1` 送信後に response が返らない、reviewer profile に必要な result がない、review loop が plateau した場合は drift として扱う。\n- Advisor は方針助言、Reviewer は品質判定という役割分離を維持し、沈黙は「不要な通知を出さない」ためだけに使う。\n\n### Phase 0: Planning Discussion（構造化 3 問チェック）\n\n全タスク実行前に、以下の 3 観点を原依頼と Plans.md から確認する。回答済み事項は聞き直さず、読み取り調査でも解けない判断分岐だけ質問する。\n`--no-discuss` 指定時は全スキップ。\n\n**Q1. スコープ確認**:\n> 原依頼で指定された {{N}} 件と担当範囲を照合する。対象が複数候補のままなら範囲を確認する。\n\n**Q2. 依存関係確認**（Plans.md に Depends カラムがある場合のみ）:\n> {{X}} の Depends={{Y}} と完了証拠を照合し、ready task だけ委譲する。仕様上の依存が矛盾する場合だけ確認する。\n\n**Q3. リスクフラグ**（`[needs-spike]` タスクがある場合のみ）:\n> {{Z}} の [needs-spike] に対し、既存の調査結果と Advisor 条件を確認する。追加の仕様判断や保護操作が必要な場合だけ確認する。\n\n### Phase A: Pre-delegate\n\n1. Plans.md を読み込み、対象タスクを特定\n2. 依存グラフを解析し、実行順序を決定\n3. 各タスク用に git worktree を作成\n\n### Phase B: Delegate（Codex Host Orchestration）\n\n- If you grep the same symbol twice in the same session, switch to harness_ast_search.\n- For a bugfix where homologous implementations appear across multiple modules, run harness_ast_search to find all implementations before editing.\n- Only when changed files include .ts or .tsx, the DoD requires zero new harness_lsp_diagnostics errors; if the harness MCP is not connected or the changed file types are not eligible, treat diagnostics as not-configured and non-blocking.\n\n```\nfor task in execution_order:\n    # B-0. 作業ディレクトリ分離\n    worktree_path = \"\u002Ftmp\u002Fworker-{task.number}-$$\"\n    branch_name = \"worker-{task.number}-$$\"\n    git worktree add -b {branch_name} {worktree_path}\n    TASK_BASE_REF = git rev-parse HEAD\n\n    # B-1. sprint-contract を生成\n    contract_path = bash(\"node \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fgenerate-sprint-contract.js\\\" {task.number}\")\n    contract_path = bash(\"scripts\u002Fenrich-sprint-contract.sh {contract_path} --check \\\"DoD を reviewer 観点で確認\\\" --approve\")\n    bash(\"scripts\u002Fensure-sprint-contract-ready.sh {contract_path}\")\n\n    # B-2. Worker 委託\n    Plans.md: task.status = \"cc:WIP\"\n\n    resolver_backend_arg = \"\"\n    if explicit_backend_value in [\"claude\", \"codex\", \"cursor\"]:\n        resolver_backend_arg = \"--backend {explicit_backend_value}\"\n    backend = bash(\"bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fresolve-impl-backend.sh\\\" {resolver_backend_arg}\")\n    if explicit_flag == \"--cursor\":\n        backend = \"cursor\"\n    if explicit_flag == \"--codex\":\n        backend = \"codex\"\n\n    if backend == \"cursor\":\n        print(\"? cursor \u002F $(bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fmodel-routing.sh\\\" --host cursor --role worker --field model) \u002F {branch_name} \u002F {task.ID}\")\n        companion_prompt = \"{task prompt}\\n\\nAfter making changes, create exactly one git commit in this worktree before returning.\"\n        companion_output = bash(\"bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcursor-companion.sh\\\" task --write --workspace {worktree_path} \\\"{companion_prompt}\\\"\")\n        latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n        if git(\"-C\", worktree_path, \"status\", \"--porcelain\") != \"\":\n            git(\"-C\", worktree_path, \"add\", \"-A\")\n            git(\"-C\", worktree_path, \"-c\", \"user.name=cursor-composer\", \"-c\", \"user.email=cursor-composer@local\", \"commit\", \"--no-verify\", \"-m\", \"cursor: breezing delegated change\")\n            latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n        if latest_commit == TASK_BASE_REF:\n            raise EscalationError(\"cursor companion produced no commit\")\n        worker_result = {type: \"companion-result.v1\", baseCommit: TASK_BASE_REF, commit: latest_commit, worktreePath: worktree_path, branch: branch_name, files_changed: git(\"-C\", worktree_path, \"diff\", \"--name-only\", \"{TASK_BASE_REF}..HEAD\"), summary: companion_output}\n        worker_id = null\n    elif backend == \"codex\":\n        companion_prompt = \"{task prompt}\\n\\nAfter making changes, create exactly one git commit in this worktree before returning.\"\n        companion_state_file = \"{worktree_path}\u002F.claude\u002Fstate\u002Fcodex-primary-environment.json\"\n        companion_output = bash(\"CODEX_MODEL_TIER=worker HARNESS_CODEX_PRIMARY_ENV_STATE_FILE={companion_state_file} bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcodex-companion.sh\\\" task --write -C {worktree_path} \\\"{companion_prompt}\\\"\")\n        latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n        if latest_commit == TASK_BASE_REF:\n            raise EscalationError(\"codex companion produced no commit\")\n        worker_result = {type: \"companion-result.v1\", baseCommit: TASK_BASE_REF, commit: latest_commit, worktreePath: worktree_path, branch: branch_name, files_changed: git(\"-C\", worktree_path, \"diff\", \"--name-only\", \"{TASK_BASE_REF}..HEAD\"), summary: companion_output}\n        worker_id = null\n    else:\n        print(\"? claude \u002F native-subagent \u002F {branch_name} \u002F {task.ID}\")\n        worker_id = spawn_agent({\n            agent_type: \"worker\",\n            message: \"作業ディレクトリ: {worktree_path} で作業してください。\\n\\nタスク: {task.内容}\\n目的と理由: {purpose_and_why}\\n担当範囲: {owned_paths_and_non_goals}\\nDoD: {task.DoD}\\nplan\u002Fspec: {selected_plan_and_spec_paths}\\ncontract_path: {contract_path}\\n証拠と前回結果: {evidence_and_prior_advice}\\n原依頼と承認の参照: {authorization_references}\\n\\n担当範囲で方法を選び、他担当の変更を戻さず、承認済み作業を完了してください。完了後 git commit してください。\\n\\n完了時、以下の JSON を返してください。summary に判断理由、チェックの実結果と証拠の参照、未確認点を含めてください:\\n{\\\"commit\\\": \\\"\u003Chash>\\\", \\\"files_changed\\\": [...], \\\"summary\\\": \\\"...\\\"}\",\n            fork_turns: \"3\"\n        })\n        worker_result = wait_agent({ targets: [worker_id] })\n\n    # B-3. Worker が advice request を返した時だけ、Lead が Advisor を呼ぶ\n    if backend == \"claude\" and worker_result.type == \"advisor-request.v1\":\n        advisor_id = spawn_agent({\n            agent_type: \"default\",\n            message: worker_result.request_json\n        })\n        advisor_result = wait_agent({ targets: [advisor_id] })\n        close_agent({ target: advisor_id })\n        send_input({\n            target: worker_id,\n            message: \"advisor-response.v1: {advisor_result}\"\n        })\n        worker_result = wait_agent({ targets: [worker_id] })\n\n    # B-4. Lead がレビュー実行（TASK_BASE_REF 起点）\n    # 公式プラグイン companion review を使用（harness-work の「レビューループ」参照）:\n    #   bash \"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcodex-companion.sh\" review --base {TASK_BASE_REF}\n    #   → verdict マッピング: approve→APPROVE, needs-attention→REQUEST_CHANGES\n    VERDICT = review_task(worktree_path, TASK_BASE_REF)  # static review（harness-work 参照）\n    PROFILE = jq(contract_path, \".review.reviewer_profile\")\n    BROWSER_MODE = jq(contract_path, \".review.browser_mode \u002F\u002F \\\"scripted\\\"\")\n    REVIEW_INPUT = \"review-output.json\"\n    if PROFILE == \"runtime\":\n        # worktree 内で runtime checks を実行\n        REVIEW_INPUT = bash(\"cd {worktree_path} && scripts\u002Frun-contract-review-checks.sh {contract_path}\")\n        RUNTIME_VERDICT = jq(REVIEW_INPUT, \".verdict\")\n        if RUNTIME_VERDICT == \"REQUEST_CHANGES\":\n            VERDICT = \"REQUEST_CHANGES\"\n        elif RUNTIME_VERDICT == \"DOWNGRADE_TO_STATIC\":\n            REVIEW_INPUT = \"review-output.json\"  # static review にフォールバック\n    if PROFILE == \"browser\":\n        # browser artifact は PENDING_BROWSER scaffold。reviewer agent が後続で実行。\n        BROWSER_ARTIFACT = bash(\"scripts\u002Fgenerate-browser-review-artifact.sh {contract_path}\")\n        # REVIEW_INPUT は static review のまま維持\n    if REVIEW_INPUT != \"review-output.json\" and jq(REVIEW_INPUT, \".verdict\") == \"DOWNGRADE_TO_STATIC\":\n        REVIEW_INPUT = \"review-output.json\"\n    bash(\"scripts\u002Fwrite-review-result.sh {REVIEW_INPUT} {commit_hash}\")\n\n    # B-5. 修正ループ（REQUEST_CHANGES 時、contract の max_iterations まで）\n    review_count = 0\n    # sprint-contract が存在するときのみ max_iterations を読む。存在しない場合は 3（後方互換）\n    MAX_REVIEWS = read_contract(contract_path, \".review.max_iterations\") or 3\n    while VERDICT == \"REQUEST_CHANGES\" and review_count \u003C MAX_REVIEWS:\n        if backend == \"claude\":\n            send_input({\n                target: worker_id,\n                message: \"指摘内容: {issues}\\n元の目的、DoD、担当範囲、承認を維持し、対応と検証証拠を返してください。修正して git commit --amend してください。修正後 JSON を再出力してください。\"\n            })\n            wait_agent({ targets: [worker_id] })\n        elif backend == \"cursor\":\n            previous_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            bash(\"bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcursor-companion.sh\\\" task --write --workspace {worktree_path} \\\"{task prompt}\\n\\nReview findings:\\n{issues}\\n\\nPreserve the original DoD, owned scope and authorization references. Fix the findings and create one new git commit before returning.\\\"\")\n            latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            if git(\"-C\", worktree_path, \"status\", \"--porcelain\") != \"\":\n                git(\"-C\", worktree_path, \"add\", \"-A\")\n                git(\"-C\", worktree_path, \"-c\", \"user.name=cursor-composer\", \"-c\", \"user.email=cursor-composer@local\", \"commit\", \"--no-verify\", \"-m\", \"cursor: breezing review fix\")\n                latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            if latest_commit == previous_commit:\n                raise EscalationError(\"cursor companion retry produced no new commit\")\n        else:\n            previous_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            companion_state_file = \"{worktree_path}\u002F.claude\u002Fstate\u002Fcodex-primary-environment.json\"\n            bash(\"CODEX_MODEL_TIER=worker HARNESS_CODEX_PRIMARY_ENV_STATE_FILE={companion_state_file} bash \\\"${HARNESS_PLUGIN_ROOT}\u002Fscripts\u002Fcodex-companion.sh\\\" task --write -C {worktree_path} \\\"{task prompt}\\n\\nReview findings:\\n{issues}\\n\\nPreserve the original DoD, owned scope and authorization references. Fix the findings and create one new git commit before returning.\\\"\")\n            latest_commit = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n            if latest_commit == previous_commit:\n                raise EscalationError(\"codex companion retry produced no new commit\")\n        VERDICT = review_task(worktree_path, TASK_BASE_REF)\n        review_count++\n\n    # B-6. Worker 終了\n    if backend == \"claude\":\n        close_agent({ target: worker_id })\n\n    # B-7. 結果処理\n    if VERDICT == \"APPROVE\":\n        commit_hash = git(\"-C\", worktree_path, \"rev-parse\", \"HEAD\")\n        git cherry-pick --no-commit {TASK_BASE_REF}..{commit_hash}\n        git commit -m \"{task.内容}\"\n        Plans.md: task.status = \"cc:完了 [{short_hash}]\"\n    else:\n        → ユーザーにエスカレーション（Plans.md は cc:WIP のまま）\n        → 後続タスクも停止\n\n    # B-8. Worktree クリーンアップ\n    git worktree remove {worktree_path}\n    git branch -D {branch_name}\n\n    # B-9. Progress feed\n    print(\"? Progress: Task {completed}\u002F{total} 完了 — {task.内容}\")\n```\n\n### ready task の並列 spawn（既定 max \u002F `--max-workers N` 指定時）\n\nDepends が満たされた ready task が複数ある場合、既定では ready task の数まで同時 spawn する。\n`--max-workers N` を指定すると、同時 spawn 数を N 件までに制限する。\n`--max-workers 1` は旧来の直列挙動に戻す escape hatch。\n\n> **`wait_agent` のセマンティクス**: `wait_agent({targets: [a, b]})` は最初に完了した1つを返す（全完了待ちではない）。\n> したがって、全 Worker の完了を待つにはループで個別に `wait_agent` を呼ぶ。\n\n```\n# 独立タスク A, B を並列 spawn（各自 worktree 分離済み）\nworker_a = spawn_agent({ agent_type: \"worker\", message: \"作業ディレクトリ: \u002Ftmp\u002Fworker-a-$$ ...\", fork_turns: \"3\" })\nworker_b = spawn_agent({ agent_type: \"worker\", message: \"作業ディレクトリ: \u002Ftmp\u002Fworker-b-$$ ...\", fork_turns: \"3\" })\n\n# 各 Worker の完了を個別に待ち → レビュー → cherry-pick（直列）\n# wait_agent は最初の1つを返すので、残りの Worker はまだ動作中\nfor worker_id in [worker_a, worker_b]:\n    wait_agent({ targets: [worker_id] })    # この Worker の完了を待つ\n    VERDICT = review_task(worktree_path, TASK_BASE_REF)  # harness-work 参照\n    # 修正ループ（必要なら）...\n    close_agent({ target: worker_id })\n    if VERDICT == \"APPROVE\":\n        cherry-pick → Plans.md 更新\n```\n\n> **制約**: 並列化できるのは Depends が満たされた ready task のみ。\n> max は ready task 数の上限であり、無制限 spawn ではない。\n> レビュー → cherry-pick は直列実行（main への書き込みが競合するため）。\n\n### Worker の出力契約\n\nWorker プロンプトには、完了時に以下の JSON を返すことを明示する:\n\n```json\n{\n  \"commit\": \"a1b2c3d\",\n  \"files_changed\": [\"src\u002Ffoo.ts\", \"tests\u002Ffoo.test.ts\"],\n  \"summary\": \"foo モジュールに bar 機能を追加\"\n}\n```\n\nLead はこの JSON を解析して commit hash とファイル一覧を取得する。\nJSON の成功申告だけで完了にせず、差分、DoD、必須チェック、review の証拠を照合する。内部の思考過程は求めない。\n\n### Progress Feed（Phase B 中の進捗通知）\n\n```\n? Progress: Task 1\u002F5 完了 — \"harness-work に失敗再チケット化を追加\"\n? Progress: Task 2\u002F5 完了 — \"harness-sync に --snapshot を追加\"\n```\n\n### 完了報告（Phase C）\n\n全タスク完了後、Lead が以下の手順でリッチ完了報告を生成:\n\n1. `git log --oneline {session_base_ref}..HEAD` で全 cherry-pick コミットを収集\n2. `git diff --stat {session_base_ref}..HEAD` で全体の変更規模を取得\n3. Plans.md の残タスクを抽出\n4. Breezing テンプレートに従い出力\n\n## Claude Code 版との差分\n\n| 項目 | Claude Code 版 | Codex ネイティブ版（本ファイル） |\n|------|---------------|-------------------------------|\n| Worker spawn | Claude Code Agent tool + worktree isolation | resolver result: `spawn_agent`, `codex-companion.sh`, or `cursor-companion.sh` + `git worktree add` |\n| 完了待ち | `Agent` の戻り値 | `wait_agent({targets: [id]})` |\n| 修正指示 | Claude Code message tool | `send_input({target, message})` |\n| Worker 終了 | 自動 | `close_agent({target})` |\n| レビュー | Codex exec → Reviewer agent fallback | companion `review --base`（構造化出力） |\n| 権限 | `bypassPermissions` + hooks | companion `task --write` \u002F `spawn_agent`: セッション権限継承 |\n| Agent Teams | `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` 環境変数 | Codex native（標準機能） |\n| Worktree | `isolation=\"worktree\"` 自動管理 | `git worktree add\u002Fremove` 手動管理 |\n| モード昇格 | タスク4件以上で自動 | `--breezing` 明示時のみ |\n\n## Related Skills\n\n- `harness-work` — 単一タスクからチーム実行まで（本体）\n- `harness-sync` — 進捗同期\n- `harness-review` — コードレビュー\n",{"base":56,"kind":48,"name":5,"pair":57,"role":24,"owner":58,"shape":59,"since":60,"effort":61,"purpose":62,"trigger":63,"description":7,"allowed-tools":64,"argument-hint":70,"description-en":7,"description-ja":71,"user-invocable":72},"harness-work","harness-review","harness-core","wrap","2026-05-05","high","Wrap harness-work with Codex-host team execution orchestration","breezing, team execution, do everything, cursor worker, composer, composer 2.5, composer mode, コンポーザー",[65,42,66,67,68,69],"Read","spawn_agent","send_input","wait_agent","close_agent","[all|N-M|--backend claude|codex|cursor|--cursor|--codex|--max-workers N|--no-discuss]","チーム実行モード（Codex ホスト版）— harness-work のチーム協調エイリアス。Codex からも opt-in で Cursor worker backend に委譲できる。breezing, チーム実行, 全部やって, composer, コンポーザー, composer 2.5 でトリガー。",true,"main","c2304c325d4432f51d632e0586d886767b0f41ea","codex\u002F.codex\u002Fskills\u002Fbreezing",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":83,"prompt":93,"zipAvailable":72},[84,87,90],{"tool":85,"command":86},"npx","npx skills add Chachamaru127\u002Fclaude-code-harness --skill breezing",{"tool":88,"command":89},"bunx","bunx skills add Chachamaru127\u002Fclaude-code-harness --skill breezing",{"tool":91,"command":92},"pnpm","pnpm dlx skills add Chachamaru127\u002Fclaude-code-harness --skill breezing","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Fcodex\u002F.codex\u002Fskills\u002Fbreezing\u002FSKILL.md",[95],{"path":96,"resourceType":97,"resourceTypeDesc":98,"sizeBytes":99,"sourceHtmlUrl":100},"manifest.json","REFERENCE","参考文档",165,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FPlatform\u002FOfficial-DotNet-Experimental\u002Fskills\u002Fexp-test-maintainability\u002Fmanifest.json",[102,118,126,143,171,197],{"skillNo":103,"name":104,"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":105,"categories":106,"keywords":110,"publishedAt":51},"01M6C4VZCJB9EN3KZXGNARAF6P","escape-skill","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fzz-review-escape\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[111,112,113,114,115,116,117],"escape skill","escape","Tools","false","true","path","quoted",{"skillNo":119,"name":120,"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":121,"categories":122,"keywords":123,"publishedAt":51},"01M6C4VYAJW332S5R2MM3RNE0G","zz-review-empty","https:\u002F\u002Fgithub.com\u002FChachamaru127\u002Fclaude-code-harness\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fzz-review-empty\u002FSKILL.md",[],[37,124,125,114,115],"zz review empty","empty",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":133,"publishedAt":51},"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",[132],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},[134,135,25,136,137,42,138,139,140,141,142],"session","session send","handoff","session handoff","user","message","notify","requests","when",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":150,"publishedAt":51},"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",[149],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},[145,151,152,153,45,154,155,156,42,157,158,41,159,40,160,161,138,134,162,163,164,165,166,167,168,115,169,170,142],"MCP","sync","notes","search","memory search","guardian","migrate","tool","decisions","write","edit","use","migration","manage","do","learnings","promotion","reviews","load","for",{"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":177,"publishedAt":51},"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",[],[173,37,178,179,180,181,182,183,184,42,185,186,40,160,161,187,134,188,189,190,165,191,192,193,194,195,115,169,170,196],"development","cleanup","run","release","state","file","logs","archive","grep","new feature","up","log","files","feature","plans","trigger","整理","split","new",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":215,"publishedAt":51},"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",[203,206,209,210],{"categoryNo":204,"categoryName":205,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":207,"categoryName":208,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":211,"categoryName":212,"taxonomyType":213,"taxonomyTypeDesc":214},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[216,217,218,37,219,180,220,221,42,222,223,224,225,40,226,227,162,228,229,230,231,232,233,234,235,236,237,238,239,240,142,241],"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"]