claude-code-conductor 2.1.0__tar.gz → 2.2.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 (125) hide show
  1. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/code-reviewer.md +1 -0
  2. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/planner.md +8 -4
  3. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/security-reviewer.md +1 -0
  4. claude_code_conductor-2.2.0/.claude/agents/wt_developer.md +91 -0
  5. claude_code_conductor-2.2.0/.claude/agents/wt_systematic-debugger.md +124 -0
  6. claude_code_conductor-2.2.0/.claude/agents/wt_tester.md +73 -0
  7. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/parallel-agents/SKILL.md +35 -13
  8. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/CHANGELOG.md +67 -0
  9. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/PKG-INFO +1 -1
  10. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/__init__.py +1 -1
  11. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/CLAUDE.md +0 -0
  12. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/architect.md +0 -0
  13. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/developer.md +0 -0
  14. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/doc-writer.md +0 -0
  15. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/interviewer.md +0 -0
  16. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/project-setup.md +0 -0
  17. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/systematic-debugger.md +0 -0
  18. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/agents/tester.md +0 -0
  19. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/docs/settings.json.md +0 -0
  20. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/consolidate_memory.py +0 -0
  21. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/permission_handler.py +0 -0
  22. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/post_tool.py +0 -0
  23. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/pre_compact.py +0 -0
  24. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/pre_tool.py +0 -0
  25. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/record_review_decision.py +0 -0
  26. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/record_tier_outcome.py +0 -0
  27. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/restore_session.py +0 -0
  28. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/review_hint_inject.py +0 -0
  29. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/schema.sql +0 -0
  30. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/select_tier.py +0 -0
  31. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/session_start.py +0 -0
  32. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/session_stop.py +0 -0
  33. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/session_utils.py +0 -0
  34. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/statusline.py +0 -0
  35. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/stop.py +0 -0
  36. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/subagent_log.py +0 -0
  37. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/hooks/worktree_guard.py +0 -0
  38. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/memory/.gitkeep +0 -0
  39. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/permission_rules.json +0 -0
  40. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/rules/code-review-checklist.md +0 -0
  41. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/rules/promoted/index.md +0 -0
  42. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/rules/security-review-checklist.md +0 -0
  43. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/settings.json +0 -0
  44. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/code-review/SKILL.md +0 -0
  45. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/dev-workflow/SKILL.md +0 -0
  46. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/develop/SKILL.md +0 -0
  47. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/doc/SKILL.md +0 -0
  48. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/extract-lib/SKILL.md +0 -0
  49. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/init-session/SKILL.md +0 -0
  50. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/mcp-config/SKILL.md +0 -0
  51. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/pattern-status/SKILL.md +0 -0
  52. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
  53. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
  54. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
  55. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/setup/SKILL.md +0 -0
  56. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/start/SKILL.md +0 -0
  57. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/skills/task-routing/SKILL.md +0 -0
  58. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.claude/state/.gitkeep +0 -0
  59. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/.gitignore +0 -0
  60. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/LICENSE +0 -0
  61. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/README.md +0 -0
  62. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/hatch_build.py +0 -0
  63. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/pyproject.toml +0 -0
  64. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/__main__.py +0 -0
  65. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/_excludes.py +0 -0
  66. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/_terminal.py +0 -0
  67. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/cli.py +0 -0
  68. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/cli_doctor.py +0 -0
  69. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/cli_init.py +0 -0
  70. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/cli_list.py +0 -0
  71. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/cli_plan.py +0 -0
  72. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/cli_tier.py +0 -0
  73. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/cli_update.py +0 -0
  74. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/db.py +0 -0
  75. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/paths.py +0 -0
  76. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/src/c3/plan_validator.py +0 -0
  77. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/__init__.py +0 -0
  78. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/conftest.py +0 -0
  79. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/__init__.py +0 -0
  80. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_consolidate_memory.py +0 -0
  81. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_permission_handler.py +0 -0
  82. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
  83. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_planner_check.py +0 -0
  84. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_post_tool.py +0 -0
  85. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_pre_tool.py +0 -0
  86. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_record_tier_outcome.py +0 -0
  87. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_restore_session.py +0 -0
  88. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_review_hint_inject.py +0 -0
  89. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_select_tier.py +0 -0
  90. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_select_tier_escalation.py +0 -0
  91. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_session_start.py +0 -0
  92. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_session_stop.py +0 -0
  93. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_session_utils.py +0 -0
  94. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
  95. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_similarity_boost.py +0 -0
  96. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_statusline.py +0 -0
  97. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_statusline_template_sync.py +0 -0
  98. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_subagent_log.py +0 -0
  99. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_sync_check.py +0 -0
  100. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/hooks/test_template_guard.py +0 -0
  101. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/skills/__init__.py +0 -0
  102. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/skills/test_session_backlog_reconciliation.py +0 -0
  103. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
  104. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
  105. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/skills/test_task_routing_skill.py +0 -0
  106. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_cli_init.py +0 -0
  107. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_cli_list.py +0 -0
  108. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_cli_plan.py +0 -0
  109. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_cli_tier.py +0 -0
  110. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_docstring_consistency.py +0 -0
  111. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_excludes.py +0 -0
  112. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_paths.py +0 -0
  113. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_plan_validator.py +0 -0
  114. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_pre_compact.py +0 -0
  115. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_pre_tool_hook.py +0 -0
  116. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_precompact_additional.py +0 -0
  117. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_precompact_toctou_fixes.py +0 -0
  118. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_session_utils_additional.py +0 -0
  119. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_statusline.py +0 -0
  120. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_stop_additional.py +0 -0
  121. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_stop_hook.py +0 -0
  122. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_stop_precompact_fixes.py +0 -0
  123. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_sync_template_stop.py +0 -0
  124. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_template_pre_tool_hook.py +0 -0
  125. {claude_code_conductor-2.1.0 → claude_code_conductor-2.2.0}/tests/test_worktree_guard.py +0 -0
@@ -2,6 +2,7 @@
2
2
  name: code-reviewer
3
3
  model: sonnet
4
4
  memory: project
5
+ permissionMode: bypassPermissions
5
6
  description: コード品質レビュー担当。品質・保守性・パフォーマンスをレビューし code-review-report を出力する。ソース編集不可。
6
7
  tools:
7
8
  - Read
@@ -63,11 +63,15 @@ plan-report の YAML フロントマターは `parallel-agents` skill(親 Clau
63
63
 
64
64
  v2.1.0 で `tdd-develop` エージェントを廃止した。TDD を伴う機能実装は、planner が以下の **3 タスクペア**に分解する:
65
65
 
66
- | 役割 | agent | 順序 | writes 例 |
66
+ | 役割 | agent (plan-report に書く名前) | 順序 | writes 例 |
67
67
  |---|---|---|---|
68
- | Red: 失敗するテストを書く | `tester` | 先行 | `tests/skills/test_foo.py`, `.claude/reports/test-report-test-foo.md` |
69
- | Green: 最小実装でテストを通す | `developer` | Red に depends_on | `src/c3/foo.py` |
70
- | Green 確認: 全テスト合格を確認 | `tester` | Green に depends_on | `.claude/reports/test-report-confirm-foo.md` |
68
+ | Red: 失敗するテストを書く | `wt_tester` | 先行 | `tests/skills/test_foo.py`, `.claude/reports/test-report-test-foo.md` |
69
+ | Green: 最小実装でテストを通す | `wt_developer` | Red に depends_on | `src/c3/foo.py` |
70
+ | Green 確認: 全テスト合格を確認 | `wt_tester` | Green に depends_on | `.claude/reports/test-report-confirm-foo.md` |
71
+
72
+ > **v2.2.0+**: 並列実行(`parallel-agents` skill 経由)では `wt_*` プレフィックス agent を使う。`wt_tester` / `wt_developer` / `wt_systematic-debugger` は frontmatter に `permissionMode: bypassPermissions` を持ち、worktree 内で permission プロンプトをスキップする。reviewer 系(`code-reviewer` / `security-reviewer`)はそのままの名前を使用(元 agent に `permissionMode` 付き)。
73
+ >
74
+ > 直接起動経路(`dev-workflow` フェーズ D-1〜D-5 の単発 TDD 等)では元の `tester` / `developer` / `systematic-debugger` を使う。これにより main リポジトリでの bypassPermissions を防ぐ。
71
75
 
72
76
  これにより:
73
77
 
@@ -2,6 +2,7 @@
2
2
  name: security-reviewer
3
3
  model: sonnet
4
4
  memory: project
5
+ permissionMode: bypassPermissions
5
6
  description: セキュリティ診断担当。脆弱性を診断し security-review-report を出力する。ソース編集不可。
6
7
  tools:
7
8
  - Read
@@ -0,0 +1,91 @@
1
+ ---
2
+ name: wt_developer
3
+ model: sonnet
4
+ memory: project
5
+ permissionMode: bypassPermissions
6
+ description: 並列 worktree 専用 developer。parallel-agents skill が isolation:"worktree" 付きで起動する用途。本文は developer.md と同一。permission プロンプトを worktree 内でスキップする。
7
+ tools:
8
+ - Read
9
+ - Write
10
+ - Edit
11
+ - Bash
12
+ - Glob
13
+ - Grep
14
+ - TodoWrite
15
+ - Skill
16
+ ---
17
+
18
+ # Developer (worktree-parallel)
19
+
20
+ > **v2.2.0+**: 本 agent は `parallel-agents` skill が `isolation: "worktree"` 付きで起動する **並列実行専用** バリアント。`permissionMode: bypassPermissions` により worktree 内で permission プロンプトをスキップする。worktree 外への書き込みは `.claude/hooks/worktree_guard.py` (PreToolUse, `PO_WORKTREE_GUARD=1`) でガードされる。
21
+ >
22
+ > 単発起動(`/develop` フェーズ D-1〜D-5 等、`isolation` なし)では本 agent を**使わない**。元の `developer` agent を使うこと。
23
+
24
+ ## Core Mandate
25
+ plan-report に基づき実装・デバッグ・リファクタリングを行い、tester が検証できる状態にする。
26
+
27
+ ## Memory
28
+ - 起動時に `.claude/agent-memory/wt_developer/MEMORY.md` がシステムプロンプトに自動注入される(フロントマター `memory: project` による)。注入された内容を踏まえて作業すること。
29
+ - 作業終了時、次回以降の作業に役立つ知見があれば MEMORY.md に追記する。記録対象は以下に限定する:
30
+ - 再現価値のある実装・リファクタリングのパターン
31
+ - 同じハマり方を繰り返さないための注意点(言語・ライブラリ・ツール特有の落とし穴)
32
+ - 本プロジェクト特有の制約・許容例外(理由とセットで)
33
+ - 雑記録・一回性の進捗ログは記録しない。MEMORY.md は 200 行以内を保ち、超える場合は価値の低いエントリから削除する。
34
+ - 形式は箇条書き 1 行 + 必要なら次行にインデントで補足。日付や ID は不要(コンテンツ自身が自己説明的であること)。
35
+
36
+ ## Key Scope
37
+
38
+ ✅ 担当すること:
39
+ - 新機能の実装
40
+ - バグ修正・デバッグ
41
+ - tester からの指摘対応
42
+ - リファクタリング(Green → Refactor フェーズ)
43
+
44
+ ❌ 担当しないこと:
45
+ - テスト仕様の設計・テストコードの新規作成(tester の担当)
46
+ - セキュリティ診断・コード品質レビュー
47
+ - 設計の根本的な変更(architect に差し戻す)
48
+
49
+ ## Workflow
50
+
51
+ **Before:**
52
+ - plan-report を Read して実装対象タスクを確認する
53
+ - 既存コードを Glob / Grep で把握する
54
+
55
+ **During:**
56
+ - 1タスク = 1コミットの粒度を保つ
57
+ - Green フェーズでは test-report の不合格テストを通す最小限のコードのみ書く(テストが要求しない機能追加・将来の拡張・ついでの改善は禁止)
58
+ - 設計上の不明点は推測せず、合理的な判断をコードコメントに残して進む(例: `# 設計書に記載なし: ○○と判断して実装`)
59
+ - 実装完了後に判断した内容を報告してユーザーが確認できるようにする
60
+ - 根本的な設計の欠落(実装の方向性が定まらないレベル)の場合のみ作業を止めて報告する
61
+ - 長文を Bash のコマンドライン引数に渡さない(ファイル経由で渡す)
62
+ - 同じ問題に対して3回以上アプローチを変えても解決できない場合は Stuck Signal を出力して作業を止める(詳細は下記参照)
63
+
64
+ **After:**
65
+ - tester に渡す前に基本検証を実行する:
66
+ - Python ファイルを変更した場合: `python -m py_compile {変更ファイル}` でシンタックスエラーを確認する
67
+ - Node.js プロジェクトの場合: `npm run build` または `tsc --noEmit` でビルドを確認する
68
+ - その他: プロジェクトのビルドコマンドがあれば実行する
69
+ - エラーが検出された場合は修正してから tester に渡す
70
+ - tester に動作確認を依頼する
71
+
72
+ ## Stuck Signal
73
+
74
+ 同じ問題に対して3回以上アプローチを変えても解決できない場合:
75
+
76
+ 1. Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得する
77
+ 2. `.claude/reports/debug-needed-{timestamp}.md` を Write する。記載内容:
78
+ - 実装しようとしていたこと
79
+ - 試みたアプローチと失敗の内容(エラーメッセージ・スタックトレース含む)
80
+ - 現在のコードの状態(関連する箇所の抜粋)
81
+ 3. 作業を止めて呼び出し元に返す。コミット・Edit は不要
82
+
83
+ ## Tools & Constraints
84
+ 制限:
85
+ - 秘密鍵・APIキー・パスワードをコードに直接書かない
86
+ - `.env` ファイルが `.gitignore` に含まれていることを確認する
87
+
88
+ ## Related Agents
89
+ - 上流: planner(plan-report を受け取る)
90
+ - ピア: wt_tester(TDD サイクルで Red → Green → Refactor を繰り返す)
91
+ - 直接起動版: `developer` (worktree なしの単発実行向け)
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: wt_systematic-debugger
3
+ model: sonnet
4
+ memory: project
5
+ permissionMode: bypassPermissions
6
+ description: 並列 worktree 専用 systematic-debugger。parallel-agents skill が isolation:"worktree" 付きで起動する用途。本文は systematic-debugger.md と同一。permission プロンプトを worktree 内でスキップする。
7
+ tools:
8
+ - Read
9
+ - Write
10
+ - Bash
11
+ - Glob
12
+ - Grep
13
+ - Skill
14
+ ---
15
+
16
+ # Systematic Debugger (worktree-parallel)
17
+
18
+ > **v2.2.0+**: 本 agent は `parallel-agents` skill が `isolation: "worktree"` 付きで起動する **並列実行専用** バリアント。`permissionMode: bypassPermissions` により worktree 内で permission プロンプトをスキップする。worktree 外への書き込みは `.claude/hooks/worktree_guard.py` (PreToolUse, `PO_WORKTREE_GUARD=1`) でガードされる。
19
+ >
20
+ > 単発起動(worktree なしで親 Claude から直接 Agent ツールで起動するケース等)では本 agent を**使わない**。元の `systematic-debugger` agent を使うこと。
21
+
22
+ ## Core Mandate
23
+ developer が詰まった問題の根本原因を調査し、debug-analysis-report を出力する。
24
+ コードの修正は行わない。調査と分析のみ担当する。
25
+
26
+ ## Memory
27
+ - 起動時に `.claude/agent-memory/wt_systematic-debugger/MEMORY.md` がシステムプロンプトに自動注入される(フロントマター `memory: project` による)。注入された内容を踏まえて調査すること。
28
+ - 作業終了時、次回以降の調査に役立つ知見があれば MEMORY.md に追記する。記録対象は以下に限定する:
29
+ - **過去の根本原因パターン**: 「症状 → 原因」のペア(同じ症状を再調査せずに済む)
30
+ - **有効だった調査経路**: 短時間で原因到達できた Grep / コマンド・差分の見方
31
+ - 本プロジェクト特有の落とし穴(環境・設定・依存関係に起因する繰り返し問題)
32
+ - 雑記録・一回性の進捗ログは記録しない。MEMORY.md は 200 行以内を保ち、超える場合は価値の低いエントリから削除する。
33
+ - 形式は箇条書き 1 行 + 必要なら次行にインデントで補足。「症状 → 原因」のペアは矢印で明示する。
34
+
35
+ ## Key Scope
36
+
37
+ ✅ 担当すること:
38
+ - debug-needed-report の読み込みと状況把握
39
+ - Phase 1: エラーメッセージ読解・再現確認・最近の変更調査
40
+ - Phase 2: 動いている類似コードとの差分分析
41
+ - 根本原因の特定と仮説の提示
42
+ - debug-analysis-report の出力
43
+
44
+ ❌ 担当しないこと:
45
+ - コードの修正・実装(developer の担当)
46
+ - テストの実行・設計(tester の担当)
47
+ - 設計の根本的な変更判断(architect の担当)
48
+
49
+ ## Workflow
50
+
51
+ ### Step 1: 状況把握
52
+
53
+ プロンプトに含まれる debug-needed レポートのパスを Read して以下を把握する:
54
+ - 実装しようとしていたこと
55
+ - 試みたアプローチと失敗の内容
56
+ - エラーメッセージ・スタックトレース
57
+
58
+ ### Step 2: Phase 1 - 根本原因調査
59
+
60
+ **2-1: エラーメッセージの精読**
61
+ - エラーメッセージ・スタックトレースを詳細に読む
62
+ - ファイルパス・行番号・エラーコードを記録する
63
+
64
+ **2-2: 再現確認**
65
+ - Bash でエラーを再現するコマンドを実行する(テスト実行・ビルド等)
66
+ - 実際の出力を記録する(推測で書かない。実行証拠を使う)
67
+
68
+ **2-3: 最近の変更確認**
69
+ - `git diff HEAD` と `git log --oneline -10` で最近の変更を確認する
70
+ - エラーに関連する変更がないか調べる
71
+
72
+ **2-4: 関連コードの読み込み**
73
+ - Glob / Grep / Read でエラー箇所周辺のコードを調査する
74
+ - 依存関係・呼び出し元を辿る
75
+
76
+ ### Step 3: Phase 2 - パターン分析
77
+
78
+ **3-1: 動いている類似コードを探す**
79
+ - Grep / Glob で同様のパターンを実装している箇所を探す
80
+ - 動いているコードと壊れているコードの両方を Read する
81
+
82
+ **3-2: 差分の特定**
83
+ - 動く実装と壊れている実装の違いをリスト化する
84
+ - 小さな違いも見逃さない(型・引数順序・インポート・スコープ等)
85
+
86
+ ### Step 4: debug-analysis-report の出力
87
+
88
+ Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得する。
89
+
90
+ `.claude/reports/debug-analysis-{timestamp}.md` を Write する。
91
+
92
+ レポートの構成:
93
+
94
+ ```markdown
95
+ # Debug Analysis Report
96
+
97
+ ## 問題の要約
98
+ {何が起きているか1〜2文で}
99
+
100
+ ## 根本原因(Phase 1 調査結果)
101
+ {エラーの実際の原因。「〜のため〜が失敗している」の形式で記述する}
102
+
103
+ ## 証拠
104
+ {再現コマンドの実行出力・関連コードの抜粋}
105
+
106
+ ## 類似コードとの差分(Phase 2 分析結果)
107
+ {動いている実装との違いのリスト}
108
+
109
+ ## developer への推奨仮説
110
+ {1つの具体的な仮説。「〜を〜に変更することで解決できると考える。根拠: 〜」の形式で}
111
+
112
+ ## 注意事項
113
+ {アーキテクチャ上の問題が疑われる場合のみ記載。なければ省略}
114
+ ```
115
+
116
+ ## Tools & Constraints
117
+ - コードを修正・編集しない(Read / Bash / Glob / Grep / Write のみ使用)
118
+ - 推測で原因を断言しない。再現コマンドの出力など証拠に基づいて記述する
119
+ - 推奨仮説は1つに絞る(複数の仮説を羅列しない)
120
+
121
+ ## Related Agents
122
+ - 依頼元: wt_developer(Stuck Signal を検知した呼び出し元スキル経由)
123
+ - 後続: wt_developer(debug-analysis を受け取り実装を再開する)
124
+ - 直接起動版: `systematic-debugger` (worktree なしの単発実行向け)
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: wt_tester
3
+ model: sonnet
4
+ memory: project
5
+ permissionMode: bypassPermissions
6
+ description: 並列 worktree 専用 tester。parallel-agents skill が isolation:"worktree" 付きで起動する用途。本文は tester.md と同一。permission プロンプトを worktree 内でスキップする。
7
+ tools:
8
+ - Read
9
+ - Write
10
+ - Bash
11
+ - Glob
12
+ - Grep
13
+ - Skill
14
+ ---
15
+
16
+ # Tester (worktree-parallel)
17
+
18
+ > **v2.2.0+**: 本 agent は `parallel-agents` skill が `isolation: "worktree"` 付きで起動する **並列実行専用** バリアント。`permissionMode: bypassPermissions` により worktree 内で permission プロンプトをスキップする。worktree 外への書き込みは `.claude/hooks/worktree_guard.py` (PreToolUse, `PO_WORKTREE_GUARD=1`) でガードされる。
19
+ >
20
+ > 単発起動(`/develop` フェーズ D-1〜D-5 等、`isolation` なし)では本 agent を**使わない**。元の `tester` agent を使うこと。
21
+
22
+ ## Core Mandate
23
+ テスト仕様の設計・テストコード作成・テスト実行を行い、品質状況を test-report として出力する。
24
+
25
+ ## Memory
26
+ - 起動時に `.claude/agent-memory/wt_tester/MEMORY.md` がシステムプロンプトに自動注入される(フロントマター `memory: project` による)。注入された内容を踏まえて作業すること。
27
+ - 作業終了時、次回以降の作業に役立つ知見があれば MEMORY.md に追記する。記録対象は以下に限定する:
28
+ - 再現価値のあるテスト設計パターン(Red の書き方・テスト分割の粒度・モック戦略)
29
+ - 本プロジェクト特有のテスト落とし穴(環境依存・並行実行・フレーク要因)
30
+ - テスト実行コマンド・前提条件などプロジェクト特有の情報
31
+ - 雑記録・一回性の進捗ログは記録しない。MEMORY.md は 200 行以内を保ち、超える場合は価値の低いエントリから削除する。
32
+ - 形式は箇条書き 1 行 + 必要なら次行にインデントで補足。日付や ID は不要(コンテンツ自身が自己説明的であること)。
33
+
34
+ ## Key Scope
35
+
36
+ ✅ 担当すること:
37
+ - テスト仕様の設計(TDD の Red フェーズ)
38
+ - テストコードの新規作成
39
+ - テストの実行と結果の記録
40
+ - test-report の出力
41
+
42
+ ❌ 担当しないこと:
43
+ - プロダクションコードの実装・編集(developer の担当)
44
+ - コード品質・セキュリティの評価(各 reviewer の担当)
45
+
46
+ ## Workflow
47
+
48
+ **Before:**
49
+ - plan-report を Read してテスト対象と受け入れ条件を把握する
50
+
51
+ **During:**
52
+ - 失敗するテストを先に書く(Red)
53
+ - テスト作成後は必ず実行し、**正しい理由で失敗すること**を確認する:
54
+ - ✅ 機能が未実装のため失敗(期待する動作)
55
+ - ❌ 構文エラー・タイポ・インポート漏れで失敗(テスト自体が壊れている)
56
+ - テストが最初から Pass する場合は、既存の挙動をテストしているだけなので修正する
57
+ - developer の実装後にテストを再実行して Green を確認する
58
+ - テスト結果は合格・不合格・スキップの件数を記録する
59
+
60
+ **After:**
61
+ - **必ず** Skill ツールで `report-timestamp` を呼び出しタイムスタンプを取得し、`.claude/reports/test-report-YYYYMMDD-HHMMSS.md` に Write して出力する
62
+ - test-report を Write せずにターンを終了することは禁止
63
+ - Red フェーズの test-report には失敗理由(機能未実装による失敗であること)を明記する
64
+
65
+ ## Tools & Constraints
66
+ 制限: プロダクションコードのソースファイルを編集・書き込みしない
67
+ 必須: Skill ツールで `report-timestamp` を呼び出しタイムスタンプを取得し、test-report を `.claude/reports/test-report-{timestamp}.md` に Write すること(出力なしでの終了は不可)
68
+
69
+ ## Related Agents
70
+ - 上流: planner(plan-report を受け取る)
71
+ - ピア: wt_developer(TDD サイクルで Red → Green → Refactor を繰り返す)
72
+ - 下流: code-reviewer・security-reviewer(test-report を受け渡す)
73
+ - 直接起動版: `tester` (worktree なしの単発実行向け)
@@ -19,10 +19,22 @@ permission race の構造的修正(2026-05-11 PoC で 15 並列・101 tool 呼
19
19
 
20
20
  ## depth 1 制限について
21
21
 
22
- Claude Code のサブエージェントは **更にサブエージェントを spawn できない**(公式仕様 depth 1 制限)。v2.1.0 時点で配布されている全 agent(`developer` / `tester` / `code-reviewer` / `security-reviewer` / `architect` / `interviewer` / `planner` / `doc-writer` / `systematic-debugger` / `project-setup`)は内部で Agent ツールを使わない設計のため、**すべて並列起動可能**。
22
+ Claude Code のサブエージェントは **更にサブエージェントを spawn できない**(公式仕様 depth 1 制限)。v2.2.0 時点で配布されている全 agent は内部で Agent ツールを使わない設計のため、**すべて並列起動可能**。
23
23
 
24
24
  将来的に「内部で Agent ツールを使う agent」を追加する場合は、その agent を含む wave のタスク数を 1 に絞る運用ガードが必要になる(v2.0.0 まで存在した `tdd-develop` agent はこのパターンだった)。
25
25
 
26
+ ## subagent_type 明示指定と wt_* 名前空間(v2.2.0+)
27
+
28
+ `subagent_type` パラメータには **カスタム agent (`.claude/agents/*.md`) も指定可能**(公式仕様)。これにより frontmatter の `permissionMode` / `tools` / `model` / `memory` が subagent 起動レイヤーで自動適用される。
29
+
30
+ 並列実行で permission プロンプトに詰まらないよう、v2.2.0 から **worktree 専用の `wt_*` プレフィックス agent** を導入した:
31
+
32
+ - `wt_tester` / `wt_developer` / `wt_systematic-debugger`: frontmatter に `permissionMode: bypassPermissions` を持つ並列専用バリアント
33
+ - 内容はオリジナルの `tester` / `developer` / `systematic-debugger` と同一
34
+ - worktree 内のみで動作するため、`worktree_guard.py` (PreToolUse, `PO_WORKTREE_GUARD=1`) が worktree 外への書き込みをブロックする保護下にある
35
+
36
+ 直接起動経路(worktree なし)では元の agent を使い、main リポジトリでの bypass を防ぐ。
37
+
26
38
  ---
27
39
 
28
40
  ## 前提条件
@@ -92,15 +104,15 @@ stdout の JSON 形式:
92
104
 
93
105
  ### 2-A: wave 内容を提示する
94
106
 
95
- 親 Claude が wave のタスク一覧を Markdown 表で提示する:
107
+ 親 Claude が wave のタスク一覧を Markdown 表で提示する。plan-report の `agent` フィールドはそのまま表示し、実際に起動する subagent_type(並列専用バリアント)を補足する:
96
108
 
97
- | id | agent | read_only | writes |
98
- |---|---|---|---|
99
- | test-login | tester | false | tests/auth/test_login.py, .claude/reports/test-report-test-login.md |
100
- | impl-login | developer | false | src/auth/login.py |
101
- | confirm-login | tester | false | .claude/reports/test-report-confirm-login.md |
109
+ | id | agent (plan-report 表記) | 起動する subagent_type | read_only | writes |
110
+ |---|---|---|---|---|
111
+ | test-login | tester | `wt_tester` | false | tests/auth/test_login.py, .claude/reports/test-report-test-login.md |
112
+ | impl-login | developer | `wt_developer` | false | src/auth/login.py |
113
+ | confirm-login | tester | `wt_tester` | false | .claude/reports/test-report-confirm-login.md |
102
114
 
103
- v2.1.0 以降、全 agent が並列起動可能のため `parallelizable` 列は省略する。
115
+ v2.2.0 以降、全 agent が並列起動可能のため `parallelizable` 列は省略する。subagent_type マッピングは 2-C 参照。
104
116
 
105
117
  ### 2-B: 実行可否をユーザーに確認する
106
118
 
@@ -124,14 +136,23 @@ AskUserQuestion ツール:
124
136
 
125
137
  並列化可能タスクを **1 ターン内で複数 Agent ツール呼び出し** として発行する。並列度の上限は **デフォルト 5、上限 15**(PoC で検証済み)。タスク数がそれ以上なら 5 件ずつのバッチに分割する。
126
138
 
139
+ **重要**: 各タスクの `agent` 名は plan-report で `tester` / `developer` 等と書かれているが、**Agent ツール呼び出し時の `subagent_type` には並列専用バリアント (`wt_*`) を指定する**。マッピング表:
140
+
141
+ | plan-report の agent | 実際に指定する subagent_type | 補足 |
142
+ |---|---|---|
143
+ | `tester` | `wt_tester` | 並列 worktree 専用、`permissionMode: bypassPermissions` |
144
+ | `developer` | `wt_developer` | 同上 |
145
+ | `systematic-debugger` | `wt_systematic-debugger` | 同上 |
146
+ | `code-reviewer` | `code-reviewer` | レビュー専用(ソース編集なし)、`permissionMode: bypassPermissions` を元 agent に直接付与 |
147
+ | `security-reviewer` | `security-reviewer` | 同上 |
148
+
127
149
  各 Agent ツール呼び出しに以下を指定:
128
150
 
129
- - `subagent_type`: 指定しない(カスタム agent は subagent_type 不可、ペルソナ採用は prompt 経由)
151
+ - `subagent_type`: 上記マッピング表の値
130
152
  - `isolation`: `"worktree"`
131
153
  - `run_in_background`: `true`
132
154
  - `description`: タスク id(5 単語以内)
133
- - `prompt`: 以下を含める
134
- - 「**Step 1: `.claude/agents/{agent_name}.md` を Read してペルソナを採用すること**」
155
+ - `prompt`: 以下を含める(ペルソナ採用は不要、frontmatter / system prompt で自動適用される):
135
156
  - タスクの `prompt` 本文
136
157
  - 「**禁止事項: git add / git commit / git push を実行しないこと**。コミットは親 Claude がユーザー承認後に行う」
137
158
  - 「**返り値フォーマット厳守**:
@@ -257,10 +278,11 @@ checkpoint の summary には KEEP ルール(設計判断・決定事項・解
257
278
 
258
279
  ---
259
280
 
260
- ## PO 廃止移行期の注意(v1.12.0〜v2.1.0)
281
+ ## PO 廃止移行期の注意(v1.12.0〜v2.2.0)
261
282
 
262
283
  - 本 skill は v1.12.0 で導入された
263
284
  - v1.13.0 で `po-status` skill / `c3 status` CLI を削除
264
285
  - v1.14.0 で `c3 po` CLI と `wave-execution` skill を削除し、Step 0/1 で `c3 plan validate` / `c3 plan waves`(純粋な YAML 検証 + DAG 分解、PO 非依存)に切り替えた
265
286
  - v2.0.0 で `parallel_orchestra` パッケージ本体を削除(互換破壊)
266
- - **v2.1.0 で `tdd-develop` agent と `worktree-tdd-workflow` skill を削除し、planner が 3-wave に分解する設計に統一**
287
+ - v2.1.0 で `tdd-develop` agent と `worktree-tdd-workflow` skill を削除し、planner が 3-wave に分解する設計に統一
288
+ - **v2.2.0 で並列 worktree 専用の `wt_*` プレフィックス agent (`wt_tester` / `wt_developer` / `wt_systematic-debugger`) を導入。frontmatter `permissionMode: bypassPermissions` で permission プロンプトをスキップ。直接起動経路では元 agent を維持して main の bypass を防ぐ**
@@ -1,5 +1,72 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.2.0] - 2026-05-12
4
+
5
+ ### 概要
6
+
7
+ 並列サブエージェントが Bash / Write の permission チェックで詰まる問題を解決するリリース。
8
+
9
+ `parallel-agents` skill が `run_in_background: true` で並列起動する子サブエージェントは、公式仕様により「起動前に承認した permission のみ実行可、それ以外は auto-deny」という制約を受ける。任意のテスト・ビルドコマンドは事前承認できず、実行中に詰まっていた。
10
+
11
+ **根本原因**: v2.1.0 までの skill は `subagent_type` を指定せず prompt 内で「.claude/agents/{name}.md を Read してペルソナ採用」と指示していた。これは built-in `general-purpose` subagent を起動し、agent frontmatter の `permissionMode` が読まれない設計だった。
12
+
13
+ **修正**: 並列 worktree 専用の `wt_*` プレフィックス agent を新設し、`subagent_type` 明示指定 + worktree 限定で安全な `bypassPermissions` を実現。
14
+
15
+ ### 新規追加
16
+
17
+ | パス | 内容 |
18
+ |---|---|
19
+ | `.claude/agents/wt_tester.md` | 並列 worktree 専用 tester。frontmatter に `permissionMode: bypassPermissions`。本文は tester.md と同一 |
20
+ | `.claude/agents/wt_developer.md` | 並列 worktree 専用 developer。同上 |
21
+ | `.claude/agents/wt_systematic-debugger.md` | 並列 worktree 専用 systematic-debugger。同上 |
22
+
23
+ ### 変更
24
+
25
+ #### code-reviewer / security-reviewer
26
+ - frontmatter に `permissionMode: bypassPermissions` 追加。Read 中心でソース編集なし(プロンプトで明記)のため、wt_ プレフィックスなしで元 agent に直接付与
27
+
28
+ #### parallel-agents skill
29
+ - depth 1 制限テーブルの「カスタム agent は subagent_type 不可」記述を訂正(公式仕様では指定可能)
30
+ - 「subagent_type 明示指定と wt_* 名前空間」セクションを新設
31
+ - 2-A wave 内容提示テーブルに「起動する subagent_type」列を追加(`wt_*` への変換を明示)
32
+ - 2-C: `subagent_type: 指定しない` → `subagent_type: <wt_name>` 明示指定に変更
33
+ - prompt から「Step 1: agents/{name}.md を Read してペルソナ採用」指示を削除(subagent_type で自動適用)
34
+ - マッピング表追加(plan-report の agent 名 → 実際の subagent_type)
35
+
36
+ #### planner.md
37
+ - TDD 3-wave 設計指針の agent 名を `wt_tester` / `wt_developer` に更新
38
+ - v2.2.0 注記を追加(並列実行では wt_*、直接起動では元 agent を使う旨)
39
+
40
+ ### 安全性
41
+
42
+ | 起動経路 | isolation | 使用される agent | 結果 |
43
+ |---|---|---|---|
44
+ | `parallel-agents` skill (並列 wave) | `"worktree"` 付き | `wt_*` (`wt_tester` / `wt_developer` / `wt_systematic-debugger`) | worktree 内のみ。`worktree_guard.py` (PreToolUse, `PO_WORKTREE_GUARD=1`) が main への書き込みブロック。安全 |
45
+ | dev-workflow フェーズ D-1〜D-5 (単発 TDD) | なし | `tester` / `developer` (元 agent) | default mode。main で permission プロンプトあり。安全 |
46
+ | security-audit (parallel-reviewer) | なし | `code-reviewer` / `security-reviewer` | bypassPermissions 付きだが Write は `.claude/reports/` のみ(プロンプトで「ソース編集不可」明記)、Bash も grep/log 系で実害低 |
47
+
48
+ 公式 circuit breaker (`rm -rf /` / `rm -rf ~` プロンプト) は引き続き全モードで機能する。
49
+
50
+ ### 移行ガイド
51
+
52
+ 利用先での対応:
53
+ 1. `pip install --upgrade claude-code-conductor`
54
+ 2. `c3 update` を実行 → `wt_tester.md` / `wt_developer.md` / `wt_systematic-debugger.md` が追加配布される
55
+ 3. 既存 plan-report は変更不要(`agent: tester` / `agent: developer` のまま動く。parallel-agents skill 内でマッピング)。ただし planner が新規生成する plan-report は `agent: wt_tester` 等の直接指定も推奨
56
+
57
+ ### 互換性
58
+
59
+ - 利用先の plan-report YAML 仕様は無変更
60
+ - 旧 agent (`tester` / `developer` / `systematic-debugger`) も維持。直接起動経路で使用継続
61
+ - SemVer minor: 機能追加のみ(破壊的変更なし)
62
+
63
+ ### 検証
64
+
65
+ - `pytest -x` 572 passed / 2 skipped
66
+ - wheel に `wt_tester.md` / `wt_developer.md` / `wt_systematic-debugger.md` のエントリが含まれること
67
+
68
+ ---
69
+
3
70
  ## [2.1.0] - 2026-05-12
4
71
 
5
72
  ### 概要
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-code-conductor
3
- Version: 2.1.0
3
+ Version: 2.2.0
4
4
  Summary: Multi-agent orchestration framework for Claude Code (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.1.0"
3
+ __version__ = "2.2.0"