claude-code-conductor 0.6.3__tar.gz → 0.7.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 (126) hide show
  1. claude_code_conductor-0.7.0/.claude/CLAUDE.md +57 -0
  2. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/architect.md +1 -1
  3. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/code-reviewer.md +1 -1
  4. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/doc-writer.md +1 -1
  5. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/interviewer.md +1 -1
  6. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/planner.md +1 -1
  7. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/project-setup.md +18 -0
  8. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/security-reviewer.md +1 -1
  9. claude_code_conductor-0.7.0/.claude/docs/settings.json.md +492 -0
  10. claude_code_conductor-0.7.0/.claude/hooks/permission_handler.py +154 -0
  11. claude_code_conductor-0.7.0/.claude/hooks/restore_session.py +75 -0
  12. claude_code_conductor-0.7.0/.claude/permission_rules.json +14 -0
  13. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/settings.json +26 -0
  14. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/code-review/SKILL.md +1 -1
  15. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/dev-workflow/SKILL.md +3 -3
  16. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/develop/SKILL.md +1 -1
  17. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/setup/SKILL.md +4 -0
  18. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/start/SKILL.md +1 -1
  19. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/wave-execution/SKILL.md +2 -2
  20. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.gitignore +3 -0
  21. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/CHANGELOG.md +9 -0
  22. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/PKG-INFO +9 -5
  23. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/README.md +8 -4
  24. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/__init__.py +1 -1
  25. claude_code_conductor-0.6.3/.claude/CLAUDE.md +0 -209
  26. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/developer.md +0 -0
  27. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/systematic-debugger.md +0 -0
  28. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/tdd-develop.md +0 -0
  29. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/agents/tester.md +0 -0
  30. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/docs/parallel-orchestra-manifest.md +0 -0
  31. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/hooks/clear_file_history.py +0 -0
  32. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/hooks/enable_sandbox.py +0 -0
  33. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/hooks/pre_compact.py +0 -0
  34. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/hooks/pre_tool.py +0 -0
  35. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/hooks/session_utils.py +0 -0
  36. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/hooks/statusline.py +0 -0
  37. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/hooks/stop.py +0 -0
  38. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/hooks/validate_skill_change.py +0 -0
  39. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/hooks/worktree_guard.py +0 -0
  40. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/memory/.gitkeep +0 -0
  41. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/rules/code-review-checklist.md +0 -0
  42. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/rules/promoted/index.md +0 -0
  43. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/rules/security-review-checklist.md +0 -0
  44. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/settings.local.json +0 -0
  45. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/doc/SKILL.md +0 -0
  46. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/extract-lib/SKILL.md +0 -0
  47. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/init-session/SKILL.md +0 -0
  48. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/mcp-config/SKILL.md +0 -0
  49. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/pattern-status/SKILL.md +0 -0
  50. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
  51. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
  52. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
  53. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/.claude/skills/worktree-tdd-workflow/SKILL.md +0 -0
  54. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/LICENSE +0 -0
  55. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/hatch_build.py +0 -0
  56. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/pyproject.toml +0 -0
  57. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/__main__.py +0 -0
  58. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/_excludes.py +0 -0
  59. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/cli.py +0 -0
  60. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/cli_doctor.py +0 -0
  61. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/cli_init.py +0 -0
  62. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/cli_list.py +0 -0
  63. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/cli_po.py +0 -0
  64. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/cli_update.py +0 -0
  65. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/paths.py +0 -0
  66. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/po/__init__.py +0 -0
  67. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/po/manifest.py +0 -0
  68. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/c3/po/run.py +0 -0
  69. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/parallel_orchestra/__init__.py +0 -0
  70. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/parallel_orchestra/_exceptions.py +0 -0
  71. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/parallel_orchestra/cli.py +0 -0
  72. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/parallel_orchestra/manifest.py +0 -0
  73. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/parallel_orchestra/report.py +0 -0
  74. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/src/parallel_orchestra/runner.py +0 -0
  75. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/__init__.py +0 -0
  76. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/conftest.py +0 -0
  77. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/hooks/__init__.py +0 -0
  78. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/hooks/test_clear_file_history.py +0 -0
  79. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/hooks/test_enable_sandbox.py +0 -0
  80. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/hooks/test_session_utils.py +0 -0
  81. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/hooks/test_statusline.py +0 -0
  82. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/hooks/test_statusline_template_sync.py +0 -0
  83. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/__init__.py +0 -0
  84. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/conftest.py +0 -0
  85. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_cli.py +0 -0
  86. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_manifest.py +0 -0
  87. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_report.py +0 -0
  88. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_retry_backoff.py +0 -0
  89. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_review_fixes.py +0 -0
  90. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_review_fixes2.py +0 -0
  91. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_review_fixes3.py +0 -0
  92. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_review_fixes4.py +0 -0
  93. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_review_fixes5.py +0 -0
  94. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_runner_t7.py +0 -0
  95. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_runner_v04_fix.py +0 -0
  96. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_runner_v04_m1.py +0 -0
  97. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/parallel_orchestra/test_runner_v04_m2.py +0 -0
  98. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_clear_file_history.py +0 -0
  99. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_cli_init.py +0 -0
  100. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_cli_list.py +0 -0
  101. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_cli_po.py +0 -0
  102. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_cli_po_tempfile.py +0 -0
  103. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_docstring_consistency.py +0 -0
  104. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_enable_sandbox.py +0 -0
  105. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_excludes.py +0 -0
  106. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_manifest_fixes.py +0 -0
  107. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_manifest_yaml_escape.py +0 -0
  108. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_paths.py +0 -0
  109. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_po_manifest.py +0 -0
  110. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_po_run.py +0 -0
  111. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_po_waves.py +0 -0
  112. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_pre_compact.py +0 -0
  113. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_pre_tool_hook.py +0 -0
  114. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_precompact_additional.py +0 -0
  115. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_precompact_toctou_fixes.py +0 -0
  116. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_session_utils_additional.py +0 -0
  117. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_statusline.py +0 -0
  118. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_stop_additional.py +0 -0
  119. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_stop_hook.py +0 -0
  120. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_stop_precompact_fixes.py +0 -0
  121. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_sync_template_clear_file_history.py +0 -0
  122. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_sync_template_stop.py +0 -0
  123. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_sync_validate_skill.py +0 -0
  124. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_template_pre_tool_hook.py +0 -0
  125. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_validate_skill_change.py +0 -0
  126. {claude_code_conductor-0.6.3 → claude_code_conductor-0.7.0}/tests/test_worktree_guard.py +0 -0
@@ -0,0 +1,57 @@
1
+ # Claude Code Conductor (C3)
2
+
3
+ 複数エージェントのオーケストレーションを中心に据えた Claude Code フレームワーク。
4
+
5
+ ## Language
6
+
7
+ ユーザーとの応答は日本語で行うこと。コード・コマンド・ファイルパスは除く。
8
+
9
+ ## Communication Style
10
+
11
+ - 冒頭の褒め言葉・社交辞令は入れない
12
+ - 推測で話さない。事実・根拠のある内容のみ答える
13
+ - 不確かな場合は「確認が必要です」と明示する
14
+ - ルールを変更・省略する方が合理的だと判断した場合は、実行前にユーザーに確認する
15
+
16
+ ## User Interaction Rules
17
+
18
+ - 長い出力・実装・設計を始める前に、1〜3行で計画を提示してユーザーの確認を取る
19
+ - 質問は1回に1つ。複数の質問を一度に投げない
20
+ - 選択肢を提示してユーザーが選びやすい形にする(AskUserQuestion を使う)
21
+ - 推測で進めない。不明点は確認してから動く
22
+ - 各エージェントの出力後は Approval Flow に従って承認を求める。承認なしに次フェーズへ進まない
23
+
24
+ ## Approval Flow
25
+
26
+ エージェントの出力後は AskUserQuestion で以下の3択を提示する:
27
+ - 承認 → 次のフェーズへ進む
28
+ - 否認・修正を依頼する → フィードバックを追加入力させてエージェントを再起動する
29
+ - 否認・自分で修正する → ユーザーの合図を待ってから再開する
30
+
31
+ コンテキストに応じて選択肢を追加してよい。
32
+
33
+ ## Compact Instructions
34
+
35
+ ### KEEP(保持する)
36
+ - 設計判断・トレードオフの記録
37
+ - 確定した仕様・命名規則などの決定事項
38
+ - 修正に苦労したバグの原因と恒久的な対策
39
+ - 現在のタスクと次のステップ
40
+
41
+ ### DISCARD(捨てる)
42
+ - 雑談・社交辞令
43
+ - 解決済みのエラーログ・デバッグ出力
44
+ - git 管理済みのコードの重複コピー
45
+ - 完了済みの古いタスク記録
46
+
47
+ ## Directory Structure
48
+
49
+ `.claude/docs/` は人間向けリファレンスのためエージェントは読まなくてよい。
50
+ 詳細は `.claude/docs/taxonomy.md` を参照。
51
+
52
+ ---
53
+
54
+ ## C3 Managed
55
+ <!-- このセクションは C3 のコマンドが自動で更新する。手動で編集しないこと。 -->
56
+
57
+ @rules/promoted/index.md
@@ -41,7 +41,7 @@ requirements-report を受け取り、システム設計・技術選定・依存
41
41
  - 不明点はユーザーに確認する
42
42
 
43
43
  **After:**
44
- - `.claude/reports/architecture-report-YYYYMMDD-HHMMSS.md` に Write して出力する
44
+ - Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、Write ツールで `.claude/reports/architecture-report-{timestamp}.md` に出力する
45
45
 
46
46
  ## Tools & Constraints
47
47
  制限: ソースファイルの編集・書き込みは行わない
@@ -40,7 +40,7 @@ tools:
40
40
  - 修正必須と推奨の2段階で提示する
41
41
 
42
42
  **After:**
43
- - `.claude/reports/code-review-report-YYYYMMDD-HHMMSS.md` に Write して出力する
43
+ - Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、Write ツールで `.claude/reports/code-review-report-{timestamp}.md` に出力する
44
44
 
45
45
  ## Tools & Constraints
46
46
  制限: ソースファイルの編集・書き込みは行わない
@@ -52,7 +52,7 @@ tools:
52
52
 
53
53
  **After:**
54
54
  - 指定された出力先にドキュメントを Write する:
55
- - レポート: `.claude/reports/doc-{名前}-YYYYMMDD-HHMMSS.md`
55
+ - レポート: Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、Write ツールで `.claude/reports/doc-{名前}-{timestamp}.md` に出力する
56
56
  - 指定パス: 指定されたパスに直接 Write(ディレクトリが存在しない場合は Bash で作成)
57
57
  - 表示のみ: Write せずにコンテキストに出力する
58
58
 
@@ -38,7 +38,7 @@ tools:
38
38
  - 「なぜそれが必要か」まで確認する
39
39
 
40
40
  **After:**
41
- - `.claude/reports/requirements-report-YYYYMMDD-HHMMSS.md` に Write して出力する
41
+ - Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、Write ツールで `.claude/reports/requirements-report-{timestamp}.md` に出力する
42
42
 
43
43
  ## Tools & Constraints
44
44
  制限: ソースファイルの編集・書き込みは行わない
@@ -40,7 +40,7 @@ requirements-report・architecture-report・各種レビューレポートを統
40
40
  - タスクは「1タスク = 1コミット」の粒度を意識して分解する
41
41
 
42
42
  **After:**
43
- - `.claude/reports/plan-report-YYYYMMDD-HHMMSS.md` に Write して出力する
43
+ - Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、Write ツールで `.claude/reports/plan-report-{timestamp}.md` に出力する
44
44
  - plan-report の**先頭に YAML フロントマターを必ず付与する**。フォーマットは `.claude/docs/parallel-orchestra-manifest.md` の仕様に従う。最低限以下を出力すること:
45
45
  - `po_plan_version: "0.1"`
46
46
  - `name`(プランの表示名・文字列)
@@ -46,7 +46,25 @@ Glob で `.claude/rules/coding-standards.md` と `.claude/rules/project-conventi
46
46
 
47
47
  **Step 3: `.claude/rules/coding-standards.md` を生成**
48
48
 
49
+ 言語に応じた `paths` を YAML フロントマターに設定し、関係するファイルを編集している時だけこのルールが適用されるようにする。
50
+
51
+ 言語 → 拡張子の対応例(複数言語の場合は全て列挙する):
52
+ - Python → `**/*.py`
53
+ - TypeScript → `**/*.ts`, `**/*.tsx`
54
+ - JavaScript → `**/*.js`, `**/*.jsx`, `**/*.mjs`, `**/*.cjs`
55
+ - TypeScript + JavaScript → 上記すべて
56
+ - Go → `**/*.go`
57
+ - Java → `**/*.java`
58
+ - Kotlin → `**/*.kt`, `**/*.kts`
59
+ - C# → `**/*.cs`
60
+ - Rust → `**/*.rs`
61
+ - Ruby → `**/*.rb`
62
+
49
63
  ```markdown
64
+ ---
65
+ paths:
66
+ - "**/*.{拡張子}"
67
+ ---
50
68
  # Coding Standards: {スタック名}
51
69
  <!-- /agent-project-setup により生成。言語・フレームワークのバージョンアップ時に更新する。-->
52
70
  最終更新: YYYY-MM-DD
@@ -41,7 +41,7 @@ SQLインジェクション・XSS・認証認可・秘密情報漏洩などの
41
41
  - 修正方法の例を提示する
42
42
 
43
43
  **After:**
44
- - `.claude/reports/security-review-report-YYYYMMDD-HHMMSS.md` に Write して出力する
44
+ - Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、Write ツールで `.claude/reports/security-review-report-{timestamp}.md` に出力する
45
45
 
46
46
  ## Tools & Constraints
47
47
  制限: ソースファイルの編集・書き込みは行わない
@@ -0,0 +1,492 @@
1
+ # settings.json リファレンス
2
+
3
+ Claude Code の設定ファイル。プロジェクトルートの `.claude/settings.json` に配置する。
4
+ ユーザーローカルの上書きは `.claude/settings.local.json`(`.gitignore` 推奨)。
5
+
6
+ > 設定の優先順位: `settings.local.json` > `settings.json` > グローバル設定(`~/.claude/settings.json`)
7
+ > ただし `hooks` セクションは `settings.local.json` が `settings.json` を**完全に上書き**する(マージしない)。
8
+
9
+ ---
10
+
11
+ ## `permissions`
12
+
13
+ ツール呼び出しの許可・拒否ルールを定義する。
14
+
15
+ ```json
16
+ {
17
+ "permissions": {
18
+ "allow": [
19
+ "Bash(git status*)",
20
+ "Read(**)",
21
+ "Write(.claude/reports/**)"
22
+ ],
23
+ "deny": [
24
+ "Read(.env)",
25
+ "Read(**/.env)"
26
+ ]
27
+ }
28
+ }
29
+ ```
30
+
31
+ ### パターン書式
32
+
33
+ | 書式 | 説明 |
34
+ |---|---|
35
+ | `ToolName` | 引数なしでツールを許可 |
36
+ | `ToolName(pattern)` | 引数が `pattern` にマッチする場合のみ許可 |
37
+ | `ToolName(domain:example.com)` | WebFetch の場合はドメイン指定も使える |
38
+ | `**` | パス境界を越えるワイルドカード |
39
+ | `*` | パス境界内のワイルドカード(`/` を越えない) |
40
+
41
+ > `promoted-*` のように境界以外に `*` を置くとバリデーションエラーになる。
42
+
43
+ ### 利用できるツール名
44
+
45
+ `Bash` / `Read` / `Write` / `Edit` / `Glob` / `Grep` / `WebFetch` / `WebSearch` / `Agent` / `Skill` / `TodoWrite` / `NotebookEdit` など。
46
+
47
+ ---
48
+
49
+ ## `sandbox`
50
+
51
+ Claude Code のサンドボックス(プロセス分離)を設定する。
52
+
53
+ ```json
54
+ {
55
+ "sandbox": {
56
+ "enabled": true,
57
+ "autoAllowBashIfSandboxed": true,
58
+ "allowUnsandboxedCommands": false,
59
+ "excludedCommands": [],
60
+ "network": {
61
+ "allowUnixSockets": [],
62
+ "allowAllUnixSockets": false,
63
+ "allowLocalBinding": false,
64
+ "allowedDomains": []
65
+ },
66
+ "enableWeakerNestedSandbox": true
67
+ }
68
+ }
69
+ ```
70
+
71
+ | キー | 型 | 説明 |
72
+ |---|---|---|
73
+ | `enabled` | boolean | サンドボックスを有効にする |
74
+ | `autoAllowBashIfSandboxed` | boolean | サンドボックス有効時に Bash を自動許可する |
75
+ | `allowUnsandboxedCommands` | boolean | サンドボックス外でのコマンド実行を許可する |
76
+ | `excludedCommands` | string[] | サンドボックスから除外するコマンドのリスト |
77
+ | `network.allowUnixSockets` | string[] | 許可する Unix ソケットのパス一覧 |
78
+ | `network.allowAllUnixSockets` | boolean | 全 Unix ソケットを許可する |
79
+ | `network.allowLocalBinding` | boolean | ローカルポートへのバインドを許可する |
80
+ | `network.allowedDomains` | string[] | 許可するネットワークドメイン一覧 |
81
+ | `enableWeakerNestedSandbox` | boolean | ネストされたサブエージェントに緩いサンドボックスを適用する |
82
+
83
+ ---
84
+
85
+ ## `hooks`
86
+
87
+ Claude Code のイベントに対してフックを登録する。マッチした全フックは並列実行され、同一コマンドは自動で重複排除される。
88
+
89
+ ```json
90
+ {
91
+ "hooks": {
92
+ "PreToolUse": [
93
+ {
94
+ "matcher": "Bash",
95
+ "hooks": [
96
+ {
97
+ "type": "command",
98
+ "command": "python \"$CLAUDE_PROJECT_DIR/.claude/hooks/pre_tool.py\"",
99
+ "if": "Bash(git *)",
100
+ "timeout": 30
101
+ }
102
+ ]
103
+ }
104
+ ]
105
+ }
106
+ }
107
+ ```
108
+
109
+ > `disableAllHooks: true` をトップレベルに設定すると全フックを無効化できる。
110
+
111
+ ---
112
+
113
+ ### イベント一覧
114
+
115
+ | イベント | タイミング | ブロック可否 |
116
+ |---|---|---|
117
+ | `SessionStart` | セッション開始・再開時 | 不可 |
118
+ | `Setup` | `--init-only` / `--init` / `--maintenance` 起動時 | 不可 |
119
+ | `UserPromptSubmit` | プロンプト送信時(Claude 処理前) | 可(exit 2) |
120
+ | `UserPromptExpansion` | スキル/コマンドの展開時(Claude 処理前) | 可(exit 2) |
121
+ | `PreToolUse` | ツール実行の直前 | 可(exit 2 または JSON) |
122
+ | `PermissionRequest` | 許可ダイアログが表示される時 | 可(JSON で allow/deny) |
123
+ | `PermissionDenied` | auto モードがツールを拒否した時 | — |
124
+ | `PostToolUse` | ツール実行の直後(成功) | 可(JSON `decision: "block"`) |
125
+ | `PostToolUseFailure` | ツール実行の直後(失敗) | — |
126
+ | `PostToolBatch` | 並列ツール呼び出しバッチ完了後 | 可(JSON `decision: "block"`) |
127
+ | `Stop` | Claude が応答を完了した時 | 可(JSON `decision: "block"`) |
128
+ | `StopFailure` | API エラーでターン終了時 | 不可(出力・終了コードは無視) |
129
+ | `SubagentStart` | サブエージェントが実行を開始した時 | 不可 |
130
+ | `SubagentStop` | サブエージェントが完了した時 | 不可 |
131
+ | `TaskCreated` | `TaskCreate` でタスク作成時 | — |
132
+ | `TaskCompleted` | タスクが完了マークされた時 | — |
133
+ | `TeammateIdle` | agent team の teammate が idle になる時 | — |
134
+ | `InstructionsLoaded` | CLAUDE.md / `rules/*.md` がロードされた時 | — |
135
+ | `ConfigChange` | 設定ファイルが変更された時 | 可(exit 2 または JSON) |
136
+ | `CwdChanged` | 作業ディレクトリが変更された時(`cd` 等) | — |
137
+ | `FileChanged` | 監視ファイルがディスク上で変更された時 | — |
138
+ | `WorktreeCreate` | worktree が作成される時(デフォルト git 動作を置換) | — |
139
+ | `WorktreeRemove` | worktree が削除される時 | — |
140
+ | `PreCompact` | コンテキスト圧縮の直前 | 不可 |
141
+ | `PostCompact` | コンテキスト圧縮完了後 | — |
142
+ | `Notification` | 通知が発生した時 | 不可 |
143
+ | `Elicitation` | MCP サーバーがユーザー入力を要求した時 | — |
144
+ | `ElicitationResult` | MCP 引き出し応答が返される前 | — |
145
+ | `SessionEnd` | セッション終了時 | — |
146
+
147
+ ---
148
+
149
+ ### イベント別 matcher の対応
150
+
151
+ | イベント | matcher がフィルタリングするもの | 値の例 |
152
+ |---|---|---|
153
+ | `PreToolUse` / `PostToolUse` / `PostToolUseFailure` / `PermissionRequest` / `PermissionDenied` | ツール名 | `Bash`, `Edit\|Write`, `mcp__github__.*` |
154
+ | `SessionStart` | 開始方法 | `startup`, `resume`, `clear`, `compact` |
155
+ | `Setup` | CLI フラグ | `init`, `maintenance` |
156
+ | `SessionEnd` | 終了理由 | `clear`, `resume`, `logout`, `prompt_input_exit`, `other` |
157
+ | `Notification` | 通知タイプ | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog` |
158
+ | `SubagentStart` / `SubagentStop` | エージェント型名 | `general-purpose`, `Explore`, カスタム名 |
159
+ | `PreCompact` / `PostCompact` | 圧縮のトリガー | `manual`, `auto` |
160
+ | `ConfigChange` | 設定ソース | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |
161
+ | `StopFailure` | エラータイプ | `rate_limit`, `authentication_failed`, `billing_error`, `server_error` |
162
+ | `InstructionsLoaded` | ロード理由 | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |
163
+ | `FileChanged` | リテラルファイル名(パイプ区切り) | `.envrc\|.env` |
164
+ | `Elicitation` / `ElicitationResult` | MCP サーバー名 | 設定したサーバー名 |
165
+ | `UserPromptExpansion` | コマンド/スキル名 | スキル名 |
166
+ | `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged` | 非対応 | 常に全発生で発火 |
167
+
168
+ ---
169
+
170
+ ### フックグループ構造
171
+
172
+ ```json
173
+ {
174
+ "matcher": "Edit|Write",
175
+ "hooks": [
176
+ {
177
+ "type": "command",
178
+ "command": "スクリプトパス",
179
+ "if": "Edit(*.ts)",
180
+ "timeout": 60
181
+ }
182
+ ]
183
+ }
184
+ ```
185
+
186
+ | キー | 説明 |
187
+ |---|---|
188
+ | `matcher` | グループレベルのフィルタ。空文字列は全てにマッチ |
189
+ | `hooks[].type` | フックの種類(下記参照) |
190
+ | `hooks[].if` | フックレベルの追加フィルタ。許可ルール構文(`Bash(git *)`、`Edit(*.ts)` 等)。ツールイベントのみ有効 |
191
+ | `hooks[].timeout` | タイムアウト秒数。デフォルト 600秒(10分) |
192
+
193
+ ---
194
+
195
+ ### hook の type 一覧
196
+
197
+ #### `command`(標準)
198
+
199
+ シェルコマンドを実行する。最も一般的。
200
+
201
+ ```json
202
+ { "type": "command", "command": "python script.py" }
203
+ ```
204
+
205
+ #### `http`
206
+
207
+ イベントデータを HTTP エンドポイントに POST する。
208
+
209
+ ```json
210
+ {
211
+ "type": "http",
212
+ "url": "http://localhost:8080/hooks",
213
+ "headers": { "Authorization": "Bearer $MY_TOKEN" },
214
+ "allowedEnvVars": ["MY_TOKEN"]
215
+ }
216
+ ```
217
+
218
+ - `headers` の値は `$VAR` 形式の環境変数補間をサポート(`allowedEnvVars` に列挙したもののみ)
219
+ - レスポンスボディで command フックと同じ JSON 形式で結果を返す
220
+
221
+ #### `prompt`(LLM 評価)
222
+
223
+ シングルターン LLM 呼び出しで判断を行う。デフォルトモデル: Haiku。
224
+
225
+ ```json
226
+ { "type": "prompt", "prompt": "Check if all tasks are complete...", "model": "sonnet" }
227
+ ```
228
+
229
+ - `"ok": true` → 続行
230
+ - `"ok": false` + `"reason": "..."` → イベントに応じてブロックまたはフィードバック
231
+
232
+ #### `mcp_tool`
233
+
234
+ 接続済み MCP サーバーのツールを呼び出す。
235
+
236
+ #### `agent`(実験的)
237
+
238
+ マルチターン・ツールアクセス付きの検証。デフォルトタイムアウト 60秒、最大 50 ターン。
239
+
240
+ ```json
241
+ { "type": "agent", "prompt": "Verify all tests pass...", "timeout": 120 }
242
+ ```
243
+
244
+ ---
245
+
246
+ ### 終了コードによる動作
247
+
248
+ | 終了コード | 動作 |
249
+ |---|---|
250
+ | `0` | 続行。`UserPromptSubmit` / `UserPromptExpansion` / `SessionStart` は stdout を Claude のコンテキストに注入 |
251
+ | `2` | アクションをブロック。stderr の内容が Claude へのフィードバックになる。ブロック不可イベントでは stderr をユーザーに表示し続行 |
252
+ | その他 | 続行。トランスクリプトに `<hook name> hook error` 通知 + stderr 1行目を表示 |
253
+
254
+ > **注意**: exit 2 と JSON 出力を混在させないこと。Claude Code は exit 2 時に JSON を無視する。
255
+
256
+ ---
257
+
258
+ ### 構造化 JSON 出力(exit 0 + stdout)
259
+
260
+ より細かい制御が必要な場合、exit 0 で stdout に JSON を出力する。
261
+
262
+ #### `PreToolUse` の決定制御
263
+
264
+ ```json
265
+ {
266
+ "hookSpecificOutput": {
267
+ "hookEventName": "PreToolUse",
268
+ "permissionDecision": "deny",
269
+ "permissionDecisionReason": "Use rg instead of grep"
270
+ }
271
+ }
272
+ ```
273
+
274
+ | `permissionDecision` | 動作 |
275
+ |---|---|
276
+ | `"allow"` | インタラクティブ許可プロンプトをスキップ(deny ルールより優先されない) |
277
+ | `"deny"` | ツール呼び出しをキャンセル。`permissionDecisionReason` が Claude へのフィードバック |
278
+ | `"ask"` | 通常通りユーザーに許可プロンプトを表示 |
279
+ | `"defer"` | `-p` 非インタラクティブモードでのみ有効。プロセスを終了しツール呼び出しを保留 |
280
+
281
+ #### `PostToolUse` / `Stop` / `PostToolBatch` のブロック
282
+
283
+ ```json
284
+ { "decision": "block", "reason": "Tests are failing" }
285
+ ```
286
+
287
+ #### `PermissionRequest` の決定制御
288
+
289
+ ```json
290
+ {
291
+ "hookSpecificOutput": {
292
+ "hookEventName": "PermissionRequest",
293
+ "decision": {
294
+ "behavior": "allow",
295
+ "updatedPermissions": [
296
+ { "type": "setMode", "mode": "acceptEdits", "destination": "session" }
297
+ ]
298
+ }
299
+ }
300
+ }
301
+ ```
302
+
303
+ #### `UserPromptSubmit` へのコンテキスト注入
304
+
305
+ ```json
306
+ { "additionalContext": "現在のブランチ: feature/auth" }
307
+ ```
308
+
309
+ #### `PermissionDenied` でリトライ許可
310
+
311
+ ```json
312
+ { "retry": true }
313
+ ```
314
+
315
+ ---
316
+
317
+ ### 環境変数
318
+
319
+ フックスクリプト内で使える環境変数:
320
+
321
+ | 変数 | 内容 |
322
+ |---|---|
323
+ | `$CLAUDE_PROJECT_DIR` | プロジェクトのルートディレクトリの絶対パス |
324
+ | `$CLAUDE_ENV_FILE` | このファイルに書いた内容が各 Bash コマンド実行前にプリアンブルとして実行される(`direnv` 等との連携に使う) |
325
+
326
+ イベントデータ(ツール名・入力 JSON 等)は **stdin を通じて JSON として渡される**。`jq` 等で解析する。
327
+
328
+ ```bash
329
+ INPUT=$(cat)
330
+ FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
331
+ ```
332
+
333
+ ---
334
+
335
+ ### hook の配置場所によるスコープ
336
+
337
+ | 場所 | スコープ | 共有 |
338
+ |---|---|---|
339
+ | `~/.claude/settings.json` | 全プロジェクト | なし(マシンローカル) |
340
+ | `.claude/settings.json` | このプロジェクトのみ | git 管理可能 |
341
+ | `.claude/settings.local.json` | このプロジェクトのみ | `.gitignore` 推奨 |
342
+ | skills / agents のフロントマター `hooks:` | スキル/エージェントがアクティブな間のみ | コンポーネントファイルで定義 |
343
+
344
+ ---
345
+
346
+ ## `statusLine`
347
+
348
+ Claude Code のステータスバーに表示するカスタム情報を定義する。
349
+
350
+ ```json
351
+ {
352
+ "statusLine": {
353
+ "type": "command",
354
+ "command": "python \"$CLAUDE_PROJECT_DIR/.claude/hooks/statusline.py\""
355
+ }
356
+ }
357
+ ```
358
+
359
+ | キー | 型 | 説明 |
360
+ |---|---|---|
361
+ | `type` | string | `"command"` のみ(現時点) |
362
+ | `command` | string | 実行するコマンド。stdout の1行目がステータスバーに表示される |
363
+
364
+ ---
365
+
366
+ ## `model`
367
+
368
+ デフォルトで使用するモデルを上書きする。
369
+
370
+ ```json
371
+ {
372
+ "model": "claude-opus-4-7"
373
+ }
374
+ ```
375
+
376
+ 有効なモデル ID 例: `claude-sonnet-4-6` / `claude-opus-4-7` / `claude-haiku-4-5-20251001`
377
+
378
+ ---
379
+
380
+ ## `env`
381
+
382
+ Claude Code セッション全体で使う環境変数を設定する。
383
+
384
+ ```json
385
+ {
386
+ "env": {
387
+ "MY_VAR": "value",
388
+ "DEBUG": "1"
389
+ }
390
+ }
391
+ ```
392
+
393
+ ---
394
+
395
+ ## `outputStyle`
396
+
397
+ Claude のシステムプロンプト全体を差し替える出力スタイルを指定する。
398
+
399
+ ```json
400
+ {
401
+ "outputStyle": "Explanatory"
402
+ }
403
+ ```
404
+
405
+ | 値 | 説明 |
406
+ |---|---|
407
+ | `"Default"` | ソフトウェアエンジニアリング向けデフォルト |
408
+ | `"Explanatory"` | 教育的インサイト付き(実装選択肢・パターン解説を追加) |
409
+ | `"Learning"` | 協調学習モード。一部コードを `TODO(human)` マーカーに置き換えてユーザーに実装を促す |
410
+ | カスタム名 | `.claude/output-styles/<name>.md` または `~/.claude/output-styles/<name>.md` のファイル名 |
411
+
412
+ - 変更は次のセッション開始時に有効になる
413
+ - `/config` → Output style からも変更できる(`settings.local.json` に保存される)
414
+ - CLAUDE.md・rules/・`--append-system-prompt` とは異なり、**システムプロンプト本体を置換**する
415
+
416
+ ---
417
+
418
+ ## `includeCoAuthoredBy`
419
+
420
+ git コミットの `Co-Authored-By` トレーラーに Claude の情報を含めるかを制御する。
421
+
422
+ ```json
423
+ {
424
+ "includeCoAuthoredBy": true
425
+ }
426
+ ```
427
+
428
+ デフォルト: `true`
429
+
430
+ ---
431
+
432
+ ## `apiKeyHelper`
433
+
434
+ API キーを取得するカスタムコマンドを指定する。`ANTHROPIC_API_KEY` 環境変数の代わりに使う。
435
+
436
+ ```json
437
+ {
438
+ "apiKeyHelper": "cat ~/.secrets/anthropic_key"
439
+ }
440
+ ```
441
+
442
+ ---
443
+
444
+ ## `cleanupPeriodDays`
445
+
446
+ ログファイルを自動削除するまでの日数。
447
+
448
+ ```json
449
+ {
450
+ "cleanupPeriodDays": 30
451
+ }
452
+ ```
453
+
454
+ ---
455
+
456
+ ## `mcpServers`
457
+
458
+ MCP(Model Context Protocol)サーバーを登録する。登録されたサーバーのツールが Claude から利用できるようになる。
459
+
460
+ ```json
461
+ {
462
+ "mcpServers": {
463
+ "my-server": {
464
+ "type": "stdio",
465
+ "command": "node",
466
+ "args": ["path/to/server.js"],
467
+ "env": {
468
+ "API_KEY": "..."
469
+ }
470
+ }
471
+ }
472
+ }
473
+ ```
474
+
475
+ | キー | 型 | 説明 |
476
+ |---|---|---|
477
+ | `type` | string | `"stdio"` / `"sse"` / `"http"` |
478
+ | `command` | string | サーバーを起動するコマンド(stdio の場合) |
479
+ | `args` | string[] | コマンドの引数 |
480
+ | `env` | object | サーバープロセスに渡す環境変数 |
481
+ | `url` | string | サーバーの URL(sse / http の場合) |
482
+
483
+ ---
484
+
485
+ ## C3 での使い分け
486
+
487
+ | ファイル | 用途 |
488
+ |---|---|
489
+ | `.claude/settings.json` | プロジェクト共通設定。git 管理する |
490
+ | `.claude/settings.local.json` | 開発者個人の設定(追加 `allow` 等)。`.gitignore` に追加して git 管理しない |
491
+
492
+ > `hooks` を `settings.local.json` に書くと `settings.json` の `hooks` が**完全に無効化**される。フックは `settings.json` のみに書くこと。