diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index f9d6f260c..0c5cbe5f0 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ { "name": "ndf", "source": "./plugins/ndf", - "description": "Claude Code plugin (v10.27.31-dev.1): 8 specialized agents (plus 1 worker agent for the 3-layer workflow) and 49 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/agy), transcript retention guard, and optional Slack notifications.", + "description": "Claude Code plugin (v10.27.31): 8 specialized agents (plus 1 worker agent for the 3-layer workflow) and 49 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/agy), transcript retention guard, and optional Slack notifications.", "policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" diff --git a/CHANGELOG.md b/CHANGELOG.md index 057f170e0..213a7cf89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ - Fix: 並列の計画の状態が消える 4 か所を止血する(#2647 の即時修正)(#2668) - `ndf` プラグインの並列実行で状態の一覧の失敗が続くと、利用者へ問いが出る(#2671)(#2673) - Docs: #2567 の設計へ承認ゲート 1 の答えを反映し、ボリュームを既定で残す(#2674) +- `loop exclude` で選定を取り直しても、承認とマージが済んだ設計の課題は順位によらず先頭に選ばれる(#2678) ## [ndf 10.27.27] - 2026-11-05 diff --git a/README.md b/README.md index 8c41df4ea..f17fa39d3 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Claude Code では `/ndf:` と打って呼びます。**Skill** は | プラグイン名 | バージョン | できること | 詳細 | | --- | --- | --- | --- | -| **ndf** | 10.27.31-dev.1 | 開発の作業手順(Skill)と専門のサブエージェント。Claude Code と Codex へ同じ名前で入る | [README](./plugins/ndf/README.md) | +| **ndf** | 10.27.31 | 開発の作業手順(Skill)と専門のサブエージェント。Claude Code と Codex へ同じ名前で入る | [README](./plugins/ndf/README.md) | | **playwright-kit** | 4.0.0 | Playwright による E2E テストの計画・スクリプト作成・証跡のレポート | [README](./plugins/playwright-kit/README.md) | 外部サービスへつなぐ MCP サーバーの設定のプラグインが 10 個あります(Claude Code / Codex 向け)。 @@ -69,7 +69,7 @@ Claude Code では `/ndf:` と打って呼びます。**Skill** は ### NDF プラグインの Skill の一覧 -**NDFプラグイン v10.27.31-dev.1** に入る Skill の数は、AI ツールごとに違います。 +**NDFプラグイン v10.27.31** に入る Skill の数は、AI ツールごとに違います。 Claude Code向け core 49個、Codex向け core 45個です。 元Skills(49個)の内訳は次のとおりです。 - Pull Request とレビュー (7): pr, pr-tests, fix, pr-review, cherry-pick-pr, deploy, merged diff --git a/docs/metrics/ndf-token-usage/2026-11-06.json b/docs/metrics/ndf-token-usage/2026-11-06.json new file mode 100644 index 000000000..7116976f2 --- /dev/null +++ b/docs/metrics/ndf-token-usage/2026-11-06.json @@ -0,0 +1,1165 @@ +{ + "per_pr": [ + { + "version": "10.27.26", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "sessions": 21, + "sessions_with_pr": 0, + "prs": 0 + }, + { + "version": "10.27.26", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "sessions": 10, + "sessions_with_pr": 0, + "prs": 0 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "sessions": 18, + "sessions_with_pr": 2, + "prs": 3, + "conductor_cost": 881316.15, + "supervisor_cost": 538667.2, + "worker_cost": 540072.3666666667, + "context": 10090612.0, + "out": 85824.33333333333, + "minutes": 83.19420555565092, + "codex_input": 0.0, + "codex_out": 0.0, + "kiro_credit": 0.0, + "claude_seat_cost": 0.0 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "sessions": 1, + "sessions_with_pr": 0, + "prs": 0 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "sessions": 8, + "sessions_with_pr": 1, + "prs": 1, + "conductor_cost": 1006640.6500000001, + "supervisor_cost": 0.0, + "worker_cost": 0.0, + "context": 8004587.0, + "out": 44383.0, + "minutes": 96.87911666631699, + "codex_input": 0.0, + "codex_out": 0.0, + "kiro_credit": 0.0, + "claude_seat_cost": 0.0 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "sessions": 20, + "sessions_with_pr": 0, + "prs": 0 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "sessions": 1, + "sessions_with_pr": 1, + "prs": 1, + "conductor_cost": 1597741.9, + "supervisor_cost": 1144169.9, + "worker_cost": 0.0, + "context": 17968320.0, + "out": 120495.0, + "minutes": 197.639566663901, + "codex_input": 955936.0, + "codex_out": 6049.0, + "kiro_credit": 0.0, + "claude_seat_cost": 725168.3 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "sessions": 7, + "sessions_with_pr": 0, + "prs": 0 + } + ], + "per_role": [ + { + "version": "10.27.26", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 21, + "cost": 628338.6071428572, + "context": 4223153.80952381, + "out": 31700.095238095237, + "minutes": 6.824388889660911, + "p": 66703.57142857143, + "k": 30.857142857142858, + "w5": 0.0, + "w1h": 132626.52380952382, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null + }, + { + "version": "10.27.26", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "pr", + "agent_type": "claude -p", + "count": 1, + "cost": 33622.0, + "context": 13767.0, + "out": 1218.0, + "minutes": 0.23166666666666666, + "k": 1.0, + "w5": 0.0, + "w1h": 13765.0 + }, + { + "version": "10.27.26", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "general-purpose", + "count": 1, + "cost": 402782.00000000006, + "context": 3303568.0, + "out": 20889.0, + "minutes": 3.8621166666348774, + "p": 31332.0, + "k": 42.0, + "w5": 110899.0, + "w1h": 0.0, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null + }, + { + "version": "10.27.26", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "その他", + "count": 3, + "cost": 74021.06666666667, + "context": 70038.0, + "out": 4166.0, + "minutes": 0.4469111111429003, + "p": 3427.3333333333335, + "k": 2.6666666666666665, + "w5": 40158.666666666664, + "w1h": 0.0, + "rewrites": 3, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 92507, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.10888333320617676 + }, + { + "version": "10.27.26", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 10, + "cost": 325735.46499999997, + "context": 1872965.9, + "out": 12757.3, + "minutes": 4.565730000336965, + "p": 62867.6, + "k": 17.9, + "w5": 0.0, + "w1h": 86290.4, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 89499, + "rewrite_gap_median": null + }, + { + "version": "10.27.26", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "mvv", + "agent_type": "claude -p", + "count": 1, + "cost": 38984.55, + "context": 16425.0, + "out": 1450.0, + "minutes": 0.295, + "k": 1.0, + "w5": 0.0, + "w1h": 15852.0 + }, + { + "version": "10.27.26", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "general-purpose", + "count": 3, + "cost": 106322.41666666667, + "context": 114382.33333333333, + "out": 5292.333333333333, + "minutes": 0.9524499985906814, + "p": 30383.666666666668, + "k": 2.3333333333333335, + "w5": 61781.0, + "w1h": 0.0, + "rewrites": 2, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 70557, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.7374749998251597 + }, + { + "version": "10.27.26", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 5, + "cost": 73952.01999999999, + "context": 67854.8, + "out": 4235.0, + "minutes": 0.8320466653505961, + "p": 25217.6, + "k": 2.0, + "w5": 41150.4, + "w1h": 0.0, + "rewrites": 1, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 25788, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.7210666696230571 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 18, + "cost": 889721.4222222223, + "context": 4364178.0, + "out": 48060.555555555555, + "minutes": 40.33063240713543, + "p": 58655.055555555555, + "k": 26.77777777777778, + "w5": 0.0, + "w1h": 221105.0, + "rewrites": 4, + "rewrites_after_5m": 4, + "rewrites_untimed": 0, + "rewrite_tokens": 474655, + "rewrite_tokens_after_5m": 474655, + "read_tokens_after_5m": 4139382, + "rewrite_gap_median": 108.12083333333334 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "judge", + "agent_type": "claude -p", + "count": 2, + "cost": 22682.0, + "context": 10734.5, + "out": 243.0, + "minutes": 0.10833333333333334, + "k": 1.0, + "w5": 0.0, + "w1h": 10732.5 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "pr", + "agent_type": "claude -p", + "count": 2, + "cost": 28115.725, + "context": 14418.0, + "out": 1597.5, + "minutes": 0.3108333333333333, + "k": 1.0, + "w5": 0.0, + "w1h": 9951.5 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "slow", + "agent_type": "claude -p", + "count": 10, + "cost": 12317.3, + "context": 4855.4, + "out": 521.7, + "minutes": 0.22333333333333333, + "k": 1.0, + "w5": 0.0, + "w1h": 4853.4 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:code-reviewer", + "count": 1, + "cost": 284586.94999999995, + "context": 1279247.0, + "out": 10978.0, + "minutes": 5.554433333873749, + "p": 45444.0, + "k": 17.0, + "w5": 88471.0, + "w1h": 0.0, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 1, + "cost": 1118025.2, + "context": 4198506.0, + "out": 57610.0, + "minutes": 99.70819999774297, + "p": 36874.0, + "k": 30.0, + "w5": 516656.0, + "w1h": 0.0, + "rewrites": 2, + "rewrites_after_5m": 2, + "rewrites_untimed": 0, + "rewrite_tokens": 332553, + "rewrite_tokens_after_5m": 332553, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 40.173266667127606 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "その他", + "count": 2, + "cost": 141792.8, + "context": 185844.5, + "out": 7551.0, + "minutes": 0.7695416649182637, + "p": 3625.0, + "k": 4.0, + "w5": 74301.0, + "w1h": 0.0, + "rewrites": 2, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 99768, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.27115833163261416 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "worker", + "role": "work", + "agent_type": "claude -p", + "count": 6, + "cost": 270036.18333333335, + "context": 961338.0, + "out": 17167.0, + "minutes": 18.630833333333335, + "k": 20.666666666666668, + "w5": 0.0, + "w1h": 69798.0 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 1, + "cost": 1712924.55, + "context": 8041972.0, + "out": 50324.0, + "minutes": 218.25076666673024, + "p": 31718.0, + "k": 50.0, + "w5": 0.0, + "w1h": 543127.0, + "rewrites": 3, + "rewrites_after_5m": 2, + "rewrites_untimed": 0, + "rewrite_tokens": 388662, + "rewrite_tokens_after_5m": 355200, + "read_tokens_after_5m": 1125387, + "rewrite_gap_median": 189.33313333193462 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "supervisor", + "role": "その他", + "agent_type": "general-purpose", + "count": 2, + "cost": 334061.5, + "context": 1633335.5, + "out": 24240.0, + "minutes": 9.681833332777023, + "p": 33590.5, + "k": 16.0, + "w5": 109304.0, + "w1h": 0.0, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 8, + "cost": 715236.60625, + "context": 3368711.5, + "out": 34924.125, + "minutes": 41.40215208331744, + "p": 51274.125, + "k": 22.75, + "w5": 0.0, + "w1h": 190837.875, + "rewrites": 2, + "rewrites_after_5m": 2, + "rewrites_untimed": 0, + "rewrite_tokens": 171520, + "rewrite_tokens_after_5m": 171520, + "read_tokens_after_5m": 1287143, + "rewrite_gap_median": 128.14184999863306 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "supervisor", + "role": "judge", + "agent_type": "claude -p", + "count": 4, + "cost": 24430.75, + "context": 11480.75, + "out": 294.25, + "minutes": 0.125, + "k": 1.0, + "w5": 0.0, + "w1h": 11478.75 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "supervisor", + "role": "mvv", + "agent_type": "claude -p", + "count": 1, + "cost": 76177.55, + "context": 32174.0, + "out": 2589.0, + "minutes": 0.47833333333333333, + "k": 1.0, + "w5": 0.0, + "w1h": 31601.0 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "supervisor", + "role": "slow", + "agent_type": "claude -p", + "count": 1, + "cost": 10956.0, + "context": 4729.0, + "out": 300.0, + "minutes": 0.2, + "k": 1.0, + "w5": 0.0, + "w1h": 4727.0 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "worker", + "role": "work", + "agent_type": "claude -p", + "count": 12, + "cost": 181458.0458333333, + "context": 602043.0833333334, + "out": 11713.666666666666, + "minutes": 20.85013888888889, + "k": 11.083333333333334, + "w5": 0.0, + "w1h": 47575.0 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 20, + "cost": 442692.2075, + "context": 1774596.6, + "out": 22254.65, + "minutes": 10.026649166742962, + "p": 61804.95, + "k": 14.9, + "w5": 0.0, + "w1h": 124441.25, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 467483, + "rewrite_gap_median": null + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "mvv", + "agent_type": "claude -p", + "count": 1, + "cost": 95215.55, + "context": 42193.0, + "out": 2389.0, + "minutes": 0.445, + "k": 1.0, + "w5": 0.0, + "w1h": 41620.0 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "pr", + "agent_type": "claude -p", + "count": 6, + "cost": 17643.058333333334, + "context": 13759.0, + "out": 926.1666666666666, + "minutes": 0.1913888888888889, + "k": 1.0, + "w5": 0.0, + "w1h": 6319.166666666667 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "Explore", + "count": 1, + "cost": 172675.95, + "context": 84403.0, + "out": 18748.0, + "minutes": 3.419583332538605, + "p": 22141.0, + "k": 2.0, + "w5": 62260.0, + "w1h": 0.0, + "rewrites": 1, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 40121, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 2.891433334350586 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "general-purpose", + "count": 2, + "cost": 117055.425, + "context": 85118.5, + "out": 9611.5, + "minutes": 1.8054666658242544, + "p": 31168.0, + "k": 2.0, + "w5": 53948.5, + "w1h": 0.0, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 4, + "cost": 92040.1, + "context": 65753.0, + "out": 7376.75, + "minutes": 1.3079250007867813, + "p": 22530.25, + "k": 2.0, + "w5": 43220.75, + "w1h": 0.0, + "rewrites": 1, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 31281, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 1.7574833353360495 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "worker", + "role": "work", + "agent_type": "claude -p", + "count": 5, + "cost": 221427.15, + "context": 719887.4, + "out": 11574.6, + "minutes": 2.0076666666666667, + "k": 17.4, + "w5": 0.0, + "w1h": 65402.8 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 1, + "cost": 1597741.9, + "context": 13639732.0, + "out": 44858.0, + "minutes": 197.639566663901, + "p": 42542.0, + "k": 76.0, + "w5": 0.0, + "w1h": 354506.0, + "rewrites": 1, + "rewrites_after_5m": 1, + "rewrites_untimed": 0, + "rewrite_tokens": 147356, + "rewrite_tokens_after_5m": 147356, + "read_tokens_after_5m": 1718803, + "rewrite_gap_median": 119.94325000047684 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "supervisor", + "role": "その他", + "agent_type": "general-purpose", + "count": 3, + "cost": 249314.7666666667, + "context": 956800.0, + "out": 14656.666666666666, + "minutes": 3.2535666677686903, + "p": 43610.666666666664, + "k": 11.666666666666666, + "w5": 106806.66666666667, + "w1h": 0.0, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 1, + "cost": 396225.6, + "context": 1458188.0, + "out": 31667.0, + "minutes": 11.826783335208892, + "p": 36793.0, + "k": 14.0, + "w5": 137459.0, + "w1h": 0.0, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 7, + "cost": 455365.47857142857, + "context": 1895101.5714285714, + "out": 24824.0, + "minutes": 17.316069047223955, + "p": 52596.57142857143, + "k": 15.857142857142858, + "w5": 0.0, + "w1h": 121260.28571428571, + "rewrites": 1, + "rewrites_after_5m": 1, + "rewrites_untimed": 0, + "rewrite_tokens": 67418, + "rewrite_tokens_after_5m": 67418, + "read_tokens_after_5m": 157818, + "rewrite_gap_median": 179.4806333343188 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "supervisor", + "role": "judge", + "agent_type": "claude -p", + "count": 1, + "cost": 29441.0, + "context": 13579.0, + "out": 457.0, + "minutes": 0.26666666666666666, + "k": 1.0, + "w5": 0.0, + "w1h": 13577.0 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "supervisor", + "role": "mvv", + "agent_type": "claude -p", + "count": 1, + "cost": 57580.55, + "context": 25728.0, + "out": 1448.0, + "minutes": 0.26, + "k": 1.0, + "w5": 0.0, + "w1h": 25155.0 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "supervisor", + "role": "pr", + "agent_type": "claude -p", + "count": 5, + "cost": 22030.69, + "context": 13361.8, + "out": 1149.8, + "minutes": 0.23166666666666666, + "k": 1.0, + "w5": 0.0, + "w1h": 8006.0 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "supervisor", + "role": "slow", + "agent_type": "claude -p", + "count": 5, + "cost": 11513.0, + "context": 4828.0, + "out": 371.8, + "minutes": 0.233, + "k": 1.0, + "w5": 0.0, + "w1h": 4826.0 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "general-purpose", + "count": 1, + "cost": 167733.75, + "context": 86303.0, + "out": 18456.0, + "minutes": 3.4434166669845583, + "p": 27022.0, + "k": 2.0, + "w5": 59279.0, + "w1h": 0.0, + "rewrites": 1, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 32259, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 2.913700000445048 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 2, + "cost": 93826.375, + "context": 57375.5, + "out": 9605.0, + "minutes": 1.691566667954127, + "p": 21599.5, + "k": 2.0, + "w5": 35774.0, + "w1h": 0.0, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.319", + "reviewers": "-", + "layer": "worker", + "role": "work", + "agent_type": "claude -p", + "count": 13, + "cost": 224279.5076923077, + "context": 1213443.5384615385, + "out": 12040.0, + "minutes": 21.659871794871794, + "k": 14.615384615384615, + "w5": 0.0, + "w1h": 53018.307692307695 + } + ], + "external": [ + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "runtime": "claude", + "skill": "cross-review", + "cli_model": "claude-opus-5-5", + "count": 4, + "context": 309664.25, + "out": 15280.0, + "cost": 202226.5625, + "minutes": 2.6759458313385647, + "p": 16640.5, + "k": 6.5, + "w5": 0.0, + "w1h": 56580.0, + "rewrites": 2, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 58692, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.9456749975681304, + "call_seats": 4 + }, + { + "version": "10.27.27", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "runtime": "codex", + "skill": "cross-review", + "cli_model": "gpt-6.1-sol", + "count": 5, + "input": 301659.8, + "cached": 250086.4, + "out": 2067.6, + "minutes": 1.1632699998219809, + "p": 22444.8, + "k": 6.2, + "rewrites": 1, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 25554, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.07016666730244954, + "call_seats": 5 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "runtime": "claude", + "skill": "cross-review", + "cli_model": "claude-opus-5-5", + "count": 4, + "context": 386965.5, + "out": 9436.25, + "cost": 181292.075, + "minutes": 1.7362000008424123, + "p": 25846.5, + "k": 6.25, + "w5": 0.0, + "w1h": 58846.5, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null, + "call_seats": 4 + }, + { + "version": "10.27.27", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "runtime": "codex", + "skill": "cross-review", + "cli_model": "gpt-6.1-sol", + "count": 3, + "input": 318645.3333333333, + "cached": 275498.6666666667, + "out": 2016.3333333333333, + "minutes": 1.1058055559794109, + "p": 26320.333333333332, + "k": 6.666666666666667, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": null, + "call_seats": 3 + } + ], + "meta": { + "by": [ + "version", + "mode", + "model", + "cc", + "reviewers" + ], + "min_version": "10.27.26", + "until": "2026-11-06T13:08:00Z", + "sessions": 86, + "sessions_with_pr": 4, + "unlinked_external": 3307, + "unlinked_ledger": 0, + "skipped": { + "ndf の Skill が無い": 1037, + "版を判定できない": 31 + }, + "released": "10.27.31", + "previous": "2026-11-05-7.json" + } +} diff --git a/docs/metrics/ndf-token-usage/2026-11-06.md b/docs/metrics/ndf-token-usage/2026-11-06.md new file mode 100644 index 000000000..8634d243d --- /dev/null +++ b/docs/metrics/ndf-token-usage/2026-11-06.md @@ -0,0 +1,118 @@ +# ndf の版ごとのトークン消費と所要時間(2026-11-06 集計・10.27.31 の配布) + +**10.27.31 を正式版として出したときの記録である。** 打ち切りの時刻は `2026-11-06T13:08:00Z`。表の最初の行は 10.27.26(前の記録: 2026-11-05-7.md)。既定では前の記録の最後の版で、記録どうしが 1 行ずつ重なる。生の記録・会話の本文・リポジトリ名・会話の ID は残していない。集計した日時点の記録で、以後の記録の増減には追随しない。 + +## 作り方 + +同じ打ち切りの時刻で走らせ直すと、記録が残っている間は同じ `.json` ができる。ただし kiro の記録はターンに時刻を持たないため、打ち切りをまたいで進行中だった席は credit が変わりうる。 + +```bash +python3 scripts/token-usage-snapshot.py --released 10.27.31 --until 2026-11-06T13:08:00Z --min-version 10.27.26 +python3 scripts/token-usage.py --min-version 10.27.26 --until 2026-11-06T13:08:00Z --by version # 末尾の「集計の出力」 +``` + +## 比べるときの注意 + +- **PR を作った会話が 2 件以下の版:** 無し。作業の中身の違いが版の違いより大きい +- **CHANGELOG.md にあって表に出ない版:** 10.27.26, 10.27.31。その版で始めた PR つきの会話が無い(会話の版は最初に読んだ版で決まる) +- **打ち切りの 30 分前以降にも行がある会話を含む版:** 10.27.27。進行中だった会話は、値が打ち切りの時刻までの分である + +## 版ごとの差(PR 1 本あたり) + +換算の合計は conductor・supervisor・worker の換算の和。前の版との差は、表の 1 つ上の行との比である。±30% を超えた版を下の「読み取り」で扱う。 + +| ndf の版 | 会話 | PR | 換算の合計 | 前の版との差 | conductor | supervisor | worker | 入力 | 所要 | codex 入力 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.27 | 4 | 5 | 1.93M | - | 1.05M | 0.55M | 0.32M | 11.25M | 108.8 | 0.19M | + +## 版と層ごとの呼び出しとキャッシュ(1 起動あたり) + +P と k と書き込みは 1 起動あたり、書き直しとうち 5 分超は合計の回数である。 + +| ndf の版 | 層 | 起動 | P | k | 書き込み 5 分 | 書き込み 1 時間 | 書き直し | うち 5 分超 | 1 起動あたりの書き直し | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.26 | conductor | 31 | 65.5k | 26.7 | 0.00M | 0.12M | 0 | 0 | 0.00 | +| 10.27.26 | supervisor | 14 | 21.6k | 4.9 | 0.04M | 0.00M | 6 | 0 | 0.50 | +| 10.27.27 | conductor | 55 | 57.2k | 21.8 | 0.00M | 0.18M | 11 | 10 | 0.20 | +| 10.27.27 | supervisor | 59 | 28.5k | 3.3 | 0.03M | 0.01M | 7 | 2 | 0.35 | +| 10.27.27 | worker | 36 | - | 14.8 | 0.00M | 0.06M | - | - | - | + +## 読み取り + +差の大きい版は無い(すべて ±30% の内)。読み取りは要らない。 + +## 集計の出力 + +対象の会話: 86 件 / PR を作った会話: 4 件 / 寄せ先の無い外部 CLI: 3307 件 / 寄せ先の無い帳簿の行: 0 件 + +換算は input を 1 とした費用(cache read はモデル別: claude-opus-5-5 0.05 / claude-fable-5-1 0.025 / 他 0.1。cache write 5 分 1.25・1 時間 2 / output 5)。入力は input + cache read + cache write。所要は分。 + +### PR 1 本あたり + +| 動いた版 | 会話 | PR | conductor 換算 | supervisor 換算 | worker 換算 | 入力 | 出力 | 所要 | codex 入力 | codex 出力 | kiro credit | claude 席 換算 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.27 | 4 | 5 | 1.05M | 0.55M | 0.32M | 11.25M | 84.5k | 108.8 | 0.19M | 1.2k | 0.00 | 0.15M | + +### フェーズごと(1 起動あたり) + +| 動いた版 | 層 | フェーズ | 定義 | 起動 | 換算 | 入力 | 出力 | 所要 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.26 | conductor | - | - | 31 | 0.53M | 3.47M | 25.6k | 6.1 | +| 10.27.26 | supervisor | mvv | claude -p | 1 | 0.04M | 0.02M | 1.4k | 0.3 | +| 10.27.26 | supervisor | pr | claude -p | 1 | 0.03M | 0.01M | 1.2k | 0.2 | +| 10.27.26 | supervisor | その他 | general-purpose | 4 | 0.18M | 0.91M | 9.2k | 1.7 | +| 10.27.26 | supervisor | その他 | ndf:worker | 5 | 0.07M | 0.07M | 4.2k | 0.8 | +| 10.27.26 | supervisor | その他 | その他 | 3 | 0.07M | 0.07M | 4.2k | 0.4 | +| 10.27.27 | conductor | - | - | 55 | 0.67M | 3.20M | 33.8k | 32.6 | +| 10.27.27 | supervisor | judge | claude -p | 7 | 0.02M | 0.01M | 0.3k | 0.1 | +| 10.27.27 | supervisor | mvv | claude -p | 3 | 0.08M | 0.03M | 2.1k | 0.4 | +| 10.27.27 | supervisor | pr | claude -p | 13 | 0.02M | 0.01M | 1.1k | 0.2 | +| 10.27.27 | supervisor | slow | claude -p | 16 | 0.01M | 0.00M | 0.5k | 0.2 | +| 10.27.27 | supervisor | その他 | Explore | 1 | 0.17M | 0.08M | 18.7k | 3.4 | +| 10.27.27 | supervisor | その他 | general-purpose | 8 | 0.23M | 0.80M | 16.3k | 4.5 | +| 10.27.27 | supervisor | その他 | ndf:code-reviewer | 1 | 0.28M | 1.28M | 11.0k | 5.6 | +| 10.27.27 | supervisor | その他 | ndf:worker | 8 | 0.26M | 0.75M | 17.2k | 15.0 | +| 10.27.27 | supervisor | その他 | その他 | 2 | 0.14M | 0.19M | 7.6k | 0.8 | +| 10.27.27 | worker | work | claude -p | 36 | 0.22M | 0.90M | 12.7k | 18.2 | + +### フェーズごとの呼び出しとキャッシュ + +P は起動ごとの固定費(最初の呼び出しの文脈)、k は呼び出し回数(どちらも 1 起動あたり)。書き直しは 2 回目以降の呼び出しのうち、書き込みが文脈の 50% を超え、かつ 20k を超えたものの回数(合計)。5 分超はそのうち直前の呼び出しとの間隔が 5 分を超えた回数、間隔は直前の間隔の中央値(分)。5 分超の書き直し・読み込みは、直前の間隔が 5 分を超えた呼び出しの書き直しの量と、書き直しでない呼び出しの読み込みの量(どちらも合計)。定義はサブエージェントの定義の名前。 + +| 動いた版 | 層 | フェーズ | 定義 | 起動 | P | k | 書き込み 5 分 | 書き込み 1 時間 | 書き直し | 5 分超 | 5 分超の書き直し | 5 分超の読み込み | 間隔 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.26 | conductor | - | - | 31 | 65.5k | 26.7 | 0.00M | 0.12M | 0 | 0 | 0.00M | 0.09M | - | +| 10.27.26 | supervisor | mvv | claude -p | 1 | - | 1.0 | 0.00M | 0.02M | - | - | - | - | - | +| 10.27.26 | supervisor | pr | claude -p | 1 | - | 1.0 | 0.00M | 0.01M | - | - | - | - | - | +| 10.27.26 | supervisor | その他 | general-purpose | 4 | 30.6k | 12.2 | 0.07M | 0.00M | 2 | 0 | 0.00M | 0.00M | 0.7 | +| 10.27.26 | supervisor | その他 | ndf:worker | 5 | 25.2k | 2.0 | 0.04M | 0.00M | 1 | 0 | 0.00M | 0.00M | 0.7 | +| 10.27.26 | supervisor | その他 | その他 | 3 | 3.4k | 2.7 | 0.04M | 0.00M | 3 | 0 | 0.00M | 0.00M | 0.1 | +| 10.27.27 | conductor | - | - | 55 | 57.2k | 21.8 | 0.00M | 0.18M | 11 | 10 | 1.22M | 8.90M | 120.0 | +| 10.27.27 | supervisor | judge | claude -p | 7 | - | 1.0 | 0.00M | 0.01M | - | - | - | - | - | +| 10.27.27 | supervisor | mvv | claude -p | 3 | - | 1.0 | 0.00M | 0.03M | - | - | - | - | - | +| 10.27.27 | supervisor | pr | claude -p | 13 | - | 1.0 | 0.00M | 0.01M | - | - | - | - | - | +| 10.27.27 | supervisor | slow | claude -p | 16 | - | 1.0 | 0.00M | 0.00M | - | - | - | - | - | +| 10.27.27 | supervisor | その他 | Explore | 1 | 22.1k | 2.0 | 0.06M | 0.00M | 1 | 0 | 0.00M | 0.00M | 2.9 | +| 10.27.27 | supervisor | その他 | general-purpose | 8 | 35.9k | 9.1 | 0.09M | 0.00M | 1 | 0 | 0.00M | 0.00M | 2.9 | +| 10.27.27 | supervisor | その他 | ndf:code-reviewer | 1 | 45.4k | 17.0 | 0.09M | 0.00M | 0 | 0 | 0.00M | 0.00M | - | +| 10.27.27 | supervisor | その他 | ndf:worker | 8 | 25.9k | 7.0 | 0.11M | 0.00M | 3 | 2 | 0.33M | 0.00M | 37.4 | +| 10.27.27 | supervisor | その他 | その他 | 2 | 3.6k | 4.0 | 0.07M | 0.00M | 2 | 0 | 0.00M | 0.00M | 0.3 | +| 10.27.27 | worker | work | claude -p | 36 | - | 14.8 | 0.00M | 0.06M | - | - | - | - | - | + +### 外部 CLI(1 起動あたり) + +kiro はトークン数を記録しない(値が 0)ため credit だけを載せる。agy は読まない。 + +| 動いた版 | ランタイム | Skill | モデル | 起動 | 入力 | cache | 出力 | credit | 所要 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.27 | claude | cross-review | claude-opus-5-5 | 8 | 0.35M | 0.00M | 12.4k | 0.00 | 2.2 | +| 10.27.27 | codex | cross-review | gpt-6.1-sol | 8 | 0.31M | 0.26M | 2.0k | 0.00 | 1.1 | + +### 外部 CLI の呼び出しとキャッシュ(1 起動あたり) + +codex は input のうち cached に当たらなかった分を書き込みとみなし、呼び出しごとの値(last_token_usage)を持つ席だけで数える。kiro は呼び出し回数を記録しない(利用者のターン数は JSON の turns)。取れない値は -。 + +| 動いた版 | ランタイム | Skill | モデル | 起動 | P | k | 書き直し | 5 分超 | 5 分超の書き直し | 5 分超の読み込み | 間隔 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.27 | claude | cross-review | claude-opus-5-5 | 8 | 21.2k | 6.4 | 2 | 0 | 0.00M | 0.00M | 0.9 | +| 10.27.27 | codex | cross-review | gpt-6.1-sol | 8 | 23.9k | 6.4 | 1 | 0 | 0.00M | 0.00M | 0.1 | diff --git a/plugins/ndf/.claude-plugin/plugin.json b/plugins/ndf/.claude-plugin/plugin.json index 33b3b7e98..b64dee7f4 100644 --- a/plugins/ndf/.claude-plugin/plugin.json +++ b/plugins/ndf/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "ndf", - "version": "10.27.31-dev.1", - "description": "Claude Code plugin (v10.27.31-dev.1): 8 specialized agents (plus 2 supervisor agents and 1 worker agent for the 3-layer workflow) and 49 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/agy), transcript retention guard, and optional Slack notifications.", + "version": "10.27.31", + "description": "Claude Code plugin (v10.27.31): 8 specialized agents (plus 2 supervisor agents and 1 worker agent for the 3-layer workflow) and 49 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/agy), transcript retention guard, and optional Slack notifications.", "author": { "name": "takemi-ohama", "url": "https://github.com/takemi-ohama" diff --git a/plugins/ndf/.codex-plugin/plugin.json b/plugins/ndf/.codex-plugin/plugin.json index 8f1ebf85c..2bedddee5 100644 --- a/plugins/ndf/.codex-plugin/plugin.json +++ b/plugins/ndf/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "ndf", - "version": "10.27.31-dev.1", - "description": "Codex plugin (v10.27.31-dev.1): 45 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, external AI delegation (Codex/agy), and optional Slack completion notifications.", + "version": "10.27.31", + "description": "Codex plugin (v10.27.31): 45 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, external AI delegation (Codex/agy), and optional Slack completion notifications.", "skills": [ "./skills/cherry-pick-pr", "./skills/cross-refactoring", diff --git a/plugins/ndf/README.md b/plugins/ndf/README.md index 31f3bd2a7..0838b83cf 100644 --- a/plugins/ndf/README.md +++ b/plugins/ndf/README.md @@ -350,7 +350,7 @@ agy models # 認証確認 ```text # 動く: 実体パスを示して読ませる -~/.codex/plugins/cache/ai-plugins/ndf/10.27.31-dev.1/skills/deploy/SKILL.md を読んで、その手順どおりに qa/staging へ deploy PR を作成してください。 +~/.codex/plugins/cache/ai-plugins/ndf/10.27.31/skills/deploy/SKILL.md を読んで、その手順どおりに qa/staging へ deploy PR を作成してください。 # 動かない: 明示起動 ($ は展開されない) $deploy qa/staging @@ -372,14 +372,14 @@ marketplace 経由でインストールした場合、Skill の実体は **ワ ```text $CODEX_HOME/plugins/cache////skills//SKILL.md # 既定 ($CODEX_HOME=~/.codex) の例: -# ~/.codex/plugins/cache/ai-plugins/ndf/10.27.31-dev.1/skills/deploy/SKILL.md +# ~/.codex/plugins/cache/ai-plugins/ndf/10.27.31/skills/deploy/SKILL.md ``` そのため「`deploy` の SKILL.md を探して読んで」のような曖昧な依頼は、Codex のファイル探索がワークスペース内に限られる状況では失敗しえます。**抑止した Skill は `$` が展開されない**ので、`codex plugin list` で実体パスを確認し、絶対パスを渡してください。 ```bash codex plugin list | grep 'ndf@ai-plugins' -# => ndf@ai-plugins installed, enabled 10.27.31-dev.1 +# => ndf@ai-plugins installed, enabled 10.27.31 ``` 抑止していない Skill(`document-style` など)はキャッシュ配下でも `$` で解決するため、そちらは `$` 起動が使えます。