claude-code-conductor 2.4.0__tar.gz → 2.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/docs/settings.json.md +19 -0
  2. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/statusline.py +41 -37
  3. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/start/SKILL.md +4 -2
  4. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/task-routing/SKILL.md +10 -8
  5. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/CHANGELOG.md +36 -0
  6. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/PKG-INFO +1 -1
  7. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/__init__.py +1 -1
  8. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/CLAUDE.md +0 -0
  9. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/architect.md +0 -0
  10. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/code-reviewer.md +0 -0
  11. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/developer.md +0 -0
  12. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/doc-writer.md +0 -0
  13. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/interviewer.md +0 -0
  14. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/planner.md +0 -0
  15. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/project-setup.md +0 -0
  16. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/security-reviewer.md +0 -0
  17. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/systematic-debugger.md +0 -0
  18. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/tester.md +0 -0
  19. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/wt_developer.md +0 -0
  20. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/wt_systematic-debugger.md +0 -0
  21. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/wt_tester.md +0 -0
  22. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/docs/platform-adapters.md +0 -0
  23. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/consolidate_memory.py +0 -0
  24. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/permission_handler.py +0 -0
  25. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/post_tool.py +0 -0
  26. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/pre_compact.py +0 -0
  27. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/pre_tool.py +0 -0
  28. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/record_review_decision.py +0 -0
  29. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/record_tier_outcome.py +0 -0
  30. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/restore_session.py +0 -0
  31. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/review_hint_inject.py +0 -0
  32. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/schema.sql +0 -0
  33. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/select_tier.py +0 -0
  34. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/session_start.py +0 -0
  35. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/session_stop.py +0 -0
  36. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/session_utils.py +0 -0
  37. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/stop.py +0 -0
  38. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/subagent_log.py +0 -0
  39. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/worktree_guard.py +0 -0
  40. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/memory/.gitkeep +0 -0
  41. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/permission_rules.json +0 -0
  42. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/rules/code-review-checklist.md +0 -0
  43. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/rules/promoted/index.md +0 -0
  44. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/rules/security-review-checklist.md +0 -0
  45. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/settings.json +0 -0
  46. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/code-review/SKILL.md +0 -0
  47. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/dev-workflow/SKILL.md +0 -0
  48. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/develop/SKILL.md +0 -0
  49. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/doc/SKILL.md +0 -0
  50. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/extract-lib/SKILL.md +0 -0
  51. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/init-session/SKILL.md +0 -0
  52. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/mcp-config/SKILL.md +0 -0
  53. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/parallel-agents/SKILL.md +0 -0
  54. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/pattern-status/SKILL.md +0 -0
  55. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
  56. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
  57. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
  58. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/setup/SKILL.md +0 -0
  59. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/state/.gitkeep +0 -0
  60. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.gitignore +0 -0
  61. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/LICENSE +0 -0
  62. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/README.md +0 -0
  63. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/hatch_build.py +0 -0
  64. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/pyproject.toml +0 -0
  65. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/__main__.py +0 -0
  66. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/_excludes.py +0 -0
  67. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/_terminal.py +0 -0
  68. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/adapters.py +0 -0
  69. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli.py +0 -0
  70. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_ask.py +0 -0
  71. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_doctor.py +0 -0
  72. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_init.py +0 -0
  73. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_list.py +0 -0
  74. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_plan.py +0 -0
  75. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_tier.py +0 -0
  76. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_update.py +0 -0
  77. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/db.py +0 -0
  78. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/mcp_server.py +0 -0
  79. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/paths.py +0 -0
  80. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/plan_validator.py +0 -0
  81. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/platforms.py +0 -0
  82. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/question.py +0 -0
  83. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/__init__.py +0 -0
  84. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/conftest.py +0 -0
  85. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/__init__.py +0 -0
  86. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_consolidate_memory.py +0 -0
  87. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_permission_handler.py +0 -0
  88. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
  89. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_planner_check.py +0 -0
  90. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_post_tool.py +0 -0
  91. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_pre_tool.py +0 -0
  92. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_record_tier_outcome.py +0 -0
  93. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_restore_session.py +0 -0
  94. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_review_hint_inject.py +0 -0
  95. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_select_tier.py +0 -0
  96. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_select_tier_escalation.py +0 -0
  97. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_session_start.py +0 -0
  98. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_session_stop.py +0 -0
  99. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_session_utils.py +0 -0
  100. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
  101. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_similarity_boost.py +0 -0
  102. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_statusline.py +0 -0
  103. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_statusline_template_sync.py +0 -0
  104. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_subagent_log.py +0 -0
  105. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_sync_check.py +0 -0
  106. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_template_guard.py +0 -0
  107. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/__init__.py +0 -0
  108. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/test_session_backlog_reconciliation.py +0 -0
  109. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
  110. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
  111. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/test_task_routing_skill.py +0 -0
  112. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_adapters.py +0 -0
  113. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_ask.py +0 -0
  114. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_init.py +0 -0
  115. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_list.py +0 -0
  116. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_plan.py +0 -0
  117. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_tier.py +0 -0
  118. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_docstring_consistency.py +0 -0
  119. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_excludes.py +0 -0
  120. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_paths.py +0 -0
  121. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_plan_validator.py +0 -0
  122. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_pre_compact.py +0 -0
  123. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_pre_tool_hook.py +0 -0
  124. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_precompact_additional.py +0 -0
  125. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_precompact_toctou_fixes.py +0 -0
  126. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_session_utils_additional.py +0 -0
  127. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_statusline.py +0 -0
  128. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_stop_additional.py +0 -0
  129. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_stop_hook.py +0 -0
  130. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_stop_precompact_fixes.py +0 -0
  131. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_sync_template_stop.py +0 -0
  132. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_template_pre_tool_hook.py +0 -0
  133. {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_worktree_guard.py +0 -0
@@ -361,6 +361,25 @@ Claude Code のステータスバーに表示するカスタム情報を定義
361
361
  | `type` | string | `"command"` のみ(現時点) |
362
362
  | `command` | string | 実行するコマンド。stdout の1行目がステータスバーに表示される |
363
363
 
364
+ ### C3 デフォルトの表示内容
365
+
366
+ C3 が提供する `.claude/hooks/statusline.py` は以下の形式で表示する:
367
+
368
+ ```
369
+ [Claude Sonnet 4] 200K high | ctx used 8% | 5h lim 24% (1h 59m) | 7d lim 41% (2d 23h)
370
+ ```
371
+
372
+ | 項目 | 内容 |
373
+ |---|---|
374
+ | `[モデル名]` | 現在のモデル表示名 |
375
+ | `200K` / `1M` | コンテキストウィンドウサイズ |
376
+ | `high` / `normal` / `low` | effort レベル |
377
+ | `ctx used N%` | コンテキスト使用率(色: 緑→黄→オレンジ→赤) |
378
+ | `5h lim N% (Xh Ym)` | 5時間レート制限の消費率とリセットまでの残り時間 |
379
+ | `7d lim N% (Xd Yh)` | 7日レート制限の消費率とリセットまでの残り時間 |
380
+
381
+ `rate_limits` は Claude.ai サブスクライバー(Pro/Max)がセッションの最初の API レスポンス後に取得できる。未取得の場合は該当項目を省略する。
382
+
364
383
  ---
365
384
 
366
385
  ## `model`
@@ -23,11 +23,6 @@ ORANGE = '\x1b[38;5;208m'
23
23
  DIM = '\x1b[2m'
24
24
  RESET = '\x1b[0m'
25
25
 
26
- # Gauge characters
27
- BLOCK = '█'
28
- BLOCK_EMPTY = '░'
29
- TOTAL_CELLS = 10
30
-
31
26
 
32
27
  def pct_color(pct: int) -> str:
33
28
  if pct > 90:
@@ -40,16 +35,12 @@ def pct_color(pct: int) -> str:
40
35
  return GREEN
41
36
 
42
37
 
43
- def build_gauge(pct: int) -> str:
44
- filled = min(pct // 10, TOTAL_CELLS)
45
- empty = TOTAL_CELLS - filled
46
- color = pct_color(pct)
47
- return (
48
- DIM + '[' + RESET +
49
- color + BLOCK * filled + RESET +
50
- DIM + BLOCK_EMPTY * empty + RESET +
51
- DIM + ']' + RESET
52
- )
38
+ def format_context_size(size: int) -> str:
39
+ if size >= 900_000:
40
+ return '1M'
41
+ elif size >= 100_000:
42
+ return '200K'
43
+ return str(size)
53
44
 
54
45
 
55
46
  def format_reset_time(resets_at) -> str:
@@ -88,15 +79,32 @@ def render_output(raw: str) -> None:
88
79
  except Exception:
89
80
  pass
90
81
 
82
+ header: list[str] = []
83
+ metrics: list[str] = []
84
+
85
+ # [model display name] context_size effort — スペース区切り
86
+ model = data.get('model') or {}
87
+ display_name = model.get('display_name', '')
88
+ if display_name:
89
+ header.append(f'[{display_name}]')
90
+
91
+ # context window size: 200K / 1M
91
92
  ctx_window = data.get('context_window') or {}
92
- ctx_pct = round(ctx_window.get('used_percentage') or 0)
93
+ ctx_size = ctx_window.get('context_window_size')
94
+ if ctx_size:
95
+ header.append(format_context_size(int(ctx_size)))
93
96
 
94
- parts = [
95
- DIM + 'context usage:' + RESET + ' ' +
96
- build_gauge(ctx_pct) + ' ' +
97
- pct_color(ctx_pct) + str(ctx_pct) + '%' + RESET
98
- ]
97
+ # effort level
98
+ effort = data.get('effort') or {}
99
+ effort_level = effort.get('level', '')
100
+ if effort_level:
101
+ header.append(effort_level)
99
102
 
103
+ # ctx usg %
104
+ ctx_pct = round(ctx_window.get('used_percentage') or 0)
105
+ metrics.append('ctx used ' + pct_color(ctx_pct) + str(ctx_pct) + '%' + RESET)
106
+
107
+ # rate limits
100
108
  rate_limits = data.get('rate_limits')
101
109
  if rate_limits:
102
110
  five_hour = (
@@ -107,14 +115,10 @@ def render_output(raw: str) -> None:
107
115
  if five_hour:
108
116
  pct = round(five_hour.get('used_percentage') or 0)
109
117
  reset_str = format_reset_time(five_hour.get('resets_at'))
110
- part = (
111
- DIM + '5hour limits:' + RESET + ' ' +
112
- build_gauge(pct) + ' ' +
113
- pct_color(pct) + str(pct) + '%' + RESET
114
- )
118
+ part = '5h lim ' + pct_color(pct) + str(pct) + '%' + RESET
115
119
  if reset_str:
116
- part += ' ' + DIM + reset_str + RESET
117
- parts.append(part)
120
+ part += ' ' + DIM + '(' + reset_str + ')' + RESET
121
+ metrics.append(part)
118
122
 
119
123
  seven_day = (
120
124
  rate_limits.get('seven_day') or
@@ -124,16 +128,16 @@ def render_output(raw: str) -> None:
124
128
  if seven_day:
125
129
  pct = round(seven_day.get('used_percentage') or 0)
126
130
  reset_str = format_reset_time(seven_day.get('resets_at'))
127
- part = (
128
- DIM + '7day limits:' + RESET + ' ' +
129
- build_gauge(pct) + ' ' +
130
- pct_color(pct) + str(pct) + '%' + RESET
131
- )
131
+ part = '7d lim ' + pct_color(pct) + str(pct) + '%' + RESET
132
132
  if reset_str:
133
- part += ' ' + DIM + reset_str + RESET
134
- parts.append(part)
135
-
136
- sys.stdout.write(' '.join(parts) + '\n')
133
+ part += ' ' + DIM + '(' + reset_str + ')' + RESET
134
+ metrics.append(part)
135
+
136
+ output_parts: list[str] = []
137
+ if header:
138
+ output_parts.append(' '.join(header))
139
+ output_parts.extend(metrics)
140
+ sys.stdout.write(' | '.join(output_parts) + '\n')
137
141
  sys.stdout.flush()
138
142
 
139
143
 
@@ -124,9 +124,11 @@ Skill(skill="task-routing", args="from_start=true")
124
124
  ```
125
125
 
126
126
  task-routing は args に `from_start=true` が含まれていることをコンテキストから読み取り、
127
- Step 1(種別の 5 択)のみ実行して種別を返す。Step 2〜4 はスキップされる。
127
+ Step 1(種別の 5 択)のみ実行して終了する。Step 2〜4 はスキップされる。
128
128
 
129
- 戻ってきた種別を `task_type` とする。
129
+ 上記 Skill 呼び出しが完了したら、ユーザーへの追加メッセージを出力せずに即 Step 0.5-D へ進む。
130
+ task-routing の出力から確定した種別(`feature` / `bug-fix` / `refactor` / `security-audit` / `docs` のいずれか)を `task_type` とする。
131
+ 種別が取得できなかった場合(空値・読み取り不能)は、task-routing を再呼び出しする。
130
132
 
131
133
  ### 0.5-D: TASK_TYPE 行の書き込み
132
134
 
@@ -15,11 +15,12 @@ Ruflo の「タスク種別 → エージェント編成テンプレ」発想を
15
15
  呼び出し元は Skill ツールの `args` パラメータで動作モードを指定する。
16
16
  LLM はこの skill が起動された際、文脈や呼び出し情報から `from_start=true` の有無を判定する。
17
17
 
18
- - **/start 経由(args に `from_start=true`)**: Step 1 で種別を確定したら
19
- そのまま終了し、種別を `/start` 側に返却する。Step 2〜4 はスキップする。
20
- TASK_TYPE 書き込みも `/start` 側で行うため、本 skill では行わない。
21
- 編成詳細は `/start` 後段(Step 1 開始地点選択 / Step 2 フェーズ遷移)で
22
- 扱うため、ここでは出さない。
18
+ - **/start 経由(args に `from_start=true`)**: Step 1 で種別を確定したら、
19
+ **確定した種別名(例: `feature`)を1行のみ出力して** task-routing を終了する。
20
+ Step 2〜4 はスキップする。案内文・「/start へ移行」のような説明文は **絶対に出力しない**。
21
+ TASK_TYPE 書き込みは `/start` 側(Step 0.5-D)が行うため、本 skill では行わない。
22
+ start スキルの Step 0.5-D が自動的に続きを実行する。
23
+ (この制約は LLM のコンテキスト読み飛ばし対策として Step 1 にも記載されている)
23
24
  - **単独利用(args 指定なし、または `from_start=false`)**: 従来通り Step 1 → 2 → 3 → 4 を
24
25
  順に実行する。Step 4 完了時に TASK_TYPE 書き込みも本 skill が行う。
25
26
 
@@ -28,8 +29,9 @@ LLM はこの skill が起動された際、文脈や呼び出し情報から `f
28
29
  ## Step 1: タスク種別を選択する
29
30
 
30
31
  Skill ツールの `args` に `from_start=true` が含まれているときは「/start 経由モード」とみなし、
31
- Step 1 で種別を確定したら **Step 2〜4 はスキップ** して種別を呼び出し元(/start)に
32
- 返却する(編成詳細は /start 側で表示するため)。
32
+ Step 1 で種別を確定したら **確定した種別名(例: `feature`)を1行のみ出力して** task-routing を終了する。
33
+ Step 2〜4 はスキップ。案内文・「/start へ移行します」などの文言は **絶対に出力しない**。
34
+ (この制約は動作モードセクションにも記載されている)
33
35
 
34
36
  AskUserQuestion ツール:
35
37
 
@@ -144,8 +146,8 @@ AskUserQuestion ツール:
144
146
  その後、選択された種別に応じて以下を実行する:
145
147
 
146
148
  - **feature**:
147
- - `args` に `from_start=true` が含まれているとき: 種別を返却するのみ(制御を /start に返す。再帰呼び出しを避ける)
148
149
  - `args` 指定なし/`from_start=false` のとき: `.claude/skills/start/SKILL.md` を Read して `/start` フローに合流する
150
+ - `args` に `from_start=true` が含まれているとき: このケースは Step 1 で処理済みのため Step 4 に到達しない
149
151
  - **bug-fix**: `systematic-debugger` → `developer` → `tester` の順に Agent ツールで順次起動し、完了後に `code-reviewer` と `security-reviewer` を 1 メッセージ内で並列起動する
150
152
  - **docs**: Agent ツールで `doc-writer` を起動する
151
153
  - **refactor**: planner で `po_plan_version` 付き plan-report を生成 → `.claude/skills/parallel-agents/SKILL.md` を Read して並列実行に合流する
@@ -1,5 +1,41 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.5.0] - 2026-05-13
4
+
5
+ ### 概要
6
+
7
+ `/start` スキルのルーティング停止バグを修正し、ステータスラインの表示をリニューアル。
8
+
9
+ ### 修正
10
+
11
+ #### `/start` → `task-routing` の種別返却が停止するバグ修正
12
+
13
+ `/start` コマンド実行後 task-routing でタスク種別を選択すると「/start コマンドへ移行」というメッセージが出力されるだけで止まり、ユーザーが再度 `/start` を手入力しなければならない問題を修正。
14
+
15
+ - `task-routing/SKILL.md`: `from_start=true` モード終了時に「確定した種別名を1行のみ出力して終了する」ことを明示。「/start へ移行します」などの余剰メッセージを **絶対に出力しない** 旨を追記
16
+ - `start/SKILL.md`: Skill 呼び出し完了後は追加メッセージなしに即 Step 0.5-D へ進む旨と、種別取得失敗時の再呼び出しフォールバックを追記
17
+ - 3箇所の防御的冗長記述にクロスリファレンスを追加(LLMのコンテキスト読み飛ばし対策のため意図的な反復であることを明示)
18
+
19
+ ### 変更
20
+
21
+ #### ステータスライン表示のリニューアル (`.claude/hooks/statusline.py`)
22
+
23
+ 表示フォーマットを以下に刷新:
24
+
25
+ ```
26
+ [Claude Sonnet 4] 200K high | ctx used 8% | 5h lim 24% (1h 59m) | 7d lim 41% (2d 23h)
27
+ ```
28
+
29
+ - モデル名・コンテキストサイズ・effort レベルを先頭にスペース区切りで追加
30
+ - コンテキストサイズを `200K` / `1M` 形式に変換して表示
31
+ - ゲージバー(`[████░░░░░░]`)を廃止してテキストのみに変更
32
+ - `context usage` → `ctx used`、`lmt` → `lim`(標準的な英語略語)に表記統一
33
+ - `|` 区切りの前後にスペースを追加
34
+ - レート制限のリセット残り時間を `(Xh Ym)` / `(Xd Yh)` 形式で括弧付き表示
35
+ - `rate_limits` 未取得時は該当項目を省略
36
+
37
+ ---
38
+
3
39
  ## [2.4.0] - 2026-05-12
4
40
 
5
41
  ### 概要
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-code-conductor
3
- Version: 2.4.0
3
+ Version: 2.5.0
4
4
  Summary: Multi-agent orchestration framework for Claude Code with Codex/Cursor adapters (C3)
5
5
  Project-URL: Homepage, https://github.com/satoh-y-0323/claude-code-conductor
6
6
  Project-URL: Repository, https://github.com/satoh-y-0323/claude-code-conductor
@@ -1,3 +1,3 @@
1
1
  """Claude Code Conductor (C3) - multi-agent orchestration framework for Claude Code."""
2
2
 
3
- __version__ = "2.4.0"
3
+ __version__ = "2.5.0"