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.
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/docs/settings.json.md +19 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/statusline.py +41 -37
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/start/SKILL.md +4 -2
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/task-routing/SKILL.md +10 -8
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/CHANGELOG.md +36 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/PKG-INFO +1 -1
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/__init__.py +1 -1
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/CLAUDE.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/architect.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/code-reviewer.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/developer.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/doc-writer.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/interviewer.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/planner.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/project-setup.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/security-reviewer.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/systematic-debugger.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/tester.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/wt_developer.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/wt_systematic-debugger.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/wt_tester.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/docs/platform-adapters.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/consolidate_memory.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/permission_handler.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/post_tool.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/pre_compact.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/pre_tool.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/record_review_decision.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/record_tier_outcome.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/restore_session.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/review_hint_inject.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/schema.sql +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/select_tier.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/session_start.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/session_stop.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/session_utils.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/stop.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/subagent_log.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/worktree_guard.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/memory/.gitkeep +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/permission_rules.json +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/rules/code-review-checklist.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/rules/promoted/index.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/rules/security-review-checklist.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/settings.json +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/code-review/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/dev-workflow/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/develop/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/doc/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/extract-lib/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/init-session/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/mcp-config/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/parallel-agents/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/pattern-status/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/setup/SKILL.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/state/.gitkeep +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.gitignore +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/LICENSE +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/README.md +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/hatch_build.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/pyproject.toml +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/__main__.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/_excludes.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/_terminal.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/adapters.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_ask.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_doctor.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_init.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_list.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_plan.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_tier.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/cli_update.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/db.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/mcp_server.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/paths.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/plan_validator.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/platforms.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/src/c3/question.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/__init__.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/conftest.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/__init__.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_consolidate_memory.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_permission_handler.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_planner_check.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_post_tool.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_pre_tool.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_record_tier_outcome.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_restore_session.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_review_hint_inject.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_select_tier.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_select_tier_escalation.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_session_start.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_session_stop.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_session_utils.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_similarity_boost.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_statusline.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_statusline_template_sync.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_subagent_log.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_sync_check.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_template_guard.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/__init__.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/test_session_backlog_reconciliation.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/test_task_routing_skill.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_adapters.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_ask.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_init.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_list.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_plan.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_cli_tier.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_docstring_consistency.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_excludes.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_paths.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_plan_validator.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_pre_compact.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_precompact_additional.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_precompact_toctou_fixes.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_session_utils_additional.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_statusline.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_stop_additional.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_stop_hook.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_stop_precompact_fixes.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_sync_template_stop.py +0 -0
- {claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_template_pre_tool_hook.py +0 -0
- {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
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
-
|
|
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
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
|
127
|
+
Step 1(種別の 5 択)のみ実行して終了する。Step 2〜4 はスキップされる。
|
|
128
128
|
|
|
129
|
-
|
|
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
|
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/task-routing/SKILL.md
RENAMED
|
@@ -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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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 で種別を確定したら
|
|
32
|
-
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/security-reviewer.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/systematic-debugger.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/agents/wt_systematic-debugger.md
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/docs/platform-adapters.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/consolidate_memory.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/permission_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/record_review_decision.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/record_tier_outcome.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/restore_session.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/hooks/review_hint_inject.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/rules/code-review-checklist.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/code-review/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/dev-workflow/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/extract-lib/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/init-session/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/mcp-config/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/parallel-agents/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/pattern-status/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/promote-pattern/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/.claude/skills/report-timestamp/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_consolidate_memory.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_permission_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_planner_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_record_tier_outcome.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_restore_session.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_review_hint_inject.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_session_start.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_session_stop.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_session_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_similarity_boost.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_subagent_log.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/hooks/test_template_guard.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/skills/test_task_routing_skill.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_docstring_consistency.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_precompact_additional.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_precompact_toctou_fixes.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_session_utils_additional.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_stop_precompact_fixes.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_sync_template_stop.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.4.0 → claude_code_conductor-2.5.0}/tests/test_template_pre_tool_hook.py
RENAMED
|
File without changes
|
|
File without changes
|