diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 63d22beda..fc996833c 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.18-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.18): 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/README.md b/README.md index 49b672310..ce730a17e 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Claude Code では `/ndf:` と打って呼びます。**Skill** は | プラグイン名 | バージョン | できること | 詳細 | | --- | --- | --- | --- | -| **ndf** | 10.27.18-dev.1 | 開発の作業手順(Skill)と専門のサブエージェント。Claude Code と Codex へ同じ名前で入る | [README](./plugins/ndf/README.md) | +| **ndf** | 10.27.18 | 開発の作業手順(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.18-dev.1** に入る Skill の数は、AI ツールごとに違います。 +**NDFプラグイン v10.27.18** に入る 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-05.json b/docs/metrics/ndf-token-usage/2026-11-05.json new file mode 100644 index 000000000..fa2cb5d33 --- /dev/null +++ b/docs/metrics/ndf-token-usage/2026-11-05.json @@ -0,0 +1,1049 @@ +{ + "per_pr": [ + { + "version": "10.27.15", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "sessions": 20, + "sessions_with_pr": 0, + "prs": 0 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.317", + "reviewers": "-", + "sessions": 1, + "sessions_with_pr": 1, + "prs": 3, + "conductor_cost": 802454.7666666666, + "supervisor_cost": 634856.4166666666, + "worker_cost": 0.0, + "context": 13893558.333333334, + "out": 47368.333333333336, + "minutes": 51.90099444521798, + "codex_input": 0.0, + "codex_out": 0.0, + "kiro_credit": 0.0, + "claude_seat_cost": 0.0 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "sessions": 25, + "sessions_with_pr": 1, + "prs": 1, + "conductor_cost": 648905.75, + "supervisor_cost": 0.0, + "worker_cost": 0.0, + "context": 5325894.0, + "out": 23884.0, + "minutes": 10.57671666542689, + "codex_input": 0.0, + "codex_out": 0.0, + "kiro_credit": 0.0, + "claude_seat_cost": 0.0 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "sessions": 1, + "sessions_with_pr": 1, + "prs": 3, + "conductor_cost": 2448057.05, + "supervisor_cost": 904120.7666666666, + "worker_cost": 132714.11666666667, + "context": 38971428.333333336, + "out": 95174.66666666667, + "minutes": 170.40631111065548, + "codex_input": 3794037.0, + "codex_out": 25157.0, + "kiro_credit": 0.0, + "claude_seat_cost": 1065309.2333333332 + }, + { + "version": "10.27.16", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "sessions": 31, + "sessions_with_pr": 0, + "prs": 0 + }, + { + "version": "10.27.16", + "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.16", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "sessions": 28, + "sessions_with_pr": 0, + "prs": 0 + } + ], + "per_role": [ + { + "version": "10.27.15", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 20, + "cost": 674537.1700000002, + "context": 4977035.25, + "out": 27067.55, + "minutes": 18.688582499424616, + "p": 60783.4, + "k": 36.45, + "w5": 0.0, + "w1h": 148859.55, + "rewrites": 2, + "rewrites_after_5m": 2, + "rewrites_untimed": 0, + "rewrite_tokens": 248519, + "rewrite_tokens_after_5m": 248519, + "read_tokens_after_5m": 1436991, + "rewrite_gap_median": 93.8481916685899 + }, + { + "version": "10.27.15", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "judge", + "agent_type": "claude -p", + "count": 2, + "cost": 26853.5, + "context": 12709.0, + "out": 287.5, + "minutes": 0.095, + "k": 1.0, + "w5": 0.0, + "w1h": 12707.0 + }, + { + "version": "10.27.15", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "pr", + "agent_type": "claude -p", + "count": 2, + "cost": 31303.225, + "context": 14633.0, + "out": 2149.0, + "minutes": 0.35083333333333333, + "k": 1.0, + "w5": 0.0, + "w1h": 10166.5 + }, + { + "version": "10.27.15", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "その他", + "count": 1, + "cost": 19460.15, + "context": 12955.0, + "out": 1441.0, + "minutes": 0.1465333342552185, + "p": 3426.0, + "k": 2.0, + "w5": 9527.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.15", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "worker", + "role": "work", + "agent_type": "claude -p", + "count": 12, + "cost": 552397.85, + "context": 4826722.416666667, + "out": 25591.5, + "minutes": 5.110416666666666, + "k": 43.25, + "w5": 0.0, + "w1h": 93862.41666666667 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.317", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 1, + "cost": 2407364.3, + "context": 22167274.0, + "out": 58600.0, + "minutes": 155.70298333565395, + "p": 44902.0, + "k": 119.0, + "w5": 0.0, + "w1h": 515774.0, + "rewrites": 3, + "rewrites_after_5m": 2, + "rewrites_untimed": 0, + "rewrite_tokens": 342605, + "rewrite_tokens_after_5m": 295416, + "read_tokens_after_5m": 811441, + "rewrite_gap_median": 263.9299999992053 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.317", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 2, + "cost": 952284.6249999999, + "context": 9756700.5, + "out": 41752.5, + "minutes": 12.307008334000905, + "p": 39178.0, + "k": 72.0, + "w5": 212957.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.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 25, + "cost": 356384.89, + "context": 2206706.64, + "out": 14023.28, + "minutes": 5.807699333031972, + "p": 58815.12, + "k": 21.0, + "w5": 0.0, + "w1h": 90201.32, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 315665, + "rewrite_gap_median": null + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "judge", + "agent_type": "claude -p", + "count": 2, + "cost": 27939.0, + "context": 13383.0, + "out": 235.0, + "minutes": 0.12666666666666665, + "k": 1.0, + "w5": 0.0, + "w1h": 13381.0 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "mvv", + "agent_type": "claude -p", + "count": 4, + "cost": 62007.275, + "context": 27125.5, + "out": 1663.0, + "minutes": 0.31708333333333333, + "k": 1.0, + "w5": 0.0, + "w1h": 26838.0 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "pr", + "agent_type": "claude -p", + "count": 7, + "cost": 19917.321428571428, + "context": 13575.57142857143, + "out": 1041.0, + "minutes": 0.23547619047619048, + "k": 1.0, + "w5": 0.0, + "w1h": 7195.714285714285 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "general-purpose", + "count": 2, + "cost": 102377.875, + "context": 104781.5, + "out": 4193.0, + "minutes": 0.7202416678269704, + "p": 36575.5, + "k": 2.0, + "w5": 63475.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.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 5, + "cost": 73552.94, + "context": 68403.6, + "out": 4303.2, + "minutes": 0.748746665318807, + "p": 24921.2, + "k": 2.0, + "w5": 40510.8, + "w1h": 0.0, + "rewrites": 2, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 56092, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.5356166660785675 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "worker", + "role": "work", + "agent_type": "claude -p", + "count": 16, + "cost": 437842.20625000005, + "context": 3942818.0625, + "out": 19452.75, + "minutes": 4.175833333333333, + "k": 28.125, + "w5": 0.0, + "w1h": 73532.8125 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 1, + "cost": 7344171.149999999, + "context": 99071892.0, + "out": 176956.0, + "minutes": 511.2189333319664, + "p": 45175.0, + "k": 327.0, + "w5": 0.0, + "w1h": 771799.0, + "rewrites": 2, + "rewrites_after_5m": 2, + "rewrites_untimed": 0, + "rewrite_tokens": 335959, + "rewrite_tokens_after_5m": 335959, + "read_tokens_after_5m": 5102252, + "rewrite_gap_median": 346.74322499831516 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "supervisor", + "role": "その他", + "agent_type": "Explore", + "count": 1, + "cost": 653471.6000000001, + "context": 6666806.0, + "out": 25828.0, + "minutes": 8.993599998950959, + "p": 21921.0, + "k": 58.0, + "w5": 159066.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.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:supervisor-waits", + "count": 2, + "cost": 235793.0, + "context": 1476042.0, + "out": 5404.0, + "minutes": 13.845449999968212, + "p": 46957.0, + "k": 21.0, + "w5": 0.0, + "w1h": 69191.0, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 70286, + "rewrite_gap_median": null + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 15, + "cost": 105820.31333333332, + "context": 432512.4, + "out": 3754.4, + "minutes": 2.7827022218704225, + "p": 38411.8, + "k": 8.2, + "w5": 54505.4, + "w1h": 0.0, + "rewrites": 2, + "rewrites_after_5m": 2, + "rewrites_untimed": 0, + "rewrite_tokens": 109482, + "rewrite_tokens_after_5m": 109482, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 13.753474998474122 + }, + { + "version": "10.27.15", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "worker", + "role": "その他", + "agent_type": "ndf:worker", + "count": 3, + "cost": 132714.11666666667, + "context": 578605.6666666666, + "out": 5205.333333333333, + "minutes": 1.3990166677369011, + "p": 38413.666666666664, + "k": 9.666666666666666, + "w5": 64782.333333333336, + "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.16", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 31, + "cost": 451688.9112903226, + "context": 3034750.1612903224, + "out": 18385.290322580644, + "minutes": 22.554559140307926, + "p": 60330.12903225807, + "k": 25.903225806451612, + "w5": 0.0, + "w1h": 106652.90322580645, + "rewrites": 1, + "rewrites_after_5m": 1, + "rewrites_untimed": 0, + "rewrite_tokens": 91350, + "rewrite_tokens_after_5m": 91350, + "read_tokens_after_5m": 2471876, + "rewrite_gap_median": 72.19301666418711 + }, + { + "version": "10.27.16", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "judge", + "agent_type": "claude -p", + "count": 5, + "cost": 27704.6, + "context": 12992.8, + "out": 344.2, + "minutes": 0.11099999999999999, + "k": 1.0, + "w5": 0.0, + "w1h": 12990.8 + }, + { + "version": "10.27.16", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "mvv", + "agent_type": "claude -p", + "count": 1, + "cost": 46033.55, + "context": 18852.0, + "out": 1889.0, + "minutes": 0.3433333333333334, + "k": 1.0, + "w5": 0.0, + "w1h": 18279.0 + }, + { + "version": "10.27.16", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "pr", + "agent_type": "claude -p", + "count": 12, + "cost": 20500.2625, + "context": 14004.416666666666, + "out": 1109.8333333333333, + "minutes": 0.2026388888888889, + "k": 1.0, + "w5": 0.0, + "w1h": 7307.166666666667 + }, + { + "version": "10.27.16", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 3, + "cost": 230859.68333333335, + "context": 1373556.3333333333, + "out": 14592.333333333334, + "minutes": 2.448522220717536, + "p": 25547.666666666668, + "k": 22.0, + "w5": 74315.33333333333, + "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.16", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "その他", + "count": 2, + "cost": 93526.025, + "context": 118118.0, + "out": 6817.5, + "minutes": 1.0378249982992809, + "p": 3427.5, + "k": 4.0, + "w5": 41407.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.16", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "worker", + "role": "work", + "agent_type": "claude -p", + "count": 29, + "cost": 296489.5879310345, + "context": 2288290.206896552, + "out": 13913.379310344828, + "minutes": 8.352528735632184, + "k": 22.413793103448278, + "w5": 0.0, + "w1h": 57676.31034482759 + }, + { + "version": "10.27.16", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "claude+codex", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 1, + "cost": 886845.25, + "context": 9165440.0, + "out": 26793.0, + "minutes": 188.82836666504542, + "p": 45248.0, + "k": 62.0, + "w5": 0.0, + "w1h": 151011.0, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 799216, + "rewrite_gap_median": null + }, + { + "version": "10.27.16", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "conductor", + "role": "-", + "agent_type": "-", + "count": 28, + "cost": 339263.97500000003, + "context": 1942528.3214285714, + "out": 12992.5, + "minutes": 5.885591666329475, + "p": 63552.357142857145, + "k": 17.892857142857142, + "w5": 0.0, + "w1h": 90841.53571428571, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 244914, + "rewrite_gap_median": null + }, + { + "version": "10.27.16", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "judge", + "agent_type": "claude -p", + "count": 3, + "cost": 29080.666666666668, + "context": 13791.333333333334, + "out": 300.0, + "minutes": 0.09277777777777778, + "k": 1.0, + "w5": 0.0, + "w1h": 13789.333333333334 + }, + { + "version": "10.27.16", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "mvv", + "agent_type": "claude -p", + "count": 5, + "cost": 56032.130000000005, + "context": 25107.6, + "out": 1297.4, + "minutes": 0.2506666666666667, + "k": 1.0, + "w5": 0.0, + "w1h": 24763.0 + }, + { + "version": "10.27.16", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "pr", + "agent_type": "claude -p", + "count": 7, + "cost": 17429.985714285714, + "context": 13629.857142857143, + "out": 1017.2857142857143, + "minutes": 0.2045238095238095, + "k": 1.0, + "w5": 0.0, + "w1h": 5979.571428571428 + }, + { + "version": "10.27.16", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "general-purpose", + "count": 4, + "cost": 86984.95, + "context": 94007.0, + "out": 3228.5, + "minutes": 0.5861708323160807, + "p": 36525.25, + "k": 2.0, + "w5": 55115.25, + "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.16", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "supervisor", + "role": "その他", + "agent_type": "ndf:worker", + "count": 18, + "cost": 319765.81944444444, + "context": 2716543.5, + "out": 15901.222222222223, + "minutes": 3.028508334027396, + "p": 24915.38888888889, + "k": 27.333333333333332, + "w5": 86983.83333333333, + "w1h": 0.0, + "rewrites": 5, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 143388, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.6457666635513306 + }, + { + "version": "10.27.16", + "mode": "不明", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "layer": "worker", + "role": "work", + "agent_type": "claude -p", + "count": 13, + "cost": 173273.80384615387, + "context": 916692.2307692308, + "out": 8087.384615384615, + "minutes": 6.446538461538462, + "k": 20.23076923076923, + "w5": 0.0, + "w1h": 44599.38461538462 + } + ], + "external": [ + { + "version": "10.27.15", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "runtime": "claude", + "skill": "cross-refactoring", + "cli_model": "claude-opus-5-5", + "count": 11, + "context": 405299.9090909091, + "out": 4969.727272727273, + "cost": 122104.31818181813, + "minutes": 0.8947151505585873, + "p": 26883.81818181818, + "k": 9.090909090909092, + "w5": 0.0, + "w1h": 39473.545454545456, + "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": 11 + }, + { + "version": "10.27.15", + "mode": "standard", + "model": "claude-opus-5-5", + "cc": "2.1.318", + "reviewers": "-", + "runtime": "codex", + "skill": "cross-refactoring", + "cli_model": "gpt-6.1-sol", + "count": 1, + "input": 2153346.0, + "cached": 1998464.0, + "out": 10087.0, + "minutes": 4.944216664632162, + "p": 27887.0, + "k": 19.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, + "call_seats": 1 + }, + { + "version": "10.27.15", + "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": 24, + "context": 344675.125, + "out": 5442.5, + "cost": 133163.65416666665, + "minutes": 1.060519444445769, + "p": 28692.666666666668, + "k": 7.416666666666667, + "w5": 0.0, + "w1h": 45488.875, + "rewrites": 1, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 37815, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.5753833333651225, + "call_seats": 24 + }, + { + "version": "10.27.15", + "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": 35, + "input": 325203.17142857146, + "cached": 278440.22857142857, + "out": 2156.3142857142857, + "minutes": 1.2748423809096927, + "p": 25587.628571428573, + "k": 6.571428571428571, + "rewrites": 3, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 72691, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 0, + "rewrite_gap_median": 0.09981666405995687, + "call_seats": 35 + }, + { + "version": "10.27.16", + "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": 253228.25, + "out": 5068.75, + "cost": 115206.8125, + "minutes": 4.319233335057894, + "p": 24890.0, + "k": 6.25, + "w5": 0.0, + "w1h": 39584.5, + "rewrites": 0, + "rewrites_after_5m": 0, + "rewrites_untimed": 0, + "rewrite_tokens": 0, + "rewrite_tokens_after_5m": 0, + "read_tokens_after_5m": 28121, + "rewrite_gap_median": null, + "call_seats": 4 + }, + { + "version": "10.27.16", + "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": 3, + "input": 271961.0, + "cached": 228352.0, + "out": 2139.6666666666665, + "minutes": 2.0000500003496806, + "p": 25574.0, + "k": 6.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, + "call_seats": 3 + } + ], + "meta": { + "by": [ + "version", + "mode", + "model", + "cc", + "reviewers" + ], + "min_version": "10.27.15", + "until": "2026-11-05T01:04:00Z", + "sessions": 107, + "sessions_with_pr": 3, + "unlinked_external": 3146, + "unlinked_ledger": 0, + "skipped": { + "ndf の Skill が無い": 896, + "版を判定できない": 21 + }, + "released": "10.27.18", + "previous": "2026-11-04.json" + } +} diff --git a/docs/metrics/ndf-token-usage/2026-11-05.md b/docs/metrics/ndf-token-usage/2026-11-05.md new file mode 100644 index 000000000..3f1774531 --- /dev/null +++ b/docs/metrics/ndf-token-usage/2026-11-05.md @@ -0,0 +1,131 @@ +# ndf の版ごとのトークン消費と所要時間(2026-11-05 集計・10.27.18 の配布) + +**10.27.18 を正式版として出したときの記録である。** 打ち切りの時刻は `2026-11-05T01:04:00Z`。表の最初の行は 10.27.15(前の記録: 2026-11-04.md)。既定では前の記録の最後の版で、記録どうしが 1 行ずつ重なる。生の記録・会話の本文・リポジトリ名・会話の ID は残していない。集計した日時点の記録で、以後の記録の増減には追随しない。 + +## 作り方 + +同じ打ち切りの時刻で走らせ直すと、記録が残っている間は同じ `.json` ができる。ただし kiro の記録はターンに時刻を持たないため、打ち切りをまたいで進行中だった席は credit が変わりうる。 + +```bash +python3 scripts/token-usage-snapshot.py --released 10.27.18 --until 2026-11-05T01:04:00Z --min-version 10.27.15 +python3 scripts/token-usage.py --min-version 10.27.15 --until 2026-11-05T01:04:00Z --by version # 末尾の「集計の出力」 +``` + +## 比べるときの注意 + +- **PR を作った会話が 2 件以下の版:** 無し。作業の中身の違いが版の違いより大きい +- **CHANGELOG.md にあって表に出ない版:** 10.27.16, 10.27.18。その版で始めた PR つきの会話が無い(会話の版は最初に読んだ版で決まる) +- **打ち切りの 30 分前以降にも行がある会話を含む版:** 10.27.15, 10.27.16。進行中だった会話は、値が打ち切りの時刻までの分である + +## 版ごとの差(PR 1 本あたり) + +換算の合計は conductor・supervisor・worker の換算の和。前の版との差は、表の 1 つ上の行との比である。±30% を超えた版を下の「読み取り」で扱う。 + +| ndf の版 | 会話 | PR | 換算の合計 | 前の版との差 | conductor | supervisor | worker | 入力 | 所要 | codex 入力 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.15 | 3 | 7 | 2.20M | - | 1.49M | 0.66M | 0.06M | 23.42M | 96.8 | 1.63M | + +## 版と層ごとの呼び出しとキャッシュ(1 起動あたり) + +P と k と書き込みは 1 起動あたり、書き直しとうち 5 分超は合計の回数である。 + +| ndf の版 | 層 | 起動 | P | k | 書き込み 5 分 | 書き込み 1 時間 | 書き直し | うち 5 分超 | 1 起動あたりの書き直し | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.15 | conductor | 47 | 59.1k | 36.2 | 0.00M | 0.14M | 7 | 6 | 0.15 | +| 10.27.15 | supervisor | 45 | 34.7k | 8.9 | 0.04M | 0.01M | 4 | 2 | 0.14 | +| 10.27.15 | worker | 31 | 38.4k | 32.2 | 0.01M | 0.07M | 0 | 0 | 0.00 | +| 10.27.16 | conductor | 60 | 61.6k | 22.8 | 0.00M | 0.10M | 1 | 1 | 0.02 | +| 10.27.16 | supervisor | 60 | 25.1k | 10.1 | 0.03M | 0.01M | 5 | 0 | 0.19 | +| 10.27.16 | worker | 42 | - | 21.7 | 0.00M | 0.05M | - | - | - | + +## 読み取り + +差の大きい版は無い(すべて ±30% の内)。読み取りは要らない。 + +## 集計の出力 + +対象の会話: 107 件 / PR を作った会話: 3 件 / 寄せ先の無い外部 CLI: 3146 件 / 寄せ先の無い帳簿の行: 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.15 | 3 | 7 | 1.49M | 0.66M | 0.06M | 23.42M | 64.5k | 96.8 | 1.63M | 10.8k | 0.00 | 0.46M | + +### フェーズごと(1 起動あたり) + +| 動いた版 | 層 | フェーズ | 定義 | 起動 | 換算 | 入力 | 出力 | 所要 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.15 | conductor | - | - | 47 | 0.68M | 5.87M | 24.0k | 25.2 | +| 10.27.15 | supervisor | judge | claude -p | 4 | 0.03M | 0.01M | 0.3k | 0.1 | +| 10.27.15 | supervisor | mvv | claude -p | 4 | 0.06M | 0.03M | 1.7k | 0.3 | +| 10.27.15 | supervisor | pr | claude -p | 9 | 0.02M | 0.01M | 1.3k | 0.3 | +| 10.27.15 | supervisor | その他 | Explore | 1 | 0.65M | 6.67M | 25.8k | 9.0 | +| 10.27.15 | supervisor | その他 | general-purpose | 2 | 0.10M | 0.10M | 4.2k | 0.7 | +| 10.27.15 | supervisor | その他 | ndf:supervisor-waits | 2 | 0.24M | 1.48M | 5.4k | 13.8 | +| 10.27.15 | supervisor | その他 | ndf:worker | 22 | 0.18M | 1.20M | 7.3k | 3.2 | +| 10.27.15 | supervisor | その他 | その他 | 1 | 0.02M | 0.01M | 1.4k | 0.1 | +| 10.27.15 | worker | work | claude -p | 28 | 0.49M | 4.32M | 22.1k | 4.6 | +| 10.27.15 | worker | その他 | ndf:worker | 3 | 0.13M | 0.58M | 5.2k | 1.4 | +| 10.27.16 | conductor | - | - | 60 | 0.41M | 2.63M | 16.0k | 17.5 | +| 10.27.16 | supervisor | judge | claude -p | 8 | 0.03M | 0.01M | 0.3k | 0.1 | +| 10.27.16 | supervisor | mvv | claude -p | 6 | 0.05M | 0.02M | 1.4k | 0.3 | +| 10.27.16 | supervisor | pr | claude -p | 19 | 0.02M | 0.01M | 1.1k | 0.2 | +| 10.27.16 | supervisor | その他 | general-purpose | 4 | 0.09M | 0.09M | 3.2k | 0.6 | +| 10.27.16 | supervisor | その他 | ndf:worker | 21 | 0.31M | 2.52M | 15.7k | 2.9 | +| 10.27.16 | supervisor | その他 | その他 | 2 | 0.09M | 0.12M | 6.8k | 1.0 | +| 10.27.16 | worker | work | claude -p | 42 | 0.26M | 1.86M | 12.1k | 7.8 | + +### フェーズごとの呼び出しとキャッシュ + +P は起動ごとの固定費(最初の呼び出しの文脈)、k は呼び出し回数(どちらも 1 起動あたり)。書き直しは 2 回目以降の呼び出しのうち、書き込みが文脈の 50% を超え、かつ 20k を超えたものの回数(合計)。5 分超はそのうち直前の呼び出しとの間隔が 5 分を超えた回数、間隔は直前の間隔の中央値(分)。5 分超の書き直し・読み込みは、直前の間隔が 5 分を超えた呼び出しの書き直しの量と、書き直しでない呼び出しの読み込みの量(どちらも合計)。定義はサブエージェントの定義の名前。 + +| 動いた版 | 層 | フェーズ | 定義 | 起動 | P | k | 書き込み 5 分 | 書き込み 1 時間 | 書き直し | 5 分超 | 5 分超の書き直し | 5 分超の読み込み | 間隔 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.15 | conductor | - | - | 47 | 59.1k | 36.2 | 0.00M | 0.14M | 7 | 6 | 0.88M | 7.67M | 263.9 | +| 10.27.15 | supervisor | judge | claude -p | 4 | - | 1.0 | 0.00M | 0.01M | - | - | - | - | - | +| 10.27.15 | supervisor | mvv | claude -p | 4 | - | 1.0 | 0.00M | 0.03M | - | - | - | - | - | +| 10.27.15 | supervisor | pr | claude -p | 9 | - | 1.0 | 0.00M | 0.01M | - | - | - | - | - | +| 10.27.15 | supervisor | その他 | Explore | 1 | 21.9k | 58.0 | 0.16M | 0.00M | 0 | 0 | 0.00M | 0.00M | - | +| 10.27.15 | supervisor | その他 | general-purpose | 2 | 36.6k | 2.0 | 0.06M | 0.00M | 0 | 0 | 0.00M | 0.00M | - | +| 10.27.15 | supervisor | その他 | ndf:supervisor-waits | 2 | 47.0k | 21.0 | 0.00M | 0.07M | 0 | 0 | 0.00M | 0.07M | - | +| 10.27.15 | supervisor | その他 | ndf:worker | 22 | 35.4k | 12.6 | 0.07M | 0.00M | 4 | 2 | 0.11M | 0.00M | 6.9 | +| 10.27.15 | supervisor | その他 | その他 | 1 | 3.4k | 2.0 | 0.01M | 0.00M | 0 | 0 | 0.00M | 0.00M | - | +| 10.27.15 | worker | work | claude -p | 28 | - | 34.6 | 0.00M | 0.08M | - | - | - | - | - | +| 10.27.15 | worker | その他 | ndf:worker | 3 | 38.4k | 9.7 | 0.06M | 0.00M | 0 | 0 | 0.00M | 0.00M | - | +| 10.27.16 | conductor | - | - | 60 | 61.6k | 22.8 | 0.00M | 0.10M | 1 | 1 | 0.09M | 3.52M | 72.2 | +| 10.27.16 | supervisor | judge | claude -p | 8 | - | 1.0 | 0.00M | 0.01M | - | - | - | - | - | +| 10.27.16 | supervisor | mvv | claude -p | 6 | - | 1.0 | 0.00M | 0.02M | - | - | - | - | - | +| 10.27.16 | supervisor | pr | claude -p | 19 | - | 1.0 | 0.00M | 0.01M | - | - | - | - | - | +| 10.27.16 | supervisor | その他 | general-purpose | 4 | 36.5k | 2.0 | 0.06M | 0.00M | 0 | 0 | 0.00M | 0.00M | - | +| 10.27.16 | supervisor | その他 | ndf:worker | 21 | 25.0k | 26.6 | 0.09M | 0.00M | 5 | 0 | 0.00M | 0.00M | 0.6 | +| 10.27.16 | supervisor | その他 | その他 | 2 | 3.4k | 4.0 | 0.04M | 0.00M | 0 | 0 | 0.00M | 0.00M | - | +| 10.27.16 | worker | work | claude -p | 42 | - | 21.7 | 0.00M | 0.05M | - | - | - | - | - | + +### 外部 CLI(1 起動あたり) + +kiro はトークン数を記録しない(値が 0)ため credit だけを載せる。agy は読まない。 + +| 動いた版 | ランタイム | Skill | モデル | 起動 | 入力 | cache | 出力 | credit | 所要 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.15 | claude | cross-review | claude-opus-5-5 | 24 | 0.34M | 0.00M | 5.4k | 0.00 | 1.1 | +| 10.27.15 | claude | cross-refactoring | claude-opus-5-5 | 11 | 0.41M | 0.00M | 5.0k | 0.00 | 0.9 | +| 10.27.15 | codex | cross-review | gpt-6.1-sol | 35 | 0.33M | 0.28M | 2.2k | 0.00 | 1.3 | +| 10.27.15 | codex | cross-refactoring | gpt-6.1-sol | 1 | 2.15M | 2.00M | 10.1k | 0.00 | 4.9 | +| 10.27.16 | claude | cross-review | claude-opus-5-5 | 4 | 0.25M | 0.00M | 5.1k | 0.00 | 4.3 | +| 10.27.16 | codex | cross-review | gpt-6.1-sol | 3 | 0.27M | 0.23M | 2.1k | 0.00 | 2.0 | + +### 外部 CLI の呼び出しとキャッシュ(1 起動あたり) + +codex は input のうち cached に当たらなかった分を書き込みとみなし、呼び出しごとの値(last_token_usage)を持つ席だけで数える。kiro は呼び出し回数を記録しない(利用者のターン数は JSON の turns)。取れない値は -。 + +| 動いた版 | ランタイム | Skill | モデル | 起動 | P | k | 書き直し | 5 分超 | 5 分超の書き直し | 5 分超の読み込み | 間隔 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| 10.27.15 | claude | cross-review | claude-opus-5-5 | 24 | 28.7k | 7.4 | 1 | 0 | 0.00M | 0.00M | 0.6 | +| 10.27.15 | claude | cross-refactoring | claude-opus-5-5 | 11 | 26.9k | 9.1 | 0 | 0 | 0.00M | 0.00M | - | +| 10.27.15 | codex | cross-review | gpt-6.1-sol | 35 | 25.6k | 6.6 | 3 | 0 | 0.00M | 0.00M | 0.1 | +| 10.27.15 | codex | cross-refactoring | gpt-6.1-sol | 1 | 27.9k | 19.0 | 0 | 0 | 0.00M | 0.00M | - | +| 10.27.16 | claude | cross-review | claude-opus-5-5 | 4 | 24.9k | 6.2 | 0 | 0 | 0.00M | 0.03M | - | +| 10.27.16 | codex | cross-review | gpt-6.1-sol | 3 | 25.6k | 6.0 | 0 | 0 | 0.00M | 0.00M | - | diff --git a/plugins/ndf/.claude-plugin/plugin.json b/plugins/ndf/.claude-plugin/plugin.json index d5160a05e..ec3b6ab16 100644 --- a/plugins/ndf/.claude-plugin/plugin.json +++ b/plugins/ndf/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "ndf", - "version": "10.27.18-dev.1", - "description": "Claude Code plugin (v10.27.18-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.18", + "description": "Claude Code plugin (v10.27.18): 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 7214058b9..6d706bf3c 100644 --- a/plugins/ndf/.codex-plugin/plugin.json +++ b/plugins/ndf/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "ndf", - "version": "10.27.18-dev.1", - "description": "Codex plugin (v10.27.18-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.18", + "description": "Codex plugin (v10.27.18): 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 d7588a4c2..8849dee8c 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.18-dev.1/skills/deploy/SKILL.md を読んで、その手順どおりに qa/staging へ deploy PR を作成してください。 +~/.codex/plugins/cache/ai-plugins/ndf/10.27.18/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.18-dev.1/skills/deploy/SKILL.md +# ~/.codex/plugins/cache/ai-plugins/ndf/10.27.18/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.18-dev.1 +# => ndf@ai-plugins installed, enabled 10.27.18 ``` 抑止していない Skill(`document-style` など)はキャッシュ配下でも `$` で解決するため、そちらは `$` 起動が使えます。